обмен документами УТ11-УТ11 по com соединению

1. kodblack 14 24.05.23 14:43 Сейчас в теме
Добрый всем!
Подскажите, где ошибка. запутался.
Из УТ11-в УТ11 загружаю перемещение (как пример)


&НаСервере
Процедура ЗагрузитьПеремещениеТоваров();
	Объект.ТекущееСостояние="Перемещение Товаров";
	ТзСтрокДок = Новый ТаблицаЗначений;
	ТзСтрокДок.Колонки.Добавить("Наименование");
	ТзСтрокДок.Колонки.Добавить("Код");
	ТзСтрокДок.Колонки.Добавить("СтавкаНДС", новый ОписаниеТипов("ПеречислениеСсылка.СтавкиНДС"));
	ТзСтрокДок.Колонки.Добавить("Количество");
	Выборка=V8УТ.Документы.ПеремещениеТоваров.Выбрать(НачалоДня(Объект.ДатаНач),КонецДня(Объект.ДатаКон));
	Пока Выборка.Следующий() Цикл
		Если СокрЛП(Выборка.Организация.ИНН) <> СокрЛП(Объект.Организация.ИНН) Тогда продолжить; КонецЕсли;
		Если Выборка.Проведен=Ложь Тогда продолжить; КонецЕсли;
		ДокументУТ=Выборка;
		ДатаДок	= 	ДокументУТ.Дата;
		НомерДок	=	СокрЛП(ДокументУТ.Номер);
		СкладОтправитель               		= ДокументУТ.СкладОтправитель;
		СкладОтправительНаименование   		= ДокументУТ.СкладОтправитель;
		СкладПолучатель               		= ДокументУТ.СкладПолучатель;
		СкладПолучательНаименование   		= ДокументУТ.СкладПолучатель; 
		УТКомментарий 		=  	СокрЛП(ДокументУТ.Комментарий);
		ТзСтрокДок.Очистить();
		Для Каждого СтрТЧ ИЗ ДокументУТ.Товары Цикл
			ТекТовар	=   СтрТЧ.Номенклатура;  
			Новаястрока=ТзСтрокДок.Добавить();
			Новаястрока.Наименование=стрТЧ.Номенклатура;
			Новаястрока.Серия = стрТЧ.Серия;
			Новаястрока.Количество=Число(СтрТЧ.Количество);
			
		КонецЦикла;
		Документ 		= 	Документы.ПеремещениеТоваров.СоздатьДокумент();
		Документ.Номер 	=  	НомерДок;
		Документ.Дата 	= 	ДатаДок;
		СкладОтправитель						= 	ОпределитьСклад(СкладОтправитель,СкладОтправительНаименование);
		СкладПолучатель							= СкладПолучательНаименование; ОпределитьСклад(СкладПолучатель,СкладПолучательНаименование);
		Документ.Организация					= 	Объект.Организация;
		Документ.СкладОтправитель               =	СкладОтправитель;
		Документ.СкладПолучатель				=   СкладПолучатель;
		Документ.Комментарий					=	"V8УТ "+НомерДок;
		//Переносим табличную часть
		Документ.Товары.Очистить();
		Для Каждого СтрокаТЗ Из ТзСтрокДок Цикл
			Номенклатура	=	Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЗ.Наименование);
			НоваяСтрока=Документ.Товары.Добавить();
			НоваяСтрока.Номенклатура	=	Номенклатура;
			НоваяСтрока.Количество 		= 	СтрокаТЗ.Количество;
		КонецЦикла;
		Попытка
			Документ.Записать(РежимЗаписиДокумента.Запись);
			Объект.ТекущееСостояние=""+Документ;
		Исключение;
			Сообщить("документ ПеремещениеТоваров не записан: "+НомерДок,СтатусСообщения.ОченьВажное);
		КонецПопытки;
	КонецЦикла;
КонецПроцедуры
Показать



Документы создались, но не поставились: склады, товары, серии и т.д.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1484 24.05.23 14:51 Сейчас в теме
(1) в табличной части только номенклатура заполнена и количество, там же еще куча полей.
3. lefthander 24.05.23 15:06 Сейчас в теме
(1)На сколько я помню по ком объекты не передаются, а только их значение в виде текста. Так что в приемнике по значению надо искать объекты и если объектов нет, то создавать.
6. lefthander 24.05.23 15:13 Сейчас в теме
(1)
но не поставились: склады, товары, серии и т.д.
А вот это тоже надо искать....

и Вот тут
Документ.Организация = Объект.Организация;
Документ.СкладОтправитель = СкладОтправитель;

Это на приемнике, а берете как из источника...;)
4. kodblack 14 24.05.23 15:10 Сейчас в теме
(3) это найти по коду или создать?
Номенклатура	=	Справочники.Номенклатура.НайтиПоКоду(СтрокаТЗ.Код);
5. kodblack 14 24.05.23 15:12 Сейчас в теме
(3) у меня есть в коде, найти по наименованию:

Для Каждого СтрокаТЗ Из ТзСтрокДок Цикл
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЗ.Наименование);
7. Xershi 1484 24.05.23 15:18 Сейчас в теме
(5) не рекомендуется так работать, создайте реквизит ИД и по нему проводите поиск.
8. kodblack 14 24.05.23 15:35 Сейчас в теме
(7) товар поиск по коду
Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СтрокаТЗ.Код);

а склад по доп.реквизиту.
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","КодСк");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СкладыДополнительныеРеквизиты.Значение КАК Код,
| СкладыДополнительныеРеквизиты.Ссылка.Наименование КАК Склад
|ИЗ
| Справочник.Склады.ДополнительныеРеквизиты КАК СкладыДополнительныеРеквизиты
|ГДЕ
| НЕ СкладыДополнительныеРеквизиты.Ссылка.ЭтоГруппа
| И НЕ СкладыДополнительныеРеквизиты.Ссылка.ПометкаУдаления
| И СкладыДополнительныеРеквизиты.Свойство = &Свойство";
Запрос.УстановитьПараметр("Свойство",Свойство);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Склад = СокрЛП(Выборка.Код);



У меня дальше данные не идут.
9. soft_wind 24.05.23 15:37 Сейчас в теме
Если документы по структуре одинаковые/идентичные то с помощью ХДТО тремя строчками весь обмен делается
10. kodblack 14 24.05.23 16:06 Сейчас в теме
(9) а можно поподробнее?

мне в дальнейшем данную обработку - нужно передать пользователю, он выбирает период и нажимает выгрузить.
ПЫСЫ: выгрузка только по 3 складам из 25 шт.
11. soft_wind 24.05.23 16:24 Сейчас в теме
(10) у меня такой код используется

&НаСервереБезКонтекста
Функция СериализоватьВСтроку(Ссылка)

	//для переноса ссылочных объектов (пока) между идентичными базами через строку ХДТО
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	Значение = Ссылка.ПолучитьОбъект();
	СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Значение, НазначениеТипаXML.Явное);
	
	Возврат ЗаписьJSON.Закрыть();

КонецФункции 
Показать
starik-2005; +1 Ответить
12. starik-2005 3037 24.05.23 20:56 Сейчас в теме
(11)
    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Ссылка.ПолучитьОбъект(), НазначениеТипаXML.Явное);
13. kodblack 14 25.05.23 09:06 Сейчас в теме
(6) и Вот тут
Документ.Организация = Объект.Организация;
Документ.СкладОтправитель = СкладОтправитель

организация определена в форме как объект, а склады по доп.реквизиту
Оставьте свое сообщение

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