Опубликовано: 30.12.2021

Работа с формами

Формы — это основной вид диалога с пользователем. Все справочники, документы, журналы, отчёты и обработки имеют экранные формы. Рассмотрим основные моменты работы с формами.

Внимание! Описанные здесь системные функции ОткрытьФорму() и ОткрытьФормуМодально() относятся к глобальному контексту и могут быть использованы в любом программном модуле. Все же остальные, рассмотренные в данной статье атрибуты и методы, доступны только в контексте Модуля формы.

Открытие формы из программного кода

Открыть программно форму любого документа, справочника, журнала, отчёта позволяет системная функция ОткрытьФорму() (англоязычный синоним — OpenForm()). Функция относятся к глобальному контексту, и может быть использована в любом программном модуле. Её возвращаемым значением будет число 1, если действие выполнено, или 0, если действие не выполнено.

Обобщённый синтаксис функции:

ОткрытьФорму(<Параметр1>, <КонтекстФормы>, <Параметр3>, ... <ПараметрN>)

где

  • <Параметр1> — в зависимости от типа открываемой формы используются различные значения данного параметра, но обычно это описатель формы. Для журналов, отчётов, списков в конце строки описателя формы может быть указан символ «#» (диез) с некоторым идентификатором (например, "Отчет.ИППКалендарь#Проверка"). Идентификатор используется для того, чтобы открыть новое окно или активизировать уже открытое с таким идентификатором. Если идентификатор не задан, то обязательно открывается новое окно. Возможные значения параметра:
    • для формы существующего документа — значение типа "Документ" (после позиционирования);
    • для формы нового документа — строковое выражение, содержащее название, например, "Документ.ХХХХ", где ХХХХ — идентификатор вида документа;
    • для формы журнала документов — строковое выражение с названием, например, "Журнал.ХХХХ.YYYY", где ХХХХ — идентификатор журнала документов; YYYY — идентификатор формы журнала документов;
    • для формы журнала подчинённых документов — строковое выражение, содержащее название ("Журнал.Подчиненные");
    • для формы существующего элемента или группы справочника — значение типа "Справочник" (после позиционирования);
    • для формы нового элемента или группы справочника — строковое выражение, содержащее название, например, "Элемент. ХХХХ", где ХХХХ — идентификатор вида справочника;
    • для формы списка справочника — строковое выражение, содержащее название, например, "Справочник.ХХХХ.YYYY", где ХХХХХ — идентификатор вида справочника, YYYYY — имя выбранной формы списка справочника;
    • для формы отчёта — строковое выражение, содержащее название отчёта, например, "Отчет.ХХХХ", где ХХХХ — идентификатор вида отчёта;
    • для формы обработки — строковое выражение, содержащее название обработки, например, "Обработка.ХХХХ", где ХХХХ — идентификатор вида обработки;
    • для формы внешнего отчёта — строка "Отчет";
    • для формы журнала расчётов — строковое выражение, содержащее название, например, "ЖурналРасчетов.ХХХХ", где ХХХХ — идентификатор вида журнала расчётов;
    • для формы существующего счёта — значение типа "Счет" (после позиционирования);
    • для формы нового счёта — строковое выражение, содержащее название, например, "Счет.ХХХХ", где ХХХХ — идентификатор плана счетов;
    • для формы списка счетов (плана счетов) — строковое выражение, содержащее название, например, "ПланСчетов.ХХХХ.YYYY", где ХХХХ — идентификатор плана счетов; YYYY — идентификатор формы плана счетов;
    • для формы существующей операции — строка "Операция";
    • для формы ввода новой операции — строка "Операция";
    • для формы журнала операций — строковое выражение, содержащее название, например, "ЖурналОпераций.YYYY", где YYYY — идентификатор формы журнала операций;
    • для формы журнала проводок — строковое выражение, содержащее название, например, "ЖурналПроводок.YYYY", где YYYY — идентификатор формы журнала проводок;
    • для формы окна истории значений периодических констант, реквизитов справочников и счетов — строковое выражение — описатель объекта, например, "История.Счет", "История.Справочник.ИдентификаторСправочника.ИдентификаторРеквизита" или "История.Константа.ИдентификаторКонстанты";
  • <КонтекстФормы> — имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данной функции система вернёт в эту переменную контекст открытой формы. С помощью значения этого контекста можно затем произвольно манипулировать открытой формой, пока она открыта. (Когда форма открыта, тип значения данного параметра, возвращаемый функцией ТипЗначения(), равен 100, когда закрыта — 0). Параметр является необязательным;
  • <Параметр3>, … <ПараметрN> — в зависимости от типа открываемой формы используется различный состав и значения этих параметров. Возможные значения:
    • для формы существующего документа — числовое выражение, определяющее режим просмотра. Если значение равно 1, форма будет открыта в режиме только просмотра; если 0 — форма будет открыта в режиме редактирования. Если установить значение −1 (минус единица), то будет использоваться вариант, предусмотренный текущим значением параметра «Режим открытия объектов», установленного пользователем. Если же значение не указано, по умолчанию используется 0;
    • для формы нового документа — выражение типа "Документ", задающее документ-основание (только для открытия формы ввода нового документа в режиме ввода на основании). Параметр является необязательным;
    • для формы журнала документов — параметр отсутствует;
    • для формы журнала подчинённых документов — значение типа "Документ", задающее документ, для которого будут выводиться подчинённые документы;
    • для формы существующего элемента справочника — числовое выражение, определяющее режим просмотра. Если значение равно 1, форма будет открыта в режиме только просмотра; если 0 — форма будет открыта в режиме редактирования. Если установить значение −1 (минус единица), то будет использоваться вариант, предусмотренный текущим значением параметра «Режим открытия объектов», установленного пользователем. Если же значение не указано, по умолчанию используется 0;
    • для формы нового элемента или группы справочника можно указать три дополнительных параметра:
      • <Параметр3> — выражение типа "Справочник" (после позиционирования), задающий родительскую группу для нового элемента или группы справочника. Параметр является необязательным;
      • <Параметр4> — числовое выражение, принимающее значение: 1 — для ввода новой группы; 0 — для ввода нового элемента. Параметр является необязательным. Значение по умолчанию — 0;
      • <Параметр5> — выражение типа "Справочник" (после позиционирования), задающее элемент справочника-владельца для нового элемента или группы подчинённого справочника. Параметр является необязательным;
    • для формы списка справочника — параметр отсутствует;
    • для формы отчёта — параметр отсутствует;
    • для формы обработки — параметр отсутствует;
    • для формы внешнего отчёта — строковое выражение — полное имя файла внешнего отчёта;
    • для формы журнала расчётов — параметр отсутствует;
    • для формы существующего счёта — числовое выражение, определяющее режим просмотра. Если значение равно 1, форма будет открыта в режиме только просмотра; если 0 — форма будет открыта в режиме редактирования. Если установить значение −1 (минус единица), то будет использоваться вариант, предусмотренный текущим значением параметра «Режим открытия объектов», установленного пользователем. Если же значение не указано, по умолчанию используется 0;
    • для формы нового счёта — параметр отсутствует;
    • для формы списка счетов (плана счетов) — параметр отсутствует;
    • для формы существующей операции можно указать четыре дополнительных параметра:
      • <Параметр3> — значение типа "Документ" (после позиционирования), операция которого будет открываться;
      • <Параметр4> — числовое выражение — номер проводки, на которую нужно установить курсор при открытии операции. Параметр является необязательным;
      • <Параметр5> — числовое выражение — номер корреспонденции указанной в <Параметр4> проводки, на которую нужно установить курсор при открытии операции. Параметр является необязательным;
      • <Параметр6> — числовое выражение, определяющее режим просмотра. Если значение равно 1, форма будет открыта в режиме только просмотра; если 0 — форма будет открыта в режиме редактирования. Если установить значение −1 (минус единица), то будет использоваться вариант, предусмотренный текущим значением параметра «Режим открытия объектов», установленного пользователем. Если же значение не указано, по умолчанию используется 0;
    • для формы ввода новой операции — строковое выражение — наименование типовой операции, которую следует использовать при вводе новой операции. Параметр является необязательным. Если значение не задано или пустое, то ввод операции выполняется без использования типовой;
    • для формы журнала операций нужно указать три дополнительных параметра:
      • <Параметр3> — значение типа "Документ" (после позиционирования), операция которого будет использована для первоначального позиционирования;
      • <Параметр4> — номер проводки, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок;
      • <Параметр5> — номер корреспонденции, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок;
    • для формы журнала проводок можно указать три дополнительных параметра:
      • <Параметр3> — значение типа "Документ" (после позиционирования), операция которого будет использована для первоначального позиционирования;
      • <Параметр4> — номер проводки, которая будет использована для первоначального позиционирования. Параметр является необязательным;
      • <Параметр5> — номер корреспонденции, которая будет использована для первоначального позиционирования. Параметр является необязательным;
    • для формы окна истории значений периодических констант, реквизитов справочников и счетов нужно указать два дополнительных параметра:
      • <Параметр3> — элемент справочника, для периодического реквизита которого открывается окно истории значений, или счёт, для которого открывается окно истории значений. Для констант параметр не используется;
      • <Параметр4> — дата, на которую нужно установить курсор при открытии окна. Параметр является необязательным;

Примечание 1: Как я уже сказал выше, допустимо включение в описатель открываемой формы уникального имени открываемой формы через символ «#» с некоторым произвольным идентификатором. В этом случае открываемая форма закрепляется за выбранным объектом и не происходит обновление формы при смене объекта, например при смене текущей строки списка справочника.

Примечание 2: Функцию ОткрытьФорму() нельзя вызывать в «теле» глобального модуля (в части глобального модуля, расположенной после последней процедуры). Для её вызова при старте программы функцию следует разместить в предопределённой системной процедуре ПриНачалеРаботыСистемы().

Примеры открытия различных форм:

ОткрытьФорму("История.Справочник.Сотр.Тариф#Ид01", , ТекущийЭлемент());

ОткрытьФорму(Докум, Конт);

ОткрытьФорму("Документ.РасхНакл");

ОткрытьФорму("Журнал.Продажи.КраткаяФорма");

ОткрытьФорму("Отчет", , "С:\lcv7db\extforms\profit.ert");

Открыть форму модально позволяет системная функция ОткрытьФормуМодально() (англоязычный синоним — OpenFormModal()). Функция относятся к глобальному контексту, и может быть использована в любом программном модуле. Её возвращаемым значением будет число 1, если действие выполнено, или 0, если действие не выполнено.

Синтаксис функции ОткрытьФормуМодально() полностью совпадает с синтаксисом функции ОткрытьФорму() (см. описание выше).

Пример использования:

// Вызываем подчинённый справочник из модуля
// формы элемента справочника-владельца

Если Выбран() = 1 Тогда
   ОткрытьФормуМодально("Элемент.РасчетныеСчета",,,, ТекущийЭлемент());
КонецЕсли;

Атрибуты контекста Модуля формы

Получить доступ к значению командной строки кнопки формы (то есть к строке системных команд в свойствах кнопки, записанных после символа «#») позволяет атрибут СтрокаДействийФормы (англоязычный синоним — StringFormActions). Данный атрибут доступен в процедуре, указанной перед знаком «#» в строке формулы кнопки (см. рис. ниже).

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

Процедура УстКоманд()
   Если НазваниеНабораПрав() = "Продавец" Тогда
      СтрокаДействийФормы = "Записать? Закрыть?";
   ИначеЕсли НазваниеНабораПрав() = "Менеджер" Тогда
      СтрокаДействийФормы = "Записать? Провести? Закрыть?";
   Иначе
      СтрокаДействийФормы = "Закрыть?";
КонецПроцедуры

Строка команд:

Свойства кнопки

Ссылку на объект типа "Форма" предоставляет атрибут Форма (англоязычный синоним — Form). Атрибуты и методы объекта "Форма" позволяют в программном модуле изменять свойства визуального отображения диалога в целом (такие как Заголовок, Закладки и т.п.), а также свойства визуального отображения отдельных элементов диалога.

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

Пример использования:

Форма.ТолькоПросмотр(0);
Форма.КнопкаВыбора.Видимость(0);

Атрибуты объекта "Форма"

Получить ссылку на объект типа "СписокЗначений", содержащий описания закладок текущей формы, позволяет атрибут Закладки (англоязычный синоним — TabCtrl). Данный атрибут предоставляет возможность программно манипулировать порядком и названиями закладок формы. В тексте программного модуля через точку после имени объекта "Форма" можно вызвать атрибут Закладки, а далее через точку можно вызывать методы управления закладками как объектом типа "СписокЗначений".

Пример использования:

Процедура ОбработкаКлиентов()
   Если ФлагФранчайзи = 1 Тогда
      Если Форма.Закладки.НайтиЗначение(2) = 0 Тогда
      Форма.Закладки.ДобавитьЗначение(2, "Поставщики");
      КонецЕсли;
   Иначе
      Позиция = Форма.Закладки.НайтиЗначение(2);
      Если Позиция > 0 Тогда
         Форма.Закладки.УдалитьЗначение(Позиция);
      КонецЕсли;
   КонецЕсли;
   Форма.Закладки.Сортировать();
КонецПроцедуры

Передать в форму значение при её открытии из программного кода позволяет атрибут Параметр (англоязычный синоним — Parameter). Если форма открыта интерактивно или если параметр при программном открытии не передавался, то данный атрибут содержит значение неопределённого типа.

Пример использования:

Параметр = Форма.Параметр;
Если ПустоеЗначение(Параметр) = 0 Тогда
   Если ТипЗначенияСтр(Параметр) = "Справочник" Тогда
      Если Параметр.Вид() = ТипЦен.Вид() Тогда
         Если ПустоеЗначение(ТипЦен) = 1 Тогда
            ТипЦен = Параметр;
         КонецЕсли;
      КонецЕсли;
   ИначеЕсли ТипЗначенияСтр(Параметр) = "Дата" Тогда
      ИспользоватьДату(Параметр, 1);
   КонецЕсли;
КонецЕсли;

Получить ссылку на элемент диалога позволяет атрибут <ЭлементДиалога>. В тексте программного модуля в качестве названия данного атрибута подставляется идентификатор конкретного элемента, существующего в диалоговом окне формы.

Элементы диалога — это объекты специального агрегатного типа. В тексте программного модуля через точку после имени объекта "Форма" можно вызвать атрибут <ЭлементДиалога>, а далее через точку можно вызывать методы управления их свойствами (Цвет, Видимость, Доступность и т.п.).

Пример использования:

// В форме диалога существуют элементы
// НазвФирмы, ИнформПоле, Название.
// Изменяем свойства этих элементов диалога

Форма.НазвФирмы.Доступность(0);
Форма.ИнформПоле.Видимость(0);
Форма.Название.Цвет(255, 0, 0);

Методы объекта "Форма"

Установить режим использования закладок в форме позволяет метод ИспользоватьЗакладки() (англоязычный синоним — TabCtrlState()). Возвращаемым значением метода является текущее значение режима использования закладок формы на момент до исполнения метода.

Синтаксис:

ИспользоватьЗакладки(<Флаг>)

где <Флаг> — числовое выражение, определяющее режим использования закладок в форме. Возможные значения: 1 — включить закладки в форме; 0 — выключить закладки в форме. Параметр является необязательным и отсутствует, когда метод используется для получения текущего режима.

Пример использования:

Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1, "Общие сведения");
Форма.Закладки.ДобавитьЗначение(2, "Начисление зарплаты");
Форма.Закладки.ДобавитьЗначение(3, "Налоги и отчисления");
ВыборЗакладки(,1);

Установить режим отображения слоя в форме позволяет метод ИспользоватьСлой() (англоязычный синоним — UseLayer()).

Синтаксис:

ИспользоватьСлой(<ИмяСлоя>, <Режим>)

где

  • <ИмяСлоя> — строковое выражение — название слоя формы как оно задано в Конфигураторе. Допускается указывать сразу несколько слоёв, перечисляя их через запятую;
  • <Режим> — числовое выражение, определяющее режим показа слоя: 0 — скрыть слой; 1 — показать слой; 2 — показать указанный слой и скрыть все остальные. Параметр является необязательным. Значение по умолчанию — 2.

Пример использования:

Процедура ПриВыбореЗакладки(НомЗакл, ЗначЗакл)
   Если НомЗакл = 1 Тогда
      Форма.ИспользоватьСлой("Основной, Кнопки", 2);
   ИначеЕсли НомЗакл = 2 Тогда
      Форма.ИспользоватьСлой("ИП, Кнопки", 2);
   КонецЕсли;
КонецПроцедуры   // ПриВыбореЗакладки()

Назначить одну из кнопок формы кнопкой «по умолчанию» позволяет метод КнопкаПоУмолчанию() (англоязычный синоним — DefButton()). Для кнопки «по умолчанию» нажатие комбинации клавиш Ctrl+Enter равнозначно щелчку мышью по этой кнопке.

Синтаксис:

КнопкаПоУмолчанию(<ИдентификаторКнопки>)

где <ИдентификаторКнопки> — строковое выражение — идентификатор активизируемой кнопки.

Пример использования:

Процедура ПриОткрытии()
   Форма.КнопкаПоУмолчанию("ОК");
КонецПроцедуры

Получить идентификатор активного элемента диалога позволяет метод АктивныйЭлемент() (англоязычный синоним — ActiveControl()). Параметры у метода отсутствуют.

Пример использования:

ИмяАктивногоЭлемента = Форма.АктивныйЭлемент();

Получить значение реквизита по идентификатору позволяет метод ПолучитьАтрибут() (англоязычный синоним — GetAttrib()). Возвращаемым значением метода будет значение указанного реквизита.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

где <ИмяРеквизита> — строковое выражение, содержащее имя реквизита, как оно задано в Конфигураторе.

Пример использования:

ЦенаТов = Форма.ПолучитьАтрибут("ЦенаРозн");

Получить идентификатор текущей колонки многострочной части диалога позволяет метод ТекущаяКолонка() (англоязычный синоним — CurrentColumn()). Параметры у метода отсутствуют.

Пример использования:

ИмяТекущейКолонки = Форма.ТекущаяКолонка();

Включить/отключить обработку выбора строки в форме списка позволяет метод ОбработкаВыбораСтроки() (англоязычный синоним — ProcessSelectLine()). Доступ к данному методу возможен только в контексте Модуля формы списка.

Синтаксис:

ОбработкаВыбораСтроки(<Флаг>)

где <Флаг> — числовое выражение, определяющее режим. Возможные значения: 1 — включить обработку выбора предопределённой процедурой ПриВыбореСтроки(); 0 — выключить обработку выбора предопределённой процедурой.

Пример использования:

Процедура ПриОткрытии() // предопределенная процедура
   Форма.ОбработкаВыбораСтроки(1);
КонецПроцедуры   // ПриОткрытии()

Осуществить выбор в форме, открытой для подбора или выбора значения, позволяет метод ВыполнитьВыбор() (англоязычный синоним — MakeChoise()). Метод предназначен, прежде всего, для организации подбора из формы отчёта. Его действие аналогично интерактивному двойному щелчку в подборе.

Синтаксис:

ВыполнитьВыбор(<Значение>)

где <Значение> — значение, которое выбирается в форме, открытой для подбора или выбора значения.

Пример использования:

// осуществим выбор в форме журнала документов
Форма.ВыполнитьВыбор(ТекущийДокумент);

Определить установленный для формы режим выбора позволяет метод РежимВыбора() (англоязычный синоним — ChoiseMode()). Параметры у метода отсутствуют. Возвращаемым значением метода является число: 0 — если форма открыта не для выбора; 1 — если форма открыта для выбора одного значения; 2 — если форма открыта для выбора нескольких значений.

Пример использования:

РежимРаботыФормы = Форма.РежимВыбора();

Управлять видимостью панели инструментов окна формы позволяет метод ПанельИнструментов() (англоязычный синоним — ToolBar()).

Синтаксис:

ПанельИнструментов(<Режим>)

где <Режим> — числовое выражение, содержащее значение режима видимости панели инструментов. Возможные значения: 1 — показывать панель инструментов; 0 — не показывать панель инструментов. Параметр является необязательным и отсутствует, когда метод используется для получения текущего режима.

Пример использования:

Форма.ПанельИнструментов(0);

Установить новый заголовок окну формы позволяет метод Заголовок() (англоязычный синоним — Caption()). Возвращаемым значением метода будет текущий заголовок окна формы, установленный ранее этим методом.

Синтаксис:

Заголовок(<Название>, <Режим>)

где

  • <Название> — строковое выражение — новый заголовок окна формы;
  • <Режим> — числовое выражение, определяющее режим показа заголовка: 0 — выводит заданный заголовок вместо стандартного заголовка окна; 1 — выводит заданный заголовок вместе со стандартным заголовком окна.

Пример использования:

Форма.Заголовок("Накладная №" + Док.НомерДок, 0);

Выполнить обновление окна формы позволяет метод Обновить() (англоязычный синоним — Refresh()). Кроме того, этот метод позволяет программно установить флаг модифицированности формы. Данный метод имеет смысл вызывать, если через контекст формы (извне, из другого программного модуля) были произведены изменения реквизитов формы.

Синтаксис:

Обновить(<Флаг>)

где <Флаг> — числовое выражение. Возможные значения: 1 — установить флаг модифицированности (признак изменения реквизитов текущей формы справочника или документа); 0 — не устанавливать флаг модифицированности.

Пример использования:

Если ТипЗначения(КонтекстФормыПодбора) = 100 Тогда
   КонтекстФормыПодбора.Форма.Обновить();
КонецЕсли;

Установить режим редактирования текущей формы позволяет метод ТолькоПросмотр() (англоязычный синоним — ReadOnly()). Возвращаемым значением метода является текущее числовое значение режима редактирования формы на момент до исполнения метода.

Синтаксис:

ТолькоПросмотр(<Режим>)

где <Режим> — числовое выражение, содержащее значение режима редактирования формы: 0 — разрешено редактирование элементов формы; 1 — запрещено редактирование. Параметр является необязательным и отсутствует, когда метод используется для получения текущего режима.

Пример использования:

Форма.ТолькоПросмотр(0);

Определить режим работы формы позволяет метод МодальныйРежим() (англоязычный синоним — ModalMode()). Параметры у метода отсутствуют. Возвращаемым значением метода будет число 0, если форма работает в немодальном режиме, или 1, если форма работает в модальном режиме.

Пример использования:

РежимРаботыФормы = Форма.МодальныйРежим();

Закрыть форму позволяет метод Закрыть() (англоязычный синоним — Close()).

Синтаксис метода:

Закрыть(<ЗапросОСохранении>)

где <ЗапросОСохранении> — необязательный параметр. Число: 0 — закрыть форму без вопросов; 1 — если документ, счёт, элемент справочника изменён, то будет запрос о сохранении изменений. Значение по умолчанию — 1.

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

Пример использования:

Форма.Закрыть();

Методы элементов диалога

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

Установить режим отображения выбранного элемента формы или колонки многострочной части формы позволяет метод Видимость() (англоязычный синоним — Visible()). Возвращаемым значением метода является текущее числовое значение режима видимости элемента на момент до исполнения метода.

Синтаксис:

Видимость(<Режим>)

где <Режим> — числовое выражение, содержащее значение режима отображения элемента формы: 0 — элемент диалога не отображается; 1 — элемент диалога отображается. Параметр является необязательным и отсутствует, когда метод используется для получения текущего режима.

Пример использования:

Форма.ИнформПоле.Видимость(0);

Установить режим доступности выбранного элемента формы позволяет метод Доступность() (англоязычный синоним — Enable()). Возвращаемым значением метода является текущее числовое значение режима доступности элемента на момент до исполнения метода.

Синтаксис:

Доступность(<Режим>)

где <Режим> — числовое выражение, содержащее значение режима доступности элемента формы: 0 — запрещено редактирование элемента; 1 — разрешено редактирование элемента. Параметр является необязательным и отсутствует, когда метод используется для получения текущего режима.

Пример использования:

Форма.НазваниеФирмы.Доступность(0);

Установить возможность редактирования значения непосредственно в элементе диалога для полей ввода типа "Число", "Строка", "Дата", "Счет" позволяет метод Редактирование() (англоязычный синоним — EnableEdit()).

Синтаксис:

Редактирование(<Режим>)

где <Режим> — числовое выражение, содержащее значение режима редактирования элемента формы: 0 — значение не редактируется, но может выбираться кнопкой выбора; 1 — значение элемента редактируется как обычно.

Примечание: Отличие от метода Доступность() от метода Редактирование() состоит в том, что метод Доступность() отключает и кнопку выбора.

Пример использования:

Форма.КолонкаЦены.Редактирование(1);

Установить режим отображения цвета выбранного элемента формы позволяет метод Цвет() (англоязычный синоним — Color()). Возвращаемым значением метода является текущее числовое значение RGB-цвета элемента формы на момент до исполнения метода.

Синтаксис 1:

Цвет(<Цвет>)

где <Цвет> — числовое выражение, значение которого задает RGB-цвет. Допустимые значения от 0 до 16777215. Значение −1 (минус единица) задаёт цвет, установленный для всей формы по умолчанию. Параметр является необязательным и не используется, когда метод используется для получения текущего числового значения RGB-цвета элемента формы.

Синтаксис 2:

Цвет(<R>, <G>, <B>)

где

  • <R> — числовое выражение, значение которого задаёт красную компоненту цвета. Допустимые значения от 0 до 255;
  • <G> — числовое выражение, значение которого задаёт зелёную компоненту цвета. Допустимые значения от 0 до 255;
  • <B> — числовое выражение, значение которого задаёт синюю компоненту цвета. Допустимые значения от 0 до 255.

Пример использования:

Процедура ОбработкаНаименования()
   Если (Наименование = "") Тогда
      Форма.Название.Цвет(255, 0, 0);
   Иначе
      Форма.Название.Цвет(-1);
   КонецЕсли
КонецПроцедуры

Установить заголовок колонки многострочной части формы, копки, рамки группы, текста, флажка, переключателя позволяет метод Заголовок() (англоязычный синоним — Caption()). Возвращаемым значением метода является текущий заголовок элемента диалога.

Синтаксис:

Заголовок(<Название>)

где <Название> — строковое выражение — новый заголовок элемента формы.

Пример использования:

Форма.КолонкаЦены.Заголовок("Цена");

Установить тип для элемента диалога, которому в Конфигураторе назначен тип «Неопределенный», позволяет метод УстановитьТип() (англоязычный синоним — AssignType()).

Синтаксис:

УстановитьТип(<Выражение>)

где <Выражение> — выражение, тип значения которого будет присвоен элементу диалога.

Пример использования:

Форма.ВыбЗнач.УстановитьТип(Товар);

Назначить тип для элемента диалога, которому в Конфигураторе назначен тип «Неопределенный», позволяет метод НазначитьТип() (англоязычный синоним — AssignType()).

Синтаксис:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

где

  • <ИмяТипа> — строковое выражение, содержащее название типа данных, которое назначается элементу диалога. Например: "Строка", "Число", "Дата", "Справочник.Товары", "Документ.РасходнаяНакладная" и т.п.;
  • <Длина> — числовое выражение — длина поля представления данных. Параметр является необязательным. Имеет смысл только при задании числового или строкового типа;
  • <Точность> — числовое выражение — число знаков числа после десятичной точки. Параметр является необязательным. Имеет смысл только при задании числового типа.

Пример использования:

Форма.ВыбКолич.НазначитьТип("Число", 15, 2);
Форма.ВыбДата.НазначитьТип("Дата");
Форма.ВыбТовар.НазначитьТип("Справочник.Товары");
Форма.ВыбДокум.НазначитьТип("Документ");

Примечание: Для установки конкретного вида значениям типа «Документ неопределённого вида», «Справочник неопределённого вида», «Счёт неопределённого вида» предназначена системная процедура НазначитьВид() (англ. синоним — SetKind()). Обычно эта процедура используется для реквизитов форм в сочетании с методом элемента формы НеИзменятьВид(). Это позволяет регулировать программно собственно вид, а само значение предоставить выбирать пользователю интерактивно.

Синтаксис процедуры:

НазначитьВид(<3начение>, <Вид>)

где

  • <3начение> — значение типа «Документ/Справочник/Счёт неопределённого вида» — обычно реквизит документа, справочника или диалога формы;
  • <Вид> — строковое значение. Вид может быть задан строкой, содержащей идентификатор конкретного справочника, документа или плана счетов. Вид также может быть задан видом субконто, который имеет тип соответственно конкретного справочника, документа или счёта.

Пример использования:

// Реквизиту документа "Контрагент" типа "Справочник
// неопределенного вида", в зависимости от значений
// других реквизитов устанавливаем вид "Организации"
// или "Сотрудники"

Процедура ВводНаОсновании(ДокОсн)
   Если ДокОсн.Вид() = "Счет" Тогда
      НазначитьВид(Контрагент, "Организации");
   Иначе
      НазначитВид(Контрагент, "Сотрудники");
   КонецЕсли;
   Форма.Контрагент.НеИзменятьВид(1);
КонецПроцедуры

Запретить пользователю при выборе значения измененять вида значения реквизита позволяет метод НеИзменятьВид() (англоязычный синоним — FixKind()). Он применяется для реквизитов диалога формы, имеющих тип справочника, документа или счёта неопределённого вида. Пример использования метода приведён выше.

Синтаксис метода:

НеИзменятьВид(<Признак>)

где <Признак> — числовое выражение — признак запрета изменения вида. Может принимать значения: 0 — разрешить изменение вида при выборе значения; 1 — запретить изменение вида при выборе значения.

Установить посимвольную маску ввода для элементов диалога «Поле ввода» позволяет метод Маска() (англоязычный синоним — Mask()). Возвращаемым значением метода является строковое значение — текущая маска интерактивного ввода для строкового реквизита на момент до исполнения метода.

Синтаксис метода:

Маска(<СтрокаМаски>)

где <СтрокаМаски> — строковое выражение — посимвольная маска интерактивного ввода для строкового реквизита. В параметре допустимы следующие символы:

  • ! — введённый символ преобразуется в верхний регистр;
  • 9 — произвольный символ цифры;
  • # — произвольный символ цифры или символ «−» (знак минус) или символ «+» (знак плюс) или пробел;
  • N — любые буквы или цифры;
  • Х — любой произвольный символ;
  • @ — любые буквы или цифры в верхнем регистре.

Пример:

Форма.Телефон.Маска("999-99-99");

Примечание: Действие метода аналогично установке соответствующего свойства реквизита диалога в Конфигураторе:

Свойства текстового поля

Разрешить/запретить выбор групп для элемента диалога типа "Справочник" позволяет метод ВыборГруппы() (англоязычный синоним — SelectGroup()). По умолчанию выбор элементов справочников для реквизитов в формах документов, журналов и справочников установлен без возможности выбора групп, а в формах отчётов — с возможностью выбора групп. Поэтому реально имеет смысл применять данный метод только в том случае, если надо изменить режим выбора. Возвращаемым значением метода является текущее числовое значение режима выбора групп для элемента диалога на момент до исполнения метода.

Синтаксис метода:

ВыборГруппы(<Режим>)

где <Режим> — числовое выражение. Возможные значения: 1 — выбирать группы; 0 — не выбирать группы. Параметр является необязательным. Значение по умолчанию – 1.

Пример:

Форма.Статус.ВыборГруппы(1);

Изменить режим выполнения формулы выбранного поля табличной части документа позволяет метод ВыполнятьФормулуТолькоПриИзменении() (англоязычный синоним — ProcessFormulaOnlyWhenChanged()).

Синтаксис метода:

ВыполнятьФормулуТолькоПриИзменении(<Режим>)

где <Режим> — числовое выражение. Возможные значения: 1 — устанавливает режим, при котором в табличной части документа формула вызывается только при изменении значения поля, а не при переходе между полями; 0 — устанавливает режим, при котором в табличной части документа формула вызывается при изменении значения поля и при переходе между полями.

Пример:

Процедура ПриОткрытии()
   Форма.Цена.ВыполнятьФормулуТолькоПриИзменении(1);
КонецПроцедуры

Методы контекста Модуля формы

Выполнить открытие формы для подбора объектов (для единовременного выбора нескольких элементов, документов или счетов) позволяет метод ОткрытьПодбор() (англоязычный синоним — OpenPermanentChoice()). Метод доступен только в контексте Модуля формы. При открытии подбора по журналу подчинённых документов, то есть когда первый параметр метода имеет значение "Журнал.Подчиненные", документ-владелец, по которому следует построить журнал подчинённых документов, передаётся после вызова метода через полученный контекст формы.

Синтаксис метода:

ОткрытьПодбор(<Объект>, <ИмяФормы>, <Контекст>, <ФлагМнВыбора>, <ТекЗнач>)

