Работа с константами из встроенного языка

ЛАБОРАТОРНАЯ РАБОТА 7

КОНСТАНТЫ

 

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

Определение, настройка свойств констант

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

2. Создайте самостоятельно две константы:

НомерРелизаКонфигурации – тип Строка, длина 10.

ОбновлятьЦеныПоставщиков – тип Булево

 

Определение форм констант

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

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

 

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

· экранный диалог - используется для ввода и редактирования информации, хранящейся в объекте конфигурации;

· модуль формы – может содержать программу на встроенном языке системы «1С:Предприятие 8.0»;

· списокреквизитов;

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

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

Произведите щелчок правой клавишей мыши на ветви константы и в открывшемся контекстном меню выберите пункт Создать форму констант (как показано на рисунке).

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

Первая страница окна конструктора общих форм выглядит следующим образом:

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

При создании формы констант доступны два типа форм:

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

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

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

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

После нажатия на кнопку Далее можно перейти ко второй странице конструктора.

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

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

После нажатия на кнопку Готово откроется созданная форма констант

Обратите внимание на то, что если на первой странице конструктора форм не отмечать флаг Командная панель формы снизу, то кнопки ОК, Записать, Закрыть были бы определены не как кнопки командной панели, а как отдельные кнопки.

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

 

Работа с константами из встроенного языка

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

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

В глобальном контексте есть свойство Константы, при обращении к которому можно получить значение (объект), имеющее тип КонстантыМенеджер. У данного объекта столько свойств, сколько определено констант. При обращении к такому свойству можно получить объект имеющий тип значения КонстантаМенеджер.Имя константы. Соответствующая ветвь присутствует в синтакс-помощнике. У такого объекта есть два метода:

  • Получить() – позволяет прочитать значение константы
  • Установить(Значение) – позволяет записать значение в константу.

Пример чтения значения из константы:

Знач=Константы.НазваниеОрганизации.Получить();

 

Теперь вернемся к задаче, а именно контроль заполненности значения в константе НазваниеОрганизации. Откройте основную форму констант (ветвь общие - общие формы - имя формы).

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

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

Обратите внимание на три события (которые можно обрабатывать в форме констант):

  • Перед записью (событие возникает в форме после открытия транзакции, но перед самой записью)
  • При записи (событие возникает после осуществления самой записи, но перед закрытием транзакции записи)
  • После записи (событие возникает после закрытия транзакции)

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

 

 

3.1. Найдите свойство ПередЗаписью и нажмите кнопку . После этого автоматически перейдете в модуль формы. В нем необходимо прописать следующий текст:

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

Строка 2 содержит оператор проверки условия. Значение константы проверяется на равенство с пустой строкой (справедливости ради следует отметить, что читается не совсем значение константы, а читается значение, содержащееся в поле ввода НазваниеОрганизации, т.к. обращение идет через свойство формы ЭлементыФормы).

В случае истинности данного условия выполняются строки 3,4. В строке 4 определяется отказ от записи набора констант.

Строка 5 – закрывает блок описания условия

Строка 6 – закрывает тело процедуры

 

3.2. Перейдем к решению следующей подзадачи (контролю версии).

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

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

В модуль приложение запишите определение следующей процедуры:

 

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

2 – Чтение значения из константы НомерРелизаКонфигурации

3 – Запись нового значения в константу

4 – Вывод сообщения в окно служебных сообщений

3.3. Произведите запуск системы 1С: Предприятие и проверьте работоспособность введенного кода.

3.4. Создайте самостоятельно следующие константы:

- ФИО руководителя и добавьте проверку на заполнение поля.

- Минимальный размер заработной платы, установите значение мин. Размера заработной платы если данное поле не заполненно.