Использование инструментов разработчика для отладки обменов КД 2.0

05.05.17

Интеграция - Обмен между базами 1C

Пара трюков, благодаря которым жить становится намного проще...

Не буду здесь говорить о штатной отладке через внешнюю обработку "ВыгрузкаЗагрузкаДанныхXML8x.epf" - в ней нет ничего сложного, и осваивается она довольно просто. Но не всегда это удобно - и не всегда это применимо, если говорить про online-обмены. Вы можете просмотреть выгрузку штатным способом, с отбором по плану обмена - но результат может быть отличен от того, который получается при непосредственно обмене. Потому что отлаживаемся через внешнюю обработку, а настроенный обмен работает через ряд служебных обработок, механизм которых в нюансах от нее отличен. Также надо иметь в виду, что базы участники обмена могу иметь разные версии БСП. Поэтому может возникнуть такая ситуация, что отлаживались на одном, а видим другое. Как этого избежать? Отлаживаться по контексту. То есть работая непосредственно с штатным механизмом обмена.

Первое, о чем хочется упомянуть - в принципе когда речь заходит о любых обменах на КД 2.0, это разработка Конвертация данных + Контекстная подсказка. Это такой "апгрейд" КД 2.0, на основе инструментов разработчика. Как показывает практика мало кто о ней знает, а инструмент удобнейший. Отнесем это к части рабочего места: синтакс контроль в правилах, а также контекстная подсказка по именам метаданных - очень крутая вещь, рекомендую.

Но только этим роль ИР здесь не заканчивается. Перед тем как читать дальше - рекомендую ознакомится с механизмом отложенной отладки. Если где-то в правилах используется закрученный алгоритм, и хочется посмотреть результат запроса, или таблицу значений - это очень просто реализуется с их помощью. Теперь немного определюсь с понятиями. 

В основном здесь будет рассматриваться online обмен по com-соединению от базы "Источник" в базу "Приемник". Основная сложность в разработке правил online обмена состоит в том, что штатный механизм требует стандартной выборки. Можно применять произвольный алгоритм - но при этом все отборы и квитирование ложатся на плечи разработчика, поэтому далее буду считать что все ПВД  в рамках online обмена реализованы именно стандартной выборкой. О каких же запросах может идти тогда речь? Дело в том, что практически все обмены имеют какие-то свои, обусловленные методологией сложности  (мне приходилоссь выгружать бизнес процессы в записи регистров сведений, например). Получается что для штатной работы  необходима стандартная выборка, но выгружаемая информация должна иметь другую структуру. Тут-то и приходят на помощь запросы и алгоритмы: ведь если в глобальном событии конвертации "ПередПолучениемИзмененных" реализовать выборку данных, в которой сохранить ключ - т.е. ссылку на выгружаемый объект, то в событии "ПередВыгрузкой" можно спозиционироваться на получившуюся выборку, и делать все что душе угодно. Главное  - оставить ключ исходной выгрузки  - чтобы система после удачного обмена могла произвести квитирование и корректно очистить таблицы изменений.

Чтобы просмотреть любой параметр конвертации, запрос, таблицу, ссылку - что угодно - надо добавить в правила два алгоритма: один для выгрузки, другой - для загрузки. Текст у них будет практически одинаков, вот как это выглядит у меня:

Код алгоритма
Если Ложь Тогда
    // Чтобы не ругался синтакс контроль, необходим этот блок в алгоритме "как-бы объявления переменных"
    СообщениеЛога = Неопределено;    
    ОбъектИР = Неопределено;
    МодальныйВызов = Неопределено;
КонецЕсли;

Если МодальныйВызов = Неопределено Тогда
    МодальныйВызов = Ложь; // Для online обменов, для прочих - удобнее Истина, если работаем в обычном приложении
КонецЕсли;

Попытка
    // Бывает такое, что забываю убирать вызов лога, это разумеется может привести к ошибке. 
    // Чтобы подстраховать себя от этого - всю конструкцию обрамляю в попытку
    
    Если ОбъектИР <> Неопределено Тогда      
        ЭтоКоллекция = Истина;
        Попытка
            Просто = ОбъектИР.Ссылка;        
            ЭтоКоллекция = Ложь;
        Исключение
        КонецПопытки;
        
        Если ТипЗнч(ОбъектИР) = Тип("Запрос") Тогда  
            Если МодальныйВызов Тогда 
                // в обычном режиме при исполнении алгоритма откроется модальное окно с запросом и всеми параметрами
                СообщениеЛога = ВнешниеОбработки.Создать("D:\Tools\ir\ирПортативный.epf", БезопасныйРежим()).От(ОбъектИР);
            Иначе
                // лог для отложенной отладки запроса - открывается в консоли запросов
                СообщениеЛога = ВнешниеОбработки.Создать("D:\Tools\ir\ирПортативный.epf", БезопасныйРежим()).От(ОбъектИР,,,Истина);
            КонецЕсли;
        Иначе           
            Если МодальныйВызов Тогда 
                // в обычном режиме при исполнении алгоритма откроется модальное окно с исследователем объектов
                СообщениеЛога = ВнешниеОбработки.Создать("D:\Tools\ir\ирПортативный.epf", БезопасныйРежим()).Ис(ОбъектИР, ЭтоКоллекция, Ложь);
            Иначе
                // лог для отложенной отладки ссылки или коллекции - открывается в исследователе объектов 
                СообщениеЛога = ВнешниеОбработки.Создать("D:\Tools\ir\ирПортативный.epf", БезопасныйРежим()).Ис(ОбъектИР, ЭтоКоллекция, Истина);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;    
    
    Если СообщениеЛога <> Неопределено Тогда   
        АдресЛога = "D:\Лог.txt";
        
        ТекстДокумент = Новый ТекстовыйДокумент;
        ТекстДокумент.Прочитать(АдресЛога);
        // Вся разница в текстах алгоритма только в этой строчке - "выгрузка" для выгрузки, "загрузка" для загрузки
        ТекстДокумент.ДобавитьСтроку("" + ТекущаяДата() + ", выгрузка: " + СообщениеЛога);
        ТекстДокумент.Записать(АдресЛога);
    КонецЕсли;
    
Исключение
КонецПопытки;


//Примеры вызова:

ОбъектИР = Запрос.ДополнительныеСвойстваКонтрагентов;
Выполнить(Алгоритмы.ЛогВыгрузки);

//..

ОбъектИР = Параметры; // т.е. глобальные параметры конвертации 
Выполнить(Алгоритмы.ЛогВыгрузки); // Откроется исследователь объектов

//Иногда не надо вызывать ИР, а нужно быстро что-то посмотреть:
СообщениеЛога = НазначениеПлатежа + ", сформировано по " + Объект.Ссылка;
Выполнить(Алгоритмы.ЛогЗагрузки); // Откроется исследователь объектов

Далее в нужном месте вызывается этот алгоритм, и:

  • для онлайн обмена - формируется строка сообщения отложенной отладки, помещается в лог, потом берется оттуда, и отправляется в ИР.
  • для прочих обменов и обменов через ВыгрузкаЗагрузкаXML82.epf - можно выставить параметр МодальныйВызов = Истина, и при выгрузке сразу можно видеть модальное окно с требуемым контекстом. Но здесь есть нюанс: окно мы будем видеть в источнике, с контекстом источника. Чтобы получить запрос, который выполняется в удаленной базе надо модальный вызов запрещать, и пользоваться логом.

Еще выручает порой вот такой метод ИР:

обр = ВнешниеОбработки.Создать("D:\Tools\ir\Модули\ирОбщий.epf", Ложь);
обр.СохранитьЗначениеВФайлЛкс(МояТаблица, ПолноеИмяФайла, Сжатие = Ложь, УровеньСжатия = Неопределено); 
// Здесь специально оставил значения параметров, чтобы было ясно что это

Обычно я применяю его, если надо как-то детально проанализировать коллекцию, или передать эту коллекцию в параметр запроса удаленной базы. Т.е. таблицу собрали в одной базе, а параметром хочется ее засунуть в запрос другой  базы - иногда очень выручает.

Пара слов о остановке по ошибке. Обычно с ней проще\быстрее понимать причину вылета обмена, по выбросу исключения в базе приемнике (я имею в виду отладку удаленной базы по com-соединению), т.е. когда выгрузка отлажена и делаем загрузку. Для этого необходимо включить отладку внешнего соединения. Делается это очень просто: в каталог конфигурационных файлов (т.е. "...\1cv8\conf") необходимо добавить файл "comcntrcfg.xml", примерно следующего содержания:

<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" protocol="tcp" debuggerURL="tcp://localhost"/>
</config>

Перезапускать сервер 1С не нужно. После этого можно в базе приемнике включать флаг "Остановка по ошибке", в настройках отладки ставить флаг "Отладка \ Автоматическое подключение \ Клиентские и внешние соединения на сервере" и запускать обмен. В случае выброса исключения вы сможете проанализировать контекст удаленной базы.

Если по отладке хочется останавливаться в базе источнике, то надо учитывать, что online обмены выполняются в фоне. Можно конечно зайти в предметы отладки, и включить фоновые задания (Отладка \ Подключение \ Автоматическое подключение \ поставить флаг "Фоновые задания"). Но чтобы не материться всякий раз, когда контекст отладки перехватывается параллельно работающим процессом - можно использовать те параметры запуска, о которых позаботились разработчики БСП - запускать базу с ключом "РежимОтладки" (Сервис \ Параметры \ Запуск 1С: предприятия \ Параметр запуска = "РежимОтладки", подробнее - доступные параметры запуска приложения). Тогда обмены не будут запускаться в фоне, и можно отлаживаться  более просто.

Конечно, кому-то все это может показаться сложным. Но это гораздо удобнее, чем отлаживаться через штатную внешнюю обработку. Попробуйте сами)

nt

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160365    357    268    

349

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135649    730    291    

391

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68923    181    139    

111

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20669    136    38    

95

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    232016    126    327    

297

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34487    83    58    

81

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46859    200    64    

162

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

Обмен между базами 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    190860    270    239    

270
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Matveev_VS 160 15.05.17 10:43 Сейчас в теме
2. artbear 1525 26.05.17 17:07 Сейчас в теме
Спасибо за использование ИР.
Очень их люблю
3. unichkin 1564 26.05.17 18:33 Сейчас в теме
(2) Для меня ИР в v8 стали неким аналогом опенконфа в v7 :)
4. olegbilas76 3 11.02.21 11:15 Сейчас в теме
для онлайн обмена - формируется строка сообщения отложенной отладки, помещается в лог, потом берется оттуда, и отправляется в ИР

А можно поподробнее? Куда и как именно отправляется строка сообщения отложенной отладки из лога в ИР?
5. unichkin 1564 11.02.21 17:10 Сейчас в теме
(4)
для онлайн обмена - формируется строка сообщения отложенной отладки, помещается в лог, потом берется оттуда, и отправляется в ИР

Вручную копируется из лога (текстовичка на диске) и вставляется в окно "Отладить отложенный объект"
6. olegbilas76 3 11.02.21 17:59 Сейчас в теме
(5) Спасибо, получилось. Очень полезная статья! Заслуженный плюс. А то штатную отладку я так и не смог заставить работать.
Оставьте свое сообщение