1С-Предприятие 8.0. Практическое пособие разработчика

       

Контекст формы


Куда вписать выражение, чтобы его результат отображался в текстовой колонке табличного поля?

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

Такая возможность не реализована, поскольку весь текст программы в версии 8.0 располагается только в программных модулях.

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

В качестве примера можно посмотреть процедуру "СправочникСписокПриВыводеСтроки" в модуле формы списка справочника "Номенклатура" в разделе "Вычисляемые колонки в списках" на странице 524.

Более подробную информацию можно найти на диске ИТС в статье "Вывод связанной информации по текущему объекту из списка".

В 8.0 в формах нет слоев. А как теперь создавать закладки в форме?

В версии 8.0 вместо механизма слоев в формах используются панели.

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

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

Пример использования страниц формы можно посмотреть в форме элемента справочника "Номенклатура" в разделе "Доработка справочника Номенклатура" на странице 261, а также в форме [619] документа "ОказаниеУслуги" в разделе "Отбор объектов, введенных на основании" на странице 497.

Как в формах 1С:Предприятия 8.0 сохранить настройки пользователя (по аналогии с сохранением настроек форм отчетов и обработок в 1С:Предприятии 7.7)?






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

Следует иметь в виду, что сохранение настроек возможно, только если в качестве основного объекта формы выбраны значения типа ОтчетОбъект.<имя> или ОбработкаОбъект.<имя>, поскольку эту функциональность обеспечивают соответствующие расширения формы.

Более подробно о том, что такое расширения формы, можно прочитать в разделе "Данные и элементы управления" на странице 502.

Есть ли в 1С:Предприятии 8.0 аналог метода АктивизироватьОбъект(), чтобы активизировать нужную строку табличного поля?

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

К примеру, если речь идет о списке справочника, то это будет ссылка на элемент справочника.

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

Как правило, для установки текущей строки в некоторой форме списка из другой формы, нужно использовать свойство формы НачальноеЗначениеВыбора, а также свойства ПараметрТекущаяСтрока соответствующих расширений форм списков. [620]

Более подробно о том, что такое расширения формы, можно прочитать в разделе "Данные и элементы управления" на странице 502.

Никак не могу заставить работать элемент управления Переключатель! В чем дело?

В версии 8.0 работа с переключателем ведется таким же образом, как и в версии 7.7, за исключением одного отличия.

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



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

Примеры использования переключателя можно посмотреть в разделах "Изменение источника данных табличного поля" на странице 516, и "Изменение данных табличного поля путем установки типа значения" на странице 520.

Как настроить порядок обхода в форме?

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

Для того чтобы стала доступна ручная настройка порядка обхода, нужно в палитре свойств панели формы сбросить флаг "Автопорядок обхода".

Также нужно помнить, что порядок обхода задается не для всей формы целиком, а для каждой панели, расположенной в форме, поэтому и свойство "Автопорядок обхода" нужно регулировать для каждой панели отдельно. [621]

Как в иерархическом списке программно установить отбор по конкретному родителю?

Так как табличное поле поддерживает стандартную механику работы с иерархическими списками, то поле "Родитель" не используется в стандартной механике отборов, а управляется специальным способом. Свойство ТекущийРодитель табличного поля позволяет получить и установить текущего родителя, а свойство ИзменятьТекущегоРодителя позволяет запретить пользователю переход по родителям.

Как работать с элементом управления ПолеВыбора?

В 1С:Предприятии 8.0 значением поля выбора является собственно само выбираемое значение, а не список выбора.

Список выбора, соответствующий полю выбора, задается в свойстве СписокВыбора элемента управления.

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

Это связано с тем, что значение, устанавливаемое для поля выбора, сохраняется, если оно найдено в списке выбора этого поля. Если же устанавливаемое значение не найдено в списке выбора – сохраняется значение Неопределено.



Таким образом, поскольку установка значения поля выбора в открываемой форме производится в процессе создания формы (до вызова событий "Перед открытием" и "При открытии") – список выбора поля выбора должен быть заполнен в теле модуля формы.

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

Например:

ЭлементыФормы.ПолеВыбора1.СписокВыбора.Добавить( 1,"Один");

ЭлементыФормы.ПолеВыбора1.СписокВыбора.Добавить( 2,"Два");

ЭлементыФормы.ПолеВыбора1.СписокВыбора.Добавить( 3,"Три"); [622]

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

Пример работы с полем выбора можно посмотреть в модуле формы отчета "РейтингКлиентов" в разделе "Создание отчета РейтингКлиентов" настранице 198.

Не могу найти аналог "семерочного" Активизировать(<имя реквизита>). Нужно периодически программно активизировать элемент формы.

Для указания текущего активного элемента управления, расположенного в форме, следует использовать свойство объекта Форма – ТекущийЭлемент.


Содержание раздела