Есть Объект нет Ссылки

1. fokin 28.04.17 19:37 Сейчас в теме
Возможно для знающих вопрос окажется элементарным, но все же

обмен из БП 3.0 в БП 2.0, документ "Реализация товаров и услуг"
при записи должен на основании создаваться "Счет на оплату"

Конвертация данных 2.1
Правило конвертации объекта: РеализацияТоваровУслуг
Обработчик: После загрузки

Если Не ОбъектНайден И НЕ ЗначениеЗаполнено(Объект.СчетНаОплатуПокупателю) Тогда
	ОбъектСчетаНаОплату = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
	
	ОбъектСчетаНаОплату.Заполнить(Объект.ПолучитьСсылкуНового());
	ОбъектСчетаНаОплату.Дата = Объект.Дата;
	ОбъектСчетаНаОплату.Записать();

	Объект.СчетНаОплатуПокупателю = ОбъектСчетаНаОплату.Ссылка;
КонецЕсли;
Показать


но вот беда - Ссылка то ничего не содержит!
Счет получается пустой!

Как быть в таком ситуации?
Как заполнить документ стандартно процедурой заполнения?
не имея ссылки
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 03.05.17 12:01
Сообщение было скрыто модератором.
...
3. igel9780 171 03.05.17 12:07 Сейчас в теме
Создавать заранее документ из КД. Возможно потребуется ВыгрузитьПоПравилу, если самого документа счёт в 3.0 сейчас нет, а в 2.0 он нужен.
+
4. fokin 03.05.17 12:12 Сейчас в теме
их надо связать между собой (через реквизит)
и счета нужны не всем, а порядка 50 контрагентам из 4000
+
5. KapasMordorov 428 03.05.17 12:19 Сейчас в теме
ОбъектСчетаНаОплату.Дата = Объект.Дата;
ОбъектСчетаНаОплату.Записать();
Объект.СчетНаОплатуПокупателю = ОбъектСчетаНаОплату.Ссылка;
+
6. Vovan1975 13 03.05.17 12:32 Сейчас в теме
(5) наверно таки записывать следует Объект а не ОбъектСчетНаОплату
+
8. fokin 03.05.17 12:47 Сейчас в теме
(5)
ОбъектСчетаНаОплату.Записать();


пропустил
но уже стоит
+
7. Vovan1975 13 03.05.17 12:34 Сейчас в теме
правда при таком решении вопроса следует, наверно, устанавливать у объект режим ОбменДанными,Загрузка = истина
+
9. KapasMordorov 428 03.05.17 13:03 Сейчас в теме
Тогда в Заполнить() лучше передавать заполненную структуру, а не пытаться сделать ссылку. Ссылку передавать бесполезно, объекта всё равно в базе нет.
+
10. fokin 03.05.17 13:20 Сейчас в теме
Заполнить() это стандартная обработка модуля
там сразу стоит проверка на ТипЗнч(Основание) = Тип("ДокументСсылка.РеализацияТоваровУслуг")

и из него же Основание, берется тч Товары
только вот ссылка еще не сформирована
и ТЧ.Товары.Количество() = 0
+
14. KapasMordorov 428 03.05.17 13:59 Сейчас в теме
(10)
Это если туда ссылку передать.
А если структуру, то заполнение будет сделано другой процедурой.
+
11. Vovan1975 13 03.05.17 13:29 Сейчас в теме
чтобы создать документ на основании реализации эту самую реализацию нужно записать в базу.

То есть до создания документа счет на оплату покупателю.

То есть должна быть строка "Объект.Записать(РежимЗаписиДокумента.Запись)"
+
12. fokin 03.05.17 13:48 Сейчас в теме
ну это я понял
вопрос и был - как быть в такой ситуации
+
13. Vovan1975 13 03.05.17 13:54 Сейчас в теме
ну так самый простой вариант - это принудительно записывать документ реализации в обработчике "После загрузки".

то есть после строчки
Если Не ОбъектНайден И НЕ ЗначениеЗаполнено(Объект.СчетНаОплатуПокупателю) Тогда

следует строчка
Объект.Записать(режимзаписидокумента.Запись);


в идеале неплохо сообщить объекту что запись будет в режиме обмена, но если времени полно то можно на это забить.
+
15. fokin 03.05.17 15:10 Сейчас в теме
Процедура ОбработкаЗаполнения(Основание)
	
	Если ТипЗнч(Основание) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
		<...>
		
	ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда
		<...>
		
	ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг") Тогда
		<...>
	КонецЕсли;
КонецПроцедуры // ОбработкаЗаполнения()
Показать


нету иных типов основания
+
Внимание! Тема сдана в архив

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