Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новиков лаба 2 кис.doc
Скачиваний:
24
Добавлен:
01.06.2015
Размер:
7.86 Mб
Скачать

Упражнение 2. Создание иерархических справочников Задание 1. Создание справочников Контрагенты и ПредставителиКонтрагентов

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

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

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

На вкладке Основные мы зададим имя справочника Контрагенты и такой же синоним.

Вкладка Иерархия, которую мы еще не рассматривали, предназначена для настройки параметров иерархического справочника (рис. 2.21).

Рисунок 2.21 - Справочник Контрагенты, вкладка Иерархия

Рассмотрим установки, которые можно сделать на этой вкладке.

Иерархический справочник. Этот флажок по умолчанию сброшен. То есть, новые справочники по умолчанию не являются иерархическими.

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

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

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

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

Перейдем на вкладку Данные нашего справочника (рис. 2.22) и зададим ему следующие реквизиты (таблица 2.3).

Таблица 2.3 - Реквизиты справочника Контрагенты

Имя реквизита

Тип

Параметры типа

ПолноеНаименование

Строка

Длина: 50

КонтактныеСведения

Строка

Длина: 100

Рисунок 2.22 - Справочник Контрагенты, вкладка Данные

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

Рисунок 2.23 - Справочник ПредставителиКонтрагентов, вкладка Владельцы

В появившемся окне Выбор объекта установим флаг напротив поля Контрагенты. Нажав на кнопку ОК, возвращаемся на вкладку Владельцы, рис. 2.24.

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

Рисунок 2.24 - Справочник ПредставителиКонтрагентов, вкладка Владельцы

Например, в нашем случае, очевидно, что в иерархическом справочнике Контрагенты каждому контрагенту может соответствовать один или несколько представителей. Поэтому мы указываем в поле Использование подчинения вариант Элементам.

Перейдем на вкладку Данные справочника ПредставителиКонтрагентов (рис. 2.25).

Рисунок 2.25 - Подготовка к копированию реквизитов одного справочника в другой

Мы собираемся добавить реквизиты справочника, которые позволят хранить ФИО представителя и его телефон. Вспомним, что ранее мы создавали похожий справочник - это справочник ФизическиеЛица. Среди реквизитов этого справочника есть такие, которые подойдут нам при конструировании нового справочника. Гораздо быстрее скопировать нужные реквизиты из одного объекта в другой, чем создавать эти реквизиты с нуля. Удобно копировать реквизиты, просто перетаскивая их мышью из одного места дерева конфигурации в другое. В итоге, пользуетесь вы копированием или нет, у вас должен получиться следующий набор реквизитов (таблица 2.4).

Таблица 2.4 - Реквизиты справочника ПредставителиКонтрагентов

Имя реквизита

Тип

Параметры типа

Фамилия

Строка

Длина: 30

Имя

Строка

Длина: 30

Отчество

Строка

Длина: 30

Телефон

Строка

Длина: 30

Примечание

Строка

Длина: 100

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

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

Рисунок 2.26 - Создание новой группы в справочнике Контрагенты

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

Рисунок 2.27 - Создание подгруппы Постоянные в группе Поставщики справочника Контрагенты

Прежде чем приступать к вводу данных о представителях контрагента вполне логично ввести данные о самом контрагенте. Поэтому, выберем одну из групп (например - Поставщики > Новые) и создадим в ней новый элемент (рис. 2.28). Сохраним созданный элемент нажатием на кнопку ОК. Если теперь мы попытаемся создать новый элемент справочника, в его поле Владелец будет автоматически внесено ООО "Рассвет".

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

Рисунок 2.28 - Создание нового элемента справочника Контрагенты в режиме просмотра «дерево»

Задание 2. Доработка формы списка справочника Контрагенты

Мы уже создали немало объектов, но пока не занимались редактированием их форм. Лишь форму констант мы создавали явно. Формы справочников были созданы автоматически. 1С:Предприятие автоматически создает нужные формы объектов. Такие формы поддерживают лишь минимально необходимую функциональность - ввод, просмотр и изменение данных объектов. Эти формы создаются "на лету" в ходе работы пользователя с объектом. Если форма должна поддерживать какую-нибудь дополнительную функциональность - она должна быть создана при проектировании объекта. Например, выше мы столкнулись с необходимостью выводить элементы подчиненного справочника в форме справочника Контрагенты. Автоматически подобная функциональность не создается.

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

Откроем в конфигураторе окно свойств справочника Контрагенты и перейдем на его вкладку Формы (рис. 2.29).

Ни одна из форм не задана, то есть все они формируются системой при возникновении необходимости в них. Нажмем на кнопку Открыть в поле Списка. Будет вызван конструктор форм (рис. 2.30) для формы списка справочника. Именно эта форма открывается при выборе соответствующего справочника из окна Справочники в режиме 1С:Предприятие.

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

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

Рисунок 2.29 - Вкладка Формы окна свойств справочника Контрагенты

Рисунок 2.30 - Конструктор формы справочника, первый шаг

