1. Цель
Изначально была поставлена следующая цель:
В результате выполненных доработок, пользователь (бизнес аналитик - специалист по платформе Power BI) должен иметь возможность самостоятельно добавить узел плана обмена и с помощью текста запроса определить состав выгружаемых данных. Должна быть возможность ручной регистрации всех объектов для первичной выгрузки. Последующая выгрузка должна выполняться только по измененным данным регламентным заданием.
2. Порядок работы с подсистемой в пользовательском режиме
1. Находясь в списке плана обмена, кнопкой "Создать", добавляем новый узел.
2. На закладке "Параметры" определяем параметры подключения к внешней базе данных SQL.
Указываем следующие параметры: Server, Database, Uid, Pwd.
Если на сервере SQL настроен доменный доступ для пользователя, под которым выполняется служба 1С, то параметры Uid и Pwd указывать не нужно.
3. На закладке "Текст запроса" нажимаем кнопку "Конструктор" и определяем выгружаемые данные.
После нажатия на кнопку "Ок" в основном окне должен отобразиться текст запроса.
4. Переключаемся на закладку "Реквизиты". Здесь автоматически должны определиться поля из запроса с типами и первичным ключом для SQL.
Проверяем правильность определения полей первичного ключа:
- Для справочников, документов, задач, бизнес-процессов - это всегда Ссылка.
- Для регистров - первичный ключ, как правило, должен включать все измерения регистра + период (если регистр периодичный)
- Для сложных запросов, собранных из нескольких таблиц, поля первичного ключа необходимо определить вручную, согласно требуемой логике.
5. Переключаемся на закладку "Структура таблицы SQL".
Указываем имя таблицы (предварительно, имя таблицы и наименование узла определяются автоматически из запроса).
Нажимаем кнопку "Создать таблицу SQL".
В этот момент во внешней базе SQL будет создана необходимая таблица с требуемыми полями и в разделе Действия отобразится: "Действия не требуются".
6. Переключаемся на закладку "Регистрируемые объекты".
Нажимаем кнопку "Зарегистрировать все объекты на узле". Это необходимо, чтобы выполнилась первичная выгрузка всех объектов. После чего, выгружаться будут только измененные объекты.
Примечание: кнопка "Зарегистрировать все объекты на узле" на картинке не видна - будет отображена после записи узла.
7. Переключаемся на закладку "Регламент".
Проверяем настройку расписания запуска регламентного задания.
8. Переводим переключатель в положение "Включен" и нажимаем "Записать".
При этом, на закладке "Регламент", можно проконтролировать успешность запуска и завершения регламентного задания и потоков.
Примечание: Регистрация измененных объектов на узле выполняется даже с переключателем в положении Отключен.
Для отключения регистрации объектов на узле, необходимо пометить узел на удаление и выполнить завершение всех сеансов (параметры регистрации кэшируются на время сеанса).
3. Замечания по работе подсистемы
- Реальный текст запроса с соединяемыми таблицами изменений, который будет исполняться в регламентном задании, можно увидеть по кнопке Ещё -> Текст запроса изменений.
- Все ссылки выгружаются в SQL как уникальные идентификаторы.
- Перечисления выгружаются как синонимы.
- При изменении текста запроса, на закладке "Структура таблицы SQL" будет предложено "Обновить структуру таблицы SQL".
- На закладке "Регламент" можно настроить количество потоков, в которых будет асинхронно выгружаться данные.
- При указании Количество потоков = 0, будет запущена однопоточная выгрузка в классическом режиме с использованием конструкции ПланыОбмена.ВыбратьИзменения().
- При указании Количество потоков >= 1, будет запущена выгрузка в одном или более потоках по следующей схеме: порция объектов, соответствующая настройке "Количество выгружаемых объектов в потоке" будет перерегистрирована на вспомогательные узлы(узел), подчиненный основному узлу. А после выполнения фонового задания, все объекты на соответствующем вспомогательном узле очищаются. В этом случае номера сообщений не используются, при перерегистрации объектов блокировка устанавливается построчно в отличии от метода ВыбратьИзменения(), при выполнении которого устанавливается блокировка на всю таблицу. Соответственно, данный режим подходит для высоконагруженных систем.
- В большинстве случаев достаточно указывать Количество потоков = 1 (рекомендуется).
- При указании в тексте запроса секции ИТОГИ ПО, будет поддерживаться целостность синхронизируемых данных в разрезе соответствующих группировок. Это применимо при выгрузке табличных частей и пр.: в качестве группируемого поля в этом случае необходимо указать "Ссылка", а первичный ключ расширить на поле Номер строки и прочие предполагаемые измерения таблицы.
4. Опыт внедрения
Данная подсистема была внедрена в большинстве баз нашего холдинга. Успешно зарекомендовала себя в том числе на высоконагруженных базах. Существенно снизилось количество запросов в тех. поддержку от пользователей, связанных с организацией выгрузки данных во внешнюю базу SQL для платформы Power BI.
5. Инструкция по внедрению
- Необходимо выполнить сравнение и объединение с вложенным файлом.cf
- При объединении снять галочку со справочника ДополнительныеОтчетыИОбработки и регламентного задания ЗапускДополнительныхОбработок.
- Общий модуль ДополнительныеОтчетыИОбработки обновить лучше вручную, необходимо перенести соответствующие четыре строки в начале процедуры ВыполнитьОбработкуПоРегламентномуЗаданию().
- Для плана обмена "PowerBI" необходимо добавить в состав все следующие объекты: справочники, документы, задачи, бизнес-процессы, регистры сведений, регистры накопления, регистры бухгалтерии с отключенной авторегистрацией.
- Для пользователей, допущенных к настройке узлов данного плана обмена, проставить роль "PowerBI".