Регистры расчета в 1с8 для чайников

Назначение объекта

 Платформа 1С:Предприятие 8 предоставляет разработчиком конфигураций использовать такой объект как «Регистр накопления». Регистры накопления предназначены для хранения числовых показателей в нескольких разрезах во времени. Общую информацию о возможностях и назначении этих регистров Вы можете узнать на официальном сайте. Если рассматривать его использование в рамках типовых конфигураций от фирмы «1С», то самым наглядным примером будет регистр накопления «Свободные остатки», которых хранит данные об остатках номенклатуры в разрезе складов, качества, характеристик и серий.

Здесь мы видим, что в таблице регистра хранится количество номенклатуры для каждого отдельного склада, плюс показатели для каждой позиции номенклатуры «разрезаны» по ее качеству, характеристикам и сериям. В итоге, именно регистр накопления позволяет получать доступ к этим данным более оптимальным образом, поскольку структура хранения этого регистра построена таким образом, чтобы конечные SQL-запросы, формируемые платформой, получали необходимый результат за наименьшее время и с приемлемой нагрузкой на СУБД.

Далее в статье проанализируем структуру хранения регистра накопления в базе данных, а также ее изменение при различных настройках регистра.

Все эксперименты будем проводить на тестовой конфигурации с двумя регистрами накопления и двумя документами. Структура метаданных конфигурации Вы можете видеть на следующем скриншоте.

Приходный ордер, соответственно, делает приход по регистру «ОстаткиНоменклатуры», расходный ордер — расход. В регистр «ДвиженияНоменклатуры» оба документа записывают движения аналогичные регистру «ОстаткиНоменклатуры» за исключением указания вида движения, а также расходный ордер записывает показатель «Количество» с минусом. Уже можно догадаться, что вид регистра «ОстаткиНоменклатуры» — «Остатки», а «ДвиженияНоменклатуры» — «Обороты».

И так, приступим!

Период действия и график

Флаг Период действия нужно установить, если в данном регистре расчета предполагается хранить информацию о протяженных во времени видах расчета. То есть о тех видах расчета, для которых можно указать период действия.

Если данный флаг установлен, то также должны быть заполнены свойства: График, Значение графика и Дата графика:

В свойстве График нужно выбрать непериодический регистр сведений, в котором будут храниться данные графика.

В свойстве Значение графика нужно выбрать ресурс типа Число, в котором будет храниться значение графика.

В свойстве Дата графика нужно выбрать измерение типа Дата, в котором будет храниться дата графика.

Например, это может быть такой регистр сведений:

В данном регистре будет храниться дата и признак: это рабочий день или нет. Если рабочий, то 1. Если не рабочий, то 0:

Данный график позволит определить количество рабочих дней в месяце. Вместо 1 и 0 можно было бы указать количество рабочих часов за день. Тогда можно было бы определить общее количество рабочих часов в месяце.

Если был установлен флаг Период действия, то в основную таблицу будут добавлены еще три колонки:

  • Период действия
  • Период действия начало
  • Период действия конец
Период регистрации Регистратор Номер строки Вид расчета Активность Сторно Период действия Период действия начало Период действия конец

В колонках Период действия начало и Период действия конец будут храниться граничные значения периода действия. В колонке Период действия будет храниться дата из колонки Период действия начало, приведенная к началу периода с учетом настройки периодичности.

Например, если для регистра указана периодичность месяц, то для оклада за март 2021 года это будет:

Период действия 01.03.2021
Период действия начало 01.03.2021
Период действия конец 31.03.2021

Если период действия оклада равен с 15 марта 2021 года по 31 марта 2021 года, то:

Период действия 01.03.2021
Период действия начало 15.03.2021
Период действия конец 31.03.2021

Если бы периодичность была равна квартал, а не месяц, то Период действия приводился бы к началу квартала:

Период действия 01.01.2021
Период действия начало 15.03.2021
Период действия конец 31.03.2021

Если период действия выходит за рамки периодичности, то его нужно разбить на несколько периодов. Например, при периодичности месяц период действия с 15 марта 2021 по 15 апреля 2021 нужно разбить на две записи:

Период действия 01.03.2021
Период действия начало 15.03.2021
Период действия конец 31.03.2021
Период действия 01.04.2021
Период действия начало 01.04.2021
Период действия конец 15.04.2021

Также для регистра расчета в базе данных будет создана еще одна таблица, которая будет хранить фактический период действия записи. Состав колонок следующий:

Регистратор Номер строки Период действия начало Период действия конец

Связь с основной таблицей выполняется по регистратору и номеру строки. Для одной записи из основной таблицы может быть несколько строк в таблице фактического периода действия.

Например, если сначала была введена запись об окладе за март 2021 года:

Период регистрации Регистратор Номер строки Вид расчета Активность Сторно Период действия Период действия начало Период действия конец
01.03.2021 Начисление ЗП №1 1 Оклад Истина Ложь 01.03.2021 01.03.2021 31.03.2021

В этом случае в таблице с фактическим периодом будет одна строка:

Регистратор Номер строки Период действия начало Период действия конец
Начисление ЗП №1 1 01.03.2021 31.03.2021

Но если в основную таблице ввести запись о командировке с 20 по 25 марта, то так как командировка вытесняет оклад по периоду действия (сотрудник не может одновременно работать в офисе и быть в командировке), то фактический период для оклада будет разбит на две строки:

Период регистрации Регистратор Номер строки Вид расчета Активность Сторно Период действия Период действия начало Период действия конец
01.03.2021 Начисление ЗП №1 1 Оклад Истина Ложь 01.03.2021 01.03.2021 31.03.2021
01.03.2021 Начисление ЗП №1 2 Командировка Истина Ложь 01.03.2021 20.03.2021 25.03.2021
Регистратор Номер строки Период действия начало Период действия конец
Начисление ЗП №1 1 01.03.2021 19.03.2021
Начисление ЗП №1 1 26.03.2021 31.03.2021
Начисление ЗП №1 2 20.03.2021 25.03.2021

Запись в регистр расчета

Регистр расчета обязательно должен быть подчинен регистратору.

Запись в регистр расчета может выполняться при проведении документа или через набор записей.

Запись при проведении:

//модуль объекта документа
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.РегистрРасчета1.Записывать = Истина;

Для Каждого Стр Из Начисления Цикл
Движение = Движения.РегистрРасчета1.Добавить();
//предопределенные поля
Движение.ПериодРегистрации = Дата;
Движение.ВидРасчета = Стр.ВидРасчета;

Движение.ПериодДействияНачало = НачалоМесяца(Дата);
Движение.ПериодДействияКонец = КонецМесяца(Дата);

Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(Дата, -1));
Движение.БазовыйПериодКонец = КонецМесяца(ДобавитьМесяц(Дата, -1));

//измерения и ресурсы
Движение.Сотрудник = Стр.Сотрудник;
Движение.Результат = Стр.Размер;

КонецЦикла;
КонецПроцедуры

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

//модуль объекта документа

Процедура ОбработкаПроведения(Отказ,РежимПроведения)

Движения.РегистрРасчета1.Записывать= Истина;

Для Каждого СтрИз НачисленияЦикл

Движение= Движения.РегистрРасчета1.Добавить();

//предопределенные поля

Движение.ПериодРегистрации= Дата;

Движение.ВидРасчета= Стр.ВидРасчета;

Движение.ПериодДействияНачало= НачалоМесяца(Дата);

Движение.ПериодДействияКонец= КонецМесяца(Дата);

Движение.БазовыйПериодНачало= НачалоМесяца(ДобавитьМесяц(Дата,-1));

Движение.БазовыйПериодКонец= КонецМесяца(ДобавитьМесяц(Дата,-1));

//измерения и ресурсы

Движение.Сотрудник= Стр.Сотрудник;

Движение.Результат= Стр.Размер;

КонецЦикла;

КонецПроцедуры

Запись через набор записей:

//создаем набор записей регистра расчета
Набор = РегистрыРасчета.РегистрРасчета1.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Ссылка);

//заполняем набор
Для Каждого Стр Из Начисления Цикл
НоваяЗапись = Набор.Добавить();
//предопределенные поля
НоваяЗапись.ПериодРегистрации = Дата;
НоваяЗапись.ВидРасчета = Стр.ВидРасчета;

НоваяЗапись.ПериодДействияНачало = НачалоМесяца(Дата);
НоваяЗапись.ПериодДействияКонец = КонецМесяца(Дата);

