Поле

Типы · Field

Поле ввода по строке.

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

Поле (Field)

Поле (Field)

Доступен, начиная с версии 8.0.

Свойства:
Имя (Name)

Описание:

Поле ввода по строке.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

См. также:
СписокПолей
СписокПолей, метод Получить
СписокПолей, метод Найти
СписокПолей, метод Индекс

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Проверить описание одиночных и множественных характеристик своей Книги

Описание берётся из реально подготовленных собственных метаданных. Проверяем все связи плана/регистра/полей, булевый отбор, одиночный Цвет и две упорядоченные Метки; код только читает свой стенд.

Где и как запускать

Полный серверный общий модуль УчебныеХарактеристики85 собственной конфигурации УчебноеОписаниеХарактеристик85 и отдельный полный модуль формы. В1С не запускался.

Подготовка

  1. НОВАЯ отдельная пустая файловая база8.5.1.1343, Имя конфигурации УчебноеОписаниеХарактеристик85, совместимость Не использовать, Русский. Только свой один справочник, один план характеристик и один регистр сведений ниже. Без расширений, подписок, заданий, общих реквизитов и рабочей информации. Все модули вручную пусты, кроме собственного общего модуля.

  2. Конфигуратор → Справочники → УчебныеКниги85: без иерархии, Код Строка10, автонумерация выключена, Наименование100. План видов характеристик УчебныеВиды85: без иерархии, Код Строка10 без автонумерации, Наименование100, тип значения характеристик только Строка100. Его собственные реквизиты: ДляКниг Булево, Множественный Булево, Путь Строка100.

  3. Регистр сведений УчебныеЗначения85: независимый, непериодический. Измерения Книга СправочникСсылка.УчебныеКниги85, Вид ПланВидовХарактеристикСсылка.УчебныеВиды85, КлючЧасти Число10.0 неотрицательное. Ресурсы Значение Строка100 и Порядок Число6.0 неотрицательное. КлючЧасти включён в ключ записи: двум Меткам нужны разные значения1/2; одиночному Цвету нужно значение0 по умолчанию.

  4. Справочник УчебныеКниги85 → вкладка Данные → Характеристики: добавьте РОВНО ОДНО описание. Источник видов=ПланВидовХарактеристик.УчебныеВиды85; поле ключа=Ссылка; поле отбора видов=ДляКниг, значение отбора=БулевоИстина; поле пути к данным=Путь; поле использования множественных значений=Множественный. Источник значений=РегистрСведений.УчебныеЗначения85; поле объекта=Книга; поле вида=Вид; поле значения=Значение; поле ключа множественных значений=КлючЧасти; поле порядка множественных значений=Порядок. Выбирайте реальные поля, не вводите их как фиктивные строки в BSL.

  5. Общий модуль УчебныеХарактеристики85: Сервер=Да, Вызов сервера=Да, Клиент=Нет, Глобальный=Нет, Привилегированный=Нет. Вставьте весь основной модуль. Своя внешняя обработка УчебныеХарактеристики85 → управляемая Форма: команда/кнопка Выполнить, действие Выполнить; полный отдельный модуль формы ниже. Будущая ручная подготовка: сохранить и обновить собственную базу F7.

  6. Будущая ручная подготовка только своей базы: один элемент книги, Код BOOK, Наименование Книга. Два вида: CLR/Цвет, ДляКниг=Истина, Множественный=Ложь; TAG/Метки, ДляКниг=Истина, Множественный=Истина. Для обоих Путь пустой: поле в описании настроено, но привязку к прямому пути этот опыт не использует.

  7. Ровно три записи собственного регистра для этой книги: CLR/КлючЧасти0/Порядок1/ЗначениеКрасный; TAG/КлючЧасти1/Порядок1/ЗначениеУчебник; TAG/КлючЧасти2/Порядок2/ЗначениеБумага. Вставка записей — будущая ручная подготовка, не действие кода. Никакая рабочая конфигурация не меняется.

