Ошибка формата правил обмена

| | 0 Comment

Отладка обработчиков правил обмена 1С 8.3 (8.2)

При разработке правил обмена 1С 8 широко используется возможность программного переопределения поведения правил обмена — механизм обработчиков. Обработчики событий существенно расширяют функционал конвертации данных и являются незаменимым инструментом настройки правил обмена в тех случаях, когда интерактивных возможностей конфигурации недостаточно.

Обработчики и алгоритмы пишутся на языке той платформы, в которой они будут выполняться при обмене.

Если это платформа «1С: Предприятие 7.7», то код обработчиков интегрируется в код обработки выгрузки или загрузки. Соответственно, каждый обработчик или алгоритм выделяется в отдельную функцию и доступен для отладки при обмене.

Если выгрузка или загрузка происходят на платформе «1С: Предприятие 8», то код обработчиков не интегрируется в код обработки обмена данными, а выгружается в файл правил обмена. В процессе обмена данными код обработчиков или алгоритмов берется из файла правил и выполняется непосредственно в контексте оператора «Выполнить». Для отладки кода обработчиков и алгоритмов можно воспользоваться обработкой «Универсальный обмен данными XML».

Обработка 1С «Универсальный обмен данными XML» позволяет автоматически сформировать текст модуля отладки с кодом обработчиков и подключить этот модуль при выполнении обмена данными посредством внешней обработки. Для получения отладочного модуля с кодом обработчиков не требуется использование конфигурации «Конвертация данных», а также какое-либо изменение существующих правил обмена или файлов данных выгрузки. При этом необходимо отметить, что при отладке выгрузки данных код обработчиков и алгоритмов берется из файла правил и содержит только те обработчики и алгоритмы, которые используются при выгрузке. Соответственно, при отладке загрузки код обработчиков берется из файла данных и содержит только те обработчики и алгоритмы, которые используются при загрузке.

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

Для выполнения сеанса отладки откройте обработку «Универсальный обмен данными XML» и перейдите на закладку «Выгрузка» или «Загрузка» (в зависимости от варианта обмена). Установите флажок «Режим отладки обработчиков выгрузки (загрузки)» и откройте окно настройки отладки по кнопке «Настройка отладки выгрузки (загрузки)». Настройка отладки обработчиков и алгоритмов правил обмена выполняется за четыре шага:

Получите 267 видеоуроков по 1С бесплатно:

Шаг 1: Выбор режима отладки алгоритмов

