гибкость запросов (используются для сопоставления объектов);
наглядный вывод отличий;
удобный отбор загружаемых данных;
возможность пообъектной синхронизации двух баз по правилам КД2 с помощью вызова обработки «Универсальный обмен XML» в базе-источнике через COM-соединение.
Предлагаемый инструмент можно использовать для сверки и синхронизации данных между управленческой и регламентированной базами, когда обмен реализован с помощью своих уникальных правил, написанных по технологии КД2.0. С его помощью можно выгружать, загружать, сравнивать и корректировать данные в базе приемнике.
Первый запуск
Для того, чтобы обработка начала сопоставлять данные, необходимо:
- На закладке «Настройки» перейти во вкладку «Подключение» и задать там параметры COM-соединения с базой-источником (путь к базе, имя пользователя и пароль). Нажать на кнопку «Проверить подключение» и убедиться, что база-источник доступна.
- Вернуться на закладку «Настройка правил обмена» и указать здесь файл правил обмена, созданный с помощью конфигурации «Конвертация данных 2.0» (подразумевается, что этот файл у вас уже есть).
- Нажать кнопку «Сгенерировать настройки соответствия», дождаться, когда обработка заполнит список правил выгрузки, и отметить флажками, какие из них будут использоваться в обработке. Записать сформированные настройки.
- Нажать кнопку «Сформировать запросы для текущей и внешней базы».
- Перейти на закладку «Настройка запросов для сверки» и убедиться, что по каждому правилу выгрузки для текущей и внешней базы были сгенерированы запросы сравнения (для правил выгрузки вида «Произвольный алгоритм» автоматическая генерация не производится).
После этого можно переключаться на вкладку «Синхронизация» и начинать пользоваться обработкой — сверять существующие объекты и загружать недостающие.
Данные из базы-источника выгружаются по COM с помощью обработки «Универсальный обмен данными XML» — соответственно, она должна быть встроена и в конфигурацию-источник и в конфигурацию-приемник.
Особенности автоматической генерации запросов для сопоставления
- Для правил выгрузки вида «Произвольный алгоритм» автоматическая генерация не производится
- При генерации запроса для правил выгрузки документов создаются обязательные параметры «Организация», «НачПериода» и «КонПериода», задающие отборы по периоду и организации.
- В общем случае для запроса сравнения генерируются поля, соответствующие полям поиска в правилах обмена. Такого сравнения достаточно, чтобы увидеть наличие или отсутствие объекта.
- Для правил выгрузки документов дополнительно в запросе сравнения генерируются поля «Контрагент»* и «Сумма документа» (в случае наличия у документа таких реквизитов) — чтобы иметь возможность сравнения по этим показателям.
- Сравнение объектов производится «один в один». Для реализации более сложного сопоставления или для возможности синхронизации данных по правилам вида «Произвольный алгоритм», а также для анализа отличий в разрезе дополнительных полей необходима помощь специалиста, который умеет писать запросы.
*Поскольку сопоставление контрагентов обычно производится по ИНН, то при генерации запроса для описания поля «Контрагент» используется его дочернее поле Контрагент.ИНН (Контрагент.ИНН КАК Контрагент). При выводе в табличное поле «Синхронизации» значение ИНН преобразуется в ссылку на контрагента базы-приемника, имеющего этот ИНН.
То же самое предусмотрено для вывода детальных записей, содержащих элементы справочника Номенклатура (актуально только для самостоятельно написанного запроса): если поле Номенклатура задано ее кодом (Номенклатура.Код КАК Номенклатура), то сопоставление производится по коду, а в табличное поле выводится представление этой номенклатуры из базы-приемника.
Техническая реализация сравнения данных
При необходимости, в автоматически сгенерированные запросы можно внести изменения — добавить дополнительные поля сравнения, детализацию по табличным частям и т.д.
Например, для получения отличий в детальных записях можно модифицировать запрос, добавив в него информацию по табличным частям объекта с последующим получением итогов по ссылке.
Это позволит добиться «многоуровневого» вывода отличий:
- в основное табличное поле будут выводиться различия на уровне самого объекта,
- в подчиненное табличное поле — различия в табличной части.
Сопоставление результатов запросов производится с помощью реквизитов соответствия, заданных в таблице «Настройки соответствия». Эта таблица генерируется автоматически на основании полей поиска правил обмена. При необходимости реквизиты соответствия можно корректировать.
Назначение параметров выгрузки данных производится в соответствующем диалоговом окне на вкладке «Настройки».
Некоторые параметры выгрузки пользователь может назначать в пользовательском режиме на вкладке «Синхронизация».
Для того, чтобы это стало возможно, нужно отметить эти параметры для выбранного правила выгрузки в качестве связанных параметров.
В обработку заложена возможность отладки результатов запросов с их последующим сравнением с помощью автоматизированного вызова диалога «Файл — Сравнить файлы».
Можно сравнивать результаты запросов по всем правилам выгрузки или только выбранные.
Преимущества для пользователя
С точки зрения пользователя обработка отвечает следующим требованиям:
- Стабильная работа
- Контроль достоверности перенесенных данных
- Наглядность сравнения отличий
- Приемлемая скорость вывода сопоставляемой информации
- Пользовательские фильтры (по организациям, периодам, контрагентам)
- Возможность произвести загрузку только отобранных объектов.
- Возможность разделения загрузки объектов по функциональным участкам за счет работы пользователей под своими учетными записями
- Не используются промежуточные файлы данных (для загрузки используются временные файлы)
- Удобный интерфейс:
- Скрываемая панель выбора правил выгрузки;
- Наглядные отборы, сортировка;
- Цветовая индикация сравниваемых данных;
- Выделение цветом и шрифтом отличий;
- Подсчет сумм, строк.
- Возможность вывести на печать список отобранных в обработке объектов
- В случае обнаружения ошибочного отражения операции в БУ, возможность прямо из интерфейса обработки пометить объект на удаление
- Возможность пометить выбранные объекты, как «Проверенные», чтобы, используя фильтр «Только непроверенные», сосредоточиться на анализе остальных отличий.
Преимущества для разработчика
С точки зрения разработчика этот инструмент содержит:
- Автоматическую генерацию запросов для выбранных правил выгрузки
- Интеграцию запросов непосредственно в интерфейс обработки для возможности их изменения и отладки.
- Возможность контроля и сравнения результатов запросов на стадии отладки.
Обработка универсальна, не имеет «завязки» на конкретную конфигурацию. Работает на управляемых формах, использует методы платформы, появившиеся в версии 8.3.6.
Использованные источники
- //infostart.ru/public/297045/ — как базовая идея
- Функциональность закладки «Сверка результатов запросов» взята на публикации //infostart.ru/public/544800/ (также используется идея «программного сравнения» файлов в тонком клиенте из обработки //infostart.ru/public/292916/ )
- Реализация сравнения результатов запросов построена на методе сравнения таблиц значений, описанном в //infostart.ru/public/326983/
- Для загрузки только отобранных документов используется способ, описанный в //infostart.ru/public/86109/
- Визуализация наложенного на ТЧ отбора реализована при помощи приема из оформления отчетов в УНФ.
А КД2 еще жива? какая последняя версия?
очень хочу посмотреть на «пользователя» в терминах сабжа
пс: это вовсе не критика продукта
всегда интересовало: если «доступно и всериоз», то что такое «1снег»?
«пользователь» — любой человек, заинтересованный в контролируемости обмена. Это может быть «1снег», который разрабатывает правила обмена и хочет разобраться, все ли реквизиты переносятся как надо. Это может быть главбух, консолидирующий информацию из управленческой программы, где сложно уследить за действиями менеджеров в «незакрытом» периоде, и стремящийся избежать проблем отсутствия контроля обмена при реализации сложных схем учета.
по поводу
— не очень поняла. Поясните, пожалуйста.
(3) в терминах сабжа «пользователь» — это человек, который осуществляет анализ, работает с данными на закладке «Синхронизация». «Разработчик» — это человек, который настраивает работоспособность этого анализа на закладке «Настройки». Это может быть один и тот же человек. Но запросы для сложного сопоставления объектов классический «пользователь» скорее всего сам не напишет.
ну и ладно
Данная обработка не работает в конфигурациях на обычных формах, даже если запускать в толстом клиенте(Управляемое приложение), управляемые формы разрешены в конфигурации. Выдает такие ошибки:
Ошибка инициализации модуля: ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(2052,52)}: Переменная не определена (НаправлениеПоиска)
Позиция = СтрНайти(СтрокаРазличия.ИмяФайла, «.», <<?>>НаправлениеПоиска.СКонца, , 1);
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(2052,13)}: Процедура или функция с указанным именем не определена (СтрНайти)
Позиция = <<?>>СтрНайти(СтрокаРазличия.ИмяФайла, «.», НаправлениеПоиска.СКонца, , 1);
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(3023,23)}: Процедура или функция с указанным именем не определена (СтрРазделить)
МассивПолейПоиска = <<?>>СтрРазделить(ПолеПоиска, «,»);
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(3079,22)}: Процедура или функция с указанным именем не определена (СтрРазделить)
МассивПолейПоиска = <<?>>СтрРазделить(ПолеПоиска, «,»);
Также она не запускается в конфигурациях на управляемых формах которые не содержат в себе библиотеки стандартных подсистем, т.е. обработка запускается только в конфигурациях, основанных на функционале библиотеки стандартных подсистем
(7) обработка использует методы платформы, появившиеся в версии 8.3.6.
об этом указано в описании
(8) завязки на внешние процедуры нет ни одной
(8)
— это ограничивает применение…
у меня версия платформы 8.3.9 вы пробовали запускать обработку в конфигурациях не содержащих БСП ? Просто создайте новую базу с пустой конфигурацией, запустите в режиме исполнения тонкий клиент и попробуйте открыть
(11) см (10)
конечно пробовала. У конфигурации есть режим совместимости?
СтрНайти, СтрРазделить, НаправлениеПоиска — это методы, появившиеся в платформе 8.3.6. Для них в конфигурациях на более старых версиях можно сделать замену. Это несложно.
Виктория, спасибо! Вы правы, дело в свойстве режим совместимости конфигурации, он должен быть не ниже 8,3,6
очень много ещё работает конфигураций на обычных формах, вы сделали хороший инструмент судя по описанию, жаль что он не работает в конфигурациях на обычных формах без танцев с бубном 🙂
Если я запускаю обработку в базе приемнике — УТ11.4, а база источник — УТ 10.3. (нетиповая), будет работать без танцев с бубнами ?
(18) будет, конечно
Виктория, восхищен профессионализмом.
Звезду поставил.
Приобрел.
При нажатии на кнопку Сформировать запросы для текущей и внешней базы появляется ошибка «Дублирующеся имя поля сумма». Пытаюсь выгрузить из базы-источника бухгалтерия 3.0.56 в базу- приемник бухгалтерия 3.0.56 счет на оплату покупателю.
(21) на закладке «Настройка правил обмена» для строки «Счет на оплату покупателю» какие настройки? Можно увидеть скриншот?
Скриншот прилагается
Почему в реквизитах соответствия Ссылка, а не Дата и Номер. Прилагаю скриншот из КД 2.
(24) Ссылка потому что в КД 2 для этого ПКО стоит галочка «Искать объект приемника по внутреннему идентификатору объекта источника», которая означает, что по факту в качестве поля соответствия используется уникальный идентификатор (Ссылка) — у вас для всех ПКО значок в виде лупы.
По поводу «Дублирующее имя поля Сумма» — нашла ошибку, исправила, выложила в файлах публикации. Если кто-то из ранее скачавших тоже столкнулся с ошибками при формировании запросов соответствия, пишите в личку, вышлю письмом.
Очень удобная обработка. Спасибо автору!!! Есть одно пожелание, чтобы в обработке были кнопки и ПолучитьДанные, и Отправить данные. Спасибо еще раз!!!
Отличная обработка. Жалко не рабочая где-то кроме Windows
@vikad Виктория, спасибо за обработку. Полезная вещь. Одно меня насторожило: я добавил в сравнение поле «склад». При этом в правилах склад подменяется. Например в источнике у нас склады привязаны к помещениям, а в приемнике используется один «основной скл
(29) Обработка сравнивает результаты запросов, полученные из разных баз. Поскольку ссылки в разных базах скорее всего будут различными, поля сравнения должны быть строкового/числового типа. Поэтому, если вы хотите, чтобы в поле Склад выводилось наименование склада и сравнивалось наименование склада в источнике и приемнике, то поле Склад в запросе должно быть
Если же у вас склад в источнике и склад в приемнике ничего общего не имеют, сравнение по этому полю вам не нужно, его нужно убрать из запросов (и для приемника и для источника).
Поля поиска, используемые в правиле конвертации преобразуются в поля сравнения при автоматической генерации запросов (запросы можно изменить, добавить в них поля самостоятельно, и добавленные поля станут полями сравнения). Сами правила конвертации при сравнении никак не учитываются.
Правила конвертации используются только при загрузке, для этого используются стандартные возможности «Универсального обмена XML» (сама обработка никак на правила конвертации не влияет).
Виктория, спасибо за разъяснения. Получается в моём случае сравнить не удастся, так как слишком много преобразований данных зашито в правилах. Но, обработка всё равно полезная.
(26) Правда, очень удобная.