1с конвертация данных алгоритмы с параметрами

Обновлено: 04.07.2024

Несколько простых рекомендаций, которые могут ускорить выгрузку и загрузку данных.

Правила Выгрузки данных

1. Порядок правил выгрузки данных

Рекомендуется располагать правила выгрузки данных в таком порядке, что бы ссылки зависимых объектов были снизу вверх. то есть самыми первыми должны располагаться правила выгрузки данных, объекты которых ни на кого не ссылаются, затем должны идти правила выгрузки объектов, ссылающихся на первую группу и т.д.

Пример: Нужно выгрузить два справочника Пользователи и Физические лица. Справочник Пользователи имеет реквизит Физ. лицо - ссылка на справочник Физические лица. То есть справочник Пользователи ссылается на справочник Физические лица. Рекомендуемая последовательность правил выгрузки в этом случае: Физические лица, пользователи.

2. Выбирать данные для выгрузки одним запросом

Если в правиле конвертации нет переноса табличных частей и движений, а так же в событиях перед выгрузкой нет прямых обращений к выгружаемому объекту, рекомендуется в правиле выгрузки данных использовать режим "Выбирать данные для выгрузки одним запросом". Этот режим позволит одним запросом получить все выгружаемые данные определенного типа, а не строить отдельные запросы для выгрузки каждого объекта.

Правила Конвертации объектов

3. Использовать быстрый поиск при загрузке

Этот режим выгрузки и загрузки рекомендуется использовать для тех правил конвертации объектов, которые выгружают ссылочные типы общее количество которых сравнительно небольшое (примерно до 1000 элементов), на которые имеется множество ссылок в других объектов.

Пример: Справочник Пользователи. Практически все документы имеют ссылку на этот справочник и количество элементов справочника не превосходит 1000.

4. Не выгружать объекты свойств по ссылкам

Режим позволяет для правила конвертации объектов не выгружать все элементы на которые есть ссылки. Если режим установлен, то при выгрузке будет выгружен сам объект и информация для поиска всех его ссылок, но полная информация о зависимых элементах выгружена не будет. Эта оптимизация может в несколько раз ускорить выгрузку и загрузку данных.

5. Не запоминать выгруженные объекты

Для правил конвертации не ссылочных объектов (регистров) нужно установить флажок "Не запоминать выгруженные объекты", так как ссылаться на строки регистра нельзя, поэтому нет и смысла запоминать те строки регистров, которые были выгружены. Для ссылочных объектов этот флажок, как правило, нужен, что бы оптимизировать повторное обращение для выгрузки одного и того же объекта.

6. Не делать общих обработчиков событий для всех объектов

Не рекомендуется использовать общие обработчики событий перед выгрузкой и загрузкой данных для всех объектов. Обработки выгрузки и загрузки не знают что будет выполняться в этих обработчиках поэтому некоторые оптимизации (например, при загрузке запись только измененных объектов) действовать не будут. Если есть необходимость использовать одни и те же алгоритмы обработки данных при выгрузке и загрузке, то рекомендуется создать новый Алгоритм, а в событиях у нужных объектов его вызывать.

Обработка "Универсальный обмен данными XML"

7. Использовать оптимизированный формат для обмена данными

8. Загружать данные в режиме обмена

Позволяет отказать от излишних проверок на этапе загрузки данных

9. Записывать только измененные объекты

Позволяет производить запись только измененных объектов в информационную базу. Если объект изменен не был, то при загрузке из файла обмена он не будет перезаписан.

10. Оптимизированная запись объектов

Режим позволяет резко сократить количество обращений в информационной базе для записи объектов.

11. Записывать регистры наборами записей

Режим позволяет записывать изменения в регистрах наборами записей, а не менеджерами записей.

12. Обмен данными через COM

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

(8) - может у меня не та справка, или руки кривые - но там про использование параметров не говорится.
(7) - пойду иным путём. Допустим, я для некоторого алгоритма определил строку параметров. Потом в коде перед вызовом написал:

Чем это будет отличаться от простого:

(9) 2. отличаться будет тем, что в варианте 1 тебе надо описать параметр на вкладке Параметры", в варианте 2 нет
могу скинуть простую обработку, в которой в правилах используются параметры в алгоритмах.
(16) там в ПВД формируются параметры(список счетов) и из диалога (список организаций)
(20) >>Пользую конвертацию 2.1.6.2. Создал общий алгоритм - увидел, что помимо текста алгоритма можно заполнить реквизит "Параметры"
(19) так то с параметрами никаких вопросов вообще не должно быть.
(21) а-а-а. теперь увидел номер релиза. тогда начинаю понимать то, что написано в (11)
(18) Как я понял - в конвертации запилен отладочный механизм, который формирует для отладки внешние обработки по выгрузке/загрузке. Соответственно - в текст этих обработок переносятся и алгоритмы. Для корректного формирования списка их параметров - и служит этот реквизит алгоритма. Хотя, может я и не прав.

(18) Дословно из справки:
Отладка обработчиков
Данный режим вызывается из меню Отладка обработчиков и позволяет использовать все возможности конфигуратора для отладки и написания кода обработчиков событий. Содержит следующие действия:

"Сформировать модуль обработчиков выгрузки. " - позволяет сформировать текст модуля для внешней обработки для отладки выгрузки.
"Сформировать модуль обработчиков загрузки. " - позволяет сформировать текст модуля для внешней обработки для отладки загрузки.
"Загрузить модуль обработчиков. " - вызывает форму для загрузки модуля обработки, вносит в код обработчиков изменения, сделанные в режиме конфигуратора.
"Настройки…" - открывает настойки текущего пользователя и позволяет изменить режим выгрузки обработчиков.

1. Для передачи параметра (или параметров, количество передаваемого может быть произвольным)

в обработчике Правила Конвертации Объекта(ПКО) ПриВыгрузке пишем следующее

Количество таких блоков может быть произвольным, в зависимости от количества передаваемого.

««ИмяПараметрПКО» и «ЗначениеПараметрПКО» - имена обязательные, потому что по ним потом будет поиск в при загрузке.

«Клиент» и Строка(Источник.Клиент) - величины произвольные.

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

2. Для получения переданных параметров в базе-приемнике надо немного изменить обработку загрузки

Открываем в конфигурации модуль объекта обработки и ищем

Идем от начала в низ, пропускаем обработчики ПередЗагрузкой и находим вот такой кусок кода

Для начала перед циклом

поставим свою строчку :

Дальше в цикле нас интересует именно переменная ЭтоПараметрДляОбъекта. Поэтому быстренько проверив ее заполняем наше свежерожденное соответствие:

Вот собственно и все. Соответствие ПараметрыПКО доступно в обработчиках ПриЗагрузке и ПослеЗагрузки. А там - вспоминайте уже сами какими именами вы называли ваши параметры и доставайте их из него. Например :

В ПКС есть хитрая галка «Передавать данные в параметр». И казалось бы сам бог велел ее использовать. НО…
ЭТО ТОЛЬКО ДЛЯ ОБМЕНА V8 - V8 И ОБРАБОТКИ ВЫГРУЗКИ И ЗАГРУЗКИ НЕ НИЖЕ 2.0.18.1
Данный функционал позволяет передавать дополнительные параметры в информационную базу приемник из источника.

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

3. Передача глобальных параметров при конвертации 7.7 ==> 8 без правки штатных модулей

Кратко суть проблемы можно озвучить цитатой из документации:
«Передача параметра из источника в приемник доступна только при обмене между информационными базами на платформе 1С:Предприятие 8».

Ниже излагается способ передачи глобальных параметров при таком обмене без правки выгруженного из КД 2 модуля выгрузки и без правки самой КД 2. Итак:

в обработчике ПередВыгрузкойДанных пишем код:

После этого данные параметры будут абсолютно штатно загружены в стандартной обработке «Универсальный обмен данными в формате XML (2.1.5)».

Нюанс: чтобы иметь параметры на ранних стадиях загрузки (предшествующих загрузке параметров), например, в обработчиках ПередЗагрузкойДанных или ПередОбработкой в ПОД (правилах очистки данных), нужно каким-то образом устанавливать параметры на этапе выполнения ПередЗагрузкойДанных. Как это сделать, не меняя штатный механизм (т.е. без исправления модулей выгрузки/загрузки)? Можно, например, так: дописываем в ПередВыгрузкойДанных следующий код:

обработчики конвертации данных

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

Настройка отладки обработчиков правил обмена

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Шаг 1: Выбор режима отладки алгоритмов

В первую очередь выберите режим отладки алгоритмов:

  • Без отладки алгоритмов.
  • Вызывать алгоритмы как процедуры.
  • Подставлять код алгоритмов по месту вызова.

Шаг 2: Формирование модуля отладки

Шаг 3: Создание внешней обработки

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

Шаг 4: Подключение внешней обработки

После выполнения описанной настройки можно запускать выгрузку или загрузку в режиме отладки. При этом в распоряжении разработчика имеется весь функционал Конфигуратора по отладке кода внешней обработки.

Пример передачи параметров алгоритму

Алгоритм Перед выгрузкой данных

Перед обработкой

В теле алгоритма получаем переданные параметры:

Произвольный алгоритм

Заключение

Читайте также: