Использование инструментов разработчика для отладки обменов КД 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 / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159265    363    266    

345

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    134590    718    291    

387

Перенос данных из УПП 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.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20086    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

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

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

50722 45650 руб.

31.10.2014    231086    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

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

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34031    80    57    

78

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.х Россия Платные (руб)

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68191    176    136    

108

Перенос данных из Парус 10 в ЗГУ ред.3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9155    9    8    

10

Перенос данных из УТ 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    46018    194    64    

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

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

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