Отладка конвертации данных 2.1 в конфигурациях, построенных на БСП 2.1 (БП 3.0, УТ 11 etc.)

29.10.15

Разработка - БСП (Библиотека стандартных подсистем)

Отладка процесса выгрузки/загрузки данных при проведении синхронизации в новых конфигурациях 1С может вызвать (у меня вызвала) некоторые затруднения. О них и пойдёт речь.

Отладка выгрузки и загрузки затрудняется двумя аспектами.

Первый: загрузка по умолчанию происходит в фоновом режиме, а это препятствует использованию отладчика.

Второй: сама обработка не очень-то банально подключается.

 

Как настроить синхронизацию между базами, я описывать не буду, процесс этот несложный. Поэтому ниже будет описана непосредственно технология отладки загрузки данных из Управления небольшой фирмой ред.1.4 (1.4.9.49) в Бухгалтерию предприятия 3.0 (3.0.42.37).  Стандартного обмена между этими версиями не существует, поэтому пример самый что ни на есть живой. Smile

Для того, чтобы загрузка данных происходила не в фоновом режиме, нужно, чтобы параметр сеанса в базе приёмнике ПараметрыКлиентаНаСервере (фиксированное соответствие) содержал строку "РежимОтладки". В конфигураторе базы приёмника заходим в меню Сервис / Параметры, где на вкладке "Основные" прописываем соответствующий параметр в поле "Параметр запуска":

 Параметры запуска 1С Предприятия

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

Для того, чтобы проходить отладчиком непосредственно по алгоритмам конвертации, используются внешние обработки, которые, подобно библиотекам, содержат процедуры обработчиков данных. Чтобы создать такую, идём в конфигуратор, там создаём простую внешнюю обработку и называем её как придётся. В модуль объекта обработки добавляем текст обработчиков, который выгружается непосредственно из конвертации данных.  В версии КД  2.1.8.1 для  этого используется меню "Отладка обработчиков" настройки правил обмена. В своём примере я отлаживал загрузку, соответственно пользовался пунктом  "Сформировать модуль обработчиков загрузки":

Формирование модуля обработчиков загрузки

Содержимое открывшегося окна нужно скопировать и вставить в нашу обработку как есть.

Таким образом, модули для отладки у нас готовы. Однако это ещё не всё. В свойствах самой конвертации на вкладке "Дополнительно" нужно установить режим совместимости "Не использовать":

 Настройка конвертации данных

Режим совместимости выставляется для предыдущей версии БСП, а потому не позволит воспользоваться нашими правилами в новых конфигурациях.

Есть ещё один, неприятный аспект. При загрузке в приёмнике, обработка КонвертацияОбъектовИнформационныхБаз оперирует переменной "ОбработкаЗагрузки". В этой переменной она ожидает увидеть внешню обработку с библиотекой обработчиков загрузки. Вот только у меня почему-то упорно не хотела видеть. Функция для заполнения переменной есть, но почему она остается не у дел, я не стал разбираться слишком упорно. Добавил её вызов в процедуру "ВыпонитьАнализСообщенияОбмена" и всё стало работать.  Таким образом, возможно что в вашем релизе всё будет работать. Если не будет - делаем копию базы, разрешаем себе вносить изменения в конфигурациюSmile, устанавливаем для обработки правило поддержки отличное от "Не редактируется" и решительно делаем следующие правки модуля объекта:

 Правка модуля объкта обработки конвертации в приёмнике

Дело осталось за малым: настроить загрузку данных и произвести её, воспользовавшись отладчиком! В базе приёмнике находим регистр "Правила для обмена данными", где ищем вид правил "Правила конвертации объектов" с нужным нам именем правила. Открыв запись регистра, выставляем галочку "Включить режим отладки", где указываем созданную ранее обработку для отладки и не забываем загрузить нужные правила обмена. Правила подаются упакованными в zip-архив, само правило должно иметь имя "ExchangeRules.xml", правила для отправки данных обратно помещаются в файл "CorrespondentExchangeRules.xml" архива.

