kancboom.ru

1с режим загрузки данных истина. Свойство обменданными. Правила Конвертации объектов

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

Краткий обзор

Если в синтакс-помощнике открыть ветку Прикладные объекты , можно обнаружить, что у многих из них: СправочникОбъект , ДокументОбъект , для регистров НаборЗаписей и т.д. есть свойство ОбменДанными .

Тип у этого объекта: ПараметрыОбменаДанным , который в свою очередь содержит три свойства

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

    Свойство ОбменДанными.Загрузка

    Если данное свойство установлено в значение Истина , это указывает на то, что производится запись объекта, полученного через механизмы обмена данными. При этом подразумевается, что объект содержит корректные данные и платформа 1С производит минимальное количество проверок. Но очень часто при записи объекта делается множество программных проверок в предопределенных процедурах модуля объекта. И этот код выполняется в том числе и при записи объекта, полученного из файла обмена. И в этом случае могут возникать ошибки, например, из-за того, что проверяемые данные просто еще не записаны.

    Поэтому очень часто в модулях объектов можно встретить вот такой код:

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

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

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

    НовыйТовар = Справочники. Товары. СоздатьЭлемент() ; НовыйТовар. Наименование = "Тестирование записи" ; НовыйТовар. ОбменДанными Истина ; НовыйТовар. Записать() ;

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

    Что такое ОбменДанными.Загрузка = Истина, как использовать ОбменДанными.Загрузка.

    ОбменДанными.Загрузка — атрибут любого объекта в системе 1С предприятие. Он позволяет обозначить при записи объекта, что необходимо отключить любые проверки (в т.ч проверки на уровне платформы 1С). Сделано это было для того, чтобы избежать конфликтов при обмене данных.

    Если Вы разрабатываете свою конфигурацию, во всех проверках правильности данных (например, процедура ПередЗаписью) необходимо первой строкой добавить такую строку:

    Получите 267 видеоуроков по 1С бесплатно:

    Это является хорошим тоном среди разработчиков 1С.

    Контроль записи в стандартных обработках 1С

    Если Вы когда-либо пользовались стандартными (например, Поиск и замена значений, Групповая обработка данных, Универсальный обмен данных и т.п), Вы наверное замечали настройку, которая называется обычно «Контроль записи». Эта настройка как раз отвечает за включение/выключение атрибута «ОбменДанными.Загрузка».

    Как установить режим ОбменДанными Загрузка

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

    Учебник по 1С Конвертации данных (редакция 2) Оптимизация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Для обмена V8-V8, если информационные базы источника и приемника находятся внутри одной локальной сети, рекомендуется использовать обмен через COM - соединение. Нужно только что бы в конфигурации приемника присутствовала обработка Универсальный обмена данными.

    С уважением, Владимир Милькин (преподаватель и разработчик

    Загрузка...