Элемент проекта вида «ПланОбмена»
Элемент проекта ПланОбмена описывает обмен изменениями данных между приложением «1С:Шины» и другими участниками обмена: другими приложениями «1С:Шины», информационными базами «1С:Предприятия» или иными внешними информационными системами. План обмена задает состав данных, в которых регистрируются изменения, и участников обмена — узлы плана обмена. Каждый узел соответствует одному участнику обмена данными.
Чтобы создать план обмена, добавьте в проект элемент вида ПланОбмена. В одном проекте можно определить произвольное количество планов обмена.
Узлы плана обмена добавляются администратором в запущенном приложении аналогично добавлению элементов других сущностей (например, справочников). Состав плана обмена распространяется на все его узлы: если с разными узлами нужно обмениваться разным составом информации, создаются несколько планов обмена, каждый со своим составом.
Таблицы регистрации изменений объектов
Для сущностей, включенных в план обмена, создаются таблицы регистрации изменений, которые содержат записи об изменении объекта сущности: {ИмяСущности}.Изменение.
Регистрация изменений может выполняться для следующих элементов проекта:
Для каждого из приведенных элементов проекта создается своя таблица регистрации изменений:
Поиск узлов плана обмена при вводе по строке
Во время работы приложения, чтобы выбрать один из узлов плана обмена, пользователь может просто начать вводить в поле ввода известный ему фрагмент названия, кода или другого реквизита плана обмена. «1С:Шина» автоматически подберет ему подходящие узлы.
Вы можете задать список тех реквизитов плана обмена, в которых «Шина» будет искать текст, введенный пользователем. Для этого в проекте используйте свойство плана обмена ВводПоСтроке. В этом свойстве находится массив, содержащий имена реквизитов, в которых будет осуществляться поиск. По умолчанию в это свойство устанавливается реквизит, являющийся представлением узла плана обмена (по умолчанию в качестве представления узла используется стандартный реквизит Наименование).
Вы можете переопределить стандартный алгоритм поиска, существующий в «Шине». Для этого обрабатывайте событие {ИмяПланаОбмена}.ПолучитьЗначенияВыбора() (подробнее).
Представление узла
Элементами плана обмена являются узлы. Представление — это строка, которая обозначает тот или иной узел во время работы приложения. Пока пользователь работает с планом обмена, представленным в виде таблицы, он видит все колонки этой таблицы и может отличить один узел от другого. Но в тех случаях, когда, например, нужно обозначить конкретный узел обмена в отчете, необходима строка, по которой пользователь сможет однозначно понять, что это за элемент. Такая строка и называется представлением.
Чтобы задать представление узлов плана обмена, в проекте используйте свойство Представление. В этом свойстве можно указать имя любого из реквизитов плана обмена, имеющего тип Строка. В том числе можно использовать те реквизиты, в которых содержатся строки неограниченной длины.
Также этот реквизит будет стандартно использоваться «1С:Шиной» в тех случаях, когда нужно отсортировать список элементов плана обмена или представить подходящие элементы при вводе по строке.
Если в проекте свойство Представление не задано, то в качестве представления узла плана обмена используется стандартный реквизит Наименование. Если же он отсутствует, то в качестве представления узлов плана обмена используется строка "<>".
Если данные узла плана обмена отсутствуют в базе данных («битая ссылка») или они недоступны из-за ограничений прав доступа, то в качестве представления «Шина» будет использовать следующие строки:
- в обычном режиме: <Объект не найден>;
- в режиме разработки: <Объект не найден: Test::ПланОбмена.Склады>.
Индексы базы данных для таблиц плана обмена
Чтобы запросы к данным выполнялись быстро, «1С:Шина» стандартно создает в СУБД для таблицы, хранящей данные плана обмена, индексы:
- по полю Ссылка — создается всегда;
- по полю Наименование — если у плана обмена задан реквизит Наименование.
Вы также можете описать в проекте дополнительные индексы, необходимые вам для конкретных операций поиска и чтения элементов плана обмена в вашем приложении.
Для этого используйте свойство Индексы. В этом свойстве вы можете перечислить наборы полей. По каждому такому набору «Шина» создает некластерный индекс в базе данных. Порядок следования полей в составном индексе определяется порядком следования реквизитов в наборе.
Для каждого набора должно быть указано:
- Имя. Должно быть уникальным в рамках плана обмена. Имя не передается в базу данных.
- Перечисление реквизитов планов обмена. Правила описания:
- перечисляются через запятую;
- не дублируются в рамках набора;
- могут быть указаны как с полным, так и с кратким именем. Разрешаются имена с учетом общих правил (с учетом пространств имен, подсистем и т. д.);
- стандартные реквизиты планов обмена могут быть указаны по их русскому или английскому наименованию.
Дополнительные поля
Дополнительные поля — поля индекса, которые часто включаются в результирующую строку запроса, но при этом не используются для упорядочивания и отбора значений. Эти поля не влияют на структуру индекса и не снижают его производительность при их добавлении, что помогает оптимизировать и ускорить работу запросов.
Чтобы задать набор дополнительных полей, используйте свойство индекса ДополнительныеПоля.
Добавляемые реквизиты должны удовлетворять следующим требованиям:
- не повторяться в рамках набора,
- не входить в основные поля индекса,
- удовлетворять правилам, накладываемым на основные поля индекса.
Пример индекса с дополнительными полями:
Индексы:
-
Имя: ПримерИндекса
ДополнительныеПоля:
- ДополнительноеПоле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С:Шиной». Кроме того, вы можете использовать их самостоятельно.