Тип: СпособРедактирования. Определяет способ редактирования объектов базы данных (например, ВСписке, ВДиалоге, ОбоимиСпособами).
Полное описание, параметры и ограничения
ОбъектМетаданных: Справочник.СпособРедактирования (MetadataObject: Catalog.EditType)
ОбъектМетаданных: Справочник (MetadataObject: Catalog)
СпособРедактирования (EditType)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: СпособРедактирования.
Определяет способ редактирования объектов базы данных (например, ВСписке, ВДиалоге, ОбоимиСпособами).
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Проверить, какие формы назначены учебному справочнику
Отличаем описание формы в метаданных от открытого окна. Диагностика показывает назначения для объекта, группы, списка и выбора.
Где и как запускать
Полный текст собственного серверного общего модуля УчебныеЗадачи. Он уже содержит процедуру Экспорт и вспомогательную функцию; не вставляйте внутрь другого обработчика.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
Все проверки этого блока только читают метаданные собственного справочника. Изменения настроек из подготовки выполняйте вручную в Конфигураторе только новой базы Учебная85, затем обновляйте конфигурацию БД.
Не устанавливайте расширения в учебную базу и не создавайте дополнительные индексы, характеристики, команды или макеты, если конкретное упражнение этого не требует.
У УчебныеТовары создайте две управляемые формы: ФормаТовара вида Форма элемента справочника и ФормаСписка вида Форма списка справочника. Назначьте их соответственно основной формой объекта и основной формой списка.
Другие формы/назначения специально не создавайте. После обновления БД замените пустой общий модуль УчебныеЗадачи всем кодом ниже: он содержит готовую ВыполнитьПример и вспомогательную функцию. Не вставляйте функции внутрь другой процедуры.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Описание = Метаданные.Справочники.УчебныеТовары;
Сообщить(Описание.Формы.Количество() = 2);
Если Описание.ОсновнаяФормаОбъекта = Неопределено Или Описание.ОсновнаяФормаСписка = Неопределено Тогда
ВызватьИсключение "Назначьте две собственные основные формы по подготовке";
КонецЕсли;
Сообщить(Описание.ОсновнаяФормаОбъекта.Имя = "ФормаТовара");
Сообщить(Описание.ОсновнаяФормаСписка.Имя = "ФормаСписка");
Сообщить("ОсновнаяФормаОбъекта: " + ПредставитьНазначениеФормы(Описание.ОсновнаяФормаОбъекта));
Сообщить("ОсновнаяФормаГруппы: " + ПредставитьНазначениеФормы(Описание.ОсновнаяФормаГруппы));
Сообщить("ОсновнаяФормаСписка: " + ПредставитьНазначениеФормы(Описание.ОсновнаяФормаСписка));
Сообщить("ОсновнаяФормаДляВыбора: " + ПредставитьНазначениеФормы(Описание.ОсновнаяФормаДляВыбора));
Сообщить("ОсновнаяФормаДляВыбораГруппы: " + ПредставитьНазначениеФормы(Описание.ОсновнаяФормаДляВыбораГруппы));
Сообщить("ДополнительнаяФормаОбъекта: " + ПредставитьНазначениеФормы(Описание.ДополнительнаяФормаОбъекта));
Сообщить("ДополнительнаяФормаГруппы: " + ПредставитьНазначениеФормы(Описание.ДополнительнаяФормаГруппы));
Сообщить("ДополнительнаяФормаСписка: " + ПредставитьНазначениеФормы(Описание.ДополнительнаяФормаСписка));
Сообщить("ДополнительнаяФормаДляВыбора: " + ПредставитьНазначениеФормы(Описание.ДополнительнаяФормаДляВыбора));
Сообщить("ДополнительнаяФормаДляВыбораГруппы: " + ПредставитьНазначениеФормы(Описание.ДополнительнаяФормаДляВыбораГруппы));
Сообщить("Стандартные команды: " + Строка(Описание.ИспользоватьСтандартныеКоманды));
Сообщить("Способ редактирования: " + Строка(Описание.СпособРедактирования));
КонецПроцедуры
Функция ПредставитьНазначениеФормы(НазначеннаяФорма)
Если НазначеннаяФорма = Неопределено Тогда
Возврат "Не назначена — учитываются правила автогенерации и клиентского режима";
КонецЕсли;
Возврат НазначеннаяФорма.ПолноеИмя();
КонецФункции
Разбор по шагам
Читаем назначенные основные формы и убеждаемся, что существуют именно две подготовленные формы.
Вспомогательная функция форматирует описание формы: Неопределено обрабатывается до ПолноеИмя. Она не открывает окно и не создаёт экземпляр формы.
Основные и дополнительные назначения показываем отдельно. Дополнительная форма может использоваться, когда основная не установлена/не подходит клиенту, согласно назначению.
ИспользоватьСтандартныеКоманды и СпособРедактирования — настройки справочника, не свойства уже открытого окна.
Как проверить результат
Три проверки дают Истина.
В сообщениях основные объект/список указывают ФормаТовара и ФормаСписка. Остальные назначения показывают фактическое состояние; незаданные не вызывают ошибку.
Окно формы справочника этим кодом не открывается.
Ожидаемый результат
Диагностика назначений форм до поиска ошибки открытия не того окна.
На что обратить внимание
Неопределено у основной формы не доказывает, что стандартное открытие невозможно: платформа может генерировать форму.
Нельзя присваивать эти свойства во встроенном языке для изменения конфигурации: настройки меняются в Конфигураторе.
Не приравнивайте имя формы в метаданных к объекту ФормаКлиентскогоПриложения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Различить иерархию групп и иерархию элементов справочника
Номенклатура КА2 имеет иерархию групп и элементов. Это влияет на построение дерева выбора, но не означает, что любой узел является товаром.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Варианты = Метаданные.СвойстваОбъектов;
Описание = Метаданные.Справочники.Найти("Номенклатура");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Справочники.Номенклатура";
КонецЕсли;
Сообщить(Описание.Иерархический);
Сообщить(Описание.ВидИерархии = Варианты.ВидИерархии.ИерархияГруппИЭлементов);
Если Описание.Иерархический Тогда
Если Описание.ВидИерархии = Варианты.ВидИерархии.ИерархияГруппИЭлементов Тогда
Сообщить("При выгрузке отдельно учитывайте папки и карточки товаров");
ИначеЕсли Описание.ВидИерархии = Варианты.ВидИерархии.ИерархияЭлементов Тогда
Сообщить("Узлы иерархии являются элементами; схема с отдельными папками не подходит");
КонецЕсли;
КонецЕсли;
Сообщить("Подчинение: " + Строка(Описание.ИспользованиеПодчинения));
Сообщить("Выбор: " + Строка(Описание.СпособВыбора));
Если Описание.СпособВыбора = Варианты.СпособВыбора.ИзФормы Тогда
Сообщить("Планируйте выбор через форму, не полагайтесь только на быстрый выбор");
КонецЕсли;
Если Описание.ИспользованиеПодчинения = Варианты.ИспользованиеПодчинения.ГруппамИЭлементам Тогда
Сообщить("Ограничение владельца относится и к группам, и к элементам");
КонецЕсли;
Сообщить("Редактирование: " + Строка(Описание.СпособРедактирования));
Если Описание.СпособРедактирования = Варианты.СпособРедактирования.ВДиалоге Тогда
Сообщить("Редактирование предусматривает отдельный диалог");
КонецЕсли;Разбор по шагам
Проверяем Иерархический до трактовки вида иерархии.
Два значения ВидИерархии описывают разные модели, не два названия одной настройки.
ИспользованиеПодчинения относится к владельцу и не заменяет вид иерархии.
СпособВыбора и СпособРедактирования читаем отдельно; код не открывает форму и не редактирует справочник.
Как проверить результат
По предоставленному XML первые два сравнения Истина и выводится пояснение о папках и карточках.
Остальные сообщения зависят от фактических свойств текущей учебной копии, а не от догадки по названию справочника.
Ожидаемый результат
Определена структура будущего чтения справочника без изменения данных.
На что обратить внимание
Иерархия не доказывает наличие конкретной группы или товара.
Нельзя трактовать каждую группу как товар для публикации в каталоге.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.