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

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 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

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

28500 руб.

15.11.2022    20631    20    49    

38

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13733    13    48    

25

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

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

48000 руб.

24.04.2017    51024    100    165    

89

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

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

84000 руб.

19.08.2020    25027    23    1    

25

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

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

60000 руб.

05.10.2022    10771    12    8    

14

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10200 руб.

24.06.2021    20691    57    53    

35
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
очень много полозной информации, спасибо
Оставьте свое сообщение