Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

com-соединение и поиск строк в удаленной базе

com-соединение и поиск строк в удаленной базе
Я
   denco_78
 
31.01.21 - 15:32
Надо сравнить две одинаковые ТЧ в локальном и удаленном документах и найти различающиеся строки.

С созданием структуры поиска в удаленной базе разобрался, хоть и сломал всю голову. Не могу из массива результата поиска получить найденную строку, чтобы ее удалить из ТЗ. РезультатПоиска.Получить (0) говорит, что метод (Получить) не обнаружен. Хотя УдаленнаяТЗ.НайтиСтроки (УдаленнаяСтруктураПоиска).Получить (0) нормально работает.


<code>
ЛокальнаяТЗ = Объект.Товары.Выгрузить();
УдаленнаяТЗ = УдаленныйОбъект.Товары.Выгрузить();
        
ЧислоЛокальныхСтрок = ЛокальнаяТЗ.Количество();
                
ИндексСтроки = ЧислоЛокальныхСтрок -1;
                
Пока ИндексСтроки >=0 Цикл
    ЛокальнаяСтрока = ЛокальнаяТЗ[ИндексСтроки];
    УдаленнаяСтруктураПоиска = ПолучитьУдаленнуюСтруктуруПоиска (ЛокальнаяСтрока, ИменаКолонокТЧ, ПодключениеКБазе2);
    РезультатПоиска = УдаленнаяТЗ.НайтиСтроки (УдаленнаяСтруктураПоиска);
                    
    Если РезультатПоиска.Количество() > 0  Тогда
        ЛокальнаяТЗ.Удалить (ЛокальнаяСтрока);
        УдаленнаяТЗ.Удалить (РезультатПоиска.Получить (0));
    КонецЕсли;
                    
    ИндексСтроки = ИндексСтроки - 1;
КонецЦикла;


Функция ПолучитьУдаленнуюСтруктуруПоиска (ЛокальнаяСтрока, ИменаКолонокТЧ, УдаленноеПодключение)
    ЧислоКолонок = ИменаКолонокТЧ.Количество();
    
    УдаленнаяСтруктураПоиска = УдаленноеПодключение.NewObject ("Структура");
    
    Для ИндексКолонки = 0 По ЧислоКолонок-1 Цикл
        ИмяКолонки = ИменаКолонокТЧ[ИндексКолонки];
        ЛокальноеЗначение = ЛокальнаяСтрока[ИмяКолонки];
        ТипДанныхXML = XMLТипЗнч (ЛокальноеЗначение);
                
        УдаленнаяСтруктураПоиска.Вставить (ИмяКолонки,
            УдаленноеПодключение.XMLЗначение (УдаленноеПодключение.ИзXMLТипа(ТипДанныхXML.ИмяТипа, ТипДанныхXML.URIПространстваИмен), XMLСтрока (ЛокальноеЗначение)));
    КонецЦикла;
    Возврат УдаленнаяСтруктураПоиска;
КонецФункции
</code>
   Ахмадинежад
 
1 - 31.01.21 - 15:58
лучше скопируй сюда - и тут сравнивай через врем таблицы в запросе полным соединением.
   Chameleon1980
 
2 - 31.01.21 - 15:58
используй Get вместо получить - бывает
   Eeeehhhh
 
3 - 31.01.21 - 16:02
(0) сделай проще
1. приведи объекты к примитивном типу
2. загони в тз на стороне com ЗначениеВСтрокуВнутр на стороне проверки ИзСтроки
3. загони обе ТЗ в запрос и сравни
   denco_78
 
4 - 31.01.21 - 16:48
(2) Точно, Get. Так и думал, что причина будет дурацкая. :) Спасибо!
(1) , (3)  Да я уже сделал так. На самом деле задача разовая - отследить какие документы поменялись после запуска некоей обработки.
Всем спасибо за советы!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.