v8: Проведение документов по ссылке (сервер) Ключевые слова: сервер, проведение, оптимизация
Как известно передавать объект на сервер нельзя (мутабельное значение), поэтому при проведени на сервере становятся недоступны конструкции
Движение = Движения.МойРегистрНакопления.Добавить();
...
Движения.МойРегистрНакопления.Записать();
Но все-таки добавить движения имея только ссылку можно
Процедура Провести(Ссылка) Экспорт
//Регистр накопления
НаборЗаписей = РегистрыНакопления.РегистрНакопления.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.Прочитать();
Для Каждого Стр ИЗ Ссылка.ТабличнаяЧасть Цикл
Запись = НаборЗаписей.ДобавитьПриход();
Запись.Период = Ссылка.Дата;
Запись.Номенклатура = Стр.Номенклатура;
Запись.Количество = Стр.Количество;
КонецЦикла;
НаборЗаписей.Записать();
//Регистр сведения
НаборЗаписей = РегистрыСведений.РегистрСведений.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.Прочитать();
Для Каждого Стр ИЗ Ссылка.ТабличнаяЧасть Цикл
Запись = НаборЗаписей.Добавить();
Запись.Номенклатура = Стр.Номенклатура;
Запись.Значение = Стр.Количество;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Само проведение вызывается из модуля документа следующим образом:
Процедура ОбработкаПроведения(Отказ, Режим)
Провести(Ссылка);
КонецПроцедуры
От Гения 1С:
Существует и другой способ. Вернуть набор записей в виде таблицы значений, содержащей немутабельные значения - это сервер позволяет. Занести полученные значения в набор Движения. Документ запишет их сам. :) |