НоваяЗапись.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(Дата, -1));
НоваяЗапись.БазовыйПериодКонец = КонецМесяца(ДобавитьМесяц(Дата, -1));

//измерения и ресурсы
НоваяЗапись.Сотрудник = Стр.Сотрудник;
НоваяЗапись.Результат = Стр.Размер;
КонецЦикла;

//записываем в базу
Набор.Записать();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

//создаем набор записей регистра расчета
Набор= РегистрыРасчета.РегистрРасчета1.СоздатьНаборЗаписей();

Набор.Отбор.Регистратор.Установить(Ссылка);

 
//заполняем набор

Для Каждого СтрИз НачисленияЦикл

НоваяЗапись= Набор.Добавить();

//предопределенные поля

НоваяЗапись.ПериодРегистрации= Дата;

НоваяЗапись.ВидРасчета= Стр.ВидРасчета;

НоваяЗапись.ПериодДействияНачало= НачалоМесяца(Дата);

НоваяЗапись.ПериодДействияКонец= КонецМесяца(Дата);

НоваяЗапись.БазовыйПериодНачало= НачалоМесяца(ДобавитьМесяц(Дата,-1));

НоваяЗапись.БазовыйПериодКонец= КонецМесяца(ДобавитьМесяц(Дата,-1));

//измерения и ресурсы

НоваяЗапись.Сотрудник= Стр.Сотрудник;

НоваяЗапись.Результат= Стр.Размер;

КонецЦикла;

 
//записываем в базу
Набор.Записать();

Дополнительные измерения (субконто)

Как выше упоминалось, регистр бухгалтерии позволяет пользователю вести учет для различных областей учета в различных разрезах аналитики. Для этого разработчик должен указать план счетов для реквизита «Счет», максимальное количество субконто, тип значения субконто, а так же план видов характеристик, который будет содержать виды субконто. Счет служит для указания, к какой области учета относится данная запись, и какой набор субконто ведется по данной области учета. Для определения набора субконто, используются табличная часть ВидыСубконто, в которой хранятся виды субконто. Этот набор видов субконто определяет количество и состав субконто у записи, для которой в качестве значения реквизита счет выбрали ссылку на данный счет. То есть регистр бухгалтерии можно представить как совокупность регистров накопления, где для каждого счета имеющего уникальный набор субконто (область учета) определяется собственный регистр накопления, плюс регистр накопления для учета по счетам без субконто плюс оборотный регистр для учета корреспонденций между счетами. Например, у нас есть план счетов следующего содержания:

Счет Субконто1 Субконто2 Субконто3
01 Основные средства Склады  
20 Подразделения Статьи затрат  
41 Товары Партии Склады

Данную структуру можно представить в виде следующих регистров накопления:

  • Измерения: ОсновныеСредства, Склад; Ресурсы: Сумма, Количество
  • Измерения: Подразделения, СтатьиЗатрат; Ресурсы: Сумма, Количество
  • Измерения: Товар, Партия, Склад; Ресурсы: Сумма, Количество
  • Измерения: Счет; Ресурсы: Сумма, Количество
  • Измерения: СчетДт, СчетКт Ресурсы: Сумма, Количество (Оборотный)

Разработчик может предусмотреть ведение в одном регистре бухгалтерии по одному счету несколько независимых параллельных учетов. Даная возможность задействуется с помощью признаков учета субконто и признака только обороты. Например, есть регистр бухгалтерии, в котором ведется суммовой и количественный учет, то есть у регистра определены два ресурса — сумма и количество. В плане счетов есть 10 счет, на котором ведется учет материалов. Данный учет ведется в разрезе материалов и складов, на которых эти материалы хранятся. В разрезе складов ведется только количественный учет. Для определения этого свойства у вида субконто Склады на 10 счете сбрасывается признак суммового учета. Тогда можно представить, что по 10 счету ведется два паралелльных учета:

  • Измерения: Материал; Ресурсы: Сумма
  • Измерения: Материал, Склад; Ресурсы: Количество

Надо заметить, что в таблицу итогов регистра бухгалтерии попадают не только измерения, но и субконто. Индекс строится по следующим реквизитам: период, счет, измерения, субконто. Так как субконто практически всегда является реквизитом составного типа, то в некоторых случаях может быть эффективней перенести некоторый вид субконто в измерение. Критерием может служить то, что данный вид субконто встречается на большом количестве счетов и его тип не является составным. В этом случае, при переносе субконто в измерение, будет использовано на два поля меньше, так как измерение будет занимать только одно поле.

Платой за гибкость, широкие функциональные возможности и удобства использования регистра бухгалтерии является некоторое снижение скорости работы, по сравнению с регистром накопления

Поэтому при проектировании системы важно выделить области учета, которые требуют большое количество аналитических разрезов, связаны с большим объемом данных. Такие области учета лучше реализовывать на основе регистров накопления, так как в данном случае можно создать более продуманную и эффективную структуру регистров

Это позволит построить хорошо масштабируемую, производительную систему учета. 

Виды регистров

Регистры, изготовленные из отдельных отрезков труб (секций) называются секционными. Как уже было сказано ранее, между ними для обеспечения движения теплоносителя, устанавливают  вертикальные отрезки труб (перетоки). Места врезки труб, а также изменение диаметров, создает дополнительное гидравлическое сопротивление, снижающее скорость движения теплоносителя.

Этой проблемы нет у змеевикового регистра отопления, конструкция которого представляет собой металлические петли из изогнутой стальной трубы, расположенные горизонтально. Примером змеевикового регистра отопления может служить полотенцесушитель.

Конструкция змеевикового регистра более эффективна с точки зрения теплопередачи. В таком приборе отопления есть только одно направление для движения теплоносителя, нет зон застоя и перетоков.

Остается добавить, что в принципе, регистр отопления можно изготовить не только из стальных, но и из медных и нержавеющих труб. Было бы желание и финансовые возможности. Можно также экспериментировать с видами труб, используя не только гладкокатанные, но и профильные трубы.

Вид регистра «Обороты»

Виртуальная таблица «Обороты» включает в себя поля для каждого из измерений регистра, а также по одному полю на каждый ресурс. Для оборотного регистра «ДвиженияНоменклатуры» из тестовой конфигурации состав полей таблицы следующий:

Как и в предыдущем случае, в зависимости от параметра «Периодичность» в составе доступных полей появятся соответствующие периоды.

И так, выполним несколько запросов к таблице «Обороты» и проанализируем SQL-запросы платформы. Первый запрос на языке запросов платформы:

Запрос принимает также три параметра: «НачалоПериода», «КонецПериода» и «Склад». Как начало периода возьмем начало 2012 года, конец периода — 13 апреля 2013 00:00:00. Склад пусть будет «Склад №1».

Первым делом платформа 1С:Предприятие получит настройки регистра накопления, к которому выполняется запрос. Запрос будет идентичный рассматриваемому ранее примеру, пойдем дальше. Сформированный платформой SQL-запрос тогда будет такой:

К комментариям в приведенном тексте добавлю, что вне зависимости от значений параметров «НачалоПериода» и «КонецПериода» запрос пытается получить данные и из итоговых таблиц, и из таблицы движений регистра.

Если в запросе на языке платформы мы добавим использование параметра «Периодичность» (например, поставим значение «Месяц»), то SQL-запрос платформы изменится аналогично рассмотренному примеру для регистра накопления с видом остатки. Будут добавлены поля выбранных периодов («ПериодДень», «ПериодМесяц» и т.д.) в секции запроса «SELECT» и «GROUP BY». Для нашего примера это месяц. Поля и группировки будут добавлены для всех вложенных запросов и, конечно, содержаться в результатирующей выборке. В нашем примере, выражения в поле запроса для получения периода будет таким:

Принцип получения значений периода был описан выше для регистра с видом «Обороты».

Создание и настройка

Пользователю понадобился отчет, показывающий обороты номенклатуры в разрезе складов по годам. Вот пример сформированного отчета:

Ничего сложного в запросе, получающем данные для отчета, нет. Используя виртуальную таблицу оборотов мы получаем общее количество оборота по годам. Вот текст запроса отчета:

В одной из предыдущих статей мы уже рассматривали какой SQL-запрос формирует платформа при использовании виртуальной таблицы оборотов. В нашем примере он будет следующий:

Далее рассмотрим влияние использования агрегатов на изменения формируемого SQL-запроса платформой, при этом текст запроса на языке платформы в отчете останется прежним, но перед этим создадим и настроим агрегат.

В режиме конфигуратора перейдем в свойства регистра накопления «ДвиженияНоменклатуры» на закладку «Данные». Нажмем на кнопку «Агрегаты» для открытия конструктора агрегатов.

В конструкторе добавим новый агрегат для всех измерений регистра с периодичностью «Год» (вспомните, отчет будет формировать обороты в разрезе этой периодичности). Параметр «Использование» оставим без изменений. Обновим конфигурацию базы данных.

Этими действиями мы создали агрегат, который будет хранить итоговые записи с периодичностью «Год»(а не «Месяц», как это делает стандартный механизм итогов). Теперь нам нужно включить использование агрегатов в режиме 1С:Предприятие. Откроем стандартную утилиту управления итогами, вкладка «Агрегаты». Здесь нам нужно проделать следующие действия:

1. Включить режим агрегатов. При этом стандартный механизм итогов будет отключен.

2. Включить использование агрегатов. Не стоит путать этот параметр с предыдущим. Первый параметр устанавливает что будет использоваться платформой для виртуальной таблицы обороты — стандартная таблица итогов или таблицы агрегатов. Этот параметр фактически устанавливает доступность использования виртуальной таблицы оборотов при использовании агрегатов.

3. Перестроим агрегаты. Этим действием мы заполним таблицы агрегатов соответствующими настройкам агрегата записями по таблице движений регистра.

При перестроении агрегатов предлагается указать два параметра: максимальный относительный размер и минимальный эффект от перестроения (см. скриншот слева).

Первый параметр позволяет задать ограничение максимального размера таблицы агрегатов в процентах от таблицы движений. Если значение 0 — ограничений нет.

Второй параметр — это процент, на который требуется увеличить эффект старой сети при перестроении, если новая сеть делает больше эффект на значение «Минимальный эффект от перестроения %», то способ реально перестраивает сеть. 

Агрегат создан, настроен и готов к использованию. Далее рассмотрим изменение SQL-запроса платформы при включенном агрегате.

Механизмы, реализуемые регистром расчета

Вытеснение по периоду действия

Механизм вытеснения по периоду действия позволяет рассчитывать фактический период действия записи регистра расчета на основании анализа других записей, содержащихся в регистре.

В общем случае, запись регистра расчета содержит две даты, определяющие период, на который распространяется действие данной записи. Этот период называется периодом действия записи. Однако, если вид расчета, к которому относится данная запись, может быть вытеснен другим видом расчета, то период действия данной записи является лишь «запрашиваемым» периодом, то есть «мы хотим, чтобы запись действовала в этом периоде». Реально, фактический период действия данной записи можно будет определить лишь после анализа всех записей видов расчета, которые вытесняют данный вид расчета по периоду действия. Фактический период действия будет представлять собой набор периодов, являющихся подмножеством исходного периода действия данной записи. Если не будет найдено ни одной записи, вытесняющей данную по периоду действия, то фактический период действия данной записи будет равен ее периоду действия. Другим крайним случаем вытеснения по периоду действия является полное вытеснение данной записи другими записями. В этом случае фактический период действия записи будет отсутствовать.

Каждая запись регистра расчета содержит вид расчета, к которому она относится. Чтобы определить, какие записи должны вытеснять данную запись по периоду действия, регистр расчета использует связь с планом видов расчета, в котором описано взаимное влияние видов расчета друг на друга. Использование этой связи позволяет регистру расчета определять фактический период действия каждой записи.

Зависимость по базовому периоду

Механизм зависимости по базовому периоду позволяет получать значение базы для записи регистра расчета на основании анализа других записей, содержащихся в регистре.

База представляет собой числовое значение, которое должно быть использовано для расчета результата данной записи. База рассчитывается путем анализа результатов расчета других записей, от которых данная запись зависит по базовому периоду. Таким образом, в общем случае, запись регистра расчета содержит две даты, определяющие период, в котором нужно анализировать записи видов расчета, от которых данный вид расчета зависит по базе — базовый период. Использование связи с планом видов расчета позволяет регистру расчета определять виды расчета, от которых данный вид расчета зависит по базовому периоду.