Процедура ВыполнитьПример() Экспорт
    ПроверитьСвойПустойСтенд();
    Если Метаданные.Справочники.Найти("УчебныеКниги85") = Неопределено
        Или Метаданные.ПланыВидовХарактеристик.Найти("УчебныеВиды85") = Неопределено
        Или Метаданные.РегистрыСведений.Найти("УчебныеЗначения85") = Неопределено Тогда
        ВызватьИсключение "Нужны только три собственных объекта подготовленного стенда";
    КонецЕсли;
    Описания = Метаданные.Справочники.УчебныеКниги85.Характеристики;
    Если ТипЗнч(Описания) <> Тип("ОписанияХарактеристик") Или Описания.Количество() <> 1 Тогда
        ВызватьИсключение "В своём справочнике должна быть одна полностью настроенная схема характеристик";
    КонецЕсли;
    Описание = Описания.Получить(0);
    Если ТипЗнч(Описание) <> Тип("ОписаниеХарактеристик") Или Описания.Индекс(Описание) <> 0 Тогда
        ВызватьИсключение "Нужно реальное описание из собственного объекта метаданных";
    КонецЕсли;
    Если Описание.ВидыХарактеристик <> Метаданные.ПланыВидовХарактеристик.УчебныеВиды85 Тогда
        ВызватьИсключение "Виды должны браться только из собственного плана УчебныеВиды85";
    КонецЕсли;
    Если Описание.ЗначенияХарактеристик <> Метаданные.РегистрыСведений.УчебныеЗначения85 Тогда
        ВызватьИсключение "Значения должны браться только из собственного регистра УчебныеЗначения85";
    КонецЕсли;
    Если ТипЗнч(Описание.ЗначениеОтбораВидов) <> Тип("Булево") Или Не Описание.ЗначениеОтбораВидов Тогда
        ВызватьИсключение "Значение отбора видов должно быть именно БулевоИстина, не строка";
    КонецЕсли;
    ПроверитьСвоёПоле(Описание.ПолеКлюча, "Ссылка");
    ПроверитьСвоёПоле(Описание.ПолеОтбораВидов, "ДляКниг");
    ПроверитьСвоёПоле(Описание.ПолеПутиКДанным, "Путь");
    ПроверитьСвоёПоле(Описание.ПолеИспользованияМножественныхЗначений, "Множественный");
    ПроверитьСвоёПоле(Описание.ПолеОбъекта, "Книга");
    ПроверитьСвоёПоле(Описание.ПолеВида, "Вид");
    ПроверитьСвоёПоле(Описание.ПолеЗначения, "Значение");
    ПроверитьСвоёПоле(Описание.ПолеКлючаМножественныхЗначений, "КлючЧасти");
    ПроверитьСвоёПоле(Описание.ПолеПорядкаМножественныхЗначений, "Порядок");
    Книга = Справочники.УчебныеКниги85.НайтиПоКоду("BOOK");
    Цвет = ПланыВидовХарактеристик.УчебныеВиды85.НайтиПоКоду("CLR");
    Метки = ПланыВидовХарактеристик.УчебныеВиды85.НайтиПоКоду("TAG");
    Если Не ЗначениеЗаполнено(Книга) Или Не ЗначениеЗаполнено(Цвет) Или Не ЗначениеЗаполнено(Метки) Тогда
        ВызватьИсключение "Вручную подготовьте только собственную Книгу, Цвет и Метки";
    КонецЕсли;
    Если Книга.Наименование <> "Книга" Или Цвет.Наименование <> "Цвет" Или Метки.Наименование <> "Метки"
        Или Не Цвет.ДляКниг Или Не Метки.ДляКниг Или Цвет.Множественный Или Не Метки.Множественный
        Или Цвет.Путь <> "" Или Метки.Путь <> "" Тогда
        ВызватьИсключение "Два собственных вида должны иметь точные исходные признаки и пустой необязательный путь";
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ З.Вид.Код КАК КодВида, З.КлючЧасти КАК КлючЧасти,
        |З.Порядок КАК Порядок, З.Значение КАК Значение
        |ИЗ РегистрСведений.УчебныеЗначения85 КАК З
        |ГДЕ З.Книга = &Книга И З.Вид.ДляКниг = &ДляКниг
        |УПОРЯДОЧИТЬ ПО КодВида, Порядок";
    Запрос.УстановитьПараметр("Книга", Книга);
    Запрос.УстановитьПараметр("ДляКниг", Истина);
    Значения = Запрос.Выполнить().Выгрузить();
    Если ТипЗнч(Значения) <> Тип("ТаблицаЗначений") Или Значения.Количество() <> 3 Тогда
        ВызватьИсключение "В собственном регистре должны быть только три подготовленных значения этой Книги";
    КонецЕсли;
    ПроверитьСвоюСтроку(Значения[0], "CLR", 0, 1, "Красный");
    ПроверитьСвоюСтроку(Значения[1], "TAG", 1, 1, "Учебник");
    ПроверитьСвоюСтроку(Значения[2], "TAG", 2, 2, "Бумага");
    Сообщить("Связность всех двенадцати свойств описания подтверждена собственными метаданными и данными");
    Сообщить("Книга: Цвет=Красный; Метки по порядку: Учебник, Бумага. Данные не записывались");
