Перейти к основному содержимому

Элемент проекта вида «ПланОбмена»

Элемент проекта ПланОбмена описывает обмен изменениями данных между приложением «1С:Шины» и другими участниками обмена: другими приложениями «1С:Шины», информационными базами «1С:Предприятия» или иными внешними информационными системами. План обмена задает состав данных, в которых регистрируются изменения, и участников обмена — узлы плана обмена. Каждый узел соответствует одному участнику обмена данными.

Чтобы создать план обмена, добавьте в проект элемент вида ПланОбмена. В одном проекте можно определить произвольное количество планов обмена.

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

Таблицы регистрации изменений объектов​

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

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

Для каждого из приведенных элементов проекта создается своя таблица регистрации изменений:

Поиск узлов плана обмена при вводе по строке​

Во время работы приложения, чтобы выбрать один из узлов плана обмена, пользователь может просто начать вводить в поле ввода известный ему фрагмент названия, кода или другого реквизита плана обмена. «1С:Шина» автоматически подберет ему подходящие узлы.

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

Вы можете переопределить стандартный алгоритм поиска, существующий в «Шине». Для этого обрабатывайте событие {ИмяПланаОбмена}.ПолучитьЗначенияВыбора() (подробнее).

Представление узла​

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

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

Также этот реквизит будет стандартно использоваться «1С:Шиной» в тех случаях, когда нужно отсортировать список элементов плана обмена или представить подходящие элементы при вводе по строке.

Если в проекте свойство Представление не задано, то в качестве представления узла плана обмена используется стандартный реквизит Наименование. Если же он отсутствует, то в качестве представления узлов плана обмена используется строка "<>".

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

  • в обычном режиме: <Объект не найден>;
  • в режиме разработки: <Объект не найден: Test::ПланОбмена.Склады>.

Индексы базы данных для таблиц плана обмена​

Чтобы запросы к данным выполнялись быстро, «1С:Шина» стандартно создает в СУБД для таблицы, хранящей данные плана обмена, индексы:

  • по полю Ссылка — создается всегда;
  • по полю Наименование — если у плана обмена задан реквизит Наименование.

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

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

Для каждого набора должно быть указано:

  • Имя. Должно быть уникальным в рамках плана обмена. Имя не передается в базу данных.
  • Перечисление реквизитов планов обмена. Правила описания:
    • перечисляются через запятую;
    • не дублируются в рамках набора;
    • могут быть указаны как с полным, так и с кратким именем. Разрешаются имена с учетом общих правил (с учетом пространств имен, подсистем и т. д.);
    • стандартные реквизиты планов обмена могут быть указаны по их русскому или английскому наименованию.

Дополнительные поля​

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

Чтобы задать набор дополнительных полей, используйте свойство индекса ДополнительныеПоля.

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

  • не повторяться в рамках набора,
  • не входить в основные поля индекса,
  • удовлетворять правилам, накладываемым на основные поля индекса.

Пример индекса с дополнительными полями:

YAML
Индексы:
-
Имя: ПримерИндекса
ДополнительныеПоля:
- ДополнительноеПоле1
- ДополнительноеПоле2
Поля:
- ОсновноеПоле

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

ВЫБРАТЬ
ОсновноеПоле КАК Основное,
ДополнительноеПоле1 КАК Дополнительное1,
ДополнительноеПоле2 КАК Дополнительное2
ИЗ
ИмяТаблицы
ГДЕ
ОсновноеПоле == %ПараметрЗапроса

Поддержка дополнительных полей в различных СУБД​

Дополнительные поля не поддерживаются в файловой СУБД, PostgreSQL 10 и SQLite. Для них дополнительные поля в уникальных индексах игнорируются, а в неуникальных становятся обычными полями индекса.

Ограничения​

На создаваемые индексы накладываются следующие ограничения:

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

Дополнительные пространства управляемых блокировок​

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

Для каждого дополнительного пространства укажите имя, идентификатор и список реквизитов, которые входят в это пространство. Можно использовать все реквизиты, кроме стандартного реквизита Ссылка. Например:

ВидЭлемента: ПланОбмена
Ид: eb3326a9-a5c7-4e2b-9a69-c9d72eafc1fa
Имя: Склады
ОбластьВидимости: ВПроекте
Реквизиты:
-
Ид: b9a246ca-2f9b-4fc9-ac6d-1ea0239c0f87
Имя: Организация
Тип: Организации.Ссылка?
-
Ид: ffee00cb-9b62-47c5-a1fe-bad34182fd21
Имя: Контрагент
Тип: Контрагенты.Ссылка?
Состав:
-
Элемент: РасходнаяНакладная
ПространстваБлокировок:
-
Имя: ОрганизацияКонтрагент
Ид: 19078715-47ca-400d-b864-356fb9b3c1d4
Поля: [Организация, Контрагент]

При записи узла плана обмена «1С:Шина» устанавливает блокировки:

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

Дополнительные пространства управляемых блокировок автоматически используются «1С:Шиной». Кроме того, вы можете использовать их самостоятельно.

См. также​