Регистр расчета поддерживает два вида зависимости по базовому периоду:

  • зависимость по периоду действия;
  • зависимость по периоду регистрации.

В случае зависимости по периоду действия для получения базы будут выбираться те записи, для которых найдено пересечение их фактического периода действия с базовым периодом данной записи. Значение базы, которая будет получена от конкретной влияющей записи, в общем случае не равно результату, который содержит эта запись. База будет рассчитана пропорционально тому, какую часть от фактического периода влияющей записи составляет перекрывающийся, с указанным базовым периодом, участок. При этом будут использованы данные графика, связанного с этой записью.

В случае зависимости по периоду регистрации для получения базы будут выбираться результаты расчета тех записей, которые попадают в базовый период данной записи значением своего поля «Период регистрации».

Наиболее сложным вариантом зависимости по базовому периоду является случай, когда для вида расчета данной записи установлено свойство «Период действия является базовым периодом». Это свойство означает, что в качестве базового периода данной записи будет использоваться не базовый период, который указан в соответствующих полях записи, а фактический период действия записи, получаемый в результате работы механизма вытеснения по периоду действия и являющийся, в общем случае, набором некоторых периодов.

Формирование записей перерасчета

Механизм формирования записей перерасчета отслеживает факт появления в регистре записей, влияющих на результат расчета уже существующих записей. Возможность влияния новых записей на существующие определяется в результате анализа взаимного влияния видов расчета и на основании работы механизмов вытеснения по периоду действия и зависимости по базовому периоду.

Результатом работы механизма формирования записей перерасчета является набор записей перерасчета, содержащий информацию о том, какие записи регистра должны быть рассчитаны заново (перерасчитаны).

Описание формата внутреннего представления данных 1С в контексте обмена данными

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на «внутреннюю кухню» платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа.

Так, именно на использовании внутреннего представления был построен алгоритм «быстрого массива», который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно «на лету» программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою «копию» проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

Регистратор регистра накопления

Обязательный стандартный реквизит регистра накопления — регистратор.

Регистратор регистра накопления

Регистратор — это документ, при проведении которого формируются записи регистра (т.е. это документ, который может делать движения в регистре накопления).

Перечень документов-регистраторов задается на соответствующей закладке «Регистраторы» окна редактирования объекта конфигурации «Регистр накопления».

Рисунок «Закладка «Регистраторы» окна редактирования объекта конфигурации «Регистр накопления»

Тем не менее, программно можно сделать запись и без документа-регистратора (но при этом все равно подразумевается, что регистратор есть). Также, формирование записей может происходить не только в обработке проведения, но и по каким-то иным событиям, строгих ограничений тут нет.

Большинство алгоритмов создания движения в регистре накопления формируются при проведении документа в модуле объекта (процедура «ОбработкаПроведения»).

Связь объекта 1С «Регистры накопления» с регистратором

Изменение состояния регистра накопления происходит, как правило, при проведении документа. Поэтому каждая запись регистра связана с определенным документом — регистратором, номером строки этого документа, и датой — периодом.

Рисунок

В общем случае значение поле «Период» может не совпадать с датой документа. Например, документ «План продаж» может внести в регистр накопления записи о предполагаемых продажах компании несколькими разными датами.

Состав документов, которые могут создавать записи в регистре накопления, задается разработчиком в процессе создания прикладного решения.

Рисунок

Особенности работы с регистраторами при проведении документов:

  1. Записи в регистре накопления могут формироваться:
    • при проведении документа;
    • при записи документа;
    • при заполнении документа.
  2. Обязательное условие по отношению к Регистратору при записи данных в регистр накопления:  документ-регистратор должен быть записан. Пока документ не записан, в системе нет на него ссылки, а ссылка обязательна для указания в поле «Регистраторы».
  3. Поле «Регистраторы» может содержать не пустую ссылку только на документ регистратор (тип контролируется).
  4. Тип данных поля «Регистраторы» определяется на закладке «Регистраторы» в окне редактирования объекта конфигурации.
  5. Для поля «Регистраторы» можно определить тип ДокументСсылка.<ИмяДокумента>. Список типов регистраторов вполне конкретен (скриншот выше).
  6. Следует помнить:
    • один регистр накопления может быть связан с любым количеством типов документов;
    • один тип документа может быть связан с любым количеством регистров накопления;
    • при удалении документа-регистратора записи автоматически удаляются из базы;
    • записи могут существовать без наличия документа-регистратора, при использовании плана обмена, что может привести к нарушению ссылочной целостности информационной базы.
  7. Дата документа регистратора никак не связана с периодом регистра. Дата записи регистра определяется программно и может как совпадать с датой документа, так и быть вообще любой иной.

Конструктор движений объекта 1С «Регистры накопления»

Алгоритмы, по которым формируются записи в регистре, описываются средствами встроенного языка в процедурах соответствующих документов. Система содержит конструктор движений, который помогает разработчику создавать алгоритмы проведения документа.

Область применения

В настоящее время водяные регистры отопления по большей части применяются на производствах (мастерские, цеха, складские помещения, ангары и другие строения с большими площадями). Большой объем теплоносителя и крупные габариты позволяют регистрам эффективно отапливать такие помещения.

Использование отопительных регистров в промышленных зданиях обеспечивает наиболее оптимальный КПД системы отопления. В сравнении с чугунными или стальными батареями. регистры характеризуются лучшей гидравликой и теплоотдачей. Относительно невысокая стоимость их изготовления снижает затраты на установку всей заводской системы отопления. Помимо этого, они не дороги в эксплуатации.

Также регистры рекомендованы к использованию в помещениях с высокими требованиями к санитарной безопасности (медицинские учреждения, детские сады и т.д.). Приборы легко отмываются от грязи и пыли.

Несмотря на это, понятие экономичность не относится к данному виду отопительных приборов. Как уже было отмечено выше, для нагрева большого объема теплоносителя требуется множество энергии.

Регистры наиболее подходят для отопления производственных помещений.

Отопительные регистры из стальных электросварных труб могут использоваться как в однотрубных, так и в двухтрубных отопительных системах с принудительной или самотечной циркуляцией теплоносителя (на основе воды или пара).

Примечание! По причине большого объема теплоносителя, для нагрева которого требуется потратить множество топлива, использование регистров отопления могут себе позволить только предприятия, но никак не владельцы частных домов, для которых важна экономичность отопительной системы.

График

Для отражения неоднородности периода действия в регистрах расчета введено понятие графика. График «связывается» с регистром расчета, поддерживающим период действия, и используется системой при получении оборотов за период и при получении данных графика.

В качестве графика в системе 1С:Предприятие 8 используется регистр сведений, который должен удовлетворять следующим требованиям:

  • быть непериодическим;
  • иметь, как минимум, одно измерения типа Дата;
  • иметь, как минимум, один ресурс типа число.

Настройка графика при конфигурировании выглядит как на рисунке.

При настройке регистру расчета выбирается регистр сведений, удовлетворяющий перечисленным условиям, из него выбирается дата графика – измерение типа Дата и значение графика – числовой ресурс, который будет восприниматься как «удельный вес» соответствующей даты графика. Например, фрагмент регистра сведений, задающего график почасового начисления, может выглядеть так.

Дата графика Значение графика
01-01-2004
02-01-2004
03-01-2004
04-01-2004
05-01-2004 8
06-01-2004 7
07-01-2004
08-01-2004
09-01-2004 8
10-01-2004 8
11-01-2004
12-01-2004
13-01-2004 8
14-01-2004 8
15-01-2004 8

Такой регистр сведений при получении базовых данных (оборотов за произвольный период) по регистру расчета воспринимается системой следующим образом. Записи регистра сведений (графика) сопоставляются с фактическим периодом действия каждой записи регистра расчета по условию, что дата графика (измерение регистра сведений) не меньше чем начало фактического периода действия и не больше, чем его окончание. Выполняется суммирование ресурса «значение графика» по всему фактическому периоду действия и суммирование ресурса по периоду, за который получается оборот. После чего выделяется доля суммируемого ресурса записи регистра расчета в полученной пропорции.

Следует заметить, что точность, с которой заполняется измерение Дата графика, не обязательно равна дню. Даты в регистре сведений могут задавиться с любой точностью, которая диктуется решаемой задачей. Для учета взаиморасчетов с сотрудниками это, как правило, день. Для других задач это может быть как меньшая точность — декады, месяцы, так и большая (часы).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Климат в доме
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: