Форма. Форма списка, форма элемента

Работа пользователя в режиме "1С:Предприятие" происходит не напрямую с объектом, хранящим информацию, а посредством объекта Форма. Следует отметить, что в зависимости от текущей задачи пользователя работа с одним и тем же объектом может происходить с использованием различных форм. Например, для справочника при работе с ним как со списком элементов используется Форма списка, а при работе с одним элементом данного списка используется Форма элемента. В том случае, когда разработчик не предпринимал никаких дополнительных мер по настройке объекта, системой будет автоматически создана соответствующая форма, с которой и будет работать пользователь. Если же по каким-либо причинам автоматическая форма не устраивает пользователя, то разработчик имеет возможность самостоятельно создать необходимую форму.

Создадим форму списка для справочника Контрагенты. Для этой цели перейдем на закладку формы и создадим новую форму списка с помощью конструктора (Рис. 4.30).

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.30.

Будем последовательно делать настройки, которые предлагает конструктор. На первой закладке укажем, что создаем форму списка (Рис. 4.31).

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.31.

Далее отметим те реквизиты справочника, которые мы хотим видеть (Рис. 4.32)

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.32.

В результате будет создана форма (Рис. 4.33)

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.33.

Откроем закладку Команды – Глобальные команды и перетащим элемент "Элементы.Список.ТекущиеДанные.Ссылка" в левое окно в "Командная панель" (Рис. 4.34).

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.34.

В свойствах появившегося элемента укажем "ТолькоВоВсехДействиях" в значение "Нет" (Рис.4.35)

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.35.

Теперь в пользовательском режиме в форме списка справочника сотрудники и у пользователя появится возможность просматривать только те договоры, которые относятся к текущему контрагенту (Рис. 4.36).

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.36.

Аналогичным образом может быть создана и форма элемента для справочника (Рис. 4.37). Главное, это указать правильный тип формы.

Форма. Форма списка, форма элемента - student2.ru

Рис. 4.37.

Например, для справочника "Сотрудники" форма элемента не должна отображать реквизит "Родитель" - группу, в которой находится текущий элемент справочника. Терминология платформы в данном случае входит в противоречие с "общечеловеческим" пониманием данного термина. Чтобы не смущать пользователя, удали эту информацию с формы (Рис. 4.38)

Форма. Форма списка, форма элемента - student2.ru Рис. 4.38.

Перечисление

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

Итак, в нашей базе мы хотим иметь информацию о том, является ли наш сотрудник штатным работником или совместителем. Каким образом это сделать? Ну, во-первых, эта информация должна быть указана для каждого сотрудника, и для этого необходимо создать новый реквизит справочникаСотрудники. Во-вторых, сотрудник может быть либо штатным, либо совместителем, поэтому логично создать новое перечисление и именно его указать в качестве типа данных нашего нового реквизита справочника.

Создаем новое перечисление ВидыПриемаНаРаботу. Для этого правой кнопкой мыши на ветке Перечисления вызываем контекстное меню и выбираем пункт Добавить. (Рис. 5.1)

Форма. Форма списка, форма элемента - student2.ru

Рис. 5.1.

Далее задаем имя: ВидыПриемаНаРаботу, при этом автоматически заполняется поле Синонимточно так же, как это происходило для справочников. (Рис. 5.2)

На закладке Данные правой кнопкой мыши на пункте Значения вызываем контекстное меню и выбираем пункт Добавить, либо выбираем соответствующую кнопку в панели инструментов. Появляется уже знакомая нам палитра свойств (Рис. 5.3), в которой задаем Имя - значения перечисления. Аналогично создаем следующее значение.

Форма. Форма списка, форма элемента - student2.ru Рис. 5.2.

Форма. Форма списка, форма элемента - student2.ru Рис. 5.3.

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

После всех этих действий в справочник Сотрудники добавим новый реквизитВидПриемаНаРаботу с типом данных ПеречислениеСсылка.ВидыПриемаНаРаботу (Рис. 5.4).

Форма. Форма списка, форма элемента - student2.ru Рис. 5.4.

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

