Расширение таблицы формы для динамического списка.ДополнительныеПараметрыСоздания

Свойства · AdditionalCreateParameters

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

Полное описание, параметры и ограничения

Расширение таблицы формы для динамического списка.ДополнительныеПараметрыСоздания (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.

Подготовка

  1. Создайте отдельную пустую CF УчебноеДеревоСписка85 на 8.5.1.1343, управляемое приложение. Единственный бизнес-объект — иерархический справочник УрокиСписка85 с группами и элементами, код Строка 9 без авто-нумерации, наименование Строка 100.

  2. Добавьте реквизиты ДатаУрока Дата, Количество Число 9,0, МеткаСтенда Строка 30. Для всех трех Использование = Для групп и элементов; не создавайте других реквизитов или бизнес-объектов.

  3. Только в своем новом стенде, ДО установки модуля запрета записи, вручную создайте группу код 85Г, наименование Мои уроки85, родитель пустой, МеткаСтенда мой-список85. Затем в ней позицию 85А, Сентябрьский урок, ДатаУрока 15.09.2026 00:00:00, Количество 0, ту же метку; позицию 85Б, Октябрьский урок, 02.10.2026 00:00:00, Количество 5, ту же метку. Это явные ручные собственные fixture-записи, не внесенные инструментами.

  4. После ручной подготовки вставьте supporting NO_WRITE в модуль объекта справочника: теперь любая запись, включая четвертую строку и группу, запрещена. Проверьте вручную: всего ровно три записи, нет пометок удаления.

  5. Мастером создайте основную управляемую форму списка ДеревоСписка85 с реквизитом Список85 ДинамическийСписок и таблицей Дерево85. Отображение таблицы = Дерево; основной источник Справочник.УрокиСписка85. Колонки Наименование, Код, ДатаУрока, Количество настоящие, видимые. В стандартной панели сохраните команду Создать.

  6. В настройках самого динамического списка задайте отбор Количество >= 0, включите его использование и включение в пользовательские настройки, РежимОтображения = БыстрыйДоступ, представление Минимальное учебное количество. Идентификатор пользовательской настройки непустой. Это настоящий элемент пользовательских настроек, не строка с названием.

  7. На форму добавьте пустую обычную группу БыстрыеНастройки85. Код создает ее элементы native методом из реальной пользовательской настройки. Добавьте Состояние85 Строка 500 только для просмотра, команды и кнопки Сентябрь85/Октябрь85. Таблица не ТолькоПросмотр, иначе штатный Создать может быть недоступен; данные защищает отдельный модуль объекта.

  8. В основной модуль списка вставьте весь код; свяжите ПриСозданииНаСервере, ПриОткрытии и две команды. Не добавляйте другой обработчик заполнения списка или сохранение пользовательских настроек.

  9. Мастером создайте основную форму элемента и группы. В обе добавьте ПолученнаяМетка85 Строка 30 только для просмотра; вставьте supporting NEW_FORM, свяжите ПриСозданииНаСервере и ПередЗаписьюНаСервере. Native создание передает именно ПризнакУрока85 из ДополнительныеПараметрыСоздания.

  10. Откройте только свою основную форму списка в 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 запись каталога запрещена";
КонецПроцедуры

Разбор по шагам

  1. Guard подтверждает точное имя своей CF, единственный свой каталог и отсутствие других объектов/расширений. Проверка всех записей требует ровно собственные 85Г/85А/85Б, метку, родителей, даты и количества.

  2. Для списка с основной таблицей ключ Авто, не значение произвольного поля. В запросе нет УПОРЯДОЧИТЬ ПО; hierarchy содержит настоящие Ссылка, Родитель, ЭтоГруппа.

  3. РодительВерхнегоУровня — реальная ссылка найденной собственной группы, не строка или новый незаписанный объект. Корень виден, выбирать его нельзя, выбирать можно только элементы; получение навигационной ссылки отключено.

  4. АвтоОбновление = Ложь выключает таймер. ПериодАвтоОбновления = 60 задает интервал для возможного включения, но не доказывает, что таймер работает. ОбновлениеПриИзмененииДанных НеОбновлять и восстановление текущей строки выключены, сохранение настроек отключено.

  5. Период присвоен настоящим СтандартныйПериод. Для своего реквизита ДатаУрока он не объявляется магическим фильтром: сервер читает его точные границы и явно связывает с Начало85/Конец85 запроса. Group остается в query, из элементов возвращается ровно один месяц.

  6. СоздатьЭлементыФормыПользовательскихНастроек вызывается на сервере с реальной группой, БыстрыйДоступ и одной колонкой. Проверяем непустой набор пользовательских настроек и непустых созданных подчиненных элементов.

  7. ДополнительныеПараметрыСоздания назначаем в ПриОткрытии, потому что native описание предупреждает о заполнении из параметров списка после ПриСозданииНаСервере. Тогда штатный Создать реально передает собственную fixed-структуру следующей форме.

  8. Supporting форма нового объекта читает фактически пришедшую метку и становится readonly. Object-level deny не позволяет native записать четвертый элемент даже обходным путем.

Как проверить результат

  1. После открытия видно собственную группу и сентябрьскую позицию. Октябрь85 показывает октябрьскую позицию, Сентябрь85 возвращает сентябрьскую; в исходном каталоге остаются 3 записи.

  2. В группе БыстрыеНастройки85 существует настоящий редактор условия Минимальное учебное количество. Изменение его 0→1 скрывает нулевую сентябрьскую позицию; восстановите 0 перед проверкой периода.

  3. Выбор корня запрещен, ссылка верхнего уровня указывает на 85Г. Native выбор элементов и фильтрация групп — не удаление самой группы.

  4. Штатная команда Создать открывает собственную readonly форму: ПолученнаяМетка85 = мой-список85. Не записывайте новый элемент; object guard запретит такую попытку.

  5. В дереве и query по-прежнему только свои три записи. Любая четвертая, чужая метка или измененная дата должны вызвать отказ fixture-проверки.

  6. Начало/конец любого третьего месяца отказывают до установки параметров запроса. Автообновление не ожидается: оно намеренно выключено.

  7. Не переносите native параметры создания в код сторонней формы вручную: успех засчитывается по реально пришедшему параметру штатного открытия.

  8. Оформление, перерисовка и native выполнение здесь не проверялись runtime; ручные проверочные шаги нужны в собственной базе.

Ожидаемый результат

12 оставшихся native API таблицы динамического списка связаны с реальной иерархией, созданным редактором быстрого отбора, честным query-периодом и фактической передачей параметров.

На что обратить внимание

  1. Создание fixture — ручная собственная подготовка, а не скрытая запись инструмента в рабочую базу.

  2. Визуальный корень, выбор корня и выбор групп/элементов — независимые свойства.

  3. Период не фильтрует произвольный реквизит автоматически: в этом уроке есть явный запрос и binding его параметров.

  4. ПриПолученииДанныхНаСервере из соседнего урока работает с константной CF, не применяется к этим справочным ссылкам без переделки собственного контракта.

  5. Native user-settings метод ничего полезного не создаст, если не подготовить настоящий пользовательский элемент настройки; guard это проверяет.

  6. Readonly supporting форма и deny объекта установлены только после ручной подготовки трех собственных строк.

  7. Нативное значение ДополнительныеПараметрыСоздания после server creation может быть заполнено платформой; setter ПриОткрытии учитывает этот порядок.

  8. Нет реального таймера, GUI, БД-записи или сетевого вызова инструмента; runtimeExecuted = False.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.