Итак, в нашем алгоритме работы с данными расчета осталось одно узкое место контроль актуальности данных, содержащихся в регистре расчета.
Заметки по 1С:Предприятие 8.2, 8.3
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования (Linus Torvalds).
Регистры накопления
На следующей схеме изображено взаимодействие объектов встроенного языка для работы с регистрами накопления.
// Пример: выполнить полный пересчет итогов регистра «ОстаткиМатериалов».
РегистрыНакопления . ОстаткиМатериалов . ПересчитатьИтоги ();
// 2. объект РегистрыНакопленияМенеджер
// .
// []
// Для Каждого … Из … Цикл … КонецЦикла;
// Пример: рассчитать итоги регистра «ОстаткиМатериалов» на указанную дату.
ИмяРегистра = ОстаткиМатериалов ;
РегистрыНакопления [ ИмяРегистра ]. УстановитьПериодРассчитанныхИтогов ( УказаннаяДата );
// 3. объект РегистрНакопленияМенеджер.
// СоздатьКлючЗаписи()
// Пример: активизировать требуемую строку списка регистра накопления.
СтруктураКлючевыхПолей = Новый Структура ;
СтруктураКлючевыхПолей . Вставить ( «Регистратор» , Документы . ПриходнаяНакладная . НайтиПоНомеру ( «0000002» ));
СтруктураКлючевыхПолей . Вставить ( «НомерСтроки» , 2 );
Элементы . Материалы . ТекущаяСтрока = РегистрыНакопления . ОстаткиМатериалов . СоздатьКлючЗаписи ( СтруктураКлючевыхПолей );
// 4. объект РегистрНакопленияМенеджер.
// СоздатьНаборЗаписей()
// Пример: получить движения документа.
НужныйДокумент = Документы . ПриходнаяНакладная . НайтиПоНомеру ( 4 );
Движения = РегистрыНакопления . ОстаткиМатериалов . СоздатьНаборЗаписей ();
Движения . Отбор . Регистратор . Значение = НужныйДокумент ;
Движения . Прочитать ();
// 5. объект РегистрНакопленияМенеджер.
// Выбрать()
// ВыбратьПоРегистратору()
// Пример: выбрать все записи регистра «ОстаткиМатериалов» за текущий месяц.
Выборка = РегистрыНакопления . ОстаткиМатериалов . Выбрать ( НачалоМесяца ( ТекущаяДата ()), КонецМесяца ( ТекущаяДата ()));
// 6. объект РегистрНакопленияНаборЗаписей.
// []
// Для Каждого … Из … Цикл … КонецЦикла;
// Пример: получить движения документа.
НужныйДокумент = Документы . ПриходнаяНакладная . НайтиПоНомеру ( 4 );
Движения = РегистрыНакопления . ОстаткиМатериалов . СоздатьНаборЗаписей ();
Движения . Отбор . Регистратор . Значение = НужныйДокумент ;
Движения . Прочитать ();
Для Каждого ОчередноеДвижение Из Движения Цикл
// Алгоритм обработки движений
…
КонецЦикла;
Промокоды на Займер на скидки
НОУ ИНТУИТ | Лекция | Документы, регистры накопления, СКД
После создания можно установить отбор записей регистра сведений, задав значения полей и вызвать метод Прочитать , который вернет в переменную МенеджерЗаписи запись регистра сведений.
Работа с периодическим регистром.
Вышеприведенная структура регистра отвечала задаче хранить и отдавать данные по цене товара. Мы знали какая сейчас цена. При этом получить исторические данные было невозможно: на вопрос какие цены были вчера ответить регистр сведений не мог.
Периодический регистр отличается от «обычного», тем что у него добавляется служебное поле «Период», которое определяет к какому моменту времени относится данное значение.
Кроме этого, у регистра появляются дополнительные «виртуальные» таблицы для запроса к данным: СрезПервых и СрезПоследних.
Периодичность регистра может быть «Год», «Месяц», «Квартал», «День», «Секунда» — до такой детальности можно хранить значения.
Для цен, курсов валют, обычно хранят дневные значения. Для учетной политики предприятия, ставок налога хранят годовые значения.
Нет необходимости закладывать более точную детальность, чем необходимо: это ухудшит восприятие данных.
Сущность «срезов» — получить последнее/первое значение по набору измерений. Обычно нужна текущая цена или курс, а лишь иногда ее история.
набЗаписей . Отбор . Товар . Установить ( Справочники . Товары . НайтиПоНаименованию ( «Грабли садовые» ) ) ;
По ключу регистра сведений — внести изменения в запись
Чтение из периодического регистра
Данные из регистра могут получатся как из виртуальных таблиц, так из реальной
Задаются данные выборки и параметры виртуальной таблицы:
Текст = «ВЫБРАТЬ
| ЦеныСрезПоследних.Период,
| ЦеныСрезПоследних.Номенклатура,
| ЦеныСрезПоследних.Цена
|ИЗ
| РегистрСведений.Цены.СрезПоследних(&Период,Номенклатура.Наименование = «»Грабли садовые»») КАК ЦеныСрезПоследних»;
Обратное действие — получение первой цены, установленной на товар
СтруктураРесурсов = РегистрыСведений . Цены . ПолучитьПервое ( ТекущаяДата ( ) , Новый Структура ( «Номенклатура» , Справочники . Товары . НайтиПоНаименованию ( «Грабли садовые» ) ) ;
Производится аналогично как с набором записей, к которому добавляется реквизит «Регистратор».
Если работаете из модуля проведения обращаетесь к регистру через свойство «Движения»
Если работаете с таким регистром из другого объекта, то не забываете установить свойство «Регистратор», равным нужной ссылке.
Так вы можете и прочитать и установить движение любого регистратора.
Вот и рассмотрены основные приемы работы с регистрами сведений кодом языка 1С и запросов.
Как описываются машины в рекламных проспектах? “Волнующие”, “эффектные”, “изящные”, “грациозные”, “обтекаемой формы”. Прямо не знаешь, куда их вести — в гараж или в номер мотеля.
— Роберт Орбен
Выбрать НачалоИнтервала, КонецИнтервала, Отбор, Порядок выбирает записи с указанным отбором, у которых период находится между НачалоИнтервала и КонецИнтервала ;.
Документы, регистры накопления, СКД
При планировании состава регистра накопления нужно понять, какие именно данные мы собираемся в нем хранить, после чего «разложить» эти данные по измерениям, ресурсам и реквизитам регистра.
- Номенклатурная позиция
- Ответственный сотрудник, на котором числится данная позиция
- Количество номенклатуры
- Стоимость номенклатуры
- Данные о мастере, которому переданы материалы для использования.
Ресурсы регистра – это всегда числовые значения, характеризующие хранимые данные. Числовые значения – это количество и сумма, и именно они будут ресурсами нашего регистра.
Реквизиты регистра играют вспомогательную роль, и, в нашем случае, логично будет в реквизите регистра хранить сведения о мастере, получившем материалы для работы – на тот случай, если нам понадобится узнать – кто именно эти материалы использовал.
Обсудив теоретическую часть вопроса, перейдем к практике. Создадим новый регистр накопления , назовем его ОстаткиМатериалов, параметр Вид регистра оставим в значении Остатки, рис. 6.12.
Включим регистр накопления в состав подсистемы ОперативныйУчетМатериалов.
На вкладке Данные создадим следующие измерения, ресурсы и реквизиты:
Имя: Номенклатура, Тип: СправочникСсылка.Номенклатура, Запрет незаполненных значений – установлено.
Имя: ОтветственныйСотрудник, Тип: СправочникСсылка.Сотрудники, Запрет незаполненных значений – установлено.
Имя: ПолучательМатериалов, Тип: СправочникСсылка.Сотрудники
Обратите внимание на имена этих реквизитов, на их типы, а так же – на стандартные реквизиты регистра ( рис. 6.13.) – эти данные пригодятся нам при работе над процедурой проведения документа .
Исключим из состава реквизитов регистра общий реквизит Организация. Сейчас в нем нет необходимости. Для организации хранения данных в регистре в разрезе различных организаций нам понадобилось бы новое измерение – Организация, благодаря наличию которого мы смогли бы работать с материалами различных организаций.
Перейдем на вкладку Регистраторы окна редактирования объекта и выберем в качестве документов-регистраторов документы – ПоступлениеМатериалов и ОтпускМатериаловМастеру.
На данном этапе настройка регистра накопления окончена, перейдем к настройкам документов. Начнем с документа ПоступлениеМатериалов.
Откроем окно редактирования объекта для этого документа, перейдем на вкладку Движения ( рис. 6.14.) и нажмем на кнопку Конструктор движений
После нажатия на кнопку ОК, в модуле объекта документа будет сформирована такая процедура обработки проведения (так она выглядит после удаления комментариев о том, что код построен конструктором движений):
Так как мы проводим документ, отвечающий за приход товаров, параметр Движение.ВидДвижения устанавливается в значение ВидДвиженияНакопления.Приход. Период устанавливается равным дате документа (мы напрямую работаем с реквизитами документа). Остальные данные заполняются, опять же, либо из реквизитов документа, либо из реквизитов текущей строки табличной части.
Программная работа с регистрами сведений. Категория: 1С: Предприятие
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы