Необходимо перезагрузить правила обмена для выгрузки данных 1с
С начала года для бухгалтера была развернута новая база Бухгалтерии редакции 3.0. На данный момент требуется обмен данными УТ 10.3 с БП в одностороннем режиме (данные приходят из УТ в БП).
Вчера целый день бился так и не понял что я делаю не так данные не загружаются (из УТ в БП 2.0 всегда все работает без проблем лишь бы узлы совпадали а тут. а вот выгрузка осуществляться хотя я вроде как установил что односторонний режим только принятие данных.
Делал следующие действия (Вариант 1):
В УТ
1. В параметрах учета уже стояла галочка использовать обмен данными, и префикт "УТ"
2. Далее "Сервис - Обмен данными с продуктами на платформе 1С: Предприятие 8.2 - Обмены данными" - создаю синхронизацию данными
3. Создаю новую синхронизацию - "Другие каналы связи (сетевой катало. )"
4. Настройки параметров синхронизации данных - указал наименование и префик базы БП
5. Изменил правила выгрузки, выгружать данные с 01.04, и указал выгружать всю информацию (везде поставил галочки, выгрузка по всем организациям в базе)
6. Сохранил "Настройки для второй базы", произвел выгрузку (имя файла выгрузки Message_УТ_БП)
В БП
1. Администрирование - Настройки синхронизации данных, указал префикс "БП" и поставил галочку "Синхронизация данных" - "Настроить синхронизацию данных" и выбрать вид синхронизации УТ 10.3
2. Загрузил "Настройки для второй базы" - указал путь к каталогу (папке с фалом обмена)
3. Далее все без изменений, и данный не загружаются (: Тип не определен (РегистрСведенийЗапись.АдресныеСокращения)
СоответствиеТиповДанныхДляЗагрузки().Вставить(Тип(ИмяТипа), СоответствиеТипа)
PS При выгрузке фала обратил внимание что имена узлов не совпадают, у меня после выгрузки из УТ имя файла "Message_УТ_БП" а после выгрузки из БП "Message_002_УТ"
Не проблема решил использовать другой вариант выгрузки из УТ, заменить имя узла БП (как менять код узла в БП 3.0 так и не понял) (Вариант 2)
В УТ
1. Иду "Операции" - "План обмена" - меня код БП на 002
2. Произвожу выгрузку, имя фала "Message_УТ_002"
ВНИМАНИЕ. Отладка не работает на платформе версии 8.3.6.2041, 8.3.6.2152, 8.3.6.1999, 8.3.6.2332. (это версии платформ, на которых точно не работает отладка. На основании этих тестов осмелюсь предположить, что отладка не работает на 8.3.6) (список будет корректироваться). На платформе 8.2 - подобных проблем замечено не было.
И так, ни для кого не секрет, что самый распространенный способ обмена данными - это обмен данными посредством XML файлов. Для тех, кто не знает, постараюсь вкратце описать суть процесса. Т.к. статья посвящена другой теме, то в подробности вдаваться не будем. Т.е. есть 2 базы. Необходимо из одной выгрузить данные в другую. Будь то просто справочники или документы, не важно. Процесс настройки обмена данными происходит с помощью типовой конфигурации "Конвертация данных", а сам обмен осуществляется по правилам, которые как раз и настраиваются в конвертации. Для начала необходимо создать структуру метаданных обеих конфигураций (источника и приемника). Затем создать правила, где уже указать конфигурации источника и приемника со своими структурами. После того как правила созданы, открывается в базе источника типовая обработка «Универсальный обмен данными XML», указывается файл правил, файл для данных и данные выгружаются. Затем в конфигурации приемнике открыть эту же обработку, указать файл с выгруженными данными и загрузить. Вот и весь процесс. Самое сложное это создать и отладить правила. Особенно для тех, кто плохо в этом разбирается.
Начну, пожалуй, со сложных правил. Есть вполне рабочие правила обмена данными, которые собирают определенные данные и преобразуют их совершенно в другие виды документов. Проблема возникает в том, что часто непонятно, что именно передается в переменные. Что делает та или иная процедура и т.д. Часто возникает ошибка, что, мол, переменная не определена и т.д. (Было бы прекрасно, если бы можно было нажать Shift+F9 и посмотреть). Такая возможность есть, как при выгрузке, так и при загрузке. Итак, в моих правилах в одном из правил выгрузки данных, в процедуре ПередОбработкой «собираются данные, а затем выгрузка идет по определенному правилу.
Здесь я создаю структуру под названием «ИсходящиеДанныеВыпуска» и выгружаю по правилу «ОбщепитВыпускПродукции». Затем в процедуре ПередВыгрузкой правила конвертации объекта я хочу посмотреть, куда вообще попала та структура, которую я уже подготовил.
Вырезка из встроенной справки по обработчикам:
В справке много параметров, которые передаются в событие, но что в них находится на определенном этапе выгрузки, это уже вопрос. Запускаем конфигуратор и предприятие в режиме отладки Для начала необходимо создать пустую внешнюю обработку, с любым названием, и сохранить в любое место. Итак, сохраняем правила в файл и запускаем обработку «Универсальный обмен данными XML». На вкладке Выгрузка загружаем правила, указываем файл для выгрузки и ставим флажок «Режим отладки обработчиков выгрузки» --> Настройка отладки выгрузки--> Сформировать модуль отладки выгрузки. На экране появится окно с кодом. Весь код копируем в буфер обмена, затем открываем созданную нами ранее обработку, вставляем весь код в модуль объекта и сохраняем. А в поле ввода «Имя файла внешней обработки с модулем отладки» указываем файл этой самой обработки.
Затем «Готово». Ищем в модуле объекта нашей обработки нужную строку кода и ставим точку останова.
Далее запускаем процесс выгрузки и ждем )))) Управление переходит в отладчик, где уже и можно просмотреть все параметры, понять, какой именно код прописать, увидеть ошибку и т.д.
Процесс загрузки абсолютно идентичен… Думаю, с ним вопросов не возникнет. В принципе все. Если кого что интересует, пишите…
Алгоритмы\Запросы
На закладке «Алгоритмы\Запросы» может быть создан программный код или запрос, который, как правило, неоднократно используется в различных обработчиках правил обмена.
Как же отладить правила в этом случае?! Как просмотреть, какие параметры передаются в Алгоритм, выполняется ли текст запроса и т.д.? Я создал алгоритм «ПроверкаНаЗаполнение» и запрос «ПолучитьКонтактнуюИнформацию». Затем в процедуре ПередОбработкой правила выгрузки данных прописал код вызова этих Алгоритмов\Запросов.
Далее в базе источнике запускаю универсальную обработку. Устанавливаю галку «Режим отладки обработчиков выгрузки» --> «Настройка отладки выгрузки». Далее ВНИМАНИЕ. Есть 3 режима отладки кода. 1) Без отладки алгоритмов. 2) Вызывать алгоритмы как процедуры. 3) Подставлять код алгоритмов по месту вызова. Первый режим удобно использовать, когда мы точно знаем, что ошибка в обработчике не связана с кодом какого-либо алгоритма. В этом режиме код алгоритмов не выгружается в модуль отладки. Алгоритмы выполняются в контексте оператора "Выполнить()" и их код недоступен для отладки.
Второй режим необходимо использовать в тех случаях, когда ошибка находится в коде алгоритма. При установке этого режима алгоритмы будут выгружены как отдельные процедуры. В момент вызова алгоритма из какого-либо обработчика происходит обращение к соответствующей процедуре обработки. Этот режим удобно использовать, когда для передачи параметров в алгоритмы используется глобальная переменная "Параметры". Ограничения использования этого режима в том, что при отладке в алгоритме недоступны локальные переменные обработчика, из которого он вызывается.
Третий режим отладки используется, как и во втором случае, при отладке кода алгоритмов и в тех случаях, при которых второй режим отладки не подходит. При установке этого режима алгоритмы будут выгружены как интегрированный код в обработчиках. Т.е. взамен оператора вызова алгоритма вставляется полный код алгоритма с учетом вложенных алгоритмов. В этом режиме нет ограничений на использование локальных переменных обработчика, однако есть ограничение при отладке алгоритмов с рекурсивным вызовом.
Разберем все 3 режима на примере: 1) см. выше. Ранее я про него уже говорил. 2) Попробуем сформировать модуль отладки и проверим наши алгоритмы. Как известно, то алгоритмы используют локальные переменные модуля, из которого они вызываются. Т.е. в месте вызова алгоритма такой код:
А в алгоритме будет доступна переменная Выборка.
Но когда мы сформируем модуль отладки и вставим его в модуль внешней обработки, то при сохранении у нас покажется ошибка, что переменная Выборка не обнаружена.
Я в этом случае поступаю так. Может не совсем правильно, но работает. Алгоритмы - это Структура. Нужно найти место, где эта структура заполняется и добавить те параметры, которые используются в алгоритме. А именно процедура
Затем найти процедуру с названием «Алгоритм_ПроверкаНаЗаполнение» и добавить ей тоже параметр.
Тем самым обработка сохранится. Далее ставим точку останова в нужном месте и смотрим.
Как видно из рисунка, то точка останова стоит в обработчике «ПередОбработкойДанных». А можно легко перейти в нужный алгоритм и просмотреть параметр, который в него передается.
3) Пояснять, думаю, не стоит, т.к. в описании все более чем подробно написано, что это за режим. Лучше разберем на примере. Сформируем модуль отладки с режимом номер 3. Внешняя обработка сохраняется без ошибок, т.к. код алгоритма прописан непосредственно в самой процедуре вызова алгоритма.
Думаю, тут не возникн ет в опросов, каким образом сработал код. В этом режиме отладке также доступны такие глобальные переменные как параметры. Проблематичность этого метода, заключается лишь в невозможности отладки при рекурсивном вызове алгоритма. (Если сказать по-простому, то это вызов процедуры самой из себя).
С запросами вообще все просто. Во всех трех режимах запрос передается в структуру под названием Запросы. Кстати, то же самое происходит и с алгоритмами с режимом отладки номер 1.
Отладка правил обмена платформы 7.7
Отладка правил обмена на версии платформы 7.7 происходит гораздо легче, нежели на 8. Причина всему то, что при сохранении правил обмена для версии 7.7 необходимо также указать путь к файлу для выгрузки модуля обработки выгрузки данных.
По выбранному пути на жестком диске будет создан файл txt. В моем случае его название "МодульВыгрузки.txt". Далее открываем конфигуратор 1С:Предприятие 7.7. Открываем типовую обработку V77Exp.ert. (Универсальная выгрузка данных в формате XML (2.1.7)) открываем ее модуль и полностью заменяем на тот программный код, который сформировался в файле "МодульВыгрузки.txt". Сохраняем. Запускаем 1С в режиме отладки, открываем только что созданную обработку, находим нужный кусок кода, ставим точку останова и далее уже в предприятии запускаем выгрузку данных через эту же обработку. Управление перейдет в отладчик. Вот и все.
P.S. Для быстроты тестирования правил обмена расскажу про одну хитрость. В модуле обработки V77Exp.ert не обязательно каждый раз вставлять программый код, созданный конвертаций. Достаточно в модуле прописать лишь одну строчку
Возможно, кому-то будет полезна статья с ИТС. На этом все. Всем спасибо, все свободны )))))
Описание ошибки:
Доработка правил обмена для односторонней выгрузки из базы конфигурации 1С: Управление торговлей ред.10.3 в базу конфигурации 1С: Бухгалтерия прдприятия, ред.3.0.
Для подобного рода доработки традиционно были взяты правила конвертации из УТ 10.3 в БП 3.0, предназначенные для выгрузки, инициируемой в базе УТ 10.3.
После доработки в правиле конвертации объекта "КорректировкаРеализации" (на скрине ниже приведен пример доработки для автоматической установки в документе после выгрузки в базу БП признака "Бухгалтерский учет прошлого года закрыт для корректировки (отчетность подписана)" для случая, когда в поле "Основание" находится документ, год даты которого меньше, чем год даты документа корректировки; так же в поле "Статья прочих доходов и расходов" устанавливается предопределенный элемент справочника "Исправительные записи по операциям прошлых лет") и теста обмена доработка не сработала.
Было понятно, что с новой редакцией Бухгалтерии 3.0, разработчики могли поменять что-то в привычном механизме. Благодаря обсуждению на форуме Конвертация данных. ПКО ПослеЗагрузкиОбъекта не срабатывает решение было найдено:
Извлекаем из сохраненного архива файл CorrespondentExchangeRules.xml.
Добавляем в файл правил конвертации необходимые доработки. Обновляем в архиве.
Загружаем в "Параметры синхронизации данных". Оставляем вариант "Загрузить из файла на компьютере".
После проведенных операций. Выгрузка/загрузка документов из УТ 10.3 в БП 3.0 с доработкой обработчика "после загрузки" правил конвертации объекта стала выполняться как необходимо.
Задача: требуется настроить обмен данными через файл из 1С: Управление торговлей 11 (далее УТ) в 1С: Бухгалтерия 3.0 (далее Бухгалтерия).
- платформа 1С: Предприятие 8.3 (8.3.13.1690),
- конфигурация Управление торговлей, редакция 11 (11.4.7.150),
- конфигурация Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.72.72)
- режим Файловый (без сжатия).
- настроить параметры подключения,
- настроить правила отправки и получения данных,
- выполнить начальную выгрузку данных.
- настроить правила отправки и получения данных,
- выполнить сопоставление и загрузку данных,
- выполнить начальную выгрузку данных.
ШАГ 1. Настройка в УТ
Переходим в раздел «НСИ и администрирование» и выбираем пункт «Синхронизация данных». Обязательно должен быть указан префикс информационной базы. В нашем случае это «ЦБ».
Устанавливаем флаг «Синхронизация данных» и переходим по ссылке «Настройки синхронизации данных». Нажимаем кнопку «Новая синхронизация данных». В открывшемся окне выбираем конфигурацию, с которой будем настраивать обмен. В нашем случае это «Бухгалтерия предприятия, редакция 3.0».
Откроется окно настройки синхронизации. Выберем пункт «Настроить параметры подключения».
Так как обмен будет настраивать через файл, то выбираем пункт «синхронизация данных через файл, без подключения к другой программе».
Далее укажем каталог и настроим архивацию файлов.
Далее укажем префикс базы бухгалтерии и название файла с настройками синхронизации.
Обратите внимание: если указать префикс, по которому уже есть обмен, то будет ошибка, программа предложит указать уникальный код. Нажимаем «Далее» и на этом заканчивается первый шаг настройки.
В результате у нас появится два файла в указанной папке: файл с данными (Message_ЦБ_БП.zip) и файл с настройками обмена (Синхронизация данных через универсальный формат.xml). Обратите внимание: если в УТ попробовать перейти к этапу «Настроить правила отправки и получения данных», то будет ошибка.
ШАГ 2. Настройка в Бухгалтерии
Перед настройкой синхронизации в Бухгалтерии нам понадобятся два файла, созданных на предыдущем шаге. Разместим файлы Message_ЦБ_БП.zip и Синхронизация данных через универсальный формат.xml в любую папку на компьютере с базой Бухгалтерии. Внимание: если Бухгалтерия находится на одном компьютере с УТ, то ничего переносить не нужно. Будем использовать ту же папку, что и для УТ.
Сначала перейдем в раздел «Администрирование» и выберем пункт «Синхронизация данных». В открывшемся окне проверим, чтобы префикс указанной базы совпадал с префиксом, который мы указали на первом шаге.
Устанавливаем флаг «Синхронизация данных» и переходим по ссылке «Настройки синхронизации данных». Нажимаем кнопку «Новая синхронизация данных». В открывшемся окне выбираем конфигурацию, с которой будет настроен обмен. В нашем случае это «1С: Управление торговлей, редакция 11».
Откроется окно настройки синхронизации. Выберем пункт «Настроить параметры подключения».
Так как обмен настраиваем через файл, то выбираем пункт «синхронизация данных через файл, без подключения к другой программе». На Шаге 1 мы уже создали файл с настройками обмена Синхронизация данных через универсальный формат.xml, поэтому выберем его. Если был создан другой каталог и туда скопировали файл с настройками обмена, то выбираем его.
Далее укажем каталог и настроим архивацию файлов. В данном случае каталог может быть тот же самый или тот, в который перенесли два файла.
Далее проверяем настройки префиксов и на этом настройка параметров подключения в Бухгалтерии завершена.
Далее переходим к следующему этапу «Настройка правил отправки и получения данных».
Так как задачи выгрузки из Бухгалтерии у нас нет, то в настройках отправки данных укажем «не отправлять».
В настройках получения данных укажем типовые настройки. При необходимости можно указать свои настройки.
Нажимаем «Записать и закрыть». Далее переходим к следующему этапу «Выполнить начальную выгрузку данных».
После выполнения операции будет создан в каталоге обмена файл с данными Message_БП_ЦБ.zip. На этом этап настройка обмена в Бухгалтерии закончена.
ШАГ 3. Окончание настройки в УТ
Вернемся в УТ. Если использовался другой каталог, то в папку обмена УТ перенесем файл, созданный на прошлом шаге Message_БП_ЦБ.zip.
Продолжим настройку синхронизации в УТ с этапа «Настроить правила отправки и получения данных».
В настройках обратим внимание на два поля.
1.Отправлять только используемую в документах нормативно-справочную информацию.
2.Отправлять все, начиная с даты. Это поле полезно, так как бывает, что нужно начать синхронизацию с определенного времени. Например, учет в УТ уже был настроен ранее, а в
Бухгалтерии только начинаем вести учет. Тогда нет необходимости переносить все документы из УТ в Бухгалтерию. Или второй случай: нужно поменять настройки обмена, но чтобы они действовали только для документов с определенной даты.
Все остальные поля заполняем в зависимости от учета.
В нашем случае настройка получения данных не требуется. Оставляем ее без изменений.
Нажимаем «Записать и закрыть». Переходим к следующему этапу «Выполнить сопоставление и загрузку данных».
В нашем случае программа ничего загружать не будет и перейдет к следующему этапу.
На последнем этапе «Выполнить начальную выгрузку данных» программа выгрузит данные из УТ в файл Message_ЦБ_БП.zip.
Обратите внимание (для случая с двумя каталогами): полученный файл Message_ЦБ_БП.zip копируем в каталог обмена Бухгалтерии. В Бухгалтерии выполняем синхронизацию. При этом Бухгалтерия сначала загрузит данные из присланного файла Message_ЦБ_БП.zip, потом обновит свой файл выгрузки Message_БП_ЦБ.zip Этот файл выгрузки Message_БП_ЦБ.zip нужно скопировать обратно в каталог обмена УТ и в УТ выполнить синхронизацию. При этом УТ сначала загрузит данные (если они там есть) из файла Message _БП_ЦБ.zip, а потом обновит свой файл выгрузки Message _ЦБ_БП.zip и т.д.
Читайте также: