Академический Документы
Профессиональный Документы
Культура Документы
встроенного языка
Перерасчеты в системе 1С:Предприятие служат для хранения информации о том, для каких
записей регистров расчета необходимо перерассчитать результаты расчета (ресурсы). В
статье "Особенности настройки объекта Перерасчет" подробно рассматриваются
вопросы настройки объекта конфигурации Перерасчет, которая позволила бы автоматически
регистрировать перерасчеты в системе. В данном разделе мы рассмотрим вопросы
управления составом перерасчетов из языка.
Пример
Рассмотрим пример, когда в регистре сведений содержится информация, используемая для
расчета, как это, например, сделано в типовой конфигурации Управление производственным
предприятием.
В таком случае при записи набора записей регистра сведений необходимо выполнить
примерно те же действия, которые выполняет система при автоматическом вводе
перерасчетов.
При написании текст запроса, который позволит сформировать наборы записей перерасчета
необходимо руководствоваться следующими соображениями:
При формировании наборов записей перерасчета следует исходить из того, что эти наборы
записей могут формироваться только с отбором по объекту перерасчета. Как следствие - в
общем случае придется сформировать несколько наборов записей по разным объектам
перерасчета. Для этого можно использовать прием, применяемый в типовой конфигурации
"Управление производственным предприятием" - создать соответствие ключом которого
будет регистратор, а значением - набор записей перерасчета. Например:
Копировать в буфер обмена
Наборы =
Новый Соответствие;
Пока Выборка.Следующий()
Цикл Набор = Наборы[Выборка.Регистратор];
Если Набор = Неопределено Тогда
// сформировать набор и поместить в соответствие
КонецЕсли;
// добавить строку набора
КонецЦикла;
Это связано с тем, что при записи набора, во-первых, удаляются "старые" записи набора,
которые уже могли повлиять на результаты расчета, а во-вторых, вводятся новые записи
набора. Перед записью набора в информационной базе еще существует прежний состав его
записей и по его состоянию будет отработан ввод записей перерасчета. При записи набора в
информационной базе уже существует новый состав записей набора и по нему также будет
отработан ввод записей перерасчета. В том случае, если содержимое набора записей
кардинально не изменялось и состав записей тот же с точностью "до измерений",
выполнение запроса при записи набора приведет к пустому результату (за счет условия
типа "ГДЕ Перерасчеты.ОбъектПерерасчета ЕСТЬ NULL") и реально запись набора
выполняться уже не будет.