Подготовка параметров проведения - ключевая точка схемы проведения. Именно на данном этапе формируются все будущие наборы записей регистров и помечаются в ключ структуры ПараметрыПроведения.
После выполнения метода каждый ключ структуры ПараметрыПроведения содержит таблицу значений с будущими движениями регистра. Обратите внимание, что ключи структуры названы по шаблону:
-
ВТ_[ИмяВременнойТаблицы], где ВТ - признак временной таблицы, а [ИмяВременнойТаблицы] - произвольное имя временной таблицы
-
[ИмяРегистраДляДвижений], где [ИмяРегистраДляДвижений] - это имя регистра, куда будут записаны движения из таблицы значений
-
Реквизиты - структура со значениями реквизитов шапки документа
Рассмотрим детально, что происходит в методе ПодготовитьПараметрыПроведения.
Создается объект запрос и формируются параметры будущего запроса по полученной ссылке на документ. Все параметры запроса, которые пригодятся для исполнения текста запроса, устанавливаются методом УстановитьПараметр()
. Подробнее см. ИнициализироватьРеквизитыДокумента
Для каждой таблицы запроса (временной таблице или выборки данных) необходимо добавить текст запроса и указать имя таблицы для помещения в ДополнительныеСвойства.ПараметрыПроведения.
- Текст запроса может содержать сразу несколько сборов данных (ВТ или выборок)
- Все таблицы текста запроса должны быть помещены в таблицы запроса методом
ПроведениеСерверПТБ.ДобавитьТаблицуЗапроса("[ИмяТаблицы]", ДополнительныеСвойства);
, где ИмяТаблицы - наименование ВТ или регистра для которого формируются движения. - Сам текст запроса должен быть добавлен методом
ПроведениеСерверПТБ.ДобавитьТекстЗапроса(ТекстЗапроса, Запрос);
Подробнее см. в примере реализацию методов ТекстЗапросаТабличныеЧасти, ТекстЗапросаРегистрОстатки
По окончанию формирования текстов запроса временных таблиц или выборок данных наборов движений, необходимо вызвать метод ПроведениеСерверПТБ.ВыполнитьЗапросДанных(Запрос, ДополнительныеСвойства);
. Таким образом, все таблицы из запроса будут рассчитаны и помещены в параметр ДополнительныеСвойства.ПараметрыПроведения.
После формирования таблиц с наборами записей, в некоторых случаях необходимо выполнить дополнительную проверку таблиц данных. Для подобных проверок можно использовать данный метод. Он вызывается после формирования параметров проведения, но до формирования движений в регистрах (а также записи движений в базу данных).
Формирование движений выполняется на основании таблиц значений расположенных в ДополнительныеСвойства.ПараметрыПроведения. Как было сказано ранее, каждый набор записей должен иметь имя согласно целевому регистру. Данные требование необходимо для удобства, но не является обязательным.
Формирование движений по каждому из регистров лучше делать отдельной вспомогательной процедурой (см. СформироватьДвиженияРегистрОстатки). Данная процедура может быть экспортной. Это может быть удобно, когда понадобится формировать движения по отдельному регистру при служебных обработках, без повторного формирования движений по другим регистрам. Впрочем, для этого есть метод ПроведениеСерверПТБ.ОбновитьДвиженияДокумента.
При формировании движений, следует обратить внимание на установку признака Записывать у набора записей. Данный признак необходимо устанавливать для всех наборов записей регистров, по которым планируется контроль остатков с предварительной записью движений.
Подробнее см. в представленном примере.
В данном методе необходимо указать все наборы записей регистров, по которым планируется использовать методику контроля с предварительной записью и проверкой итоговых остатков “на текущий момент” (новая методика проведения).
Если набор записей регистра указан в массиве ДополнительныеСвойства.ОбщиеДанные.РегистрыДляКонтроля, только в таком случае вызываются методы модуля набора записей регистра для подготовки данных для контроля.
Подробнее см. в представленном примере.
Для каждого регистра, по которому выполняется контроль отрицательных остатков рекомендуется создавать отдельный метод обработки результата контроля. Результат контроля формируется в модуле набора записей регистра методом ВыполнитьКонтрольРезультатовПроведения. Если данный метод не реализован, то и результата контроля не будет. Поэтому необходимо проверять его наличие и что тип результата контроля - ТаблицаЗначений.
Сообщение пользователям при этом рекомендуется делать методом СообщитьПользователю общего модуля ОбщегоНазначения, указывая при этом и ссылку на объект и путь к реквизиту (с учетом номера строки табличной части).
Для получения пути к реквизиту табличной части, рекомендуется использовать метод ПроведениеСерверПТБ.ПутьКТабличнойЧасти.
Подробнее см. в представленном примере.