где

  • <Объект> — строковое выражение — имя объекта агрегатного типа, форму списка которого требуется открыть для подбора. Можно указать справочник, журнал, документ (при указании документа открывается форма журнала для указанного документа). Имя объекта задаётся в следующем виде:
    • "Справочник.ХХХХ", где ХХХХ — идентификатор справочника;
    • "Документ.ХХХХ", где ХХХХ — идентификатор документа;
    • "Журнал.Подчиненные";
    • "ЖурналОпераций.ХХХХ", где ХХХХ — форма журнала операций.
    • "ПланСчетов.ХХХХ", где ХХХХ — идентификатор плана счетов;
  • <ИмяФормы> — строковое выражение — имя формы подбора, как она задана в Конфигураторе. Поскольку и справочники и журналы могут иметь несколько форм представления, то этим параметром можно конкретно указать, какая из форм представления объекта вызывается для подбора значений;
  • <Контекст> — имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернёт в данную переменную контекст формы подбора. С помощью значения этого контекста можно затем произвольно манипулировать формой подбора, пока она открыта. (Когда форма открыта, тип значения данного параметра, возвращаемый функцией ТипЗначения(), равен 100, когда закрыта — 0). Параметр является необязательным;
  • <ФлагМнВыбора> — числовое выражение — флаг множественного выбора. Возможные значения: 1 — выбор нескольких значений; 0 — выбор одного значения, после чего окно закрывается. Параметр является необязательным. Значение по умолчанию — 1;
  • <ТекЗнач> — необязательный параметр. В случае выбора из списка, в него можно передать значение, на которое следует изначально установить курсор при открытии формы подбора.

Пример использования:

Процедура Подбор()
   ГруппаДляВыбора = ТекущийЭлемент();
   Если ГруппаДляВыбора.ЭтоГруппа() = 0 Тогда
      ГруппаДляВыбора = ГруппаДляВыбора.Родитель;
   КонецЕсли;
   ОткрытьПодбор("Справочник.Товары", "ДляПодбора", КонтПодб, 0);
   // установим в форме подбора реквизит "ГруппаВыбора"
   // используя полученный контекст формы подбора
   КонтПодб.ГруппаВыбора.ВыборГруппы(1);
   КонтПодб.ГруппаВыбора = ГруппаДляВыбора;
   КонтПодб.Обновить(0);
   УстановитьЗначениеВПодборе("ГруппаВыбора", ГруппаДляВыбора);
КонецПроцедуры

Установить значение некоторого реквизита диалога в окне, открытом для подбора значения, позволяет метод УстановитьЗначениеВПодборе() (англоязычный синоним — SetValueInPermanentChoice()). Метод доступен только в контексте Модуля формы и используется для того, чтобы в окне диалога, открытом для подбора значения, установить значение некоторого реквизита диалога (он может быть затем использован для отображения некоторой информации в информационных элементах диалога подбора значения).

Данный метод следует использовать только после вызова метода ОткрытьПодбор(). Пример использования метода приведён выше.

Синтаксис метода:

УстановитьЗначениеВПодборе(<ИмяРеквизита>, <Значение>)

где

  • <ИмяРеквизита> — строковое выражение, содержащее имя реквизита формы подбора значения;
  • <Значение> — выражение, значение которого заносится в реквизит.

Получить в возвращаемом значении результат выражения, вычисленного в контексте формы подбора (то есть получить любые данные из той формы, например, выбранный элемент списка справочника подбора значения) позволяет метод ПолучитьЗначениеИзПодбора() (англоязычный синоним — GetValueFromPermanentChoice()). Использовать его следует только после вызова метода ОткрытьПодбор().

Синтаксис метода:

ПолучитьЗначениеИзПодбора(<Выражение>)

где <Выражение> — строковое выражение, значение которого выражения вычисляется в контексте открытой формы подбора.

Пример использования:

Процедура ОбработкаПодбора(Выб, КонтФормы)
   Кол = 0;
   Если ВвестиЧисло(Кол, "Введите количество", 10, 0) = 1 Тогда
      НоваяСтрока();
      ТипPaб = Выб;
      Количество = Кол;
      АктивизироватьСтроку();
      Активизировать("Стоимость", 0);
   КонецЕсли;
   // тип выполненной работы
   ТР = ПолучитьЗначениеИзПодбора("Наименование");
КонецПроцедуры

Установить курсор для редактирования нужного элемента диалога позволяет метод Активизировать() (англоязычный синоним — Activate()). Обычно он используется, например, когда необходимо установить курсор на реквизит многострочной части документа после выхода из предопределённой процедуры ОбработкаПодбора() (см. пример выше). Метод может быть также вызван из другого (внешнего) модуля, если в нём известен контекст формы, в которой нужно активизировать элемента диалога.

Синтаксис метода:

Активизировать(<ИмяРеквизита>, <Режим>)

где

  • <ИмяРеквизита> — строковое выражение, содержащее имя элемента диалога, который должен быть активизирован. Параметр является необязательным. Пустое имя элемента диалога используется для активизации всей формы;
  • <Режим> — необязательный параметр, имеющий смысл только для реквизитов многострочной части формы документа. Представляет собой числовое выражение со следующими возможными значениями: 1 — войти в режим редактирования; 0 — не входить в режим редактирования. Значение по умолчанию — 1.

Установить курсор на нужной строке списка диалога, например, документ в форме журнала или элемент в форме списка справочника, или запись расчёта в форме журнала расчётов позволяет метод АктивизироватьОбъект() (англоязычный синоним — ActivateObj()).

Синтаксис метода:

АктивизироватьОбъект(<Объект>)

где <Объект> — выражение, которое может содержать значение элемента справочника или документ или запись журнала расчётов (в зависимости от типа модуля формы, в котором должен быть активизирован элемент диалога).

Пример использования:

АктивизироватьОбъект(ВыбДокумент);

Предопределенные процедуры Модуля формы

Как я уже говорил ранее, предопределённые процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределённых процедур на исполнение производится в системе «1С:Предприятие» неявно при возникновении соответствующего события.

Описанные в данном разделе системные предопределённые процедуры должны располагаться только в Модулях форм. К Модулям форм относятся практически все программные модули (исключение составляют Глобальный модуль, Модуль документа и Модуль вида расчёта).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

При интерактивном открытии формы системой «1С:Предприятие» производится вызов предопределённой процедуры ПриОткрытии() (англоязычный синоним — OnOpen()). Параметры у этой процедуры отсутствуют. Если в данной предопределённой процедуре установить статус возврата в 0 (например, если данному пользователю запрещено просматривать форму объекта), открытие формы не будет выполнено.

Пример использования:

Процедура ПриОткрытии()
   ПриЗаписиПерепроводить(1);
КонецПроцедуры

Примечание: В формах отчётов и обработок используется несколько иной синтаксис процедуры ПриОткрытии() (см. ниже раздел «Особенности работы с формами отчётов (обработок)»).

При повторном открытии формы, то есть в случае, когда открывается уже открытая ранее форма, системой «1С:Предприятие» производится вызов предопределённой процедуры ПриПовторномОткрытии() (англоязычный синоним — OnReopen()). Параметры у этой процедуры отсутствуют. Если в данной предопределённой процедуре установить статус возврата в 0, открытие формы не будет выполнено.

Пример использования:

Процедура ПриПовторномОткрытии()
   ПриЗаписиПерепроводить(1);
КонецПроцедуры

При интерактивном закрытии формы системой «1С:Предприятие» производится вызов предопределённой процедуры ПриЗакрытии() (англоязычный синоним — OnClose()). Параметры у этой процедуры отсутствуют. Если в данной предопределённой процедуре установить статус возврата в 0 (например, если неверно или не полностью заполнены реквизиты объекта), закрытие формы не будет выполнено.

Пример использования:

Процедура ПриЗакрытии()
   Если ПоСчетуФактуре.Выбран() = 0 Тогда
      Предупреждение("Укажите Счет-Фактуру", 4);
      СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

Примечание: Начальное значение статуса возврата любой предопределённой процедуры равно 1. Оно устанавливается системой при вызове процедуры.

В момент интерактивного выбора пользователем закладки в форме системой «1С:Предприятие» производится вызов предопределённой процедуры ПриВыбореЗакладки() (англоязычный синоним — OnTabCtrlPosChanged()). При вызове процедуры, система подставляет фактические значения параметров, характеризующие выбранную закладку. Параметры используется в теле процедуры для обработки передаваемого системой события смены закладки формы.

Синтаксис процедуры:

Процедура ПриВыбореЗакладки(<НомерЗакладки>, <Значение3акладки>)
    . . .
КонецПроцедуры

где

  • <НомерЗакладки> — числовое значение — номер выбранной закладки формы;
  • <Значение3акладки> — значение выбранной закладки формы.

Пример использования:

Процедура ЗакладкаОбщиеВидимость(ФлагВидимости)
   Форма.Название.Видимость(ФлагВидимости);
   Форма.Наименование.Видимость(ФлагВидимости);
   Форма.Код.Видимость(ФлагВидимости);
   Форма.Статус.Видимость(ФлагВидимости);
   Форма.Адрес.Видимость(ФлагВидимости);
   Форма.Телефон.Видимость(ФлагВидимости);
   Активизировать("Наименование", 0);
КонецПроцедуры

Процедура ЗакладкаЗаметкиВидимость(ФлагВидимости)
   Форма.Заметки.Видимость(ФлагВидимости);
   Активизировать("Заметки", 0);
КонецПроцедуры

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
   Если НомерЗакладки = 1 Тогда
      ЗакладкаЗаметкиВидимость(0);
      ЗакладкаОбщиеВидимость(1);
   ИначеЕсли НомерЗакладки = 2 Тогда
      ЗакладкаОбщиеВидимость(0);
      ЗакладкаЗаметкиВидимость(1);
   КонецЕсли;
КонецПроцедуры

В момент, когда пользователь интерактивно инициировал выбор значения (выбор может быть интерактивно инициирован в немодальном режиме при помощи элемента диалога с кнопкой выбора или клавишей F4) системой «1С:Предприятие» производится вызов предопределённой процедуры ПриНачалеВыбораЗначения() (англоязычный синоним — OnStartValueChoice()). При вызове процедуры, система подставляет фактические значения параметров, характеризующие элемент диалога и флаг стандартной обработки.

Синтаксис процедуры:

Процедура ПриНачалеВыбораЗначения(<ИдентЭлементаДиалога>, <Флаг>)
    . . .
КонецПроцедуры

где

  • <ИдентЭлементаДиалога> — строковое значение — идентификатор элемента диалога формы;
  • <Флаг> — флаг стандартной обработки. Изначально, при вызове процедуры равен 1. Если в теле процедуры значение этого параметра поменять на 0, то стандартный процесс выбора значения не будет происходить.

Пример использования:

Процедура ПриНачалеВыбораЗначения(Элемент, Флаг)
   Перем КонтПодб;
   Если Элемент = "ИдВыбКлиент" Тогда
      Флаг = 0;
      ОткрытьПодбор("Справочник.Клиенты", "ДляПодбора", КонтПодб);
   КонецЕсли;
КонецПроцедуры

Примечание: В теле процедуры ПриНачалеВыбораЗначения() методы ОткрытьФорму() и ОткрытьПодбор() работают для выбора.

После нажатия кнопки «Выбрать» в форме подбора значения системой «1С:Предприятие» производится вызов предопределённой процедуры ОбработкаПодбора() (англоязычный синоним — ProcessPermanentChoice()). В этот момент система подставляет фактическое значение первого параметра метода. Формальный параметр используется в теле процедуры для приёма и обработки передаваемого системой значения элемента подбора.

Синтаксис процедуры:

Процедура ОбработкаПодбора(<ЗначениеПод6ора>, <КонтФормы>)
    . . .
КонецПроцедуры

где

  • <ЗначениеПод6ора> — элемент справочника или документ, передаваемый для обработки;
  • <КонтФормы> — контекст той формы, из которой шёл подбор.

Пример использования:

Процедура ОбработкаПодбора(Знач, КонтФормы)
   НоваяСтрока();
   Товар = Знач;
   Знач.ИспользоватьДату(ДатаДок);
   Цена = Знач.Цена;
   Сообщить(Знач.Цена);
   Сообщить(Знач.МОЛ.Наименование);
   АктивизироватьСтроку();
КонецПроцедуры

После выбора значения в форме выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с кнопкой выбора) системой «1С:Предприятие» производится вызов предопределённой процедуры ОбработкаВыбораЗначения() (англоязычный синоним — ProcessPermanentChoice()). В момент выбора система автоматически подставляет фактическое значение первого параметра метода. Формальный параметр используется в теле процедуры для приёма и обработки передаваемого системой выбранного значения.

Синтаксис процедуры:

Процедура ОбработкаВыбораЗначения(<ВыбЗнач>, <ИдЭлементаДиалога>, <Флаг>)
    . . .
КонецПроцедуры

где

  • <ВыбЗнач> — выбранный элемент справочника, документ или иной объект, передаваемый для обработки;
  • <ИдЭлементаДиалога> — идентификатор элемента диалога, которым инициализирован выбор значения;
  • <Флаг> — флаг стандартной обработки, установка которого в теле процедуры в 0 (ноль) приведёт к отмене стандартного присвоения значения.

Пример использования:

//*****************************************************
// Предопределенная процедура

Процедура ОбработкаВыбораЗначения(ВыбЗначение, ЭлементДиалога, Флаг)
	
   Если ЭлементДиалога = "ДокументОтгрузки" Тогда
      Если Вопрос("Корректировка отгрузки будет заполнена на основании
                  |выбранного документа. Продолжить?", "Да+Нет")="Да" Тогда
         Если Заполнить(ВыбЗначение) = 1 Тогда
            УправлениеДиалогом();
         Иначе
            Флаг = 0;
         КонецЕсли;
      Иначе
         Флаг = 0;
      КонецЕсли;
   КонецЕсли;

КонецПроцедуры   // ОбработкаВыбораЗначения()

При интерактивном выборе строки списка в форме списка справочника, журнала документов, счетов, журнала операций, журнала проводок системой «1С:Предприятие» производится вызов предопределённой процедуры ПриВыбореСтроки() (англоязычный синоним — OnSelectLine()). Располагаться данная процедура может в Модуле формы списка справочника, журнала, счетов, журнала операций и журнала проводок. Параметров у неё нет. Если в процедуре установить статус возврата в 0 (например, если данному пользователю нельзя вводить новые строки списка справочника), то строка списка не будет выбрана.

Примечание: Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) данной предопределённой процедурой включается при помощи метода ОбработкаВыбораСтроки() объекта "Форма".

Пример использования:

Процедура ПриВыбореСтроки()
   Если НазваниеНабораПрав() = "Продавец" Тогда
      Предупреждение("У вас нет права просмотра строки!", 2);
      СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

Особенности работы с формами отчётов (обработок)

При работе с формами отчётов (обработок) кроме атрибутов, методов и предопределённых процедур, перечисленных выше, используются также специальные атрибуты, методы и предопределённые процедуры Модуля формы отчёта (обработки).

Атрибуты контекста Модуля формы отчёта (обработки)

В том случае, если табличный документ размещается непосредственно в форме, получить ссылку на объект типа "Таблица" позволяет доступный только для чтения атрибут Таблица (англоязычный синоним — Table). Доступ к данному атрибуту возможен только в контексте Модуля формы отчета или обработки.

Пример использования:

Таблица.ИсходнаяТаблица("price");
Таблица.Вывести();
Таблица.ТолькоПросмотр(0);
Таблица.Показать("Каталог", "Catalog.mxl");
Таблица.ТолькоПросмотр(1);

В тексте программного модуля через точку после имени атрибута Таблица можно записывать адреса областей таблицы, а далее через точку можно вызывать методы управления свойствами этих областей. Например:

ВыбОбласть = Таблица.Область("R8C4");
ВыбОбласть.Шрифт("Arial");
ВыбОбласть.РазмерШрифта(10);
ВыбОбласть.Подчеркнутый(1);
ВыбОбласть.ГоризонтальноеПоложение(3);
ВыбОбласть.Контроль(4);
ВыбОбласть.ЦветФона(34, 126, 211);

Примечание: Чтобы при создании новой формы разместить табличный документ непосредственно в форме, необходимо в главном меню Конфигуратора последовательно выбирать пункты «Действия -> Свойства формы»:

Просмотр свойств формы

А в появившемся окне в параметре «Использовать таблицу» выбрать вариант «Пустую» или «Для ввода данных»:

Свойства формы

В режиме ввода данных обращаться к значениям, записанным в поименованных областях таблицы, позволяет атрибут <ИмяОбласти>. В тексте программного модуля в качестве имени атрибута подставляется имя такой области, заданное в Конфигураторе.

Данный атрибут существует и доступен в форме, если на этапе создания этой формы в её свойствах была установлена опция «Для ввода данных» (см. рис. выше). Установка такой опции в свойствах формы означает наличие у формы таблицы в режиме ввода данных. В процессе конфигурирования в таблице можно задать любое число выделенных и поименованных областей.

Примечание: Данный атрибут работает на чтение только в том случае, если в качестве области таблицы помечена одна единственная ячейка.

В нижеприведённом примере в диалоге формы есть элемент диалога ВыбКод. В форме использована таблица в режиме ввода данных. Одна из ячеек таблицы помечена как область с именем «ВыбранныйКлиент». В этом случае в модуле формы можно задать значение данной области:

Клн = СоздатьОбъект("Справочник.Клиенты");
Клн.НайтиПоКоду(ВыбКод, 0);
ВыбранныйКлиент = Клн.ТекущийЭлемент();

Методы контекста Модуля формы отчёта (обработки)

Узнать, где располагается данный внешний отчёт, позволяет метод РасположениеФайла() (англоязычный синоним — FilePath()). Возвращаемым значением метода является полное имя файла внешнего отчёта.

Синтаксис метода:

РасположениеФайла(<Путь>, <Имя>)

где

  • <Путь> — идентификатор переменной, куда метод возвращает путь к файлу, где располагается данный внешний отчет;
  • <Имя> — идентификатор переменной, куда метод возвращает имя файла данного внешнего отчёта.

Пример использования метода:

Имя = "";
Путь = "";
ПолноеИмя = РасположениеФайла(Путь, Имя);

Предопределённые процедуры модуля формы отчёта (обработки)

В момент открытия формы и в момент восстановления значений настройки отчёта (обработки) системой «1С:Предприятие» производится вызов предопределённой процедуры ВводНового() (англоязычный синоним — InputNew()). Это позволяет контролировать содержимое реквизитов диалога во всех случаях их изменения системой. Параметров у данной процедуры нет.

Пример использования процедуры:

Процедура ВводНового()   // предопределенная процедура
   ДатаНач = РабочаяДата();
   ДатаКон = РабочаяДата();
КонецПроцедуры

При интерактивном открытии отчёта (обработки) системой «1С:Предприятие» производится вызов предопределённой процедуры ПриОткрытии() (англоязычный синоним — OnOpen()). Если в данной предопределённой процедуре установить статус возврата в 0, открытие формы не будет выполнено.

Примечание: Форма любого отчёта или обработки в системе «1С:Предприятие» обязательно содержит экранный диалог с элементами для задания различных параметров построения отчёта или выполнения обработки. Весь набор параметров, использованных при формировании отчёта или выполнении обработки, называемый настройкой отчёта, можно запомнить и восстановить в последующем. Для выполнения этих операций существуют специальные команды в меню «Действия», а также соответствующие кнопки на панели инструментов формы (см. рис. ниже).

Панель инструментов отчёта

Последняя сохранённая настройка отчёта автоматически восстанавливается системой, при вызове отчёта (обработки). Выяснить, произошло ли восстановление настройки, позволяет единственный параметр предопределённой процедуры ПриОткрытии().

Синтаксис процедуры:

Процедура ПриОткрытии(<ФлагЧтенияНастройки>)
    . . .
КонецПроцедуры

где <ФлагЧтенияНастройки> — идентификатор переменной, в которую система вернёт 1, если при открытии формы была восстановлена последняя сохранённая настройка отчёта (обработки), или 0, если при открытии формы настройка не восстановлена (например, при первом открытии формы).

Пример использования процедуры:

Процедура ПриОткрытии(ФлагСохрНастр)   // предопределенная процедура
   Если ФлагСохрНастр = 0 Тогда
      ВыбВалюта = Константа.ОснВалюта;
   КонецЕсли;
КонецПроцедуры

Другие статьи по схожей тематике