Внешние источники данных: Синхронизация с внешними мастер-данными

11.01.12

Интеграция - Внешние источники данных

Пример использования <Внешних источников данных>. Использование Запросов к таблицам внешнего источника, использование полученных данных для синхронизации справочников.

Мат. часть (ссылки):

  1. Статья на 1c-ei.ru
  2. Раздел из AddDoc
  3. ЖЖ им. Comol

Кратко: начиная с 8.2.14 появился новый объект метаданных "Внешние источники данных", пока доступно только чтение (в том числе просмотр данных в пользовательском интерфейсе, работа с данными через механизм запросов), обещана поддержка основных СУБД.


Вводная: необходимо организовать загрузку мастер-данных в 1С из справочных данных некой системы, последняя данные хранит в СУБД MS SQL. Под мастер-данными следует понимать, что эти данные при загрузке имеют приоритет перед уже существующими на стороне приемника: новые данные добавляются; существующие, если отличны, обновляются; существующие на стороне приемника, но не в новых данных, считать устаревшими, иметь возможность пометить на удаление.


Так как задача не предусматривает изменения мастер-данных, т.е. предполагает только чтение - это хороший пример для "Внешних источников".


Моё решение следующее:

  1. Считать данные из Внешнего источника. Необходимые поля интерпретировать к данным на стороне приемника. 
  2. Сравнить считанные данные с данными приемника согласно набору ключей (чаще всего такие поля id).
  3. Добавить новые данные, не найденные при сравнении.
  4. Обновить найденные данные, если они отличны.
  5. Пометить на удаление не найденные данные при сравнении (последний шаг опционально)

Следует оговорить одно из замечаний к существующей реализации "Внешних источников", а именно: нет возможности считать данные непосредственно во временную таблицу и работать с данными дальше (что логично, так как временные таблицы создаются на стороне СУБД, обслуживающей 1С, а при работе с Внешними источниками это сторонняя СУБД).

Функция ВыполнитьОбновлениеСправочникаИзВнешнегоИсточника(
                                    ИмяСправочника,
                                    ИмяИсточника,
                                    ИмяТаблицыИсточника,
                                    СтруктураКлючи,
                                    СтруктураПоля,
                                    знач СоздаватьНовые = Истина,
                                    знач СниматьПометкуУдаления = Истина,
                                    знач ПомечатьНаУдаление = Истина) 
... 
КонецФункции

текст метода на snipt.org

Подробнее о методе и его параметрах:

  • ИмяСправочника - название справочника приемника данных
  • ИмяИсточника - название источника из "Внешние источники"
  • ИмяТаблицыИсточника - название целевой таблицы
  • СтруктураКлючи - Структура, где ключ - поле таблицы источника, значение - поле справочника (приемника данных).
  • СтруктураПоля - Структура, где ключ - поле источника, значение - тип данных к которому нужно привести поле источника.
  • необязательные параметры (опции) функции (СоздаватьНовые, СниматьПометкуУдаления, ПомечатьНаУдаление ) - нужны на тот случай, когда мастер-данные соответствуют помеченному на удаление объекту данных 1С (см. описание задачи).


Пример вызова метода

ИмяИсточника = "MSSQL";
ИмяСправочника = "Кварталы";
ИмяТаблицыИсточника = "dbo_Quarter";
  
СтруктураДополнительноеПоле = Новый Структура();
СтруктураДополнительноеПоле.Вставить("Имя","Владелец");
СтруктураДополнительноеПоле.Вставить("Источник","Справочник.УчастковыеЛесничества");
СтруктураДополнительноеПоле.Вставить("ИсточникПоле","Ссылка");
СтруктураДополнительноеПоле.Вставить("СвязьПолеИсточник","КодВнешний");
  
СтруктураКлючи = Новый Структура("OID", "КодВнешний");
СтруктураПоля  = Новый Структура("OrdinalNumber,DivisionalForestry_OID", "Наименование", Новый Структура("Владелец", СтруктураДополнительноеПоле));
  
// DivisionalForestry_OID будет замещён на Владельца
ВыполнитьОбновлениеСправочникаИзВнешнегоИсточника( ИмяСправочника, ИмяИсточника, ИмяТаблицыИсточника, СтруктураКлючи, СтруктураПоля);

В примере показан момент, когда в мастер-данных реализована свзяь "отец-сын", для 1С принято понятие "владелец". Для описания такого поля используется <СтруктураДополнительноеПоле>, обязательные свойства структуры: Имя (как будет приставлено поле в источнике); Источник, таблица на стороне 1С с данными для сопоставления; ИсточникПоле, имя поля таблицы (см. Источник ранее); СвязьПолеИсточник, имя поля таблицы (Источник) для сопоставления с данными из Внешнего источника. 
Для хранения внешних ключей (id из мастер данных) было принято решение использовать реквизиты справочников, т.е. во всех участвующих в синхронизации справочниках был добавлен реквизит <КодВнешний>. В примере вызова это видно

СтруктураКлючи = Новый Структура("OID", "КодВнешний");

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

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

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    22013    23    49    

39

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52027    104    165    

91

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25902    25    1    

27

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

05.10.2022    11350    13    8    

15

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1039    1    0    

3

Зарплата Внешние источники данных Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 организаций (далее Парус) в конфигурацию 1С:Зарплата и управление персоналом, ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

07.06.2021    13485    2    3    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. oberon355 15 22.01.12 15:51 Сейчас в теме
Статья классная. Но вопросы все равно есть. правда не к автору а так риторические: Если есть возможность подключиться к sql по com и поиметь всю мощь sql, то зачем 1с это все городило, и планирует ли развивать это дальше, что бы таки получить всю мощь sql?
2. xzorkiix 35 23.01.12 17:08 Сейчас в теме
(1) oberon355, запастись поп-корном и ждать разработчики платформы не дураки, разработчики типовых тоже не дураки. уверен, имеют место общие интересы тех и тех.

"подключиться к sql по com и поиметь всю мощь sql" требует определенных навыков. А с "Внешними источниками" работа с таблицами из различных СУБД ни чем не отличается от работы со Справочниками. Наверное, появиться запись. Так же не забываем и о том, что "Внешние источники" могут быть вынесены в пользовательский интерфейс, в том числе и на тонком клиенте (в том числе и Веб-клиенте) без "подключиться к sql по com и поиметь всю мощь sql", где это на стороне клиента в принципе не доступно.
3. Punker 16.02.12 09:43 Сейчас в теме
Хорошая статья, немного проясняет понятие о новом объекте. Было бы не плохо почитать полную документацию по данному объекту, если конечно таковая имеется. :)
4. xzorkiix 35 16.02.12 12:01 Сейчас в теме
"Хорошая статья" <> "немного проясняет"

>> "Было бы не плохо почитать полную документацию по данному объекту"

Приведенные ссылки в начале статьи, и немного текста в самой статье. Куда больше то? То в каком виде оно сейчас, многого там не напишешь.
5. pavel_pss 290 16.02.12 14:16 Сейчас в теме
Спасибо, статья очень помогла
6. Wladymyr 18.06.12 18:01 Сейчас в теме
очень много полозной информации, спасибо
Оставьте свое сообщение