Сообщения

Показаны сообщения с ярлыком "форма"

Для чего свойство "Сохраняемые данные" у реквизита формы

Изображение
Допустим, стоит задача, необходимо в справочнике хранить дорожную карту в виде графической схемы и её описание в виде табличного документа. Для решения этой задачи необходимо создать в справочнике два реквизита с типом ХранилищеЗначений . В форме элемента справочника создать реквизиты с типами ГрафическаяСхема и ТабличныйДокумент . При открытии формы данные из реквизитов объекта загружаются в реквизиты формы, при записи выполняется обратная операция. Теперь давайте разберемся, нужно ли устанавливать для реквизитов формы свойство "Сохраняемые данные" или нет? Для эксперимента создадим два реквизита формы с разным состоянием свойства "Сохраняемые данные" (см. рисунок 1): ДорожнаяКарта - тип ГрафическаяСхема , свойство "Сохраняемые данные" установлено; ОписаниеДорожнойКарты - тип ТабличныйДокумент , свойство "Сохраняемые данные" не установлено. Рисунок 1. Реквизиты формы

Влияние свойства "Изменяет данные" на поведение команды объекта

Изображение
Многие начинающие разработчики игнорируют свойство команды объекта "Изменяет данные"то ли не замечают его, то ли не хотят разбираться с ним. Давайте выясним, каким образом данное свойство влияет на поведение команды и почему не стоит его игнорировать. Создадим для справочника две команды, одна с установленным свойством "Изменяет данные", другая без (см. рисунок 1). Рисунок 1. Команды объекта

Открытие формы выбора с отбором. Варианты установки отбора.

Изображение
Рассмотрим различные варианты установки отбора при выборе объекта на документе ДокументОтборПриемаТовара . У документа имеются следующие реквизиты (см. рисунок 1): ПоставщикОтбор (тип СправочникСсылка.Поставщики); ТоварОтбор (тип СправочникСсылка.Товары); ОтветственныйОтбор (тип СправочникСсылка.Ответственный); ПриемТовара (тип ДокументСсылка.ПриемТовара). Рисунок 1. Структура документа ДокументОтборПриемаТовара Выбирать будем документ ПриемТовара , а отбор в форме выбора будет устанавливаться по реквизитам с постфиксом Отбор. Документ ПриемТовара имеет реквизиты (см. рисунок 2): Поставщик (тип СправочникСсылка.Поставщики); Ответственный (тип СправочникСсылка.Ответственный); Комментарий (Тип Строка). А так же табличную часть Товары, состоящую из реквизитов Товар (тип СправочникСсылка.Товары) и Количество (тип Число). Рисунок 2. Структура документа ПриемТовара

Последовательность вызова обработчиков событий при открытии формы объекта

Изображение
При открытии формы объекта, задействованы не только обработчики событий формы, но и модуль менеджера и модуль объекта. Перед рассмотрением последовательности вызова событий, хочу заметить, что количество обработчиков событий для модуля объекта и модуля формы равно не количеству отображаемых процедур в подсказке (см. рисунок 1), а на единицу больше. Рисунок 1. Обработчики событий модуля объекта Документ У этих модулей дополнительно имеется обработчик, связанный с активацией модуля, т.е. тело модуля это и есть обработчик активации модуля, который не отображается в подсказке. Последовательность вызова обработчиков событий при открытии формы объекта, например объекта Документ, включая активацию модуля, изображена на рисунке 2.

Передача таблицы значений с сервера на клиент

Изображение
Отличия функций РеквизитФормыВЗначение и ДанныеФормыВЗначение После разделения выполнения программного кода на два контекста (клиент и сервер), у разработчиков появилось множество проблем, при переводе конфигурации с обычных форм на управляемые. Одна из них - это отсутствие возможности передачи объекта типа ТаблицаЗначений с сервера на клиент. Объект этого типа имеет много полезных методов, которые упрощают жизнь разработчику, поэтому свою жизнь без таблицы значений я не представляю возможной. Вариантов решения два: конвертировать таблицу значений в другой тип (например, в массив структур), либо динамически создавать реквизит формы типа ТаблицаЗначений (на самом деле тип ДанныеФормыКоллекция) и заполнить его данными. Вариант №1 Здесь все просто, обходим в цикле строки таблицы значений, данные каждой строки вставляем в структуру, а структуру добавляем в массив. &НаСервере Функция ПолучитьТЗКакМассивСтруктур() МояТаблицаЗначений = СоздатьТаблицуЗначений(); МассивС...

Задание типа значения для реквизита с типом СписокЗначений в управляемых формах

Изображение
В управляемых формах невозможно задать тип значения для реквизита, который имеет тип СписокЗначений , хотя в обычных формах такая возможность есть. Если реквизит с типом СписокЗначений является реквизитом формы, то здесь особых сложностей нету, достаточно в обработчике события формы ПриСозданииНаСервере написать код по установке типа для значения списка: ТипыСписка = "Строка"; ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка); ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы; Как видно из примера, тип значения устанавливается через свойство списка значений ТипЗначения , которое имеет тип ОписаниеТипов . Другое дело, когда форма содержит таблицу значений, у которой имеется реквизит с типом СписокЗначений . В такой ситуации через обработчики событий формы к этому реквизиту не достучаться, поэтому нужно использовать обработчики событий элемента формы, связанного с данным реквизитом. 1. Реквизит ТЧ с типом СписокЗначений Для этого напишем код по установк...

Отображение различных элементов формы в командной панели

Изображение
Все-таки, программист - это не только техническая профессия, но и творческая, так как зачастую приходится самому создавать дизайн форм. Недавно мне захотелось поместить поле переключателя в командную панель управляемой формы, но не все так просто... Элемент управления КоманднаяПанель предназначен для размещения в форме набора команд, с помощью которых производится управление информацией, размещенной в форме. Командная панель представляет собой древовидную структуру кнопок командной панели. Для примера, создайте внешнюю обработку, у обработки создайте управляемую форму. 1. Управляемая форма обработки Форма уже имеет стандартную командную панель, но в неё мы можем добавить только кнопки, вообще, командные панели могут содержать только элементы формы кнопки и подменю. Поэтому, в свойствах стандартной панели нужно снять галочку у свойства Автозаполнение . 2. Свойства командной панели

Список значений в составном типе. Задание типа значения списка.

Изображение
Составной тип - коварный тип! Задача : выполнять отбор в списке документов по контрагенту, используя виды отбора Равно, Не равно, В иерархии и В списке . Добавил реквизит формы ПоКонтрагенту , задал для него составной тип ( СправочникСсылка.Контрагент и СписокЗначений ) что бы можно было указывать множество контрагентов для вида отбора В списке . Решил проверить работу выбора контрагентов и ужаснулся, при выборе типа реквизита Список значений , добавление каждого контрагента в список происходило через выбор типа значения списка! 1. Выбор типа значения списка

Отличия функций РеквизитФормыВЗначение и ДанныеФормыВЗначение

Изображение
Первые проблемы Во времена толстого клиента вызов процедуры модуля объекта из модуля формы был прост. Достаточно было определить процедуру модуля как экспортируемую и вызвать её в модуле формы. Вызов процедуры модуля в толстом клиенте обычное приложение