1с обновление правил обмена
Для кого: статья подразумевает, что вы хорошо знакомы с программированием и имеете опыт работы с КД.
Дилемма: использовать КД, модифицировать правила, загрузить их как актуальные, поддерживать эти измененные правила актуальными при каждом обновлении на новый релиз (иначе однажды обмен может перестать работать).
Альтернатива (решение): написать код, который при нажати кнопки сам модифицирует типовые правила. Таким образом, для поддержания актуальности правил при очередном обновлении на релиз достаточно нажать эту кнопку.
Как это работает: любая типовая конфигурация - Синхронизация - Настройка синхронизации - Загрузить правила - "Из конфигурации" - кнопка "Записать и закрыть". В момент нажатия в регистр загружаются типовые правила обмена и далее используются как актуальные.
Данный код загрузки типовых правил мы и будем менять. В результате при нажатии на кнопку "Записать и закрыть" мы получим типовые правила обмена, но модифицированные согласно заложенному коду.
Реализация: Конфигуратор - обработки - КонвертацияОбъектовИнформационныхБаз - модуль объекта - процедура ЗагрузитьПравилаОбмена():
Конструцией //. обозначен некий участок кода, который в данном листинге пропущен.
Изменения в типовом коде помечены //+изменения и //-изменения
Комментарий по коду: после того, как мы проинициализировали типовые правила ( Источник = ИмяФайлаПравилОбмена), мы эти правила модифицируем: ПреобразоватьПравилаОбмена(Источник)
Теперь код процедуры ПреобразоватьПравилаОбмена:
Комментарий по коду:
Приведен полностью листинг одного реально модифицированного набора правил. Вначале производится чтение правил и помещение их в дерево значений, затем дерево значений преобразуется (добавляются/удаляются/модифицируются правила), затем дерево обратно собирается в xml и выдается обратно в вызывающую функцию.
В листинге есть примеры:
- как в справочнике Номенклатура оставить синхронизацию только по Наименованию и Группе (см. РеквизитОбъекта.Атрибуты.Удалить("Поиск"))
- как включить синхронизацию по полям поиска, если по внутреннему идентификатору объект не найден (см. ПравилоКО.Строки.Найти("ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли","Имя");)
- как задать алгоритм поиска объектов (см. ПравилоКО.Строки.Найти("ПоследовательностьПолейПоиска","Имя");)
- как включить режим "Не замещать свойства если объект найден" (см. ПравилоКО.Строки.Найти("НеЗамещать","Имя");)
- как изменить значения реквизитов выгружаемых объектов (см. Если ИмяРеквизита.Атрибуты.Имя = "Проведен" Тогда )
- и некоторые другие примеры (по аналогии с приведенными выше будет понятно, для чего они предназначены).
И последнее: не забывайте, что иногда в конфигурации-приемнике поиск объектов по полям поиска может не сработать, т.к. в конфигурацию-приемник могут быть загружены правила корреспонденции. Если хотим, чтобы заработали правила поиска по полям поиска в этом случае, можем просто загрузить в приемник пустые правила корреспонденции.
В случае если между базами данных 1с настроен обмен с использованием правил обмена. То в результате доработки конфигураций или обновления на более актуальный релиз возникает задача актуализации правил обмена.
ВВЕДЕНИЕ
В случае если между базами данных 1с настроен обмен с использованием правил обмена. То в результате доработки конфигураций или обновления на более актуальный релиз возникает задача актуализации правил обмена.
Схематический процесс актуализации правил представлен далее:
Обращаю внимание, что первый пункт в данной схеме не актуален, если у вас в базе конвертация данных уже находятся правила обмена.
Создание и обновление объектов метаданных конвертации
Выгрузка правил обмена из базы в XML файл (для новой конвертации)
Для того что выгрузить привила обмена, в типовых конфигурациях нужно зайти в справочник настройки обмена данными а нажать кнопку «Сохранить правила обмена
Рис. 1. Форма элемента справочника Настройки обмена данными
Загрузка правил обмена, в конфигурацию КД 2.0 (для новой конвертации)
После запуска Конвертации данных нужно открыть форму загрузки правил обмена, и указать файл с правилами обмена данными.
Рис. 2. Вызов формы загрузки правил обмена
Выгрузка изменений конфигурации в файл XML (MD81Exp.epf, MD82Exp.epf)
Выгрузка конфигурации осуществляется обработкой MD81Exp.epf, MD82Exp.epf соответственно для версий 1с 8.1 и 8.2 .Данная обработка расположена в каталоге шаблона конфигурации КД (например C:\Users\RudakovDV\AppData\Roaming\1C\1Cv82\tmplts\1c\Conversion\2_1_7_1 ).
Осуществим выгрузку конфигурации БП 3.0.
Открываем обработку MD82Exp.epf, в ней отмечаем выгружать движения документов без проведения и нажем выгрузить (Рис. 3.)
Рис. 3. Форма обработки MD82Exp.epf
Замена изменённой конфигурации в правилах обмена.
Откроем список правил обмена (Рис. 4.)
Рис. 4. Открытие формы списка правил обмена
Вызываем форму элемента правил обмена (Рис.5). Далее взываем форму конфигурации заменимой конфигурации.
Рис. 5. Форма правил обмена
Появится форма элемента справочника конфигурации (Рис. 6.), в ней нужно заменить старую конфигурацию, на актуальную конфигурацию которую мы получили на втором шаге.
Рис. 6. Формы конфигурации
В форме загрузки метаданных конфигурации, следует обратить внимание, что вы действительно заменяете (а не дополняете и не создаете) нужную конфигурацию.
Рис. 7. Форма конфигурации и форма загрузки структуры метаданных конфигурации
Редактирование правил обмена
Актуализация ПКС и ПКО
При редактировании правил обмена следует обратить внимание на списки правил конвертации объектов и списки правил конвертации свойств. Если объект или свойство удалены (возможно, переименованы) в новой версии конфигурации, то строка с данным полем будет выделена красным. Подобный пример приведен на Рис. 8, в результате обновления к новой конфигурации была удалена табличная часть «Пересортица» и реквизит «ПолученИзАстор», следовательно, данные строки выделены красным.
Рис. 8. Участки, на которые следует обратить внимание при корректировании правил обмена
Для исправления данных недостатков, нужно изменить источник и приемник конвертируемого свойства. Для этого нужно кликнуть по выделенной строке дважды, и в появившейся форме правиле конвертации свойств (Рис. 9.), просмотреть свойства источника и свойства приемника. Если в конфигурации были удалены реквизиты или табличные части, то в конвертации данных при загрузке, эти свойства будут помечены на удаление. Следовательно, нужно переназначить свойства, помеченные на удаление на новые появившиеся свойства, или может быть удалить данную конвертацию свойства из ПКО.
Рис. 9.Актуализация конвертации свойств.
Аналогичным образом нужно актуализировать правила конвертации объектов.
Актуализация кода обработчиков
Сохранение правил обмена и их загрузка в БД
Правила обмена нужно сохранить в файл на диске, для этого нажмите «Сохранить правила» в форме настройки правил обмена.
Рис. 10. Сохранение правил обмена
Появится форма сохранения правил, в которой указывается файл сохранения правил обмена.
Рис. 11. Форма сохранения правил обмена
Теперь в форме элемента справочника настройки обмена данными, загружаем правила обмена в БД. Теперь можно провести обмен.
Так же нужно обратить внимание, что при замене правил обмена в конфигурации конвертация данных новой версией правилами обмена, не всегда новые правила загружаются корректно. В частности если в вашей конфигурации конвертация данных имеются правила обмена, в которых галочка «Работа с параметрами версии 2.1» отключена, а в загружаемых правилах обмена включена, то ожидаемого результата что галочка будет включена не подтвердится, т .е. нужно будет вручную зайти и проставить данную галочку (Рис. 12.).
Рис. 12. Форма Правил обмена, вкладка параметры
В файлах размещенных к скачиваю, последовательно рассказано как сохранить новую конфигурацию, заменить её в правилах обмена и доработать их в соответствии с новыми изменениями. Попытался обратить внимание на важные пункты при решении данной задачи.
Буду рад дополнениям и замечаниям в комментариях .
Публикации будет полезна начинающим разработчикам в Конвертации данных 2.1.
В вышедший недавно релиз 2.1.7.1 конфигурации "1С:Конвертация данных" разработчики включили интересную обработку - «Сравнение и объединение правил обмена». Хотите узнать, какие новые возможности она может Вам предложить?
Слезы разработчиков
До недавнего времени специалистам, дорабатывающим правила обмена, приходилось буквально вручную отслеживать изменения, которые были внесены в типовые правила, и при актуализации последних переносить в них свои доработки. Такая методика поддержки правил в актуальном состоянии занимает большое количество времени и сил специалистов, отвлекая их от решения других задач.
Но сейчас все изменилось. Появилась возможность значительно облегчить себе жизнь.
Итак, Вы профессиональный разработчик и сопровождаете (разрабатываете) правила обмена. Предлагаю Вам методику работы, используя которую, сопровождение правил обмена не будет представлять для Вас сложность. Вы сэкономите время и избежите многих ошибок. Хотите узнать, что для этого нужно?
Немного терминологии
Далее по тексту я буду часто пользоваться сокращениями, поэтому сразу определимся с терминами.
ПКО — правило конвертации объекта
ПКС — правило конвертации свойства
ПКГС — правило конвертации группы свойств
ПКЗ — правило конвертации значения
ПВД — правило выгрузки данных
ПОД — правило очистки данных
Подготовка справочника «Конвертации»
Прежде всего придется выполнить реорганизацию справочника «Конвертации». Дело в том, что нам придется хранить версии правил поставщика. Рекомендую для этого создать на каждое правило отдельную папку, с названием, например — «УТ → БП». Будет лучше, если в наименовании каждой версии правил будут указаны релизы используемых конфигураций (а если нужно — и номер версии) — например, «УТ-БП (11.0.9, 2.0.44, v.1)».
После выхода новых релизов конфигураций, участвующих в обмене, нам понадобится загрузить новую версию правил поставщика. Найти обновленные версии правил можно в каталоге шаблонов (папка «Правила обмена»), в общих макетах конфигураций или в макетах планов обмена (их нужно сохранить как файл *.xml). При загрузке обязательно укажите «Загрузить правила в новую конвертацию данных» (см. рис.1).
Рисунок 1: Обработка "Загрузка правил обмена".
Структура справочника «Конвертации» после этого примет имеет следующий вид:
Рисунок 2: Справочник "Конвертации"
Версии правил поставщика лучше не изменять — в дальнейшем они нам понадобятся как эталон для сравнения с разрабатываемыми правилами.
Сейчас у нас все готово для того чтобы начать разработку. Продолжим?
Создаем свои правила
Создаем свои правила — пока еще копию правил поставщика. Рекомендую загрузить правила поставщика в новый элемент справочника «Конвертации» с помощью обработки «Загрузка правил обмена». Иногда бывает удобно воспользоваться кнопкой «Скопировать правила» из формы списка справочника. Рекомендуется организовать хранение собственных версий правил точно так же, как это было выполнено для хранения версий правил поставщика. Создаем новую папку («УТ → БП (разработка)») и загружаем в нее правила поставщика с названием, например, «УТ-БП (11.0.9, 2.0.44, v.1) — разработка». Теперь можно приступать непосредственно к модификации правил поставщика.
Обычно, требования клиентов к доработке правил обмена сводятся к настройке отдельных ПКС, ПВД, алгоритмов и запросов. Значительно реже приходится выполнять настройку существующих ПКО и создание новых.
Итак, что мы имеем? У нас есть некие правила обмена, в которые мы внесли изменения по требованию клиента. Есть текущая и новая версии правил обмена поставщика. Нужно выполнить обновление модифицированных нами правил до актуальной версии правил поставщика. Как это сделать?
Сравниваем свои правила с текущей версией правил поставщика
Этот этап можно пропустить, если Вы точно знаете, в какие именно элементы правил вносились изменения. Но если это не так — лучше подстраховаться.
Давайте попробуем найти обработку «Сравнение и объединение правил обмена».
А это довольно непросто - вызывается она из формы «Настройка правил обмена» (подменю «Сервис» - «Сравнение и объединение правил обмена») и при открытии предлагает выбрать один из элементов справочника «Правила обмена», который и будет сравниваться с текущим.
Рисунок 3: Вызов обработки "Сравнение и объединение правил обмена".
Выберем в справочнике текущую версию правил поставщика. Через некоторое время, которое необходимо обработке для того, чтобы выполнить анализ различий, откроется главное окно с дерево сравнения правил (см. рис.4).
Рисунок 4: Результат сравнения
Итак, мы видим, что наши правила и правила поставщика различаются. Для упрощения будем рассматривать только следующие отличия - «Последовательность полей поиска» ПКО «Контрагенты», добавленные ПКС «Код» и «Комментарий» ПКО «ФизическиеЛица» и обработчик события «Перед выгрузкой объекта» ПВД «Договоры с контрагентами».
Новые ПКС «Код»и «Комментарий» ПКО «ФизическиеЛица» примем во внимание — они должны остаться в новой версии правил неизменными.
Выделим ячейку обработчика событий «Последовательность полей поиска» и с помощью контекстного меню «Показать различия» вызовем диалог показа различий между обработчиками (см. рис.5).
Рисунок 5: Различия в обработчике "Последовательность полей поиска" ПКО "Контрагенты"
Рисунок 6: Различия в обработчике "Перед выгрузкой объекта" ПВД "Договоры с контрагентами"
Мы выяснили, какие изменения были внесены в наши правила. Запишем (запомним) и переходим к сравнению разрабатываемых правил с новой версией правил поставщика.
Сравниваем и объединяем свои правила с новой версией правил поставщика
Вернемся в окно настройки правил обмена и запустим сравнение разрабатываемых правил с новыми правилами поставщика.
Рисунок 7: Результат сравнения с новыми правилами поставщика.
На представленном рисунке можно заметить, что некоторые ПКС, существующие в наших правилах и правилах поставщика не были сопоставлены. Дело в том, что обработка предоставляет 2 варианта сопоставления ПКС - «По коду» и «По наименованию» (см. рис.8). В данном случае используется сопоставление по коду. Например, ПКС «ЭтоГруппа» в наших правилах имеет код 15, а в правилах поставщика — 20.
Установим пометки для тех элементов ПКС «ФизическиеЛица», которые были изменены поставщиком и корректно сопоставлены, нажмем кнопку «Выполнить».
Если нужно — сменим режим сопоставления ПКС, выполним сравнения еще раз и объединим сопоставленные и измененные правила.
Точно так же можно поступить и с обработчиком «Поля поиска» ПКО «Контрагенты», т. к. изменения в правила обмена вносились только нами.
С обработчиком «Перед выгрузкой объекта» ПВД «Договоры с контрагентами» придется повозиться дольше. Дело в том, что изменения в него были внесены не только нами, но и разработчиками. Наши изменения нужно учесть и в новой версии правил. Каким же образом можно перенести наши доработки в новую версию правил?
Рисунок 8: Настройка сопоставления ПКС
Система 1С:Предприятие 8 не предоставляет стандартных средств объединения текстовых файлов (в отличие от сравнения), поэтому можно либо вручную перенести изменения поставщика в наши правила, либо воспользоваться сторонними программами.
Для объединения обработчиков Вы можете воспользоваться программами KDiff3 или WinMerge. И та и другая могут помочь выполнить частичное слияние обработчиков. Установите одну из этих программ. Откройте форму «Настройка сравнения правил обмена» (рис. 8) и укажите путь к исполняемому файлу. После перехода в главное окно обработки, в контекстном меню появится новый пункт - «Объединить правила с помощью KDiff3» («Объединить правила с помощью WinMerge»).
Установим курсор над обработчиком «Перед выгрузкой объекта» ПВД «Договоры с контрагентами» и выберем пункт «Объединить правила с помощью KDiff3».
Обработка сохранит левое и правое значение обработчиков во временные файлы и запустит внешнюю программу сравнения. Работать с ней просто, слева правило — приемник, справа правило — источник, внизу — результат объединения. С помощью кнопок «А» и «В» командной панели, можно указать, какие фрагменты будут перенесены в результирующий текст. После нажатия кнопки «Сохранить» и закрытия окна программы, результирующий текст будет перенесен в соответствующий обработчик правила — источника.
Рисунок 9: Окно программы KDiff3
Конечно, предложенный пример довольно прост, однако, на практике никого не удивишь обработчиком событий на несколько сотен строк, в котором имеются собственные вставки (или модифицированные фрагменты), несколькими десятками добавленных (или удаленных) ПКС и ПКЗ и т. п. И вот тогда поддержка измененных правил становится уже не такой простой. Как раз в таких случаях предложенная методика может стать тем спасательным кругом, которого так не хватало ранее.
Но это еще не все.
Обработка «Сравнение и объединение правил обмена» имеет некоторые настройки, используя которые можно существенно расширить ее функционал.
Мелкие (и не очень) хитрости
Предложенная фирмой «1С» методика сравнения позволяет сравнивать текущие разрабатываемые правила обмена с какими — либо другими. А если нужно сравнить с тем, что было и с тем, что будет?
Очень просто — нажмите кнопку «Настройка» и перейдите по гиперссылке « Перейти к настройке правил обмена ».
Рисунок 10: Настройка состава сравнения правил обмена
В табличной части «Правила обмена» добавьте старую версию правил поставщика и расположите ее так, чтобы сначала шла она, затем текущие правила, и только после этого — новая версия правил поставщика.
После закрытия формы настройки и нажатия кнопки «Обновить» будет построено новое дерево сравнения, уже с учетом трех правил (см. рис. 11).
Теперь можно выполнять объединение правил как с новой версией правил, так и со старой (используя контекстное меню). Этот прием может пригодиться, когда разрабатываемые правила сильно отличаются как от старой, так и от новой версии правил поставщика.
Рисунок 11: Сравнение 3-х правил
В некоторых случаях не требуется выполнять сравнение всех объектов, составляющих правила (это значительно дольше), а только части из них. Для того, чтобы сэкономить время, Вы можете снять флажки с ненужных в данный момент элементов правил (параметров, общих реквизитов и обработчиков, ПКЗ, ПКС, ПКО, ПВД, ПОД, Алгоритмов, Запросов). Формирование дерева сравнения станет, в этом случае, значительно более быстрым.
Вы можете отключить некоторые реквизиты и обработчики. Для этого можно воспользоваться соответствующими настройками обработки. Сравнение этих реквизитов производится не будет, в дерево сравнения они не попадут.
Кроме этого, Вы можете управлять выводом дерева сравнения с помощью поля «Фильтр». Он содержит 3 элемента:
- Показывать все. Выводятся все строки дерева сравнения. Строки в которых найдены отличия выводятся жирным шрифтом
- Показывать измененные. Выводятся все строки, в которых выявлены различия, в том числе добавленные и удаленные.
- Показывать добавленные и удаленные. Выводятся только строки, которые были добавлены или удалены.
P.S. Используйте эти несложные рекомендации и обработку «Сравнение и объединение правил обмена», и Вы станете незаменимым для своих клиентов. Клиенты получат качественные правила, а Вы — экономию времени, которого всегда так не хватает.
Задание:
Есть обмен УТ10.3 - БП 2.0
Нужно чтобы при обмене в бухгалтерию выгружались только проведенные документы.
Выполненение:
- Сохраняем типовые правила обмена в файл xml
- Загружаем и дорабатываем правила в конфигурации Конвертация данных 2
- Загружаем измененные правила в 1С УТ 10.3
- Проверяем обмен
Загружаем их в конфигурацию Конвертация данных 2 и правим
после загрузки правил, чтобы поменять правило для всех выгружаемых объектов идем сюда:
И пишем свое правило:
Определяем если объект - документ, то если он не проведен, то мы его не выгружаем.
Этого правила достаточно чтобы непроведенные документы не выгружались.
И со временем обмен будет происходить все медленнее.
Нужно удалять из регистрации непроведенные документы!
Немного меняем правило обмена:
Загружаем правила обмена
Для удобства зарегистрируем 5 документов, из которых 2 будут непроведенных:
Делаем обмен и смотрим что выгрузилось в файл обмена:
находим только 3 документа, которые проведены.
Снова смотрим регистрацию объектов на узле:
Вы решили использовать обмен информацией между конфигурациями. Но чтобы обмен работал правильно, если вы обновляете что-то, то вам обязательно нужно провести обновление обмена.
Специалисты 1С ответят на любые вопросы
и помогут выбрать программу абсолютно бесплатно!
Можем посмотреть на пример, при котором обмен настраивался через УТ и использовал соединения напрямую к бухгалтерии. Все данные, которые мы используем обязательно придется загружать через настройку обмена информацией в УТ. Во избежание проблем и потери информации, советуем вам сделать полную копию вашей базы, чтобы в случае чего вы смогли восстановить первоначальный вид
Открываем нашу программу 1С УТ версии 10.3. Потом нажимаем на кнопку в меню «сервис» и далее в выпавшем списке нажимаем на пункт «прочие обмены данными».
Далее открываем пункт меню «Все обмены». Далее жмем в появившейся таблице правый клик и кликаем на копку «Изменить».
В открывшейся вкладке наблюдаем, что обмен идет используя правилам обмена. Эти правила надо сохранить себе или наоборот произвести их загрузку.
Производим загрузку правил в нашу базу обмена. Кликаем «Загрузить правила из файла». Если в вашей конфигурации происходили изменения и ее дорабатывали, советуем вам воспользоваться помощью квалифицированных программистов 1с, так как создать самим правила у вас не получится или сделаете это с ошибками.
Специалисты 1С ответят на любые вопросы
и помогут абсолютно бесплатно!
Перед этой процедурой советуем сохранить вам созданные правила в файл, чтобы в случае чего можно было все откатить.
Учитывая, что Бухгалтерия 1С обновилась намного позднее чем УТ, то нам надо найти правила для Бухгалтерии 1с. Ищем папку с набором шаблонов, сделать это можно открыв программу 1С и кликнув на кнопку «Настройка». Далее перед нами открывается окошко, где находятся все шаблоны.
Далее идем в 1С=>Accounting и кликаем на каталог, где лежит наша 1С Бухгалтерия. Когда нужно брать правила из УТ, то мы ищем папку Trade и открываем ее.
Открываем обмен с конфигурацией УТ и далее находим правила конвертации УТ в Бухгалтерию предприятие. Все также делаем для загрузки в текущую бд, но указываем уже конвертация из Бухгалтерия предприятие в Управление торговлей.
Советуем вам ознакомиться с файлом Совместное использование. Находится он в каталоге Обмен конфигурацией Ут. Он содержит в себе полезные для вас данные.
Надо удостовериться, что наши правила работают правильно клавишами. Если все работает нормально, сохраняем их и начинаем наш обмен.
Читайте также: