Используется для доступа к свойствам, методам и событиям формы в целом, а также к коллекции ее элементов управления. Доступ к свойствам, методам формы из ее собственного модуля осуществляется непосредственно, используя их имена (без ссылки на какой-либо объект).
Доступность
Толстый клиент.
Примеры платформы
КлючУникальности = Новый УникальныйИдентификатор;
Форма = Отчеты.КнигаПродаж.ПолучитьФорму(, , КлючУникальности);
Форма.Открыть();Полное описание, параметры и ограничения
Используется для доступа к свойствам, методам и событиям формы в целом, а также к коллекции ее элементов управления. Доступ к свойствам, методам формы из ее собственного модуля осуществляется непосредственно, используя их имена (без ссылки на какой-либо объект).
Практические примеры
Открыть только просмотр нового узла в обычном клиенте
Пример предназначен для толстой обычной формы, не для управляемой формы. Открываем собственный новый узел без записи и запрещаем редактирование в окне.
Где и как запускать
Обработчик команды обычной внешней обработки, толстый клиент в режиме Обычное приложение. Фрагмент вставляется в тело клиентского обработчика, не в серверный общий модуль и не в управляемую форму.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
В отдельной пустой конфигурации Учебная85 создайте Планы обмена → УчебныйОбмен: длина кода 9, тип Строка, наименование длиной 100. Распределённая информационная база выключена; состав плана пустой.
Добавьте реквизит АдресУчебногоУзла: Строка длиной 100, Проверка заполнения = Показывать ошибку. Модуль объекта и подписки должны быть пустыми; не добавляйте отправку сообщений или внешние действия.
Добавьте макет УчебнаяПамятка типа Текстовый документ, одна строка: Этот узел используется только для учебных примеров. История данных для плана не включена. Обновите конфигурацию базы данных.
Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи. УчебныйОбмен не является существующим рабочим обменом КА2 или УТ.
Узел каждый раз новый и периферийный. Существующие узлы и текущий узел базы не меняются. Запись, блокировка и удаление далее выполняются только над своим новым UUID в собственной отменяемой транзакции.
Для этого отдельного GUI-урока используйте толстый клиент в режиме Обычное приложение. Серверный общий модуль из других уроков здесь не подходит.
Конфигуратор → Планы обмена → УчебныйОбмен → Формы: добавьте именно обычную форму объекта УчебнаяФормаУзла с основным реквизитом объекта. Добавьте поле Наименование, связанное с основным реквизитом. Кнопки Записать, ОК и Удалить в этой учебной форме не добавляйте; модуль формы пустой.
Фрагмент поместите в обработчик собственной команды обычной внешней обработки. Не смешивайте его с управляемым клиентским модулем. После запуска осмотрите окно и закройте его штатным крестиком, без записи.
Если Метаданные.ПланыОбмена.Найти("УчебныйОбмен") = Неопределено Тогда
ВызватьИсключение "Сначала создайте собственный учебный план обмена";
КонецЕсли;
Узел = ПланыОбмена.УчебныйОбмен.СоздатьУзел();
Если Узел.ЭтотУзел Тогда
ВызватьИсключение "Нельзя изменять текущий узел информационной базы";
КонецЕсли;
Узел.Наименование = "Просмотр собственного черновика";
Форма = Узел.ПолучитьФорму("УчебнаяФормаУзла", , Новый УникальныйИдентификатор);
Если Форма = Неопределено Тогда
ВызватьИсключение "Не найдена подготовленная обычная форма узла";
КонецЕсли;
Форма.Заголовок = "Учебный узел: только просмотр";
Форма.ТолькоПросмотр = Истина;
Форма.Открыть();
Сообщить(Форма.Открыта());
Сообщить(Форма.ТолькоПросмотр);
Сообщить(Узел.ЭтоНовый());
Сообщить(Узел.Ссылка.Пустая());Разбор по шагам
Создаём только свой новый периферийный узел и задаём учебное имя.
ПолучитьФорму принимает точное имя своей обычной формы и отдельный ключ уникальности, чтобы не переиспользовать чужое окно.
Результат проверяется на Неопределено до обращения к форме.
ТолькоПросмотр и отсутствие команд записи ограничивают редактирование именно этой учебной формы, не права всей ИБ.
Открыть показывает окно. Новый статус и пустая ссылка доказывают, что пример не записал узел.
Как проверить результат
Четыре сообщения Истина.
В обычном толстом клиенте видно собственное имя и заголовок, поле недоступно для редактирования. Эта визуальная проверка выполняется отдельно в учебной базе.
Ожидаемый результат
Получена и открыта своя обычная форма нового узла без сохранения.
На что обратить внимание
В управляемой форме используется другой API; этот фрагмент нельзя туда вставлять без переработки.
ТолькоПросмотр не является серверным разграничением доступа или защитой рабочей базы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Получить текущие данные строки обычного табличного поля
ТекущаяСтрока для таблицы значений — объект строки, не номер 0. Находим колонку количества и проверяем текущую книгу.
Где и как запускать
Модуль новой обычной формы внешней обработки. Только толстый клиент, обычные формы; не серверный модуль и не управляемая форма.
Подготовка
Это обычная форма, не управляемая: используйте толстый клиент с обычными формами в отдельной учебной базе. Создайте новую внешнюю обработку, обычную форму и её реквизит Товары типа ТаблицаЗначений. Рабочие документы и справочники не нужны.
В редакторе формы добавьте табличное поле ТаблицаТоваров, свойство Данные свяжите с реквизитом Товары. Добавьте обычную кнопку УчебнаяКоманда, её действие свяжите с процедурой УчебнаяКоманда. ПриОткрытии свяжите с одноимённым событием формы.
Каждый урок — отдельный полный модуль этой учебной формы. Он заново создаёт в памяти Книгу (3) и Ручку (1), а СоздатьКолонки удаляет прежние колонки только своего табличного поля. Не вставляйте код в рабочую форму с настроенными колонками.
Откройте форму, затем нажмите учебную кнопку. Изменения данных и оформления относятся только к реквизиту внешней обработки в памяти. Здесь нет Записать, обращения к рабочим данным или проверки интерфейса реальной УТ 10.3.
Процедура ПриОткрытии()
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
Книга = Товары.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Книга.Выбран = Ложь;
Ручка = Товары.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
Ручка.Выбран = Ложь;
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Таблица.СоздатьКолонки();
Таблица.АвтоВводНовойСтроки = Ложь;
Если Товары.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались два собственных учебных товара";
КонецЕсли;
Таблица.ТекущаяСтрока = Товары[0];
Колонка = Таблица.Колонки.Найти("Количество");
Если Колонка = Неопределено Тогда
ВызватьИсключение "В своей таблице не найдена колонка количества";
КонецЕсли;
Таблица.ТекущаяКолонка = Колонка;
Таблица.РежимВыбора = Ложь;
Таблица.Подсказка = "Собственная учебная книга и ручка";
КонецПроцедуры
Процедура УчебнаяКоманда(Кнопка)
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Текущая = Таблица.ТекущаяСтрока;
Если Текущая = Неопределено Тогда
Сообщить("Сначала выберите собственную строку");
Возврат;
КонецЕсли;
Данные = Таблица.ДанныеСтроки(Текущая);
Если Данные = Неопределено Тогда
ВызватьИсключение "Не получены данные выбранной учебной строки";
КонецЕсли;
Сообщить(Данные = Таблица.ТекущиеДанные);
Сообщить(Данные.Наименование + ": " + Строка(Данные.Количество));
Сообщить(Таблица.ТекущаяКолонка.Имя = "Количество");
Сообщить(Таблица.ПроверитьСтроку(Текущая));
Сообщить("Способ выделения строки: " + Строка(Таблица.РежимВыделенияСтроки));
КонецПроцедурыРазбор по шагам
СоздатьКолонки формирует колонки по четырём полям собственной таблицы значений.
Колонка Количество ищется и проверяется перед назначением ТекущаяКолонка.
ТекущаяСтрока назначается объектом Товары[0]. Это не переносимая модель для динамического списка: там тип идентификатора может быть другим.
ДанныеСтроки и ТекущиеДанные дают данные текущей строки. До доступа к полям оба случая отсутствия обработаны.
ПроверитьСтроку проверяет соответствие отбору табличного поля, не существование SQL-записи. Отбора в собственной форме нет.
Как проверить результат
Сразу после открытия выбрана Книга: выводится количество 3 и три сравнения Истина.
Выберите Ручку: выводится количество 1. Выделение строки диагностируется, не изменяется присваиванием.
Ожидаемый результат
Проверен доступ к собственной текущей строке и колонке.
На что обратить внимание
РежимВыделенияСтроки только для чтения.
После выбора другой колонки сравнение с Количество может стать Ложь: это изменение состояния интерфейса, не ошибка поиска.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.