Тип: ФиксированнаяСтруктура. Содержит параметры, которые будут переданы в форму создания нового элемента. Структура заполняется из параметров формы списка ДополнительныеПараметры после вызова обработчика ПриСозданииНаСервере.
Полное описание, параметры и ограничения
Расширение таблицы формы для динамического списка.ДополнительныеПараметрыСоздания (Form table extension for dynamic list.AdditionalCreateParameters)
Расширение таблицы формы для динамического списка (Form table extension for dynamic list)
ДополнительныеПараметрыСоздания (AdditionalCreateParameters)
Доступен, начиная с версии 8.3.4.
Использование:
Чтение и запись.
Описание:
Тип: ФиксированнаяСтруктура.
Содержит параметры, которые будут переданы в форму создания нового элемента.
Структура заполняется из параметров формы списка ДополнительныеПараметры после вызова обработчика ПриСозданииНаСервере.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.4.
Методическая информация
Практические примеры
Настроить собственное дерево, реальный быстрый отбор и период с передачей параметров создания
Отдельный свой иерархический каталог: группа и две позиции разных месяцев. Данные подготовлены вручную до запрета записи; учебный модуль читает, меняет показ и настройки, но не записывает каталог.
Где и как запускать
Полный модуль своей Справочник.УрокиСписка85.Форма.ДеревоСписка85; отдельная ownCF, desktop managed client/server.
Подготовка
Создайте отдельную пустую CF УчебноеДеревоСписка85 на 8.5.1.1343, управляемое приложение. Единственный бизнес-объект — иерархический справочник УрокиСписка85 с группами и элементами, код Строка 9 без авто-нумерации, наименование Строка 100.
Добавьте реквизиты ДатаУрока Дата, Количество Число 9,0, МеткаСтенда Строка 30. Для всех трех Использование = Для групп и элементов; не создавайте других реквизитов или бизнес-объектов.
Только в своем новом стенде, ДО установки модуля запрета записи, вручную создайте группу код 85Г, наименование Мои уроки85, родитель пустой, МеткаСтенда мой-список85. Затем в ней позицию 85А, Сентябрьский урок, ДатаУрока 15.09.2026 00:00:00, Количество 0, ту же метку; позицию 85Б, Октябрьский урок, 02.10.2026 00:00:00, Количество 5, ту же метку. Это явные ручные собственные fixture-записи, не внесенные инструментами.
После ручной подготовки вставьте supporting NO_WRITE в модуль объекта справочника: теперь любая запись, включая четвертую строку и группу, запрещена. Проверьте вручную: всего ровно три записи, нет пометок удаления.
Мастером создайте основную управляемую форму списка ДеревоСписка85 с реквизитом Список85 ДинамическийСписок и таблицей Дерево85. Отображение таблицы = Дерево; основной источник Справочник.УрокиСписка85. Колонки Наименование, Код, ДатаУрока, Количество настоящие, видимые. В стандартной панели сохраните команду Создать.
В настройках самого динамического списка задайте отбор Количество >= 0, включите его использование и включение в пользовательские настройки, РежимОтображения = БыстрыйДоступ, представление Минимальное учебное количество. Идентификатор пользовательской настройки непустой. Это настоящий элемент пользовательских настроек, не строка с названием.
На форму добавьте пустую обычную группу БыстрыеНастройки85. Код создает ее элементы native методом из реальной пользовательской настройки. Добавьте Состояние85 Строка 500 только для просмотра, команды и кнопки Сентябрь85/Октябрь85. Таблица не ТолькоПросмотр, иначе штатный Создать может быть недоступен; данные защищает отдельный модуль объекта.
В основной модуль списка вставьте весь код; свяжите ПриСозданииНаСервере, ПриОткрытии и две команды. Не добавляйте другой обработчик заполнения списка или сохранение пользовательских настроек.
Мастером создайте основную форму элемента и группы. В обе добавьте ПолученнаяМетка85 Строка 30 только для просмотра; вставьте supporting NEW_FORM, свяжите ПриСозданииНаСервере и ПередЗаписьюНаСервере. Native создание передает именно ПризнакУрока85 из ДополнительныеПараметрыСоздания.
Откройте только свою основную форму списка в desktop managed клиенте. Раскройте собственную группу. Каталог, публикации, UI и записи инструментами не запускались; перечисленные ручные prerequisites выполняются отдельно самим учеником.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойПустойСтенд();
ПроверитьСвоиТриЗаписи85();
АвтоматическоеСохранениеДанныхВНастройках = Ложь;
Список85.ПроизвольныйЗапрос = Истина;
Список85.ОсновнаяТаблица = "Справочник.УрокиСписка85";
Список85.ДинамическоеСчитываниеДанных = Истина;
Список85.ВидКлюча = ВидКлючаДинамическогоСписка.Авто;
Список85.АвтоЗаполнениеДоступныхПолей = Истина;
Список85.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
Список85.ТекстЗапроса = "ВЫБРАТЬ
| З.Ссылка КАК Ссылка,
| З.Код КАК Код,
| З.Наименование КАК Наименование,
| З.ЭтоГруппа КАК ЭтоГруппа,
| З.Родитель КАК Родитель,
| З.ДатаУрока КАК ДатаУрока,
| З.Количество КАК Количество
|ИЗ Справочник.УрокиСписка85 КАК З
|ГДЕ З.МеткаСтенда = &Метка85
| И (З.ЭтоГруппа ИЛИ (З.ДатаУрока >= &Начало85 И З.ДатаУрока <= &Конец85))";
Список85.Параметры.УстановитьЗначениеПараметра("Метка85", "мой-список85");
Таблица = Элементы.Дерево85;
Таблица.АвтоОбновление = Ложь;
Таблица.ПериодАвтоОбновления = 60;
Таблица.ВосстанавливатьТекущуюСтроку = Ложь;
Таблица.ОбновлениеПриИзмененииДанных = ОбновлениеПриИзмененииДанных.НеОбновлять;
Таблица.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
Таблица.ОтображатьКорень = Истина;
Таблица.РазрешитьВыборКорня = Ложь;
Таблица.РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки = Ложь;
Таблица.РодительВерхнегоУровня = Справочники.УрокиСписка85.НайтиПоКоду("85Г");
Таблица.Период = Новый СтандартныйПериод(Дата(2026, 9, 1), Дата(2026, 10, 1) - 1);
Таблица.ТолькоПросмотр = Ложь;
Если Таблица.АвтоОбновление Или Таблица.ПериодАвтоОбновления <> 60
Или Таблица.ВосстанавливатьТекущуюСтроку
Или Таблица.ОбновлениеПриИзмененииДанных <> ОбновлениеПриИзмененииДанных.НеОбновлять
Или Таблица.ВыборГруппИЭлементов <> ИспользованиеГруппИЭлементов.Элементы
Или Не Таблица.ОтображатьКорень Или Таблица.РазрешитьВыборКорня
Или Таблица.РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки
Или Таблица.РодительВерхнегоУровня <> Справочники.УрокиСписка85.НайтиПоКоду("85Г") Тогда
ВызватьИсключение "Настройки своей таблицы дерева не прочитались обратно";
КонецЕсли;
ПрименитьСвойПериодНаСервере85();
Если Список85.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Количество() = 0 Тогда
ВызватьИсключение "Подготовьте настоящий быстрый пользовательский отбор Количество в собственной форме";
КонецЕсли;
Таблица.СоздатьЭлементыФормыПользовательскихНастроек(Элементы.БыстрыеНастройки85, РежимОтображенияНастроекКомпоновкиДанных.БыстрыйДоступ, 1);
Если Элементы.БыстрыеНастройки85.ПодчиненныеЭлементы.Количество() = 0 Тогда
ВызватьИсключение "Настоящая группа быстрого отбора не содержит созданных элементов";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.Дерево85.ДополнительныеПараметрыСоздания = Новый ФиксированнаяСтруктура("ПризнакУрока85", "мой-список85");
Переданные = Элементы.Дерево85.ДополнительныеПараметрыСоздания;
Если Переданные.ПризнакУрока85 <> "мой-список85" Тогда
ВызватьИсключение "Собственные дополнительные параметры не сохранились";
КонецЕсли;
Состояние85 = "Своя группа и сентябрьская позиция; быстрое условие и период меняют показ, не данные";
КонецПроцедуры
&НаКлиенте
Процедура Сентябрь85(Команда)
Элементы.Дерево85.Период = Новый СтандартныйПериод(Дата(2026, 9, 1), Дата(2026, 10, 1) - 1);
ПрименитьСвойПериодНаСервере85();
Элементы.Дерево85.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура Октябрь85(Команда)
Элементы.Дерево85.Период = Новый СтандартныйПериод(Дата(2026, 10, 1), Дата(2026, 11, 1) - 1);
ПрименитьСвойПериодНаСервере85();
Элементы.Дерево85.Обновить();
КонецПроцедуры
&НаСервере
Процедура ПрименитьСвойПериодНаСервере85()
ПроверитьСвоиТриЗаписи85();
Период = Элементы.Дерево85.Период;
Если Период.Вариант <> ВариантСтандартногоПериода.ПроизвольныйПериод Тогда
ВызватьИсключение "Для этого стенда период должен быть фиксированным, не относительным";
КонецЕсли;
Начало = Период.ДатаНачала;
Конец = Период.ДатаОкончания;
Если (Начало <> Дата(2026, 9, 1) Или Конец <> Дата(2026, 10, 1) - 1)
И (Начало <> Дата(2026, 10, 1) Или Конец <> Дата(2026, 11, 1) - 1) Тогда
ВызватьИсключение "Разрешены лишь собственные сентябрь и октябрь 2026";
КонецЕсли;
Список85.Параметры.УстановитьЗначениеПараметра("Начало85", Начало);
Список85.Параметры.УстановитьЗначениеПараметра("Конец85", Конец);
Контроль = Новый Запрос(Список85.ТекстЗапроса);
Контроль.УстановитьПараметр("Метка85", "мой-список85");
Контроль.УстановитьПараметр("Начало85", Начало);
Контроль.УстановитьПараметр("Конец85", Конец);
Данные = Контроль.Выполнить().Выгрузить();
Если Данные.Количество() <> 2 Тогда
ВызватьИсключение "Свой запрос периода должен вернуть группу и ровно одну позицию до быстрого отбора";
КонецЕсли;
Состояние85 = "Свой query-период: " + Формат(Начало, "ДФ=MM.yyyy") + "; группа + одна позиция, в базе по-прежнему три записи";
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвоиТриЗаписи85()
Если Метаданные.Справочники.Найти("УрокиСписка85") = Неопределено Тогда
ВызватьИсключение "Только собственная конфигурация и каталог";
КонецЕсли;
Группа = Справочники.УрокиСписка85.НайтиПоКоду("85Г");
Если Не ЗначениеЗаполнено(Группа) Тогда
ВызватьИсключение "Ручной prerequisite: собственная группа 85Г не создана";
КонецЕсли;
Выборка = Справочники.УрокиСписка85.Выбрать();
ЧислоЗаписей = 0;
Пока Выборка.Следующий() Цикл
ЧислоЗаписей = ЧислоЗаписей + 1;
Если Выборка.МеткаСтенда <> "мой-список85" Или Выборка.ПометкаУдаления Тогда
ВызватьИсключение "Есть чужая или помеченная запись";
КонецЕсли;
Если Выборка.Код = "85Г" Тогда
Если Не Выборка.ЭтоГруппа Или ЗначениеЗаполнено(Выборка.Родитель) Тогда
ВызватьИсключение "Собственная 85Г должна быть корневой группой";
КонецЕсли;
ИначеЕсли Выборка.Код = "85А" Тогда
Если Выборка.ЭтоГруппа Или Выборка.Родитель <> Группа Или Выборка.ДатаУрока <> Дата(2026, 9, 15) Или Выборка.Количество <> 0 Тогда
ВызватьИсключение "Не совпала собственная сентябрьская позиция";
КонецЕсли;
ИначеЕсли Выборка.Код = "85Б" Тогда
Если Выборка.ЭтоГруппа Или Выборка.Родитель <> Группа Или Выборка.ДатаУрока <> Дата(2026, 10, 2) Или Выборка.Количество <> 5 Тогда
ВызватьИсключение "Не совпала собственная октябрьская позиция";
КонецЕсли;
Иначе
ВызватьИсключение "Чужой код в собственной fixture не разрешен";
КонецЕсли;
КонецЦикла;
Если ЧислоЗаписей <> 3 Тогда
ВызватьИсключение "В своем каталоге должны быть ровно группа и две позиции";
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 1 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыОдинаковый полный модуль собственных форм нового элемента и группы
Основные управляемые формы элемента и группы УрокиСписка85; native создание из своей таблицы, два server события.
Основные управляемые формы элемента и группы УрокиСписка85; native создание из своей таблицы, два server события.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("ПризнакУрока85", Метка) Или Метка <> "мой-список85" Тогда
ВызватьИсключение "Native параметры создания не пришли из своего списка";
КонецЕсли;
ТолькоПросмотр = Истина;
ПолученнаяМетка85 = Метка;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Отказ = Истина;
ВызватьИсключение "Учебная форма создания не разрешает записать четвертую строку";
КонецПроцедуры
Модуль своего каталога: запрещает записи после ручной fixture-подготовки
Справочник.УрокиСписка85, модуль объекта, событие ПередЗаписью.
Справочник.УрокиСписка85, модуль объекта, событие ПередЗаписью.
Процедура ПередЗаписью(Отказ)
Отказ = Истина;
ВызватьИсключение "Fixture создана вручную; теперь любой native запись каталога запрещена";
КонецПроцедуры
Разбор по шагам
Guard подтверждает точное имя своей CF, единственный свой каталог и отсутствие других объектов/расширений. Проверка всех записей требует ровно собственные 85Г/85А/85Б, метку, родителей, даты и количества.
Для списка с основной таблицей ключ Авто, не значение произвольного поля. В запросе нет УПОРЯДОЧИТЬ ПО; hierarchy содержит настоящие Ссылка, Родитель, ЭтоГруппа.
РодительВерхнегоУровня — реальная ссылка найденной собственной группы, не строка или новый незаписанный объект. Корень виден, выбирать его нельзя, выбирать можно только элементы; получение навигационной ссылки отключено.
АвтоОбновление = Ложь выключает таймер. ПериодАвтоОбновления = 60 задает интервал для возможного включения, но не доказывает, что таймер работает. ОбновлениеПриИзмененииДанных НеОбновлять и восстановление текущей строки выключены, сохранение настроек отключено.
Период присвоен настоящим СтандартныйПериод. Для своего реквизита ДатаУрока он не объявляется магическим фильтром: сервер читает его точные границы и явно связывает с Начало85/Конец85 запроса. Group остается в query, из элементов возвращается ровно один месяц.
СоздатьЭлементыФормыПользовательскихНастроек вызывается на сервере с реальной группой, БыстрыйДоступ и одной колонкой. Проверяем непустой набор пользовательских настроек и непустых созданных подчиненных элементов.
ДополнительныеПараметрыСоздания назначаем в ПриОткрытии, потому что native описание предупреждает о заполнении из параметров списка после ПриСозданииНаСервере. Тогда штатный Создать реально передает собственную fixed-структуру следующей форме.
Supporting форма нового объекта читает фактически пришедшую метку и становится readonly. Object-level deny не позволяет native записать четвертый элемент даже обходным путем.
Как проверить результат
После открытия видно собственную группу и сентябрьскую позицию. Октябрь85 показывает октябрьскую позицию, Сентябрь85 возвращает сентябрьскую; в исходном каталоге остаются 3 записи.
В группе БыстрыеНастройки85 существует настоящий редактор условия Минимальное учебное количество. Изменение его 0→1 скрывает нулевую сентябрьскую позицию; восстановите 0 перед проверкой периода.
Выбор корня запрещен, ссылка верхнего уровня указывает на 85Г. Native выбор элементов и фильтрация групп — не удаление самой группы.
Штатная команда Создать открывает собственную readonly форму: ПолученнаяМетка85 = мой-список85. Не записывайте новый элемент; object guard запретит такую попытку.
В дереве и query по-прежнему только свои три записи. Любая четвертая, чужая метка или измененная дата должны вызвать отказ fixture-проверки.
Начало/конец любого третьего месяца отказывают до установки параметров запроса. Автообновление не ожидается: оно намеренно выключено.
Не переносите native параметры создания в код сторонней формы вручную: успех засчитывается по реально пришедшему параметру штатного открытия.
Оформление, перерисовка и native выполнение здесь не проверялись runtime; ручные проверочные шаги нужны в собственной базе.
Ожидаемый результат
12 оставшихся native API таблицы динамического списка связаны с реальной иерархией, созданным редактором быстрого отбора, честным query-периодом и фактической передачей параметров.
На что обратить внимание
Создание fixture — ручная собственная подготовка, а не скрытая запись инструмента в рабочую базу.
Визуальный корень, выбор корня и выбор групп/элементов — независимые свойства.
Период не фильтрует произвольный реквизит автоматически: в этом уроке есть явный запрос и binding его параметров.
ПриПолученииДанныхНаСервере из соседнего урока работает с константной CF, не применяется к этим справочным ссылкам без переделки собственного контракта.
Native user-settings метод ничего полезного не создаст, если не подготовить настоящий пользовательский элемент настройки; guard это проверяет.
Readonly supporting форма и deny объекта установлены только после ручной подготовки трех собственных строк.
Нативное значение ДополнительныеПараметрыСоздания после server creation может быть заполнено платформой; setter ПриОткрытии учитывает этот порядок.
Нет реального таймера, GUI, БД-записи или сетевого вызова инструмента; runtimeExecuted = False.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.