1с обмен данными загрузка истина

Обновлено: 04.07.2024

Обработка "Универсальный обмен данными в формате XML" предназначена для загрузки и выгрузки данных в файл из любой конфигурации, реализованной на платформе 1С:Предприятие 8.

Режим работы
При использовании управляемой формы обработка имеет два режим работы:
1. На клиенте. При использовании этого режима файлы правил и загружаемых данных передаются с клиента на сервер, а файл выгружаемых данных передается с сервера на клиент. Пути к этим файлам, находящимся на клиенте, необходимо указывать в диалоговом окне непосредственно перед выполнением действия.
2. На сервере. В этом режиме файлы не передаются на клиентн и пути к ним необходимо указывать на сервере.
Примечание: Файл внешней обработки и файлы протоколов обмена всегда должны находиться на сервере вне зависимости от режима работы.

Обработка имеет четыре закладки

Выгрузка данных
Для осуществления выгрузки данных необходимо указать имя файла, в который будет осуществляться выгрузка данных и выбрать файл правил обмена. Правила обмена для любых конфигураций могут быть настроены в специализированной конфигурации "Конвертация данных, редакция 2".

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

На закладке "Правила выгрузки данных" можно выбрать те типы объектов, которые должны выгружаться, настроить отборы для выборки объектов, либо указать узел обмена данными, для которого нужно выгружать данные.

На закладке "Параметры выгрузки" можно указать дополнительные параметры выгрузки данных.

На закладке "Комментарий" можно написать произвольный текст-комментарий, включаемый в файл обмена.

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

Есть возможность настроить загрузку данных в транзакции. Для этого необходимо взвести флажок "Использовать транзакции" и указать количество элементов в одной транзакции при загрузке.

"Загружать данные в режиме обмена (ОбменДанными.Загрузка = Истина)" – если флаг установлен, то загрузка объектов будет выполнятся с установленным признаком загрузки. Это означает, что при записи объектов в базу данных будут отключены все платформенные и прикладные проверки. Исключение составляют документы, которые записываются в режиме проведения или отмены проведения. Проведение и отмена проведения документа выполняется всегда без установки режима загрузки, т.е. проверки будут выполняться.

Дополнительные настройки
Закладка служит для детальной настройки выгрузки и загрузки данных.

"Количество обработанных объектов для обновления статуса" – параметр служит для определения количества обработанных элементов перед изменением строки состояние загрузки/выгрузки

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

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

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

"Изменения регистрации для узлов обмена после выгрузки" – поле определяет режим работы с регистрацией изменений данных после завершения выгрузки данных. Возможные значения:

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

"Имя файла, протокола обмена" – имя файла для вывода протокола процесса обмена данными.

"Протокол загрузки (для COM - соединения)" – имя файла для вывода протокола процесса обмена данными в базе-приемнике при обмене через COM-соединение. Важно: путь к файлу должен быть доступен с компьютера, на котором установлена база-приемник.

"Дописывать данные в протокол обмена" – если флаг установлен, то содержимое файла протокола обмена сохраняется, если файл протокола уже существует.

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

Удаление данных
Закладка нужна только для разработчиков правил обмена. Позволяет удалять из информационной базы произвольные объекты.

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

Включение режима отладки обработчиков выгрузки производится на закладке "Выгрузка данных" установкой флажка "Режим отладки обработчиков выгрузки". Соответственно, на закладке "Загрузка данных" включение режима отладки загрузки производится установкой флажка "Режим отладки обработчиков загрузки".

После установки режима отладки обработчиков станет доступной кнопка настройки отладки. По нажатию на эту кнопку откроется окно настройки.

Настройка отладки обработчиков выполняется в четыре шага:

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

На первом шаге необходимо определиться с режимом отладки алгоритмов:

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

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

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

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

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

На втором шаге необходимо произвести выгрузку обработчиков нажатием на кнопку "Сформировать модуль отладки выгрузки (загрузки)". Сформированные обработчики и алгоритмы будут выведены в отдельное окно для просмотра. Содержимое модуля отладки необходимо скопировать в буфер обмена нажатием на кнопку "Копировать в буфер обмена".

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

На этом шаге необходимо запустить конфигуратор и создать новую внешнюю обработку. В модуль обработки необходимо вставить содержимое буфера обмена (модуль отладки) и сохранить обработку под любым именем.

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

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

Примечание: Возможность отладки глобального обработчика конвертации "После загрузки правил обмена" не поддерживается.

  • Зачем нужны обмены данных и как их использовать?
  • Виды обменов между 1С.
  • Как произвести настройку обмена данными между базами 1С?

Ответы на эти вопросы Вы узнаете ниже.

Если Вас интересуют услуги по настройке обмена данными между 1С и не только, подробности на странице Услуги 1С программиста.

Зачем нужны обмены данных между 1С?

Причин для внедрения обменов, как правило, две:

Организация имеет филиальную сеть

Разделение по видам учета

Какие бывают механизмы обмена между базами 1С?

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

Обмены данных можно классифицировать по двум направлениям: используемые механизмы и используемый транспорт для обмена.

Механизмы обмена данными 1С

Как правило, при обмене используется два механизма:

Транспорт для обмена данными

Транспортом может выступать достаточно широкий спектр технологий. Рассмотрим основные, реализованные в универсальном механизме обмена 1С:

Как настроить обмен данными между базами 1С?

Первым делом необходимо создать узлы информационных баз:

узлы плана обмена

настройка обмена 1с

Если обмен настраивается через каталог, электронную почту или FTP, настройки необходимо настраивать в двух базах данных.

Если обмен происходит прямым подключением или через веб-сервис, достаточно настройки с одной стороны (важно не забыть указать правила загрузки в базу обмена).

Тут важно обратить внимание на следующие моменты:

Всё, настройка закончена. Теперь для запуска обмена достаточно лишь нажать на кнопку выполнения обмена.

Обмен данными 1С по расписанию в 1С

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

Для клиент-серверного варианта

настройка регламентного задания

Для файлового варианта

настрйока обмена файловый режим

Статьи для программиста по обмену данными в 1С

Использование признака ОбменДанными.Загрузка в обработчиках событий объекта

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Все действия в процедурах-обработчиков событий ПередЗаписью, ПриЗаписи, ПередУдалением должны выполняться после проверки на ОбменДанными.Загрузка :

Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

// код обработчика
// .
КонецПроцедуры

Это необходимо для того, чтобы никакая бизнес-логика объекта не выполнялась при записи объекта через механизм обмена данными, поскольку она уже была выполнена для объекта в том узле, где он был создан. В этом случае все данные загружаются в ИБ «как есть», без искажений (изменений), проверок или каких-либо других дополнительных действий, препятствующих загрузке данных.

Кроме механизма обмена данными есть и другие случаи, когда это должно быть так. В общем виде следует руководствоваться следующим подходом: механизмы, не рассчитанные на особенности конкретных конфигураций, должны иметь возможность загрузить данные при установленном флаге загрузки так, как будто текста обработчика нет вообще:

Например, требуется загрузить всю базу из XML «как есть». Для этого должно быть достаточно установить записываемым объектам ОбменДанными.Загрузка = Истина и все данные должны загрузиться без искажений, проверок и дополнительных действий, т. е. так же как и при пустом обработчике.

2. Исключение составляет механизм обмена данными, который в ходе загрузке данных в базу регистрирует эти данные к выгрузке на других узлах плана обмена.

В тех случаях, когда в конфигурации используется подсистема «Обмен данными» БСП, и возникла необходимость отключить ее, следует устанавливать дополнительное свойство ОтключитьМеханизмРегистрацииОбъектов :

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

3. Требования выше также распространяются на обработчики подписок на эти события.

4. При этом вызывающая сторона, выставляя записываемому объекту признак ОбменДанными.Загрузка в Истина , берет на себя ответственность за целостность данных этого объекта.

Например, при записи объекта через механизм обмена данными в РИБ это обеспечивается корректным состоянием объекта в том узле, где он был создан (или изменен).

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

Особенности использования транзакций при обмене данными

В процессе организации обмена данными следует внимательно подходить к использованию транзакций. С одной стороны, выполнение загрузки (выгрузки) данных в одной транзакции обеспечивает целостность и согласованность данных, однако с другой стороны, транзакционные блокировки снижают параллельность работы пользователей. Поэтому в каждом конкретном случае необходимо искать компромисс между скоростью и параллельностью работы пользователей, и целостностью данных.

Транзакционные блокировки

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

Гранулярность блокировок

В клиент-серверном варианте для объектов данных (элементы справочников, документы, . ) выполняется блокировка уровня записи, а для необъектных данных (наборы записей регистров) выполняется так называемая блокировка диапазона ключей, что означает, что могут быть заблокированы и некоторые соседние данные.

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

Объем обрабатываемых данных

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

В клиент-серверном варианте такой опасности нет, но все-таки записывать большие объемы данных в одной транзакции не рекомендуется (из-за проблем параллельности, блокировки тоже требуют ресурса сервера баз данных и т. п.).

Исходя из перечисленных выше причин, можно дать следующие рекомендации:

Если обмен гарантированно производится небольшими порциями данных (например, обмен производится очень часто), то имеет смысл выполнять загрузку (выгрузку) данных в одной транзакции.

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

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

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

Например, в алгоритме загрузки данных можно использовать следующий фрагмент кода, позволяющий разбивать процесс загрузки на несколько транзакций по 1000 элементов данных (в данном случае величина 1000 – условная):

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


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

В целом план обмена похож на справочник, он обладает почти теми же самыми свойствами и методами. Поэтому в данной статье будет рассмотрена только та функциональность, которая касается обмена данными.

В пользовательском режиме создаются элементы плана обмена, которые называются узлами обмена:

План обмена

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

Для плана обмена нельзя установить нулевую длину кода или наименования, так как узлы идентифицируются по коду (в файл обмена записывается код узла).

Состав плана обмена

При создании нового плана обмена нужно определить состав данных, которыми будут обмениваться системы. Например, в текущей конфигурации может быть 20 справочников, 10 документов, 5 регистров сведений, но в другую базу нужно выгружать только 5 справочников и 2 документа.

Для настройки состава плана обмена на закладке Основные нужно нажать на кнопку Состав:

Состав плана обмена

Будет открыто окно, в котором можно флажками отметить те объекты, которыми можно будет обмениваться с помощью данного плана обмена:

Состав плана обмена

В состав плана обмена можно включить следующие объекты:

  • Константы
  • Справочники, документы, планы видов характеристик, планы счетов, планы видов расчета, бизнес-процессы, задачи
  • Все наборы записей: регистры сведений, регистры накопления, регистры бухгалтерии, регистры расчета, перерасчеты, последовательности.

Также у данных видов объектов метаданных есть закладка Обмен данными, где можно отметить те планы обмена, в состав которых будет входить данный объект метаданных:

Обмен данными

При сохранении конфигурации базы данных для каждого из отмеченных объектов будет создана таблица с тремя колонками:

Состав данных таблиц можно посмотреть с помощью конструктора запросов. Для этого нужно нажать на кнопку Отображать таблицы изменений:

Отображать таблицы изменений

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

Служба регистрации изменений

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

Алгоритм работы данной службы:

Для того чтобы изменения объектов автоматически регистрировались в таблицах изменений нужно при настройке состава плана обмена разрешить автоматическую регистрацию (по умолчанию она разрешена):

Авторегистрация

Рассмотрим данный алгоритм на примере.

В базе-источнике есть 3 узла плана обмена, один из которых является текущей базой (Основная база):

Узлы плана обмена

В состав плана обмена включен только один справочник Номенклатура и для него разрешена автоматическая регистрация:

автоматическая регистрация

На данный момент таблица регистрации изменений пустая:

Создадим новую номенклатуру Стул. В результате в таблицу будет добавлено 2 новые строки, по одной для каждого узла плана обмена (кроме узла текущей базы):

Создадим еще одну номенклатуру Шкаф:

В таблицу было добавлено 2 строки для шкафа.

Создадим еще одну номенклатуру Стол:

После этого была выполнена выгрузка сразу в оба узла:

Затем у стула был изменен артикул и он был перезаписан:

Из данного примера можно сделать следующие выводы:

  • Объект будет выгружаться в файл обмена до тех пор, пока из приемника не придет ответ (квитанция) о том, что данный объект был успешно загружен.
  • Если после выгрузки объекта он был изменен, то после загрузки квитанции изменения не будут потеряны.
  • Для каждого объекта можно узнать выгружался он или нет, но только до загрузки квитанции. После загрузки квитанции история выгрузки не сохраняется.

В данном примере был рассмотрен пример двухстороннего обмена. При этом из второй базы может выгружаться только квитанция, а может квитанция + данные.

Основной отбор регистра сведений

У регистра сведений в свойствах измерения есть флаг Основной отбор:

Основной отбор

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

Основной отбор по периоду

По умолчанию данные флаги установлены.

С помощью них определяется минимальная гранула для регистрации на узлах плана обмена.

Если оставить как есть, то при изменении одной записи регистра сведений будет регистрироваться только она.

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

Лучше всего объяснить на примере. Пусть есть регистр сведений со следующей структурой:

регистр сведений

И в нем содержатся следующие данные:

регистр сведений

Если все измерения входят в основной отбор, то при изменении оптовой цены для шкафа в таблицу регистрации попадет только одна запись, она же будет выгружена в файл обмена:

Если снять флаг Основной отбор у измерения Вид цены, то из таблицы регистрации будет удалена соответствующая колонка. В результате при изменении оптовой цены для шкафа в таблицу регистрации будет записана только номенклатура и период:

Тогда при выгрузке в файл, из регистра будут отобраны все записи, где Номенклатура = Шкаф и Период = 05.10.21, то есть сразу 2 записи: с оптовой и розничной ценой.

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

Удаление объекта

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

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

ЭтотУзел

Один из узлов плана обмена должен указывать на текущую базу. В списке узлов он выделяется специальной пиктограммой:


Чтобы получить текущий узел можно воспользоваться методом ЭтотУзел. Данный метод вернет ссылку на узел плана обмена:

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