КонецПроцедуры

Процедура ПроверитьСвоёПоле(Поле, ИмяПоля)
    Если ТипЗнч(Поле) <> Тип("Поле") Тогда
        ВызватьИсключение "В описании требуется настроенное native-Поле " + ИмяПоля;
    КонецЕсли;
    Если Поле.Имя <> ИмяПоля Тогда
        ВызватьИсключение "Описание ссылается не на собственное ожидаемое поле " + ИмяПоля;
    КонецЕсли;
КонецПроцедуры

Процедура ПроверитьСвоюСтроку(СтрокаЗначений, КодВида, КлючЧасти, Порядок, Значение)
    Если ТипЗнч(СтрокаЗначений.КодВида) <> Тип("Строка") Или СтрокаЗначений.КодВида <> КодВида
        Или ТипЗнч(СтрокаЗначений.КлючЧасти) <> Тип("Число") Или СтрокаЗначений.КлючЧасти <> КлючЧасти
        Или ТипЗнч(СтрокаЗначений.Порядок) <> Тип("Число") Или СтрокаЗначений.Порядок <> Порядок
        Или ТипЗнч(СтрокаЗначений.Значение) <> Тип("Строка") Или СтрокаЗначений.Значение <> Значение Тогда
        ВызватьИсключение "Не совпали все поля и типы собственной строки значения характеристики";
    КонецЕсли;
КонецПроцедуры

Процедура ПроверитьСвойПустойСтенд()
    Если Метаданные.Справочники.Количество() <> 1 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 1 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 1 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
    КонецЕсли;
    Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
        ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
    КонецЕсли;
    Источники = Новый Массив;
    Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
    Для Каждого Источник Из Источники Цикл
        Расширения = РасширенияКонфигурации.Получить(, Источник);
        Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
            ВызватьИсключение "Native список расширений должен иметь тип Массив";
        КонецЕсли;
        Если Расширения.Количество() <> 0 Тогда
            ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
        КонецЕсли;
    КонецЦикла;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
    КонецЕсли;
КонецПроцедуры
УчебныеХарактеристики85.Форма

Своя внешняя обработка УчебныеХарактеристики85 → управляемая Форма → Модуль

Полный отдельный модуль формы, вызывающий свой серверный общий модуль; не выполнялся.

&НаКлиенте
Процедура Выполнить(Команда)
    ВыполнитьНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполнитьНаСервере()
    УчебныеХарактеристики85.ВыполнитьПример();
КонецПроцедуры

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

  1. Метаданные.Справочники.УчебныеКниги85.Характеристики — настоящая readonly-коллекция ОписанияХарактеристик. Только после проверки количества1 Получить(0) даёт реальное ОписаниеХарактеристик. Индекс подтверждает принадлежность именно этой коллекции.

  2. ВидыХарактеристик и ЗначенияХарактеристик сравниваются с конкретными собственными объектами метаданных плана и регистра. Это ссылки на метаданные, не значения записей, не строки имени и не пользовательские реквизиты формы.

  3. ЗначениеОтбораВидов должно иметь тип Булево и равняться Истина. ПолеОтбораВидов указывает на собственное ДляКниг. Отбор типов проверяется отдельно от связи регистра с Книгой.

  4. Все девять полей описания проверяются как настоящие объекты Поле с точными именами. ПолеКлюча=Ссылка связывает вид с планом; ПолеОбъекта=Книга и ПолеВида=Вид связывают собственную запись регистра с книгой и видом.

  5. ПолеПутиКДанным указывает на подготовленное поле Путь. Его значения здесь намеренно пусты: проверяется метаданный маршрут, не автоматическое построение виртуального поля или привязки формы.

  6. ПолеИспользованияМножественныхЗначений читает Множественный у вида. ПолеКлючаМножественныхЗначений указывает на КлючЧасти; собственный одиночный Цвет имеет ключ0, две Метки имеют разные ключи1/2. ПолеПорядкаМножественныхЗначений указывает на Порядок1/2.

  7. После аудита метаданных получаем только собственные подготовленные ссылки по точным кодам, проверяем заполненность, имена и исходные признаки. Затем обычный параметризованный запрос читает три собственные строки и сверяет все их типы/значения.

  8. Запрос явно читает регистр и упорядочивает по КодВида/Порядок. Он не выдаётся за проверку автоматически созданных виртуальных характеристик СКД. Связность описания и согласованность подготовленных данных — два отдельные результата.

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

  1. Будущий результат: все двенадцать свойств описания имеют ожидаемые реальные значения/ссылки; Цвет — один Красный с ключом0, Метки — Учебник и Бумага с ключами1/2 и порядком1/2. Данные не записывались кодом.

  2. Будущий отрицательный контроль метаданных: в своём описании характеристик выберите Порядок вместо КлючЧасти для поля ключа множественности. После обновления только своего стенда проверка должна остановиться на несовпадении ПолеКлючаМножественныхЗначений, до чтения значений. Верните исходное описание после опыта.

  3. Будущий отрицательный контроль данных: вручную измените только собственное значение TAG/КлючЧасти2 с Бумага на Иное. Аудит метаданных останется корректным, но проверка полной третьей строки должна отвергнуть данные. Верните свой fixture после опыта.

  4. runtimeVerifiedScenarios=0: конфигуратор, BSL, запрос, формы и записи1С здесь не запускались. Приведены полный код и будущая ручная подготовка только собственного учебного стенда.

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

Связность описания характеристик отделена от проверки собственных записей: проверены источники, все поля, отбор, одиночность и порядок двух множественных значений.

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

  1. У ОписаниеХарактеристик нет используемого здесь конструктора, а все его свойства readonly. Не присваивайте Описание.ПолеВида или Описание.ВидыХарактеристик из кода; настройка делается в своём Конфигураторе и перечитывается как метаданные.

  2. Необязательные поля в других описаниях могут быть не настроены. Здесь они обязательны именно для подготовленного учебного описания; неподготовленный объект не подменяется строкой имени или пустым новым объектом.

  3. Поле — отдельный native-тип, не ПолеФормы, не ПолеКомпоновкиДанных и не значение реквизита. Его Имя только читается. Поля видов и поля значений принадлежат разным источникам.

  4. Значение по умолчанию ключа одиночной характеристики зависит от типа поля. Здесь ключ числовой, поэтому собственный одиночный Цвет использует0. Это не универсальное правило для ключа Строка/Ссылка/УникальныйИдентификатор.

  5. Порядок задаётся отдельным подготовленным полем; совпадающие значения Порядок потребовали бы дополнительного согласованного порядка. В данном fixture порядки Меток различны.

  6. Пустые значения Путь не подтверждают автоматическую привязку характеристик к пути данных. Не заявляется успешный динамический список, виртуальные поля запроса или интерфейс СКД: такой опыт требует отдельного исполнения.

  7. Источник инспирации — структура штатных описаний в прочитанном XML УНФ; рабочий XML не редактировался и его бизнес-объекты в учебную схему не скопированы.

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

Проверить поля ввода по строке и режимы выбора вида свойства

