1с при переносе объекта по ссылке не создавать новый объект а только переносить ссылку

Обновлено: 04.07.2024

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

Кроме них имеется еще ряд свойств смысл которых постараемся раскрыть.

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

Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден ** - флаг определяет продолжать поиск объекта в информационной базе приемнике, если поиск по уникальному идентификатору не привел к положительному результату.

Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их * - флаг определяет нужно ли выполнять изменение реквизитов объекта в информационной базе приемнике, если объект был успешно найден по уникальному идентификатору или по полям поиска.

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

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

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

Не запоминать выгруженные объекты - флаг определяет нужно ли системе при выгрузке КЭШировать последние выгруженные объекты. КЭШирование позволяет ускорить процесс выгрузки и загрузки данных.

Использовать быстрый поиск объекта при выгрузке и загрузке - флаг определяет использовать ли быстрый поиск объектов для выгрузки. Имеет смысл применять для небольших по количеству записей справочников (Количество записей не более 1000 элементов). Эффект достигается в том случае, если у многих объектов установлен флаг Не выгружать объекты свойств по ссылкам. При такой схеме выгрузки и загрузке данных скорость возрастает в несколько раз.

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

On-line обмен

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

1. По правилам выгрузки если объект уже выгружался, то выгружаем его как есть
2. По правилам выгрузки если объект не выгружался, то не выгружаем
3. При выгрузке по ссылке на объект выгружаем целиком

Например, если нужно переносить не всю номенклатуру из одной ИБ в другую, а только ту, на которую есть ссылки, то флажок подойдет.

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

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

Варианты настроек полей поиска - таблица с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика "Поля поиска". Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска - пустая строка.

На закладке "Дополнительно" можно редактировать наименование правила, вхождение его в определенную группу а так же описание правила.

Примечания:

* Не рекомендуется для использования при настройке on-line обмена
** Не используется в обмене на базе конфигурации "Библиотека стандартных подсистем".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Стадию подготовки правил обмена;
  2. Стадию обмена данными;
    1. Выгрузка;
    2. Преобразование(Конвертация) ;
    3. Запись в файл данных;
    4. Чтение данных из файла;
    5. Запись изменение объектов ИБ;

    Правила обмена представляют собой задание определенного соответствия или преобразования(конвертации) между объектами источника и объектами приемника.

    На приведенном примере видно, что для правил обмена (или Конвертации) "Два объекта в один" установлено соответствие объектов для справочников "Пользователи" и "ФизическиеЛица". То есть задано, что объекты справочника "Пользователи" из информационной базы источника нужно переносить в объекты справочника "Пользователи" информационной базы приемника.

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

    • Искать объект приемника по внутреннему идентификатору объекта источника - флаг определяющий поиск объектов в приемнике для версии платформы V8. Если этот флажок взведен, то поиск объекта для модификации в базе приемнике осуществляется по внутреннему (уникальному) идентификатору объекта. Этот идентификатор не виден пользователю а средствами программы поддерживается уникальность идентификаторов в информационной базе, так что никакие два объекта информационной базы не имеют одинаковых идентификаторов.
    • Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден - флаг определяет продолжать поиск объекта в информационной базе приемнике, если поиск по уникальному идентификатору не привел к положительному результату.
    • Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их - флаг определяет нужно ли выполнять изменение реквизитов объекта в информационной базе приемнике, если объект был успешно найден по уникальному идентификатору или по полям поиска.
    • Не создавать новый объект в приемнике, если он НЕ найден - флаг определяет нужно ли создавать новый объект в информационной базе - приемнике , если он не был найден по уникальному идентификатору или по полям поиска.
    • При переносе объекта по ссылке НЕ создавать новый объект, а только переносить ссылку - флаг определяет нужно ли создавать новый объект в информационной базе - приемнике , если он не был найден по уникальному идентификатору или по полям поиска в том случае если объект переносится по ссылке. Если объект не находится и у него установлен поиск по уникальному идентификатору то будет перенесена только ссылка на объект (без полей поиска - одна ссылка). Если же объект выгружается непосредственно (то есть выгружается не только ссылка на объект, но и все его реквизиты), то флаг ни на что не влияет.
    • Не выгружать объекты свойств источника по ссылкам - флаг определяет нужно ли выгружать все объекты на которые есть ссылки у объекта источника или достаточно выгрузить только информацию о ссылках на эти объекты. Допустим вы выгружаете справочник номенклатура. Если у соответствующего ПКО не взведен этот флажок, то кроме номенклатуры будут выгружены все объекты на которые она ссылается. Если же флаг взведен, то объекты на которые ссылается номенклатура выгружены не будут. Попробуйте поставить этот флажок и посмотреть результирующий файл выгрузки данных, а затем убрать его и сравнить результаты. Вам быстро станет понятен его смысл.
    • Не запоминать выгруженные объекты - флаг определяет нужно ли системе при выгрузке КЭШировать последние выгруженные объекты. КЭШирование позволяет ускорить процесс выгрузки и загрузки данных.
    • Использовать быстрый поиск объекта при выгрузке и загрузке - флаг определяет использовать ли быстрый поиск объектов для выгрузки. Имеет смысл применять для небольших по количеству записей справочников (Количество записей не более 1000 элементов). Эффект достигается в том случае, если у многих объектов установлен флаг Не выгружать объекты свойств по ссылкам. При такой схеме выгрузки и загрузке данных скорость возрастает в несколько раз.
    • Автоматически генерировать номер или код, если он не задан - флаг определяет нужно ли системе автоматически генерировать новый код или номер объекта, если перед записью он не заполнен.

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

    На приведенном примере видно, что для ПКО "Пользователи" установлено 3 соответствия между свойствами (или реквизитами) объектов. Указано, что реквизит "Наименование" справочника "Пользователи" информационной базы источника должен преобразовываться в реквизит "Наименование" справочника "Пользователи" информационной базы приемника.
    Когда соответствие между свойствами объектов задано, программе нужно указать критерии сопоставления объектов (то есть нужно указать, как по объекту источнику искать объект в приемнике) в двух информационных базах. Для такого сопоставления используется флажок "Поиск" у соответствующего ПКС. Если флажок взведен, то поиск соответствующего объекта будет выполняться по этому свойству. В приведенном примере, видно, что поиск объекта в информационной базе приемнике будет выполняться по реквизиту "Наименование". Если поиск установлен по нескольким реквизитам, то поиск будет осуществляться по ним всем одновременно (то есть условия накладываются по "И". В этом случае, правило сопоставления звучит следующим образом: Искать в информационной базе - приемнике объект у которого все реквизиты поиска совпадают с реквизитами поиска объекта источника).

    В правиле конвертации задаются реквизит из объекта источника и объекта приемника.

    • Поиск объекта при загрузке по данному свойству - флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по "И". В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ. Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).
    • Отключить обработку данного правила - флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.
    • Не замещать значение данного свойства у существующих объектов ИБ - флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.
    • Автоматически приводить значение к длине приемника - флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.

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

    Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

    Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

    Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

    Комментарии / обсуждение (42):

    Подскажите , когда мы используем параметры в правилах ПОД для обмена на основе БСП, то установку параметров можно выполнить только в коде обработчиков правил, или можно выполнить это где-нибудь в модулях подсистемы обмена данными?

    Доброго дня, Виталий!
    Вес файл должен быть 5,69 МБ.
    Попробуйте скачать файл повторно.
    Какой браузер Вы используете? Другие файлы у Вас скачались без проблем?

    Браузер Mozilla Firefox. Сейчас нормально скачал файл.

    Здравствуйте! Не пойму где в справке Конвертации найти информацию о том как подключать внешние обработки, алгоритмы, запросы.

    1С:Справка скоро станет нарицательным :)

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

    Всё хорошо, прекрасная маркиза.
    Дела идут, и жизнь легка.
    Ни одного печального сюрприза
    За исключеньем пустяка.

    Проясните, пожалуйста, ситуацию с параметрами конфигурации.

    Ситуация первая. Создадим параметр, укажем, что он и в диалоге будет, и при загрузке, и передается в приемник. Вручную проставим значение в обработке выгрузки.
    Далее, например в ПКО, после загрузки мы можем работать с этим значением.

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

    Ситуация третья. Если мы не хотим, чтоб параметр отображался (сняли флаги или вообще создали программно параметр), то передать его в приемник не выйдет вообще? Соответственно, придется писать какой-то свой код (в обработчиках конфигурации или ПКО), который будет создавать доп. узел, атрибут или еще что-то подобное, что на стороне приемника уже обрабатывать.
    Или же есть более простой вариант?

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

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

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

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