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

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", "КодВнешний");

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

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

См. также

Перенос данных из Парус 8 в ЗГУ 3

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

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

84000 руб.

19.08.2020    22460    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9217    9    8    

10

Перенос данных из Парус 7.хх в ЗГУ ред.3

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

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

24000 руб.

24.04.2017    48713    96    163    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81584    128    123    

147

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

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

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

24000 руб.

16.11.2018    30006    20    31    

21

Загрузка спецификаций в УНФ из системы Базис-мебельщик

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

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

7200 руб.

24.06.2021    19136    52    50    

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

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

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

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