Тип: Число. Элемент связи по типу. Номер элемента объекта, с которым поле связано по типу. Например, если поле связано со ссылкой на счет, то номер элемента будет обозначать номер вида субконто, из которого будет взят тип для отработки связи.
Полное описание, параметры и ограничения
СвязьПоТипуКомпоновкиДанных.ЭлементСвязи (DataCompositionTypeLink.LinkItem)
СвязьПоТипуКомпоновкиДанных (DataCompositionTypeLink)
ЭлементСвязи (LinkItem)
Доступен, начиная с версии 8.2.
Использование:
Только чтение.
Описание:
Тип: Число.
Элемент связи по типу.
Номер элемента объекта, с которым поле связано по типу. Например, если поле связано со ссылкой на счет, то номер элемента будет обозначать номер вида субконто, из которого будет взят тип для отработки связи.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Исследовать настройки ввода, не открывая чужую форму
Читаем правила ввода значения собственного поля: маску, формат, форму выбора и связи. Никакие формы справочников или внешние соединения не запускаются.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт и вызовите своей учебной командой.
Схема СКД строится программно, макет в конфигурации не нужен. Источник Local выполняет запрос из двух собственных константных строк, без справочников, документов и регистров.
Каждое упражнение запускайте отдельно. Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; общая сумма 800. Результат хранится в памяти, не записывается в файл или базу.
Для исследования поставьте точку останова перед последними проверками. ТаблицаЗначений и процессоры СКД здесь создаются и используются на сервере; напрямую в тонкий клиент таблица не возвращается.
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 250 КАК Цена,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Доступные = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
Редактор.Инициализировать(Доступные);
Редактор.ЗагрузитьНастройки(Настройки);
Рабочие = Редактор.Настройки;
ПолеКоличества = Рабочие.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Количество"));
Если ПолеКоличества = Неопределено Тогда
ВызватьИсключение "Нет собственного поля отбора Количество";
КонецЕсли;
Сообщить("Быстрый выбор: " + Строка(ПолеКоличества.БыстрыйВыбор));
Сообщить("Группы/элементы: " + Строка(ПолеКоличества.ВыборГруппИЭлементов));
Сообщить("Маска: " + ПолеКоличества.Маска);
Сообщить("Формат ввода: " + ПолеКоличества.ФорматРедактирования);
Сообщить("Форма выбора: " + ПолеКоличества.ФормаВыбора);
ПараметрыВыбора = ПолеКоличества.ПолучитьПараметрыВыбора();
СвязиВыбора = ПолеКоличества.ПолучитьСвязиПараметровВыбора();
Сообщить("Параметров выбора: " + Строка(ПараметрыВыбора.Количество()));
Сообщить("Связей выбора: " + Строка(СвязиВыбора.Количество()));
СвязьТипа = ПолеКоличества.СвязьПоТипу;
Сообщить("Поле связи по типу: " + Строка(СвязьТипа.Поле));
Сообщить("Номер элемента связи: " + Строка(СвязьТипа.ЭлементСвязи));Разбор по шагам
Маска и ФорматРедактирования — строки правил ввода; они не меняют фактическое число 3 в запросе.
ФормаВыбора — имя формы, а не открытая форма. В этом упражнении её не вызываем.
Методы возвращают отдельные коллекции параметров выбора и связей параметров выбора.
СвязьПоТипу описывает источник типа. Номер элемента связи не является номером строки результата.
Как проверить результат
Вывод содержит диагностические настройки собственного числового поля. Не ожидайте формы выбора справочника у числовой константы.
Исходный запрос и отбор остаются неизменны; процессор не запускается.
Ожидаемый результат
Правила редактирования отделены от данных и от действий интерфейса.
На что обратить внимание
Пустая строка имени формы — не ошибка открытия: форму здесь вообще не открывают.
БыстрыйВыбор управляет механизмом выбора, не ускоряет выполнение запроса.
Не подменяйте связь по типу произвольным числом без понимания связанного поля.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Отделить настройки ввода параметра от значения запроса
Задаём формат редактирования целого порога в собственной схеме. Исследуем видимость, выбор и связи без открытия интерфейсных форм.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт и вызовите своей учебной командой.
Схема СКД строится программно, макет в конфигурации не нужен. Источник Local выполняет запрос из двух собственных константных строк, без справочников, документов и регистров.
Каждое упражнение запускайте отдельно. Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; общая сумма 800. Результат хранится в памяти, не записывается в файл или базу.
Для исследования поставьте точку останова перед последними проверками. ТаблицаЗначений и процессоры СКД здесь создаются и используются на сервере; напрямую в тонкий клиент таблица не возвращается.
В собственной схеме добавлен числовой параметр МинимальноеКоличество и условие запроса Количество > &МинимальноеКоличество. Значение по умолчанию 1; это не отбор дерева настроек.
Тип порога имеет КвалификаторыЧисла(1, 0, Неотрицательный): целое число 0–9. Собственные значения 0, 1, 2 и 3 сохраняются без округления. Формат ЧДЦ=0 лишь оформляет ввод; допустимые значения задаёт описание типа.
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 250 КАК Цена,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Набор.Запрос = "ВЫБРАТЬ Товары.Наименование, Товары.Количество, Товары.Цена, Товары.Сумма
|ИЗ (
|ВЫБРАТЬ
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 250 КАК Цена,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50
|) КАК Товары
|ГДЕ Товары.Количество > &МинимальноеКоличество";
Порог = Схема.Параметры.Добавить();
Порог.Имя = "МинимальноеКоличество";
Порог.Заголовок = "Количество больше";
Порог.ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
Порог.Значение = 1;
Порог.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
Порог.ЗапрещатьНезаполненныеЗначения = Ложь;
Порог.ДоступенСписокЗначений = Ложь;
Порог.ОграничениеИспользования = Ложь;
Порог.ВключатьВДоступныеПоля = Ложь;
Порог.ПараметрыРедактирования.УстановитьЗначениеПараметра("ФорматРедактирования", "ЧДЦ=0");
Доступные = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
Редактор.Инициализировать(Доступные);
Редактор.ЗагрузитьНастройки(Настройки);
Значения = Редактор.Настройки.ПараметрыДанных;
ДоступныеПараметры = Значения.ДоступныеПараметры;
Если ДоступныеПараметры = Неопределено Тогда
ВызватьИсключение "Редактор не инициализировал параметры собственной схемы";
КонецЕсли;
ИмяПорога = Новый ПараметрКомпоновкиДанных("МинимальноеКоличество");
ОписаниеПорога = ДоступныеПараметры.НайтиПараметр(ИмяПорога);
Если ОписаниеПорога = Неопределено Тогда
ВызватьИсключение "Параметр МинимальноеКоличество недоступен";
КонецЕсли;
Сообщить("Видимость: " + Строка(ОписаниеПорога.Видимость));
Сообщить("Быстрый выбор: " + Строка(ОписаниеПорога.БыстрыйВыбор));
Сообщить("Группы/элементы: " + Строка(ОписаниеПорога.ВыборГруппИЭлементов));
Сообщить("Маска: " + ОписаниеПорога.Маска);
Сообщить("Форма: " + ОписаниеПорога.ФормаВыбора);
Сообщить(ОписаниеПорога.ФорматРедактирования = "ЧДЦ=0");
ПараметрыВыбора = ОписаниеПорога.ПолучитьПараметрыВыбора();
СвязиВыбора = ОписаниеПорога.ПолучитьСвязиПараметровВыбора();
Сообщить("Параметров выбора: " + Строка(ПараметрыВыбора.Количество()));
Сообщить("Связей выбора: " + Строка(СвязиВыбора.Количество()));
СвязьТипа = ОписаниеПорога.СвязьПоТипу;
Сообщить("Поле связи: " + Строка(СвязьТипа.Поле));
Сообщить("Элемент связи: " + Строка(СвязьТипа.ЭлементСвязи));
Сообщить(Порог.Значение = 1);Разбор по шагам
До инициализации редактора задаём параметру схемы ФорматРедактирования через его ПараметрыРедактирования.
ЧДЦ=0 — формат отображения дробной части, а не самостоятельная проверка диапазона.
Видимость описывает представление в редакторе; отсутствие видимости не означает отсутствие параметра в запросе.
Параметры и связи выбора читаются отдельно; ни HTTP, ни открытие формы, ни запись данных не выполняются.
Как проверить результат
Две проверки Истина: формат перенесён в описание, исходное значение схемы осталось 1.
Остальной вывод диагностический; число связей не нужно выдавать за число строк запроса.
Ожидаемый результат
Ввод целого порога настроен отдельно от его значения и использования.
На что обратить внимание
Формат не округляет данные запроса и не запрещает отрицательные числа сам по себе.
БыстрыйВыбор и Видимость — разные свойства; не трактуйте их как настройки производительности.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.