Настройка правил обмена приёмника

Готово!

Проводим синхронизацию на стороне источника.

Запускаем базу приёмника через конфигуратор.

Заходим в общий модуль РаботаВБезопасномРежиме, процедура ВыполнитьМетодОбъекта оттуда получаем вход в нашу обработку с отладчиком.

Запускаем базу на отладку (я запускал в режиме толстого клиента).

???????

PROFIT!!!

конвертация отладка обмен конфигуратор БСП бухгалтерия 3.0 УНФ

См. также

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1281    dimanich70    6    

13

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    686    FilippovRI    0    

15

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2347    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    5147    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3796    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4825    mrXoxot    11    

99
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ivanov660 4330 02.11.15 23:01 Сейчас в теме
с enterprise_data не работали?
2. NittenRenegade 108 03.11.15 13:44 Сейчас в теме
(1) ivanov660, не приходилось. На сколько я понимаю, за работу с универсальным форматом отвечает подсистема БСП ОбменДаными
4. badKillerMan 08.01.16 20:34 Сейчас в теме
(1) ivanov660, Начинаются занятия и есть несколько бесплатных видео на http:// /1c-v8/dataconv-3/startpage/ И где-то были бесплатные видео на этом сайте.
3. badKillerMan 08.01.16 20:24 Сейчас в теме
Огромное спасибо. Уже несколько раз пытался провалиться в отладку и не хватило терпения разобраться на выдаваемые ошибки. А тут так приперло... не мог понять почему поля поиска не срабатывают. Благодаря статье нашел ошибку. Спасибо помогло.
5. NittenRenegade 108 09.01.16 19:55 Сейчас в теме
(3) badKillerMan, чертовски рад, что статья оказалась полезной! На выяснение обстоятельств и саму статью ушло порядочно времени))
voneska7; KazanKokos; +2 Ответить
6. NittenRenegade 108 09.01.16 19:58 Сейчас в теме
По конвертации 3.0 я видел несколько вводных видео, где давалось общее представление о предмете. Любопытно конечно!
7. dexxxqqq 05.01.17 01:08 Сейчас в теме
Спасибо. Дошел до самого конца статьи и встрял. Что значит "Заходим в общий модуль РаботаВБезопасномРежиме, процедура ВыполнитьМетодОбъекта оттуда получаем вход в нашу обработку с отладчиком"? Не понимаю что надо сделать.
8. NittenRenegade 108 06.01.17 11:48 Сейчас в теме
(7) Имеется ввиду общий модуль конфигурации-приемника. Его наименование "РаботаВБезопасномРежиме". Ставим точку останова в процедуре "ВыполнитьМетодОбъекта". При выполнении загрузки оттуда будут происходить вызовы функций в нашей внешней обработке и можно будет в отладчике пройти их построчно.
Возможно что-то в парадигме изменилось за минувший год, я уже давненько не пользовался этим методом.
dexxxqqq; +1 Ответить
9. dexxxqqq 06.01.17 14:08 Сейчас в теме
(8)
Ставим точку останова в процедуре "ВыполнитьМетодОбъекта".


