Что такое 1С и с чем его едят. Часть 2. Справочники и константы

Откройте нашу первую базу в режиме "конфигуратор" (см. урок 1), далее откройте дерево конфигурации (главное меню - Конфигурация - Открыть конфигурацию).

Рассмотрим какими возможностями обладает платформа 1С 8.2, для начала пробежимся по дереву метаданных. Все объекты конфигурации сгруппированы платформой на несколько ветвей, ветка "Общие" содержит несколько подразделов общего назначения в том числе "интерфейсы" и "права", ветка "Константы" содержит все созданные программистом константы и т.д., разберем основные ветви.

Сразу оговоримся о некоторых стандартных командах, которые вы будете использовать постоянно:

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

 

Константы

Константы предназначены для хранения какой-то постоянной информации, значение константы, как правило, пользователь задает однократно в начале работы с учетной системой (новой БД) и затем это именованное значение используется многократно в разных местах конфигурации (конечно только там где программист посчитал нужным). Можно сказать что константа это хранилище какой-то "переменной", значение которой должно быть доступно всем пользователям и сохраняться между сеансами работы пользователей. Константой может быть, например, ЗаголовокСистемы - строка, которую можно использовать в заголовке окна программы, а можно задать константой ОсновнуюВалютуУчета - элемент выбранный из справочника "Валюты". Создадим новую константу "Заголовок системы":

Зададим ей тип "строка", длина 100 символов:

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

и добавим новую форму "НастройкиПрограммы"

Перейдем в свойства формы (F2) и через ссылку "Форма открыть" откроем саму форму и убедимся что константа уже присутствует в форме:

Вернемся к константе "Заголовок системы" в дереве, откроем ее свойства (F2) и изменим ее свойство "Основная форма" на "НастройкиПрограммы":

Можно проверить внесенные изменения, запускаем программу через F5 и меняем значение для константы:

Задействуем константу. Для того чтобы задействовать нашу константу сделаем общий модуль с именем "ОбщегоНазначения":

Зайдем в свойства модуля (F2) и установим флажок "Сервер", флажок "Клиент" снят, это означает что модуль будет скомпилирован только на стороне сервера и вообще то клиент не будет знать что такой модуль существует, чтобы его ожно было вызывать с клиента установим еще флажок "Вызов сервера":

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

Функция ПолучитьКонстанту(Параметр) Экспорт
	Если Параметр = "ЗаголовокСистемы" Тогда
		Заголовок = Константы.ЗаголовокСистемы.Получить();
		Возврат Заголовок;
	КонецЕсли;
КонецФункции

 

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

В модуле создадим новую процедуру, предопределенные процедуры удобно вызывать через кнопку на панели:

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

Процедура ПриНачалеРаботыСистемы()
	Заголовок = ОбщегоНазначения.ПолучитьКонстанту("ЗаголовокСистемы");
	УстановитьЗаголовокПриложения(Заголовок);
КонецПроцедуры
Результат, как обычно, просматриваем в режиме предприятия (F5):

 

Справочники

Справочники предназначенны для хранения условно-постоянной информации, в отличие от констант каждый "справочник" может содержать произвольное количество однотипных элементов. Каждый элемент справочника имеет ровно столько реквизитов, сколько их определил в конфигураторе программист 1С, а значения в реквизитах уже могут быть разными. Например, создав справочник "Товары", мы уже имеем два предопределенных реквизита*:
  • Код
  • Наименование
У каждого нового элемента, созданного пользователем во время работы в предприятии, в простом случае, "код" присваивается системой автоматически как [предыдущий + 1], наименование же задается им самостоятельно и может принимать произвольное значение для каждого элемента.

Замечание: Длину кода и наименования можно установить в окне свойств объекта, в том числе можно и обнулить, если в реквизите нет необходимости, таким образом оставив что-то одно можно уменьшить объем базы и увеличить быстродействие.

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

Добавим в наш справочник товары новый реквизит "ЕдиницаИзмерения":

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

  • Пользователь не сможет ошибиться и вбить единицу которой не существует (например "шт.", тогда как в компании принято "Шт").
  • Ускорение ввода, реквизиты можно заполнять вписывая с клавиатуры начало слова и нажимая enter. Актуально когда необходимо вписывать не две буквы как в нашем примере а 10-20.
  • Элементы справочника можно многократно использовать как реквизиты сразу в нескольких документах и справочниках. Что легко позволит связать различную вспомогательную информацию в одном отчете. Например, вывести рядом с остатками товара места хранения товара на складе и т.п.
Создадим новый справочник "ЕдиницыИзмерения" и выберем его как "Тип" в реквизит "ЕдиницаИзмерения" справочника товары:

 

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

Протестируем конфигурацию, запустим через F5, добавим в новый справочник единиц 3 элемента "Шт", "М", "Упак". Откроем справочник товары и впишем букву "ш" в поле "Единица":

Откроется выпадающее меню со всеми элементами справочника единицы, которые начинаются с "ш", т.к. единица такая одна сразу можно нажать enter и поле будет заполнено элементом "Шт". Можно воспользоваться и выбором через кнопку "..." левой кнопкой мыши выбрать то же самое значение.
Добавим еще один товар "Провод медный сечение 2мм" с единицой "М" в справочник товары:

Несколько замечаний по справочнику:

  • Код справочника может быть 2-х видов "Числовой" и "Строковый", длина задается программистом на закладке "Данные" в свойствах справочника. Код может быть сгенерирован автоматически, если это указано на закладке "Нумерация", там же можно задать проверку на уникальность кода, что позволит избежать записи двух элементов с одинаковым кодом.
  • Справочник может быть "иерархическим", указывается на закладке "Иерархия". Для такого справочника таблица может содержать "Группы" (подобно папкам windows), в которых храняться "Элементы" (аналогия файла в папке).
  • Кроме реквизитов справочник может содержать и "Табличные части" - дополнительные таблицы для каждого элемента заполненные своими данными. Например, можно создать в справочнике "Товары" табличную часть "Поставщики", где перечислить всех поставщиков этого товара.
  • Справочник может быть "подчиненным", т.е. каждый элемент может быть жестко связан с "владельцем", одним из элементов другого справочника. Типы владельцев можно указать на закладке "Владельцы".

 

Добавить комментарий