ВводПоСтроке — список полей настройки, не результат поиска видов характеристик. Данные плана пример не читает.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу и назовите корень конфигурации Учебная85. Не добавляйте учебные объекты в УТ/КА2/УНФ/БП и не подключайте расширения.

  2. Конфигуратор → Планы видов характеристик → Добавить: имя УчебныеСвойства, синоним Учебные свойства. Укажите длину кода 10, длину наименования 100, автонумерацию и контроль уникальности включите.

  3. Включите иерархию плана. В свойстве Тип выберите только Число (12 цифр, 2 дробных, неотрицательное) и Строка (30 символов, переменная длина). Дополнительные значения характеристик не назначайте.

  4. Реквизиты, табличные части, предопределённые элементы, формы, команды, макеты, характеристики и дополнительные индексы не создавайте. Модуль объекта и модуль менеджера оставьте пустыми; историю данных выключите.

  5. Создайте серверный общий модуль УчебныеЗадачи с процедурой ВыполнитьПример() Экспорт и вызывайте её из серверного обработчика учебной обработки. Обновите конфигурацию базы данных перед первым запуском.

  6. Код этого блока не вызывает Записать, не устанавливает блокировки и не меняет настройки метаданных. Учебные виды характеристик существуют только в памяти.

  7. У УчебныеСвойства в настройке ВводПоСтроке оставьте ровно Код и Наименование. Обновите конфигурацию БД.

Если Метаданные.ПланыВидовХарактеристик.Найти("УчебныеСвойства") = Неопределено Тогда
    ВызватьИсключение "Создайте собственный план УчебныеСвойства по подготовке";
КонецЕсли;
Описание = Метаданные.ПланыВидовХарактеристик.УчебныеСвойства;
Сообщить(Описание.ВводПоСтроке.Найти("Код") <> Неопределено);
Сообщить(Описание.ВводПоСтроке.Найти("Наименование") <> Неопределено);
Для Каждого Поле Из Описание.ВводПоСтроке Цикл
    Сообщить("Поле ввода по строке: " + Поле.Имя);
КонецЦикла;
Сообщить("БыстрыйВыбор: " + Строка(Описание.БыстрыйВыбор));
Сообщить("ИсторияВыбораПриВводе: " + Строка(Описание.ИсторияВыбораПриВводе));
Сообщить("ПолнотекстовыйПоиск: " + Строка(Описание.ПолнотекстовыйПоиск));
Сообщить("ПолнотекстовыйПоискПриВводеПоСтроке: " + Строка(Описание.ПолнотекстовыйПоискПриВводеПоСтроке));
Сообщить("РежимПолученияДанныхВыбораПриВводеПоСтроке: " + Строка(Описание.РежимПолученияДанныхВыбораПриВводеПоСтроке));
Сообщить("СозданиеПриВводе: " + Строка(Описание.СозданиеПриВводе));
Сообщить("СпособВыбора: " + Строка(Описание.СпособВыбора));
Сообщить("СпособПоискаСтрокиПриВводеПоСтроке: " + Строка(Описание.СпособПоискаСтрокиПриВводеПоСтроке));

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

  1. По подготовке ввод по строке выполняется по Код и Наименование. Найти ищет описание поля настройки.

  2. Перебор списка показывает технические имена полей, по которым платформа будет выполнять ввод.

  3. Режим поиска, получения данных выбора, полнотекстовые настройки и историю ввода выводим отдельно: они решают разные задачи.

  4. БыстрыйВыбор имеет смысл в соответствующем способе выбора. Не трактуем вывод этого флага как наличие найденного вида свойства.

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

  1. Две проверки Код и Наименование дают Истина.

  2. В списке имён видны Код и Наименование; дальше выводятся восемь фактических режимов.

  3. Ни выборка ПВХ, ни поиск элемента по коду этим кодом не выполняются.

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

Диагностика настройки ввода и выбора без смешивания с данными характеристик.

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

  1. Поддержка поиска по полю не создаёт индекс автоматически для произвольного добавленного реквизита.

  2. Не путайте Найти у СписокПолей и НайтиПоКоду у менеджера ПВХ.

  3. Настройка поиска не обходит права доступа и не гарантирует скорость в большой рабочей базе.

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

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

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

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

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