Как то на собеседовании получил задание сделать выгрузку Приходных и Расходных кассовых ордеров из Управления торговлей 11 в Бухгалтерию предприятия 3.0 через СОМ-соединение с определенными допущениями.
Все механизмы работы через СОМ-соединение многократно описаны и широко известны. Некоторую сложность вызывал только перенос GUID'а документа из базы-источника в создаваемый документ базы-получателя. Собственно, в основном, ради его описания и создана эта статья.
СтрокаGUIDИсходногоДокумента = XMLСтрока(СсылкаНаИсходныйДокумент.УникальныйИдентификатор());
СсылкаНаСоздаваемыйЧерезСОМДокумент = СОМ_Соединение.Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор", СтрокаGUIDИсходногоДокумента));
СоздаваемыйЧерезСОМДокументОбъект = СОМ_Соединение.Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
СоздаваемыйЧерезСОМДокументОбъект.УстановитьСсылкуНового(СсылкаНаСоздаваемыйЧерезСОМДокумент);
Краткое описание приведенного выше кода:
- получаем строковое представление GUID в базе-источнике;
- создаем ссылку на создаваемый в базе-получателе документ с GUID исходного документа;
- создаем документ-объект в базе получателе;
- присваиваем ему ссылку с требующимся GUID.
Все остальные моменты работы через СОМ-соединение можно прочитать, например, тут Некоторая работа с данными через COM (Vladimir A (wowik)), и описывать их снова нет особого смысла.
Ну, еще можно упомянуть, что проверка на то, что объект с заданным GUID уже существует в базе приемнике может осуществляться следующим способом:
СсылкаНаСоздаваемыйЧерезСОМДокумент = СОМ_Соединение.Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор", СтрокаGUIDИсходногоДокумента));
СсылкаНаСоздаваемыйЧерезСОМДокумент_Строка = СОМ_Соединение.String(СсылкаНаСоздаваемыйЧерезСОМДокумент);
Если Найти(СсылкаНаСоздаваемыйЧерезСОМДокумент_Строка, "Объект не найден") = 0 Тогда
// документ с таким GUID уже существует в базе
КонецЕсли;