Синхронизация данных по правилам КД2.0

Обмен - Перенос данных из 1C8 в 1C8

Новый инструмент для сравнения и загрузки данных, сочетающий в себе: гибкость запросов (используются для сопоставления объектов); наглядный вывод отличий; удобный отбор загружаемых данных; возможность пообъектной синхронизации двух баз по правилам КД2 с помощью вызова обработки "Универсальный обмен XML" в базе-источнике через COM-соединение.

Предлагаемый инструмент можно использовать для сверки и синхронизации данных между управленческой и регламентированной базами, когда обмен реализован с помощью своих уникальных правил, написанных по технологии КД2.0. С его помощью можно выгружать, загружать, сравнивать и корректировать данные в базе приемнике.

Первый запуск

Для того, чтобы обработка начала сопоставлять данные, необходимо:

  1. На закладке «Настройки» перейти во вкладку «Подключение» и задать там параметры COM-соединения с базой-источником (путь к базе, имя пользователя и пароль). Нажать на кнопку «Проверить подключение» и убедиться, что база-источник доступна.

  1. Вернуться на закладку «Настройка правил обмена» и указать здесь файл правил обмена, созданный с помощью конфигурации «Конвертация данных 2.0» (подразумевается, что этот файл у вас уже есть).
  2. Нажать кнопку «Сгенерировать настройки соответствия», дождаться, когда обработка заполнит список правил выгрузки, и отметить флажками, какие из них будут использоваться в обработке. Записать сформированные настройки.
  3. Нажать кнопку «Сформировать запросы для текущей и внешней базы».

  1. Перейти на закладку «Настройка запросов для сверки» и убедиться, что  по каждому правилу выгрузки для текущей и внешней базы были сгенерированы запросы сравнения (для правил выгрузки вида «Произвольный алгоритм» автоматическая генерация не производится).

После этого можно переключаться на вкладку «Синхронизация» и начинать пользоваться обработкой - сверять существующие объекты и загружать недостающие.

Данные из базы-источника выгружаются по 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.0:
.epf 648,25Kb
27.08.17
50
.epf 648,25Kb 50 Скачать

См. также

Комментарии
1. Григорий Бабиков (Grigoriy251) 2 29.08.17 00:03 Сейчас в теме
А КД2 еще жива? какая последняя версия?
2. Виктория Дорохина (vikad) 70 29.08.17 00:11 Сейчас в теме
https://releases.1c.ru/total второй строчкой - 2.1.8.2, дата выхода 11.06.14. А 1С:Конвертация данных 2.0 - это у нее название такое. В списке релизов так называется, так что к номеру версии придираться не стоит.
3. Andrey Erastov (tailer2) 29.08.17 13:21 Сейчас в теме
очень хочу посмотреть на "пользователя" в терминах сабжа
пс: это вовсе не критика продукта
всегда интересовало: если "доступно и всериоз", то что такое "1снег"?
5. Виктория Дорохина (vikad) 70 29.08.17 14:55 Сейчас в теме
(3) в терминах сабжа "пользователь" - это человек, который осуществляет анализ, работает с данными на закладке "Синхронизация". "Разработчик" - это человек, который настраивает работоспособность этого анализа на закладке "Настройки". Это может быть один и тот же человек. Но запросы для сложного сопоставления объектов классический "пользователь" скорее всего сам не напишет.
4. Виктория Дорохина (vikad) 70 29.08.17 13:50 Сейчас в теме
"пользователь" - любой человек, заинтересованный в контролируемости обмена. Это может быть "1снег", который разрабатывает правила обмена и хочет разобраться, все ли реквизиты переносятся как надо. Это может быть главбух, консолидирующий информацию из управленческой программы, где сложно уследить за действиями менеджеров в "незакрытом" периоде, и стремящийся избежать проблем отсутствия контроля обмена при реализации сложных схем учета.
по поводу
если "доступно и всериоз", то что такое "1снег"?
- не очень поняла. Поясните, пожалуйста.
6. Andrey Erastov (tailer2) 29.08.17 15:04 Сейчас в теме
7. Алексей Хадиятов (xan333) 2 30.08.17 10:47 Сейчас в теме
Данная обработка не работает в конфигурациях на обычных формах, даже если запускать в толстом клиенте(Управляемое приложение), управляемые формы разрешены в конфигурации. Выдает такие ошибки:
Ошибка инициализации модуля: ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(2052,52)}: Переменная не определена (НаправлениеПоиска)
Позиция = СтрНайти(СтрокаРазличия.ИмяФайла, ".", <<?>>НаправлениеПоиска.СКонца, , 1);
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(2052,13)}: Процедура или функция с указанным именем не определена (СтрНайти)
Позиция = <<?>>СтрНайти(СтрокаРазличия.ИмяФайла, ".", НаправлениеПоиска.СКонца, , 1);
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(3023,23)}: Процедура или функция с указанным именем не определена (СтрРазделить)
МассивПолейПоиска = <<?>>СтрРазделить(ПолеПоиска, ",");
{ВнешняяОбработка.СинхронизацияДанныхПоПравиламКД20.Форма.Форма.Форма(3079,22)}: Процедура или функция с указанным именем не определена (СтрРазделить)
МассивПолейПоиска = <<?>>СтрРазделить(ПолеПоиска, ",");
9. Виктория Дорохина (vikad) 70 30.08.17 10:51 Сейчас в теме
(7) обработка использует методы платформы, появившиеся в версии 8.3.6.
об этом указано в описании
8. Алексей Хадиятов (xan333) 2 30.08.17 10:49 Сейчас в теме
Также она не запускается в конфигурациях на управляемых формах которые не содержат в себе библиотеки стандартных подсистем, т.е. обработка запускается только в конфигурациях, основанных на функционале библиотеки стандартных подсистем
10. Виктория Дорохина (vikad) 70 30.08.17 10:52 Сейчас в теме
(8) завязки на внешние процедуры нет ни одной
11. Алекс Кон (alex-l19041) 10 30.08.17 10:53 Сейчас в теме
(8)
обработка запускается только в конфигурациях, основанных на функционале библиотеки стандартных подсистем
- это ограничивает применение...
13. Виктория Дорохина (vikad) 70 30.08.17 10:54 Сейчас в теме
12. Алексей Хадиятов (xan333) 2 30.08.17 10:53 Сейчас в теме
у меня версия платформы 8.3.9 вы пробовали запускать обработку в конфигурациях не содержащих БСП ? Просто создайте новую базу с пустой конфигурацией, запустите в режиме исполнения тонкий клиент и попробуйте открыть
14. Виктория Дорохина (vikad) 70 30.08.17 10:55 Сейчас в теме
конечно пробовала. У конфигурации есть режим совместимости?
15. Виктория Дорохина (vikad) 70 30.08.17 10:56 Сейчас в теме
СтрНайти, СтрРазделить, НаправлениеПоиска - это методы, появившиеся в платформе 8.3.6. Для них в конфигурациях на более старых версиях можно сделать замену. Это несложно.
16. Алексей Хадиятов (xan333) 2 30.08.17 10:59 Сейчас в теме
Виктория, спасибо! Вы правы, дело в свойстве режим совместимости конфигурации, он должен быть не ниже 8,3,6
17. Алексей Хадиятов (xan333) 2 30.08.17 11:02 Сейчас в теме
очень много ещё работает конфигураций на обычных формах, вы сделали хороший инструмент судя по описанию, жаль что он не работает в конфигурациях на обычных формах без танцев с бубном :-)
Оставьте свое сообщение