Спасибо большое. Теперь понятно
10. dexxxqqq 06.01.17 23:45 Сейчас в теме
(8) В парадигме старой конвертации ничего не изменилось, единственное, что мне помешало: платформа 8.3.9, пришлось в настройках пользователя в конфигураторе снять галку "Защита от опасных действий", так как выполнение внешней обработки все время прерывалось из-за этой защиты. Может кому пригодится.
11. MaxS 2826 07.01.17 06:13 Сейчас в теме
Ещё один вариант отладки: берем тестовые файловые базы, добавляем общий модуль Отладка, в правилах в тот месте, где нужно отладить часть кода пишем вызов процедуры из этого общего модуля, после отладки переносим код в правила...
Тестируем на базах, где нет этого общего модуля (чтобы проверить, что ничего не забыли)...
Rega; unknown181538; +2 Ответить
15. unknown181538 151 25.03.19 17:36 Сейчас в теме
(11)Интересная идея. Можно ведь и существующие модули использовать.
12. KazanKokos 10 31.03.17 16:42 Сейчас в теме
Достаточно оказалось первого абзаца. Спасибо огромное :)
13. ret 63 31.01.19 09:26 Сейчас в теме
Добавлю еще от себя, поскольку столкнулся с такой же проблемой: https://forum.infostart.ru/forum15/topic209000/

Фирма 1С отказывается поддерживать отладку обработок в формате КД 2.1 и поэтому коды отладок не работают.
Таким образом в обработке КонвертацияОбъектовИнформационныхБаз надо поправить процедуру инициализации подключаемых обработок.
Делаем либо в самой процедуре ИнициализироватьОбработки(), либо в расширении. Я в расширении делал.


&Вместо("ИнициализироватьОбработки")
Функция Расш1_ИнициализироватьОбработки()
    
    //{[-](фрагмент УДАЛЕН)
    //Если ОтладкаОбработчиковВыгрузки Или ОтладкаОбработчиковЗагрузки Тогда 
    //    ВызватьИсключение
    //        НСтр("ru = 'Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается.'");
    //КонецЕсли;
    //}
    
    //{[+](фрагмент ДОБАВЛЕН)
    Если ОтладкаОбработчиковВыгрузки Тогда
        Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
            ФайлОбработкиВыгрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
            Если ФайлОбработкиВыгрузки.Существует() Тогда
                ОбработкаВыгрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
                ОбработкаВыгрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
            КонецЕсли;        
        КонецЕсли;        
    КонецЕсли;
    
    Если ОтладкаОбработчиковЗагрузки Тогда
        
        Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
            ФайлОбработкиЗагрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
            Если ФайлОбработкиЗагрузки.Существует() Тогда
                ОбработкаЗагрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки);
                ОбработкаЗагрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
            КонецЕсли;        
        КонецЕсли;
    КонецЕсли;    
    //}
    
    ИмяПланаОбмена = ИмяПланаОбмена();
    ИмяПрофиляБезопасности = ОбменДаннымиПовтИсп.ИмяПрофиляБезопасности(ИмяПланаОбмена);
    Возврат ИмяПрофиляБезопасности;
    
КонецФункции

Показать
pazyuk; EvgeniyNP; fokin; +3 Ответить
23. pazyuk 09.04.20 12:43 Сейчас в теме
(13) опечатка в переменной при загрузке:

   Если ОтладкаОбработчиковЗагрузки Тогда
        
        Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки) Тогда
            ФайлОбработкиЗагрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки);
            Если ФайлОбработкиЗагрузки.Существует() Тогда
                ОбработкаЗагрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки);
                ОбработкаЗагрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
            КонецЕсли;        
        КонецЕсли;
    КонецЕсли; 
Показать
14. ret 63 05.02.19 09:30 Сейчас в теме
Маленькое расширение, позволяющее отлаживать прикрепленные обработки, находится здесь
16. dmin 28.06.19 21:13 Сейчас в теме
то что надо!! такая же задача. обмен из УНФ1.4 в актуальную БП 3.
17. user859113 03.02.20 08:27 Сейчас в теме
Люди добрые, подскажите пожалуйста!
Добавил в правила из ЗУП3 в БП3, пару строчек в обработку после загрузки, загрузил их в онлайн обмен, а они не работают...(((, если загружаю через Универсальную загрузку, то все ОК. Уже все способы перепробовал, уже не знаю, что делать, хоть переписывай обработку проведения...((
19. user859113 03.02.20 10:43 Сейчас в теме
(17) Нашел причину. Когда загрузил в ПРИЕМНИК вариант правил выгрузки из Источника, то все заработало!
Такое поведение программы не понятно, ведь раньше правила на загрузку сохранялись вместе с выгружаемыми данными..., а теперь получается нужно эти же правила добавлять и в приемник. Хоть где-нибудь бы это описали....!%?*:%;!
18. user859113 03.02.20 08:28 Сейчас в теме
Грешу на БСП, но куда в нем копать, вообще не представляю...
20. Evgeniy762004 08.03.20 13:46 Сейчас в теме
Создаю свой модуль для отладки в Конвертации данных 2.1. Но когда копирую все это во внешнюю обработку, то все начинает ругаться

Например:

{ВнешняяОбработка.ОтладкаВыгрузки_УНФБУ.МодульОбъекта(31014,43)}: Переменная не определена (КлючИЗначение)
ОпределитьБухгалтерскийСчетПоОперации (<<?>>КлючИЗначение, ИмяПКО, ИмяПКОВидСубконто, Источник, ВходящиеДанные, Отказ); (Проверка: Сервер)

{ВнешняяОбработка.ОтладкаВыгрузки_УНФБУ.МодульОбъекта(51730,27)}: Переменная не определена (Объект)
СтрокаОтбора.Значение = <<?>>Объект.Ссылка; (Проверка: Сервер)

Может как-то в конвертации нужно что-то настроить?
21. Evgeniy762004 08.03.20 14:24 Сейчас в теме
Дополню. Вероятно нужно формировать модуль отладки из чего-то другого. Пробовал через обработку универсальный обмен формировать, но там ругается уже в процессе обмена на не правильные имена модулей при выгрузке. Чем сформировать модуль отладки?
22. user859113 24.03.20 10:11 Сейчас в теме
(21) Необходимо использовать более старую обработку "Универсальный обмен". Там вроде как все с тем же БСП проблемы..., в старой обработке г. 2016 все ок будет.
24. Aleksandr_prof 191 19.05.21 10:52 Сейчас в теме
Не нашёл регистра "Правила обмена данными".
25. user1251643 27.10.21 18:22 Сейчас в теме
Все бы хорошо. Да вот только при отладке таким способм постоянно валятся ошибки при попытке обращения к функции ВыгрузитьПоПравилам().
Как эту фигню обойти?
26. Cthulhu 1 13.02.22 14:26 Сейчас в теме
а что насчет алгоритмов с "наследуемыми" из места вызова переменными? которые в модуле выгружаемом, в котором алгоритмы оформляются в виде процедур - "переменная не обнаружена" становятся? я так понимаю - предварительно правила в кд2 нуждаютя в тотальном переписывании в формат, не использующий "наследуемых" переменных - которые нужно тупо переносить в параметры?.. или как?
27. MaCCapAkIII 23.11.22 18:19 Сейчас в теме
Для Документооборота к сожалению не работает. Провалиться в отладку не получается никаким образом. Сделал все по инструкции - при синхронизации в метод ВыполнитьМетодОбъекта отладчик даже не заходит.
28. Raskad 10 21.03.24 09:22 Сейчас в теме
Пробую отладить выгрузку. В процедуре "ОбщегоНазначения.ВыполнитьМетодОбъекта(Знач Объект, Знач ИмяМетода, Знач Параметры = Неопределено)", где "Объект" - это "ВнешняяОбработкаОбъект.ОтладкаСинхронизации" доходит до строки:

Выполнить "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")";


по F11 просто выполняет выражение, без захода в модуль внешней обработки. Имя метода есть в модуле обработки. Что не так? Почему нельзя попасть в модуль?
29. Raskad 10 21.03.24 11:53 Сейчас в теме
(28) Update:
При запуске отладки непосредственно на компьютере, выполняющем роль сервера - заходит в модуль внешней обработки. На клиентском - не работает. В чем может быть дело?
Оставьте свое сообщение