ПолеФормы.Имя

Свойства · Name

Тип: Строка. Содержит имя поля. Является уникальным среди всех элементов формы.

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

ПолеФормы.Имя (FormField.Name)

ПолеФормы (FormField)

Имя (Name)

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

Использование:
Только чтение.
Описание:
Тип: Строка.
Содержит имя поля. Является уникальным среди всех элементов формы.
Доступность:

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

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

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

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

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

Проверить, что поле действительно размещено в собственной таблице

Конкретный созданный элемент ТоварыКоличество должен быть ребёнком ТаблицаТоваров. Проверка помогает обнаружить ошибочную привязку или размещение поля вне таблицы.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В учебной базе: Файл → Новый → Внешняя обработка. Создайте управляемую форму и назначьте её основной. Дайте обработке имя УчебнаяТаблица.

  2. Не добавляйте вручную реквизит Товары и одноимённые элементы: код создаст их при открытии. Модуль формы для этой задачи должен быть пустым.

  3. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Сохраните отдельную учебную EPF и откройте через Файл → Открыть.

  4. Данные Книга/Ручка создаются в памяти формы. Справочники, документы и регистры вашей конфигурации не читаются и не записываются.

  5. Проверяйте в настольном тонком/толстом или веб-клиенте 8.5.1.1343, не в мобильном приложении. Для каждого урока отдельная учебная форма с пустым модулем.

  6. Изменение учебных строк остаётся только в открытой форме. При её новом открытии снова создаются Книга/3 и Ручка/1. Настройки таблицы не являются правами доступа к данным.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ТаблицаЗначений")));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));

    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "A-01";
    СтрокаТовара.Наименование = "Книга";
    СтрокаТовара.Количество = 3;
    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "B-02";
    СтрокаТовара.Наименование = "Ручка";
    СтрокаТовара.Количество = 1;

    ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
    Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
    Таблица.ПутьКДанным = "Товары";
    Таблица.Заголовок = "Учебные товары";
    Таблица.Шапка = Истина;
    Таблица.АвтоВводНезаполненного = Ложь;
    Таблица.АвтоВводНовойСтроки = Ложь;
    Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
        Колонка.Заголовок = ИмяКолонки;
    КонецЦикла;
    Поле = Элементы.ТоварыКоличество;
    Сообщить(Поле.Имя = "ТоварыКоличество");
    Сообщить(Поле.Родитель = Таблица);
    Сообщить(Поле.Таблица = Таблица);
    Сообщить(Поле.ПутьКДанным = "Товары.Количество");
    Сообщить(ЭтаФорма.Товары.Количество() = 2);
КонецПроцедуры

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

  1. Элемент создан программно с явным родителем ТаблицаТоваров в подготовленном модуле.

  2. Имя относится к UI, ПутьКДанным связывает его с колонкой реквизита.

  3. Родитель проверяет непосредственное размещение; Таблица указывает таблицу, которой принадлежит поле.

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

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

  1. Пять логических проверок Истина.

  2. Ни одна проверка не добавляет товары, не получает ссылку базы и не меняет количество.

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

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

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

  1. Поле вне таблицы не обязано иметь тот же контракт размещения.

  2. Имена UI и реквизитов намеренно различаются. Не находите строки данных через коллекцию элементов формы.

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

Прочитать объект готового HTML и сведения о встроенном браузере

Читаем Документ и строку User-Agent только после ДокументСформирован. Тип внешнего объекта диагностируем, не угадываем конкретный движок браузера.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяHTMLКарточка85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

  2. Не добавляйте вручную УчебныйHTML, УчебныйHTMLГотов, УчебноеHTMLПоле или учебные кнопки: полный модуль создаёт реквизиты, элементы и команды.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте один полный модуль урока на уровне модуля, сохраните собственную EPF и откройте её в учебной базе.

  4. Строковый реквизит УчебныйHTML хранит свою страницу. ПолеФормы имеет ВидПоляФормы.ПолеHTMLДокумента и ПутьКДанным = УчебныйHTML.

  5. Страница собирается из собственных 3 книг по 250. Нет внешних URL, изображений, скриптов, файлов, запросов и записей в базу.

  6. Дождитесь отображения карточки. Обработчик ДокументСформирован назначен программно; в модуле управляемой формы он получает Элемент.

  7. Отдельный флаг готовности не подменяет чтение объекта браузера. Не обращайтесь к Документ при серверном создании или до завершения формирования HTML.

  8. Каждый урок запускайте в отдельной копии формы. Работа в 1С, визуальное отображение и история встроенного браузера не проверены; веб-клиент и мобильный клиент в упражнение не входят.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTML", Новый ОписаниеТипов("Строка")));
    Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTMLГотов", Новый ОписаниеТипов("Булево")));
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    ЭтаФорма.УчебныйHTMLГотов = Ложь;
    Поле = Элементы.Добавить("УчебноеHTMLПоле", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеHTMLДокумента;
    Поле.ПутьКДанным = "УчебныйHTML";
    Поле.УстановитьДействие("ДокументСформирован", "УчебныйДокументСформирован");
    Поле.Вывод = ИспользованиеВывода.Запретить;


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить свою HTML-карточку";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
    ЭтаФорма.УчебныйHTML = СформироватьСобственнуюКарточку();
КонецПроцедуры

&НаКлиенте
Процедура УчебныйДокументСформирован(Элемент)
    УчебныйHTMLГотов = Истина;
    Сообщить("Собственный HTML сформирован в элементе: " + Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Не УчебныйHTMLГотов Тогда
        Сообщить("Собственный HTML ещё формируется; нажмите после появления карточки");
        Возврат;
    КонецЕсли;
    Поле = Элементы.УчебноеHTMLПоле;
    Сообщить(СтрНайти(УчебныйHTML, "Сумма: 750") > 0);
    Сообщить(СтрНайти(УчебныйHTML, "Книга <учебная> & "цена"") > 0);
    ДокументБраузера = Поле.Документ;
    Информация = Поле.ИнформацияПрограммыПросмотра;
    Сообщить(ДокументБраузера <> Неопределено);
    Сообщить(ТипЗнч(Информация) = Тип("Строка"));
    Сообщить("Фактический тип объекта браузера: " + Строка(ТипЗнч(ДокументБраузера)));
    Сообщить("User-Agent встроенного просмотра: " + Информация);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЭкранироватьУчебныйТекст(Текст)
    Результат = СтрЗаменить(Текст, "&", "&amp;");
    Результат = СтрЗаменить(Результат, "<", "&lt;");
    Результат = СтрЗаменить(Результат, ">", "&gt;");
    Результат = СтрЗаменить(Результат, """", "&quot;");
    Возврат Результат;
КонецФункции

&НаСервереБезКонтекста
Функция СформироватьСобственнуюКарточку()
    Название = "Книга <учебная> & ""цена""";
    Количество = 3;
    Цена = 250;
    Сумма = Количество * Цена;
    Если Сумма <> 750 Тогда
        ВызватьИсключение "Нарушен собственный учебный расчёт";
    КонецЕсли;
    Возврат "<!doctype html><html lang=""ru""><head><meta charset=""utf-8""><title>Собственная учебная карточка</title></head>"
        + "<body style=""font-family:Arial,sans-serif;font-size:16px;line-height:1.6;padding:16px""><h1 id=""own-summary"">Учебный расчёт</h1>"
        + "<p id=""own-name"">" + ЭкранироватьУчебныйТекст(Название) + "</p>"
        + "<p><a href=""#own-total"">К собственной сумме</a></p>"
        + "<div style=""min-height:550px""><p>Только собственные данные: 3 книги по 250.</p></div>"
        + "<h2 id=""own-total"">Сумма: " + Строка(Сумма) + "</h2>"
        + "<p><a href=""#own-summary"">К началу собственной карточки</a></p></body></html>";
КонецФункции

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

  1. ПриСозданииНаСервере создаёт элементы и задаёт содержимое, но не пытается читать клиентский объект браузера.

  2. УстановитьДействие связывает ДокументСформирован с обработчиком УчебныйДокументСформирован.

  3. В модуле управляемой формы обработчик принимает Элемент. Это сверено со своим исходником УНФ, а не выведено только из пустых скобок общей страницы события.

  4. После формирования флаг разрешает проверку. Документ и ИнформацияПрограммыПросмотра readonly, поэтому только читаем их.

  5. Не приравниваем User-Agent к версии платформы и не обещаем определённый COM/внешний тип для всех клиентов. Печатаем фактический тип.

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

  1. После формирования ожидаются четыре Истина и две диагностические строки. До готовности кнопка только просит подождать.

  2. Сверьте сообщение события и фактический тип в отладчике. Если User-Agent пуст, сохраните диагностический результат, не придумывая название движка.

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

Клиентский объект просмотра читается в правильный момент и не смешивается со строковым источником страницы.

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

  1. Readonly Документ — не строка УчебныйHTML. В него нельзя записать новую разметку присваиванием.

  2. Объектная модель браузера и доступность её членов различаются между клиентами; этот урок не вызывает сторонние DOM-методы.

  3. Флаг готовности относится к своей странице и событию; после загрузки нового содержимого его нужно сбрасывать снова.

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

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

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

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

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