Com соединение, ГУИДы и ТЗ

1. user_2010 902 22.02.17 13:21 Сейчас в теме
Добрый день!

Нужна помощь по Com соединению.

Через Com соединение запросом тянем данные из другой базы. Это используется для обмена данными между ЗУП и БУХ.
Сейчас синхронизация справочников делается по кодам. Хочу перевести на синхронизацию по ГУИДам.

ГУИДы получить запросом нельзя.
Поэтому результат запроса выгружаю в ТЗ и затем уже вычисляю ГУИДы.
Не пойму почему ТЗ превращается в ComОбъект после того как я в нее выгружаю результат запроса? И из нее удаляются колонки добавленные для хранения ГУИДов?

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



Для Каждого СтрокаТЗ Из ТЗПодразделения Цикл
СтрокаТЗ.СсылкаГУИД = ЗУП.String(СтрокаТЗ.Ссылка.УникальныйИдентификатор()); // здесь уже нет реквизита СсылкаГУИД
КонецЦикла;

Объясните, плз, суть, что я делаю неправильно?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kasper076 104 22.02.17 13:37 Сейчас в теме
(1) Видимо объект "Запрос" создан на стороне базы, к которой подключаешься по СОМ
Запрос = ЗУП.NewObject("Запрос")

А раз он на другой стороне, то это СОМ-объект.
Добавляй колонки после получения ТЗ
ТЗПодразделения = Запрос.Выполнить().Выгрузить();
ТЗПодразделения.Колонки.Добавить("СсылкаГУИД")


СКД может сразу вернуть ТЗ с ГУИДами.
4. user_2010 902 22.02.17 14:04 Сейчас в теме
3. riko-81 22.02.17 13:51 Сейчас в теме
Вот это все описание бесполезно:
ТЗПодразделения = Новый ТаблицаЗначений; 
ТЗПодразделения.Колонки.Добавить("Ссылка",); 
ТЗПодразделения.Колонки.Добавить("СсылкаГУИД",); 
ТЗПодразделения.Колонки.Добавить("Код",); 
ТЗПодразделения.Колонки.Добавить("Наименование",); 


так как в строке
ТЗПодразделения = Запрос.Выполнить().Выгрузить(); // вот здесь ТЗ превращается в ComОбъект 

переменной ТЗПодразделения присваивается ComОбъект - ТаблицаЗначений - результат выполненного запроса в удаленной базе

Весь код должен быть:
ТЗПодразделения = Запрос.Выполнить().Выгрузить(); // вот здесь ТЗ превращается в ComОбъект 
ТЗПодразделения.Колонки.Добавить("СсылкаГУИД");

Для Каждого СтрокаТЗ Из ТЗПодразделения Цикл 
СтрокаТЗ.СсылкаГУИД = ЗУП.String(СтрокаТЗ.Ссылка.УникальныйИдентификатор()); // здесь уже нет реквизита СсылкаГУИД 
КонецЦикла;	

Anchoret; config; sommid; +3 Ответить
5. SlavaKron 22.02.17 16:14 Сейчас в теме
(3)
СтрокаТЗ.СсылкаГУИД = ЗУП.XMLСтрока(СтрокаТЗ.Ссылка)
будет работать быстрее, чем
СтрокаТЗ.СсылкаГУИД = ЗУП.String(СтрокаТЗ.Ссылка.УникальныйИдентификатор())
uncle_Vasya; +1 Ответить
Оставьте свое сообщение

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