В первую очередь выберите режим отладки алгоритмов:

  • Без отладки алгоритмов.
  • Вызывать алгоритмы как процедуры.
  • Подставлять код алгоритмов по месту вызова.
  • Режим «Без отладки алгоритмов» удобно использовать, когда мы точно знаем, что ошибка в обработчике не связана с кодом какого-либо алгоритма. В этом режиме код алгоритмов не выгружается в модуль отладки. Алгоритмы выполняются в контексте оператора «Выполнить», и их код недоступен для отладки.

    Режим «Вызывать алгоритмы как процедуры» рекомендуется использовать в тех случаях, когда необходимо проводить отладку кода алгоритмов. Алгоритмы выгружаются как отдельные процедуры, а их вызовы вставляются в код обработчиков или других алгоритмов. Для передачи параметров в алгоритмы используется глобальная переменная «Параметры». Этот способ является рекомендуемым. Однако если разработчик использует какой-либо другой способ передачи параметров (например, используются локальные переменные обработчика), то при попытке запуска выгрузки или загрузки в режиме отладки обработчиков программа выдаст ошибку создания внешней обработки. Для отладки таких алгоритмов существует третий режим.

    В режиме «Подставлять код алгоритмов по месту вызова» текст алгоритмов подставляется прямо в текст вызывающих их обработчиков или других алгоритмов с учетом вложенности вызовов. В этом режиме сняты ограничения на использование локальных переменных, однако есть ограничение на отладку рекурсивных алгоритмов. В момент формирования модуля отладки при обнаружении рекурсивных вызовов алгоритмов программа сообщит об ошибке.

    Шаг 2: Формирование модуля отладки

    Выполните выгрузку обработчиков по кнопке «Сформировать модуль отладки выгрузки (загрузки)». Сформированные обработчики и алгоритмы выводятся в отдельное окно для просмотра, содержимое которого можно скопировать в буфер обмена по кнопке «Копировать в буфер обмена».

    Шаг 3: Создание внешней обработки

    Запустите конфигуратор и создайте внешнюю обработку. В модуль обработки вставьте текст сгенерированного модуля и сохраните обработку под любым именем.

    Шаг 4: Подключение внешней обработки

    В заключение укажите имя файла внешней обработки в поле «Имя файла внешней обработки с модулем отладки» и нажмите на кнопку «Готово». При этом программа выполнит проверку по времени создания (обновления) файла обработки. Если обработка имеет более раннюю версию, чем версия файла модуля отладки (обработка не была обновлена данными выгрузки), то будет выведено предупреждение, и форма настройки закрыта не будет.

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

    Отладка глобального обработчика конвертации «После загрузки правил обмена» не поддерживается.

    После завершения исправления выявленных ошибок в модуле отладки необходимо самостоятельно перенести измененный код в соответствующие обработчики и алгоритмы в конфигурации «Конвертация данных».

    Пример передачи параметров алгоритму

    Как уже отмечалось выше, для передачи параметров алгоритму рекомендуется использовать глобальную переменную «Параметры», которая доступна во всех обработчиках конвертации. Передачу параметров алгоритму рассмотрим на примере выгрузки остатков по заданному складу организации.

    В глобальном обработчике конвертации «Перед выгрузкой данных» определяем структуру «ПараметрыАлгоритмов»:

    В обработчике «Перед обработкой» правила выгрузки данных определяем параметры для передачи в алгоритм «ВыгрузитьОстаткиПоСкладу»:

    В теле алгоритма получаем переданные параметры:

    Заключение

    В этой статье мы узнали о механизме отладки обработчиков событий и алгоритмов правил обмена. Выяснили, что при возникновении ошибок выгрузки или загрузки данных возможно использование обработки «Универсальный обмен данными XML» в режиме отладки обработчиков. Все необходимые тексты для отладки находится в файле правил обмена или в файле данных. Настройка и выполнение обмена данными становятся более удобными для использования и анализа.

    Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:

    Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

    К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

    programmist1s.ru

    serg3001 сказал(-а): 22.09.2011 15:40

    Переход с 1с 7.7 ББУ ред.6.2 на 1с 8.2 БГУ

    Octopus сказал(-а): 22.09.2011 16:18

    Первый вариант был правильным, второй — интересным

    Порядок прост: сначала идет выгрузка из ББУ 7.7 с использованием обработки и правил обмена, а затем производится попытка загрузки в БГУ 8.2 (версии 1.0.5.2). В приницпе, если в базе-источнике нет ошибок, все замечательно загружается.

    Теперь подоробнее о некоторых моментах, которые загрузка считает ошибкой.

    1) Групповой учет ОС: при загрузке злемента справочника основных средств производится проверка флажка «Групповой учет». Если вид ОС не основное средство и не казна, а флажок стоит, загрузка выпадает с ошибкой 21 (ошибка записи объекта). При этом в 7.7 никаких преград для создания, скажем, капитального вложения с признаком группового учета нет. Так что перед выгрузкой неплохо бы проверить содержимое справочника. У себя я просто ставил проверку на вид элемента, и если вид был «не тот», снимал флажок группового учета. То же самое можно реализовать на уровне правил.

    2) Отсутствие основания у документов «Запись книги покупок» и «Запись книги продаж». Ни в ББУ 7.7, ни в БГУ 8.2 нет препятствий для создания записей книг без указания основания (выдается только предупреждение при записи), однако при загрузке этих документов 1Сники не нашли ничего умнее, как обратиться к следующему реквизиту: Объект.ДокументОснование.Проведен. Естественно, если основание — значение неопределенного типа, выдается ошибка. Лечится опять же или на уровне правил, или вписыванием дополнительного условия в модуль обработки «УниверсальныйОбменДаннымиXML».

    serg3001 сказал(-а): 22.09.2011 18:43

    Про Групповой учёт понятно, а вот как быть, если бухгалтерия не ведёт Книги покупок/продаж в 1с 7.7?
    Значит ли это, что нужно всё вбивать в книгу покупок?

    Ещё был вариант по переходу в два этапа: с ББУ 7.7 в ББУ 8.2 в БГУ, при этом надо брать ред.6.1 со старым планом счетов, данные перебросили в ББУ 8.2, но сказали, что надо вручную вводить основания для каждого средства.
    Этот вариант перехода будет подвергнут сомнению, т.к. сейчас бухгалтерия работает в ред.6.2.Не могу представить себе, что, если потребуют перейти по нему, так это надо будет в базу с ред.6.1 вносить все данные вручную до настоящего момента из базы с ред.6.2.

    forum.klerk.ru

    Нетиповой обмен — как?

    (7) windsurf, БП 3.0 построена на базе БСП. По поводу что там написано, ну например ОбменДаннымиПереопределяемый, открываем его, видим несколько процедур, у каждой комменты есть, читаем их.. видим
    Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт

    там внутри по аналогии с уже имеющимися планами дописываем свой

    Для общих команд добавляем наш план обмена в состав этих команд из инструкуции, сохраняемся, радуемся результату..

    (13) AllexSoft, у меня с одной стороны старая УТ, с другой эта БП3. Соответственно, сюда надо загрузить правила выгрузки из БП в УТ — их и надо заархивировать. Обратные правила прекрасно загружаются в УТ — там работает старый механизм обмена.
    Да, в КД есть правила регистрации объектов. никогда не использовал — не было необходимости.

    Соответственно, надо найти как назвать правила обмена, заархивировать и загрузить — больше вопросов возникнуть не должно?

    (19) windsurf, все подружить.. наверное в БП надо заменить обработке УниверсальныйОбменДаннымиXML на более старую, а может в новой настройка какая то есть что в старом формате выгружать данные.. я могу глянуть в течении дня, отпишусь тогда

    (25) Алексей, добрый день.
    По вашим пояснениям добавил в ЗУП синхронизацию с ДО.
    Для первого погружения в тему, оставил для состава нового, добавленного мной, плана обмена 2 регистрации.
    1-я это справочник ФизЛица — авторегистрация разрешить.
    2-я это РегистрСведений СоответствияОбъектовИнформационныхБаз — авторегистрация запретить.
    После окончания настройки синхронизации создал новый элемент справочника ФизЛица и он благополучно выгрузился в файл сообщения.

    Дальше сделал комплект правил в КД.
    Для Источника: одно ПКО для справочника ФизЛица с 2-мя ПКС ДатаРождения и Наименование.
    Для Приемника: пустое правило.
    + Правило регистрации для справочника ФизЛица.

    Загрузил этот комплект в Настройки синхронизации в ЗУП.

    Перезаписываю физ лицо, вижу зарегился на узле, происходит синхронизация, создается сообщение в сообщении только заголовок (номера сообщений, префиксы баз. ), боди — пусто.

    Чего то совсем малость не хватает, чего не могу понять.
    Сейчас попробую отключить авторегистрацию у физЛиц в составе плана. Хотя мне кажется не в этом дело, т.к. типовым комплектом выгрузилось ФизЛицо.
    Может не правильно сделал правило регистрации, первый раз делал правило регистрации, ни когда до этого с ними не сталкивался.
    Мне интересно, при включенной авторегистрации у ФизЛиц, будут ли влиять правила регистрации созданные в КД на выгрузку элемента?
    На каком этапе они включаются? На моменте регистрации в узле или на моменте процесса выгрузки?

    forum.infostart.ru

    1C 8.1 ошибка при загрузке файла обмена "Неправильный формат сообщения"?

    Обмен из УТ 10.3 в БП 2.0 (8.1), ручной. При нажатии на кнопку «Выполнить загрузку» вылетает ошибка с сообщением:

    «Ошибка при вызове метода контекста (НачатьЧтение): Неправильный формат сообщения»

    Что это такое? Куда копать? Гугл и Миста внятного ответа на вопрос не дали. Нумерация узлов в порядке.

    • Вопрос задан более трёх лет назад
    • 9216 просмотров

    УТ 10.3.13.2, БП 2.0.22.2

    Изменения были, какие именно — информацией не обладаю.

    1. Выгрузка не от того образа.
    2. Выгрузка была с ошибками, но вам об этом не сказали.

    НачатьЧтение функция, которая парсит xml файл выгрузки, обычно первое что он проверяет это узел.

    Лучше конечно посмотреть по отладчику.

    Отладчик показывает вылет на строке вызова функции НачатьЧтение.
    Синтакс-помощник говорит нам буквально следующее:

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

    План обмена в порядке. Что значит «указан узел, не входящий в план обмена»? Номер входящего сообщения = 1, номера сообщений текущего узла = 0.

    Передаваемый в функцию объект ЧтениеXML на этот момент имеет свойство ТипУзла = Ничего, это нормально?

    toster.ru

    Как изменить Типовые правила обмена Бух 7.7 и ЗиК 7.7

    Доброго времени суток! В конфигурации бухгалтерии 7.7 ред. 4.5 было добавлено новое перечисление. Как добавить новый реквизит в типовые правила RAc4_Pr2? Пробовал на 1с8.1_КД 2.0 и 1с7.7_КД 1.0 правила не загружаются пишет ошибку «Ошибка формата файла обмена. Не возможности обработать узел: Инструкция»

    Доброго времени суток! В конфигурации бухгалтерии 7.7 ред. 4.5 было добавлено новое перечисление. Как добавить новый реквизит в типовые правила RAc4_Pr2? Пробовал на 1с8.1_КД 2.0 и 1с7.7_КД 1.0 правила не загружаются пишет ошибку «Ошибка формата файла обмена. Не возможности обработать узел: Инструкция»

    > В конфигурации бухгалтерии 7.7 ред. 4.5 было добавлено новое перечисление
    Это перечисление теперь является аналитикой к какому-то счету? Т.е. план счетов не типовой?

    Да это аналитика «ИсточникФинансирования» для основных средств и других счетов. Может вы подскажите как изменить правила обмена?

    Нет! Я не знаю! Просто то-же сталкивался с подобной проблемой и заказывали спецу! Самое обидное то, что эта аналитака потом оказалась никому не нужна!

    Такие небольшие точечные изменения проще делать в каком нибудь обычном текстовом редакторе.
    Берем, например Far manager.
    1. открываем RAC4_PR2.XML в текстовом редакторе, видим: http://s008.radikal.ru/i306/1010/74/751364b116b9.jpg
    2. идем в самый конец строки с текстом, видим: http://s008.radikal.ru/i304/1010/35/39fb5a9a06e6.jpg
    3. обращаем внимание на то, что строка заканчивается закрывающим тэгом
    4. ставим курсор вот сюда: http://s007.radikal.ru/i300/1010/62/9bc8b644256b.jpg
    5. жмем Enter раз 5, получим: http://s011.radikal.ru/i318/1010/52/8dc3f3d9615d.jpg
    6. по аналогии с тем как описаны правила переноса значений стандартных перечислений добавляем в образованное нами пространство примерно такой текст: http://s014.radikal.ru/i329/1010/d1/2a4effb17da4.jpg
    По ширине в картинку не влезло, но не беда, я результат выложу, там увидите полностью.
    7. Сохраняем файл, делаем выгрузку из Бух, выгрузится все как надо.
    Пара важных замечаний:

    Почему 1С присваивает своим правилам идентификаторы «ЗначенияСубконто_1С_0001ХХХ», а я присвоил идентификатор правилу «ЗначенияСубконто_My_0000001»? Идентификатор правила должен быть уникален в рамках файла и, вообще то, может быть любым, я не стал вписываться в нумерацию 1С и не стал присваивать номер, например ЗначенияСубконто_1С_0001470 (очередной), потому что если 1С поменяет правила и добавит в них что то, то запросто такой идентификатор займут (они то не знают о моих изменениях) и это не позволит мне при обновлениях простым copy-paste поддерживать сделанное в правилах изменение. Поэтому идентификатор у нас свой, который точно у 1С не появится. Идентификаторы реквизитам тоже я присвоил «IDMy_000001», «IDMy_000002» по той же причине.

    При переносе «имени» субконто идет перенос Строка->Реквизит приемника и строку мы явно описываем как Преобразование=»Источник финансирования». Почему именно так, а не «Ист. фин.», например? Тут важный момент. То что написано в кавычках должно точно совпадать с синонимом вида субконто, как его описали в Бухгалтерии. Вот так:
    http://s009.radikal.ru/i307/1010/ec/1a65ea3de892.jpg

    В общем, вот что вышло в результате: http://zalil.ru/29885236

    А вообще, больший интерес представляет перенос из ЗиК в Бух. Тут то задача разовая, ерунда, а там в правила тоже придется написать что то подобное и поддерживать это при обновлениях релизов, поэтому я чуть написал про идентификаторы.

    buh.ru

    Это интересно:

    • Приказы министерства культуры республики крым Приказ Министерства культуры Республики Крым от 28 ноября 2017 г. N 247 "Об утверждении Порядка приема, распределения, обработки, хранения и использования обязательного экземпляра документов Республики Крым" Приказ Министерства культуры Республики Крымот 28 ноября 2017 г. […]
    • Уволится после отпуска заявление Увольнение по собственному желанию Увольнение по собственному желанию (другими словами, по инициативе работника) - одно из самых распространенных оснований расторжения трудового договора. Инициатива прекращения трудовых отношений исходит от работника и не предполагает ее […]
    • Как записать увольнение в трудовой книжке по собственному желанию Запись в трудовой книжке: увольнение по собственному желанию Обновление: 8 февраля 2017 г. ​Образец заполнения трудовой книжки при увольнении работника по собственному желанию Увольнение по инициативе работника (по его собственному желанию) – традиционно самое […]
    • Нотариус в старомонетном переулке Нотариус на дом Якиманка Нотариус - Сосина И.А. Лицензия № 000315 от 01.10.93 Телефоны: 8 (495) 735-78-41 и 8 (929) 987-79-70 Нотариус - Васильева М.В. Лицензия № 000596 от 18.04.95 Телефоны: 8 (495) 669-15-97 и 8 (985) 486-90-60 Нотариус - Смирнова О.В. Лицензия […]
    • Государственные и муниципальные учреждения закон Статья 9.1. Государственные, муниципальные учреждения Информация об изменениях: Федеральным законом от 8 мая 2010 г. N 83-ФЗ настоящий Федеральный закон дополнен статьей 9.1, вступающей в силу с 1 января 2011 г. Статья 9.1 . Государственные, муниципальные учреждения См. […]
    • Закон 53-з ЗАКОН РЕСПУБЛИКИ БЕЛАРУСЬ от 18 июля 2017 года №53-З О внесении изменений и дополнений в Уголовный и Уголовно-процессуальный кодексы Республики Беларусь Принят Палатой представителей 21 июня 2017 года Одобрен Советом Республики 26 июня 2017 года Статья 1. Внести в […]
    • Правовое заключение по гражданскому делу Правовое заключение Правовое заключениена судебные постановления об изменении формулировки причины увольнения с п. 2 ст. 81 ТК РФ (сокращение штата работников организации) на п. 7 ст. 77 ТК РФ (отказ работника от продолжения работы в связи с изменением определенных […]
    • Виды ипотек в силу закона Основания возникновения ипотеки Основания возникновения ипотеки — под этим словосочетанием понимаются факторы в следствии наступления которых возникает один из следующих видов ипотеки: Ипотека в силу закона. Ипотека в силу договора. Ипотека в силу закона (законная […]