Элементы управления формы

Как уже упоминалось выше, пользователь работает не напрямую с объектом, а с экранной формой, причем с одним и тем же объектом пользователь может работать посредством разных форм. Система предоставляет разработчику возможность использовать ряд стандартных механизмов (элементов формы), с помощью комбинаций которых можно создать практически любой функционал и внешний вид. Прямой аналогией может служить детский конструктор "Лего", когда из некоторого набора "кубиков" можно собрать что-то совершенно новое. Далее мы рассмотрим ряд таких стандартных механизмов более подробно. Причем следует иметь в виду, что данные возможности экранной формы не привязаны к какому-то конкретному виду объектов конфигурации и, соответственно, могут применяться для любой экранной формы любого объекта.

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

Имя – системное имя, уникальный идентификатор, позволяющий обратиться именно к данному элементу

ПутьКДанным – устанавливает связь между тем элементом формы, что отображается на форме, и тем реквизитом, где храниться информация

Видимость – позволяет либо показать, либо спрятать от пользователя элемент формы

Доступность – позволяет пользователю видеть элемент формы, но не позволяет его интерактивно изменять

Любой из элементов формы можно добавит используя пункт Добавить из контекстного меню, вызываемого правой кнопкой мышки (Рис. 6.1).

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.1.

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

Поле

Элемент формы Поле предназначен для отображения данных на форме и предоставления пользователю возможности эти данные изменить. В зависимости от свойства Вид может принимать различный внешний вид.

Поле ввода

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

Чтобы разместить на форме поле вода, в котором будут отражаться данные реквизита, можно воспользоваться двумя различными способами. Можно добавить новый элемент формы, указав типПоле (Рис. 6.2) и указав затем в его свойствах ПутьКДанным, Вид и Заголовок (Рис. 6.3)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.2.

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.3.

Того же результата можно достичь, если придерживая левую кнопку мышки перетащить реквизит из окна реквизитов в окно элементов формы (Рис. 6.4)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.4.

Для поля ввода наиболее важными свойствами будут являться:

Заголовок - текстовый заголовок, видимый пользователю

Положение заголовка – положение заголовка относительно поля ввода

Пропускать при вводе – позволяет автоматически перемещать курсор на поле при редактировании элементов на форме

Активизировать по умолчанию – позволяет сделать поле активным при открытии формы

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

Поле флажка

С помощью флажка на форме могут отображаться данные с типом Булево или Число.

Создадим форму элемента для справочника Номенклатура (Рис. 6.5).

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.5.

После этого добавим в справочник реквизит Услуга с типом Булево для того, можно было указать, является ли данный элемент справочника товаром или услугой. Теперь добавим этот реквизит на форму. Для этого перетащим реквизит Услуга из окна реквизитов в окно элементов формы (Рис. 6.6)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.6.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.7.

Для флажка наиболее важными для нас будут являться следующие свойства:

Заголовок – текстовый заголовок, видимый пользователю

Положение заголовка – положение заголовка относительно флажка

Самостоятельно

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

Поле переключателя

Переключатель предназначен для того, чтобы предоставить пользователю выбор одного из нескольких заранее известных вариантов.

В справочнике Номенклатура для каждого товара будем указывать его качество, которое может быть одним из трех: высокое, обычное и низкое. Для этого создадим новое перечислениеКачествоТоваров из трех значений. После этого в справочнике Номенклатура добавим новый реквизит КачествоТовара с соответствующим типом данных. В свойствах реквизита укажем значение заполнения (значение, которое будет выбираться по умолчанию) (Рис. 6.8)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.8.

Чтобы создать необходимое количество элементов переключателя, необходимо воспользоватьсяСпискомВыбора. Кроме того, традиционно элементы переключателя обычно располагаются друг под другом, для чего в настройках укажем количество колонок (Рис. 6.9).

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.9.

Для переключателя наиболее важными для нас будут являться следующие свойства:

Заголовок – текстовый заголовок, видимый пользователю

Положение заголовка - определяет положение заголовка относительно элементов переключателя

Список выбора – определяет элементы переключателя, их количество, представление на форме и выбираемые значения

Количество колонок – определяет внешний вид переключателя

Самостоятельно

Добавьте в справочнике Номенклатура новый реквизит "Происхождение номенклатуры", который на форме должен отображаться в виде переключателя из 3-х значений: "отечественный", "импортный" и "неизвестно".

Команда

Команда позволяет пользователю возможность выполнить какие-либо из заранее определенных на этапе конфигурирования действий. Эти действия могут быть либо стандартными (Рис. 6.10), либо описаны на встроенном языке в модуле формы и затем связаны с командой (Рис. 6.11) посредством кнопки (или гиперссылки) и выполняться при нажатии пользователем на этот объект.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.10.

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.11.

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

Текст процедуры, выполняемой при нажатии кнопки:

&НаКлиенте

Процедура Команда1(Команда)

Сообщить("Нажата кнопка");

КонецПроцедуры

В результате у нас используются 3 разных объекта: модуль, команда и кнопка. Каждый из этих объектов имеет свои собственные настройки.

У кнопки важными для нас будут являться следующие свойства:

Заголовок – текстовое представление объекта на форме

Вид – устанавливает внешний вид команды в виде кнопки или гиперссылки

ИмяКоманды – устанавливает связь между объектом формы и выполняемым действием

Картинка – позволяет разместить на форме картинку, отображаемую в зависимости от установок свойства Отображение

Группа

Группа позволяет объединить несколько рядом расположенных элементов на форме для дальнейших действий с ними. В зависимости от свойства Вид может изменять свой внешний вид.

Обычная группа

Элемент Группа с видом Обычная группа позволяет визуально объединить несколько элементов на форме, управлять их расположением на форме (Рис.6.13)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.13.

Для обычной группы наиболее важными будут являться свойства:

Заголовок – надпись на форме

Отображение – определяет внешний вид группы на форме

Группировка – определяет характер расположения на форме элементов, входящих в группу

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

Командная панель

Командная панель позволяет группировать только кнопки, вызывающих команды, которые могут быть как стандартными, так и созданными разработчиком (Рис. 6.14).

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.14.

Группа страниц

Группа с видом Страницы и Страница позволяют разместить элементы на форме в виде нескольких слоёв-страниц. Для этого необходимо создать группу с видом Страницы, а затем для каждой страницы в ее составе создать группу с видом Страница (Рис. 6.15 и Рис. 6.16) и уже на ней разместить элементы формы обычным порядком.

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.15.

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.16.

Для нас будут важны следующие свойства:

ОтображениеСтраниц – для группы Страницы задает вид отображения закладок на форме

Заголовок – для группы Страница задает заголовок на закладке формы

Таблица

Таблица позволяет отобразить на форме таблицу, например табличную часть объекта (Рис. 6.16)

Форма. Форма списка, форма элемента - student2.ru

Рис. 6.16.

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

Обработчик события

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

В справочнике Контрагенты у нас храниться краткое и полное наименование контрагента. Логично предположить, что эти названия будут похожи. Следовательно, когда пользователь вводит краткое наименование желательно его же продублировать в полное, т.е. при событии изменение наименования необходимо выполнить определенные действия. Какие именно действия мы желаем выполнять при наступлении события, система сама предсказать не может. Необходимо самостоятельно написать процедуру, которая должна будет выполняться системой, и связать эту процедуру с тем событием, которое обрабатывается (Рис. 7.1).

Форма. Форма списка, форма элемента - student2.ru

Рис. 7.1.

Текст процедуры обработчика события:

&НаКлиенте

Процедура НаименованиеПриИзменении(Элемент)

Если Объект.ПолноеНаименование = "" Тогда

Объект.ПолноеНаименование = Объект.Наименование;

КонецЕсли;

КонецПроцедуры

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

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

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

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

Для решения этой задачи воспользуемся обработчиком события ПередЗаписьюНаСервере (Рис. 7.2)

Форма. Форма списка, форма элемента - student2.ru

Рис. 7.2.

Текст процедуры:

&НаСервере

Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ТекущийОбъект.Услуга И

(ТекущийОбъект.ОсновнаяСтавкаНДС <> Справочники.СтавкиНДС.НДС18) Тогда

Сообщить("У услуги ставка НДС может быть только 18%");

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

Документ

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

Для отражения в системе факта выплаты денежных средств создадим новый вид документов. Операция по созданию нового вида документа происходит аналогично созданию нового справочника – в окне дерева объектов конфигурации правой кнопкой мышки на ветке Документы вызываем контекстное меню и выбираем пункт Добавить. В открывшемся окне необходимо задать Имядокумента, т.е. его вид. На это имя налагаются все те же ограничения, что и на имена остальных объектов конфигурации. Назовем создаваемый документ РасходДенег, а в качестве Синонима укажемСписание денежных средств (Рис. 8.1). Далее необходимо определить структуру нашего документа, которая задается набором его реквизитов.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.1.

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

Реквизиты шапки

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.2.

Как мы уже говорили, для документа всегда существуют реквизиты Дата и Номер. В окне редактирования документа РасходДенег на закладке Нумерация необходимо задать следующие свойства, относящиеся к его дате и номеру (Рис. 8.2):

· Автонумерация – данный флаг включает автоматическое формирование номера документа при его создании. В последствии номер может быть изменен.

· Длина номера – максимальное количество символов, которое может занимать номер документа.

· Контроль уникальности – этот флаг включает автоматический контроль системой номера документа. В случае нарушения правил нумерации системой будет выдано соответствующее предупреждение.

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

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

§ непериодический;

§ в пределах года;

§ в пределах квартала;

§ в пределах месяца;

§ в пределах дня.

Для документа РасходДенег изменим длину номера на 6 знаков и периодичность на значение В пределах года.

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

· Контрагент,

· Договор,

· Сумма.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.3.

На закладке Данные, точно так же, как это делалось и для справочника, добавляем новые реквизиты. (Рис 8.3) Зададим Имя реквизита, его тип и, в случае необходимости, дополнительные настройки типа, например длину строки или точность числа. Поскольку в системе уже хранится информация о контрагентах и договорах, то и тип реквизитов Контрагент и Договор необходимо указать СправочникСсылка.Контрагенты и СправочникСсылка.Договоры соответственно. Для реквизита Сумма потребуется не только указать тип Число, но и точность 2, чтобы можно было корректно заносить суммы поступивших денег. Кроме того, чтобы иметь возможность выплатить денежные средства не только контрагентам, но и сотрудникам, можно для реквизита Контрагентуказать составной тип данных СправочникСсылка.Контрагенты и СправочникСсылка.Сотрудники.

Формы документа

Точно так же, как и при работе со справочником, пользователь работает не напрямую с объектом "Документ", а посредством экранной формы. Соответственно, при работе с одним документом используется Форма документа (Рис. 8.4), а для работы с несколькими документами данного вида используется Форма списка (Рис. 8.5).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.4.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.5.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.6.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.7.

Широкие возможности по настройке списка предоставлены пользователю непосредственно в режиме "1С:Предприятие". Для этой цели в форме списка документа необходимо нажать кнопку Все действия и в открывшемся меню выбрать пункт Настройка списка. После этого, последовательно заполняя настройки по закладкам (Рис. 8.8 – Рис. 8.12) пользователь может добиться того, чтобы список отображалась наиболее удобным для него способом (Рис. 8.13).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.8.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.8.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.9.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.10.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.11.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.12.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.13.

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

Самостоятельно

Создайте документ Поступление денежных средств (Рис. 8.14)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.14.

 
   


Обратите внимание, что пользователь имеет возможность (в определенных пределах) изменить внешний вид формы самостоятельно (Рис. 8.15 и Рис. 8.16). Для этого необходимо выбрать пункт менюИзменить форму из выпадающего списка, сформированного при нажатии на кнопку "Еще".

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.15.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.16.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.17.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.18.

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

Так как реквизиты плательщика имеют смысл только в случае безналичной оплаты, то сделаем так, чтобы они были не видны во всех остальных случаях. Для того, чтобы удобнее было прятать реквизиты, сгруппируем их (Рис.8.19)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.19.

Чтобы реквизиты исчезали, когда меняется способ оплаты, задействуем обработчик событияПриИзменении для способа оплаты (Рис. 8.20)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.20.

Кроме того, необходимо использовать обработчик события ПриОткрытии для всей формы (Рис.8.21)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.21.

Текст процедур обработчиков событий в модуле формы документа ПриходДенег (данный программный код может быть оптимизирован, что будет гораздо менее удобно для восприятия, поэтому рассмотрим упрощенный вариант):

&НаКлиенте

Процедура СпособОплатыПриИзменении(Элемент)

Элементы.Группа1.Видимость= НоваяВидимость (Объект.СпособОплаты);

КонецПроцедуры

&НаСервере

Функция НоваяВидимость (Способ)

Если Способ = Перечисления.СпособыОплаты.Безналичные Тогда

Воз=Истина;

Иначе

Воз=Ложь;

КонецЕсли;

Возврат Воз;

КонецФункции

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Элементы.Группа1.Видимость=НоваяВидимость(Объект.СпособОплаты);

КонецПроцедуры

В результате для пользователя в режиме "1С:Предприятие" внешний вид формы будет изменяться динамически, в зависимости от действий пользователя (Рис.8.22).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.22.

Реквизиты табличной части

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

В нашем случае для документа ПриходнаяНакладная необходимо создать табличную частьТовары с реквизитами Товар, Количество, Цена и Сумма с типами значенийСправочникСсылка.Номенклатура, Число с точностью 3 и Число с точностью 2 соответственно. Создание табличной части документа также идентично созданию табличной части справочника. На закладке Данные в соответствующем окне с помощью контекстного меню создается табличная часть, а потом и ее реквизиты (Рис. 8.21).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.21.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.22.

Для расчета суммы необходимо задействовать обработчики событий При изменении для количества и цены (Рис. 8.22). Хотя результат этих обработчиков должен быть одинаков, для удобства приведено два разных способа написания этого действия.

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена * Элементы.Товары.ТекущиеДанные.Количество;

КонецПроцедуры

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

СтрокаРасчета.Сумма = СтрокаРасчета.Цена * СтрокаРасчета.Количество;

КонецПроцедуры

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.23.

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

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.24.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.25.

В подвале можно отображать как заранее известный и фиксированный текст (Рис. 8.25), так и автоматически вычисляемые платформой данные. В нашем случае это будет итог по колонке сумма (Рис. 8.26).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.26.

В результате пользователь получит следующую форму (Рис. 8.27) для работы с документом приходная накладная.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.27.

Самостоятельно

Создайте документ Расходная накладная (Рис. 8.28 - Рис. 8.30)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.28.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.29.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.30.

 
   


Документ РасходнаяНакладная имеет более сложную структуру, чем рассмотренный ранее документ ПриходнаяНакладная, поэтому задействуем еще ряд механизмов для облегчения работы пользователя. Для того, чтобы в табличную часть Товары пользователь мог подбирать только товары, а в табличную часть Услуги, соответственно, услуги, в свойствах реквизитов установим параметры выбора (Рис. 8.31).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.31.

Так же улучшим работу пользователя с сотрудником. Сделаем так, что доступными к выбору станут только не уволенные сотрудники. Нам потребуется создать новую форму выбора в справочнике "Сотрудники", причем форма должна быть неосновной, т.е. будет использовано только для нашей расходной накладной (Рис. 8.32)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.32.

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.33.

В этой форме мы данные будем отображать без учета иерархии (Рис. 8.33)

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.34.

Теперь укажем, что в расходной накладной выбор сотрудника будет происходить именно посредством новой формы (Рис. 8.34) и добавим отбор только работающих сотрудников (Рис. 8.35).

Форма. Форма списка, форма элемента - student2.ru

Рис. 8.35.

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

Естественно, необходимо произвести расчет суммы НДС, согласно указанной ставки

Наши рекомендации