Рисунок 2.31 - Конструктор формы справочника, второй шаг

Рисунок 2.32 - Результат работы конструктора форм

Упражнение 3. Создание дополнительных справочников

Задание 1. Техническое добавление справочников

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

Создадим справочник ЕдиницыИзмерения. В таблице 2.5 приведены параметры этого справочника. Здесь и далее в подобных таблицах приведена информация лишь о тех параметрах, которые мы изменяем.

Таблица 2.5 - Параметры справочника ЕдиницыИзмерения

Вкладка окна редактирования объекта

Параметр

Значение

Основные

Имя

ЕдиницыИзмерения

Данные

Длина наименования

100

Формы

Редактирование

В списке

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

Создадим справочник Номенклатура. (таблица 2.6).

Таблица 2.6 - Параметры справочника Номенклатура

Вкладка окна редактирования объекта

Параметр

Значение

Основные

Имя

Номенклатура

Иерархия

Иерархический справочник

Истина (флаг установлен)

Данные

Длина наименования

100

Реквизит ЕдиницаИзмерения

Тип: СправочникСсылка.ЕдиницыИзмерения

Реквизит Услуга

Тип: Булево

Создадим справочник Подразделения (таблица 2.7).

Таблица 2.7 - Параметры справочника Подразделения

Вкладка окна редактирования объекта

Параметр

Значение

Основные

Имя

Подразделения

Данные

Длина наименования

100

Формы

Редактирование

В списке

Создадим справочник Сотрудники (таблица 2.8).

Таблица 28 - Параметры справочника Сотрудники

Вкладка окна редактирования объекта

Параметр

Значение

Основные

Имя

Сотрудники

Данные

Длина наименования

100

Реквизит ФизическоеЛицо

СправочникСсылка.ФизическиеЛица

Реквизит Подразделение

СправочникСсылка.Подразделения

Реквизит ПриказОПриемеНаРаботу

Строка, длина 50

Логика работы с данным справочником такова. ФизическоеЛицо, данные о котором хранятся в справочнике ФизическиеЛица, принимается на работу в определенное подразделение организации, данные об этом фиксируются в справочнике Сотрудники. Реквизит ПриказОПриемеНаРаботу нужен для хранения данных о приказе, которым работник был принят на работу (например: Приказ №1 от 01.01.2010).

Доработаем форму элемента справочника таким образом, чтобы его реквизит Наименование заполнялся автоматически при вводе или изменении данных в полях ФизическоеЛицо или Подразделение, и, в результате содержал бы текст такого вида: Фамилия И.О. (Подразделение).

Перейдем на вкладку окна редактирования объекта Формы, нажмем кнопку Открыть в поле указания формы элемента. В появившемся окне конструктора форм сразу же нажмем на кнопку Готово. У нас получится автоматически созданная форма такого вида (рис. 2.33).

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

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

Рисунок 2.33 - События поля ввода формы элемента справочника Сотрудники

Рисунок 2.34 - Обработчик события поля

Процедура ФизическоеЛицоПриИзменении создается автоматически. Она будет использоваться в качестве обработчика события в том случае, если будет указана в поле ПриИзменении. Это уже сделано при ее создании. То есть, другими словами, имя процедуры значения не имеет. Значение имеет то, что эта процедура будет указана в поле ПриИзменении окна свойств поля ввода Физическое лицо. Не каждая процедура может быть выбрана в качестве обработчика события. В частности, в нашем случае процедура должна иметь один параметр.

Приступим к написанию текста процедуры. Он будет таким:

Наименование = ФизическоеЛицо.Наименование +" ("+Подразделение.Наименование+")";

Здесь Наименование соответствует реквизиту Данные поля с именем Наименование. Мы можем обращаться к нему напрямую, записывая данные, которые отобразятся в поле Наименование.

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

Знак "+" используется для конкатенации (связывания) строк. Символы, заключенные в кавычки интерпретируются системой как текст.

При наборе текста работают подсказки. Для того, чтобы получить справку по коду, можно воспользоваться функцией вызова так называемого Синтакс-помощника из окна редактирования модуля. Для того чтобы получить такую справку, нужно установить курсор в интересующий нас участок текста и нажать сочетание клавиш Ctrl + F1. Например, установим курсор на слово Процедура и нажмем Ctrl + F1. Откроется окно со справочной информацией (рис. 2.35).

Рисунок 2.35 - Синтакс-помощник

Создадим обработчик события ПриИзменении для поля Подразделение. Он будет таким же точно, каким был текст обработчика аналогичного события для поля Физическое лицо, (2.36).

Рисунок 2.36 - Тексты процедур обработчиков событий

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

Процедура СформироватьНаименование ()

Наименование = ФизическоеЛицо.Наименование + " ("+Подразделение.Наименование+")";

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

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

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

На рисунке 2.37 вы можете видеть итоговый вариант кода модуля.

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

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

Рисунок 2.37 - Тексты процедур обработчиков событий

Вывод:

  • ознакомился со справочниками, перечислениями 1С:Предприятие 8.2 и получил начальные навыки по работе с ними;

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