Имя: Пароль:
1C
1С v8
Программное заполнение движений документа "Корректировка записей регистров"
0 VeleX
 
14.02.17
15:50
Добрый день, коллеги!

Есть две версии обработки:
1.
...
Запрос = Новый Запрос("...");
Рез = Запрос.Выполнить().Выгрузить();

Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
<Заполнение_шапки>
Рег = Док.ТаблицаРегистровНакопления.Добавить();
Рег.Имя = Метаданные.РегистрыНакопления.<ИмяРегистра>.Имя;
Рег.Представление = Метаданные.РегистрыНакопления.<ИмяРегистра>.Представление;
Док.Записать();

Движения = Док.Движения.<ИмяРегистра>;
Движения.Записывать = Истина;

Для каждого Стр ИЗ Рез Цикл
Движение = Движения.ДобавитьПриход();
ЗаполнитьЗначениеСвойств(Движение, Стр);
КонецЦикла;
Форма = Док.ПолучитьФорму("ФормаДокумента");
Форма.Открыть();
...

2.

ТабОст = ПолучитьТабОст();
СоздатьДокКорректировки(ТабОст);

Функция ПолучитьТабОст()
Запрос = Новый Запрос("...");
Рез = Запрос.Выполнить().Выгрузить();
КонецФункции

Процедура СоздатьДокКорректировки(ТабОст)
Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
<Заполнение_шапки>
Рег = Док.ТаблицаРегистровНакопления.Добавить();
Рег.Имя = Метаданные.РегистрыНакопления.<ИмяРегистра>.Имя;
Рег.Представление = Метаданные.РегистрыНакопления.<ИмяРегистра>.Представление;
Док.Записать();

Движения = Док.Движения.<ИмяРегистра>;
Движения.Записывать = Истина;

Для каждого Стр ИЗ ТабОст Цикл
Движение = Движения.ДобавитьПриход();
ЗаполнитьЗначениеСвойств(Движение, Стр);
КонецЦикла;
Форма = Док.ПолучитьФорму("ФормаДокумента");
Форма.Открыть();
КонецПроцедуры

Отличия, как видите только в том что функциональность разделена.
Но в первом случае заполнение документа проходит нормально, в открывающейся форме все движения показаны.
Во втором случае в отладчике движения заполняются, но в регистр не записываются по факту, и соответственно форма документа открывается пустой.
Почему второй подход не дает результата, подскажите?
1 Amra
 
14.02.17
15:57
Во втором случае ТабОст пустая
2 VeleX
 
14.02.17
16:05
Проверял, ТабОст не пустая, в отладчике Движения заполняются, но в регистр не пишутся
3 Has
 
14.02.17
16:10
Функция ПолучитьТабОст() разве что то возвращает?
4 VeleX
 
14.02.17
16:14
(3) Да, весь код просто не цитировал, в оригинале прописан

Возврат Рез;

Описал просто схему работы обработки.
5 VeleX
 
14.02.17
17:03
Решил проблему добавив "Движения.Записать()" в конце процедуры СоздатьДокКорректировки() перед открытием формы документа.
Все же пока не понял почему именно так...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn