Как программно создать документ ПоступлениеТоваровУслуг в БП3.0

1. migassist 2 25.03.24 02:01 Сейчас в теме
Всем здравствуйте!
В БП3.0 внешней обработкой создается документ ПоступлениеТоваровУслуг.
Как-то так:
&НаСервере
Процедура СформироватьНаСервере()
	
ТЗДок = Новый ТаблицаЗначений;
ТЗДок = ЭтотОбъект.ТЗ.Выгрузить();
	
Для каждого стр из ТЗДок Цикл
Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
Док.Дата = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.ДатаВходящегоДокумента = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.НомерВходящегоДокумента = СокрЛП(стр.НомерДок);
Док.Организация = Объект.Организация;
Док.Контрагент = стр.Контрагент;
Док.Записать();
КонецЦикла;
Показать


После открытия формы документа видим, что реквизит ДоговорКонтрагента - недоступен.
Перевыбор Контрагента ничего не меняет.
Подскажите, пожалуйста, кто в теме: что ещё следует указать при создании нового документа ПоступлениеТоваровУслуг, чтобы договор был доступен?
Найденные решения
4. Boneman 298 25.03.24 10:18 Сейчас в теме
(1) лучше добавить строку после создания объекта

док.Заполнить(неопределено);
тем самым инициировать стандартную процедуру заполнения документа..
там же надо и налогообложение заполнять, и валюту учета..может еще какие то служебные реквизиты.
либо создать документ руками, проанализировать все реквизиты которые в нем есть и программно устанавливать такие же значения.
А вы по сути пустой объект создали и всего 6 реквизитов установили, явно чтото упустили.
migassist; +1 Ответить
7. migassist 2 25.03.24 18:47 Сейчас в теме
Спасибо всем за оперативные советы!
Особенное спасибо 4. Boneman за подсказку применить функцию док.Заполнить(неопределено);

Вот так теперь норм:

Для каждого стр из ТЗДок Цикл
Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
Док.Дата = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.ДатаВходящегоДокумента = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.НомерВходящегоДокумента = СокрЛП(стр.НомерДок);
Док.Организация = Объект.Организация;
Док.Контрагент = стр.Контрагент;

Док.Заполнить(Неопределено); //!!!!!!!!!!!!!

Док.Записать();
КонецЦикла;
Показать


Заполнить(Неопределено) должно быть после Док.Контрагент.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 25.03.24 08:56 Сейчас в теме
(1) Может учет по договорам не включен в программе?
yaroslav.artem; +1 Ответить
3. Kanigin 25.03.24 09:40 Сейчас в теме
(1) А при заполнении Контрагента "руками" договор активен? Посмотрите, какие процедуры выполняются при этом, какие реквизиты заполняются.
migassist; +1 Ответить
4. Boneman 298 25.03.24 10:18 Сейчас в теме
(1) лучше добавить строку после создания объекта

док.Заполнить(неопределено);
тем самым инициировать стандартную процедуру заполнения документа..
там же надо и налогообложение заполнять, и валюту учета..может еще какие то служебные реквизиты.
либо создать документ руками, проанализировать все реквизиты которые в нем есть и программно устанавливать такие же значения.
А вы по сути пустой объект создали и всего 6 реквизитов установили, явно чтото упустили.
migassist; +1 Ответить
5. denis-sqluev 25.03.24 10:55 Сейчас в теме
(1)Здравствуйте! Берете консоль запросов и выводите все реквизиты, в отборе берете документ созданный обработкой и документ созданный вручную. Разница и покажет в чем причина.
migassist; +1 Ответить
6. yaroslav.artem 25.03.24 12:01 Сейчас в теме
Если 1 пост не поможет, попробуйте создавать не новый документ, а копировать какой нибудь существующий программно, в котором всё норм. Нужные поля в тч перезаполнить. Кроме этого посмотрите какие обработчики привязаны к элементу формы Договор и что при этом происходит.
migassist; +1 Ответить
7. migassist 2 25.03.24 18:47 Сейчас в теме
Спасибо всем за оперативные советы!
Особенное спасибо 4. Boneman за подсказку применить функцию док.Заполнить(неопределено);

Вот так теперь норм:

Для каждого стр из ТЗДок Цикл
Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
Док.Дата = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.ДатаВходящегоДокумента = ОбщегоНазначенияКлиентСервер.СтрокаВДату(стр.ДатаДок);
Док.НомерВходящегоДокумента = СокрЛП(стр.НомерДок);
Док.Организация = Объект.Организация;
Док.Контрагент = стр.Контрагент;

Док.Заполнить(Неопределено); //!!!!!!!!!!!!!

Док.Записать();
КонецЦикла;
Показать


Заполнить(Неопределено) должно быть после Док.Контрагент.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот