
V8_4_КонстПеречСправочники.ppt
- Количество слайдов: 40
Глава 4. Основные объекты конфигурации 4. 1. Константы В конфигурациях V 8 для редактирования значений констант рекомендуется создавать отдельную экранную (общую )форму
Форма для константы Форма констант является общей формой, но можно разместить поле для доступа к константе в любой другой форме Замечание 1. По сравнению с V 7. 7 в V 8 больше не существует системной формы для редактирования всех констант единым списком. Замечание 2. Если в конфигураторе разработчик не создаст форму констант, то она будет сформирована автоматически при вызове списка констант в режиме 1 С: Предприятие.
Обращение к константам из программы // чтение значения из константы Название = Константы. Название. Организации. Получить(); // запись нового значения в константу Константы. Название. Организации. Установить(“Искра”); Работа с набором констант : //создаем набор из двух констант Набор = Константы. Создать. Набор("Руководитель, ИНН"); Набор. Прочитать(); //прочитать из базы сразу две константы //изменить значение констант в наборе (не в базе) Набор. Руководитель = "Иванов И. И. "; Набор. ИНН = "1234567890"; Набор. Записать(); //записать в базу сразу две константы При использовании набора все входящие в него константы считываются и записываются вместе в одной транзакции, т. е. операция над несколькими константами производится одновременно. Замечание. В V 8 отсутствуют периодические константы.
4. 2. Перечисления Список значений перечисления создается в конфигураторе и его перечисления нельзя редактировать, так как алгоритм конфигурации ориентирован на наличие определенных значений. Примеры обращений: Если Тип. Клиента = Перечисления. Тип. Клиента. Обычный Тогда //расчет скидки для обычных клиентов … Иначе. Если Тип. Клиента = Перечисления. Тип. Клиента. Важный Тогда //расчет скидки для важных клиентов … Иначе Сообщить("Не указан тип клиента!"); Конец. Если;
Системные перечисления В платформу V 8 введены системные перечисления. Системные перечисления образуют тип. Пример 1: Таб. Док. Ориентация. Страницы = Ориентация. Страницы. Портре т; Пример 2: Если Вопрос("Вы уверены? ", Режим. Диалога. Вопрос. Да. Нет) = Код. Возврата. Диалога. Да Тогда … Конец. Если;
Системные наборы значений в отличие от системных перечислений не образуют типа. Например, некоторые часто используемые спецсимволы были собраны в системный набор значений Символы, в котором содержатся следующие значения: • ПС перевод строки • ВК возврат каретки • Таб символ табуляции, • ПФ перевод формы (страницы), • ВТаб вертикальная табуляция, • НПП пробел. Например: стр = стр1 + Символы. ПС + Символы. ВК + стр2;
4. 3. Справочники Разработка справочников ведется с помощью Конструктора справочника
Основные свойства В V 8 есть возможность создания иерархических справочников и табличных частей у справочников. Во всех справочниках есть системные реквизиты Код и Наименование (если только у них не установлена нулевая длина). При формировании дополнительных реквизитов необходимо настроить их свойства.
Составной тип данных У реквизита справочника (и реквизитов других объектов) может быть составной тип данных. Это означает, что он может содержать значения разных типов данных, перечень которых задается в Конфигураторе. Например, реквизит Место. Работы в справочнике Физлица может быть составным
Предопределенные элементы На этапе разработки конфигурации в справочник могут быть введены предопределенные элементы и группы справочника. Эти элементы имеют имена, по которым к ним производится обращение из программы. Предопределенные элементы справочника имеет смысл создавать, если сама конфигурация ориентирована на их использование. Группа = Справочники. Сотрудники. Работающие; (обращение похоже на перечисление)
Подчиненные справочники Между справочниками может быть установлено отношение подчиненности (см. V 7). В V 8 у справочника может быть несколько владельцев, то есть справочник может быть подчинен сразу нескольким справочникам или другим объектам. Но каждый элемент подчиненного справочника имеет одного и только одного владельца, который хранится в одном из объектов владельцев.
Табличные части В V 8 можно для справочника создать одну или несколько табличных частей для хранения подчиненной по отношению к элементу справочника информации. Например, состав семьи сотрудника может храниться в табличной части формы элемента справочника сотрудников. Разработчик должен сделать выбор между формированием подчиненного справочника и разработкой табличной части для хранения подчиненной информации. Правило для выбора: Если может возникнуть потребность ссылаться на подчиненные объекты, например, создавать ссылающиеся на них реквизиты документов или других справочников, то лучше завести подчиненный справочник. Если же ссылка на такие сведения не имеет смысла и никогда не может быть типом какого либо реквизита, тогда можно завести табличную часть. Например, список расчетных счетов контрагента лучше хранить в подч. справочнике, т. к. в платежных документах необходимо выбирать Р/С из списка (реквизит документа).
Иерархические справочники Иерархический справочник может содержать компоненты двух видов: • Элементы и группы – аналог V 7 • Только элементы - в этом случае иерархический справочник состоит только из элементов. Любой элемент может выполнять функцию группы, т. е. он может быть родительским элементом для других элементов этого же справочника. Например, по такому принципу можно организовать справочник Подразделения. В любой момент времени какой нибудь отдел может быть разделен внутри себя на несколько подотделов, и отразить это в справочнике не составит никакого труда . В V 8 появилась возможность неограниченной вложенности групп и элементов друга. Этот вариант
Экранные формы Основные формы Произвольные формы Если разработчик не создал ни одной экранной формы для справочника, то основные формы будут сгенерированы «на лету» при выполнении программы
Основные формы. Основной реквизит Кроме реквизитов справочника, в форме можно использовать реквизиты формы
Продолжение При формировании основной формы автоматически формируется так называемый основной реквизит формы (на пред. слайде – Справочник. Объект. Физичские. Лица). За счет этого в контекст данной формы включаются дополнительные свойства и методы, характерные для основного реквизита. Замечание. В любой экранной форме можно вывести список элементов любого справочника, поскольку в V 8 экранные формы отделены от объектов конфигурации.
Продолжение Для этого нужно всего лишь расположить в форме элемент управления Табличное. Поле и в его свойстве Тип. Значения выбрать тип «Справочник. Список. <Имя. Справочника>» .
Результат:
Приемы программирования Работа со справочниками из программы производится с помощью нескольких объектов. Каждый объект имеет свое назначение, собственные свойства и методы. • Справочники. Менеджер Обеспечивает доступ ко всем справочникам конфигурации. Свойства этого объекта совпадают с именами справочников и содержат объекты типа Справочник. Менеджер. • Справочник. Менеджер Обеспечивает доступ к операциям над справочником как множеством элементов. Через методы этого объекта можно осуществлять поиск, , создавать новые элементы или группы, обращаться к формам и макетам справочника. • Справочник. Ссылка Данный объект однозначно идентифицирует элемент (группу) справочника и позволяет обращаться к нему в режиме «только чтение» . Через свойства и методы этого объекта можно прочитать реквизиты элемента (группы), обратиться к его табличным частям. Значение этого типа хранится в реквизитах, ссылающихся на элементы данного справочника. Например, в реквизите Сотрудник документа Прием. На. Работу хранится ссылка на конкретный элемент справочника Сотрудники.
Приемы программирования • Справочник. Объект Предоставляет доступ к элементу с возможностью записи. Данный объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить. • Справочник. Выборка Предоставляет возможность обхода (перебора) элементов справочника. Выборка может быть прямой или иерархиче ской (если справочник многоуровневый). • Справочник. Список Объект для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке. Продемонстрируем на примерах выполнение типичных операции со справочниками.
Обращение к менеджеру справочника Спр. Сотр = Справочники. Сотрудники; Спр. Товары = Справочники["Номенклатура"]; (аналог в V 7 Создать. Объект(…) Полученные переменные (Спр. Товары ) предоставляют доступ к объекту Справочники. Менеджер Объект Справочники. Менеджер является коллекцией значений и позволяет обратиться к конкретному элементу коллекции
Выборка элементов справочника Производится через объект Справочник. Выборка, который возвращается при вызове методов Выбрать и Выбрать. Иерархически объекта Справочник. Менеджер: Выбрать(<Родитель>, <Владелец>, <0 тбор>, <Порядок>) ; Пример 1. Спр. Выборка = Справочники. Номенклатура. Выбрать(); Пока Спр. Выборка. Следующий()Цикл Сообщить(Спр. Выборка. Код + " " + Спр. Выборка. Наименование); //перебор строк табличной части Для Каждого стр Из Спр. Выборка. Единицы. Измерения. Товара Цикл Сообщить(" " + стр. Единица. Измерения); Конец. Цикла; Пример 2: Отбор = Новый Структура("Тип. Родства"); Отбор. Тип. Родства = Перечисления. Тип. Родства. Сын; Спр. Выборка = Справочники. Семья. Выбрать(, Выб. Сотр, Отбор, );
Создание элементов и групп справочника Производится через специальный объект Справочник. Объект. Пример 1. Новая. Группа = Справочники. Сотрудники. Создать. Группу(); Новая. Группа. Код = 1; Новая. Группа. Наименование = "Прочие"; Новая. Группа. Записать(); Пример 2. Новый. Сотрудник = Справочники. Сотрудники. Создать. Элемент(); Новый. Сотрудник. Код 100; Новый. Сотрудник. Наименование, = "Иванович"; Новый. Сотрудник. Родитель = Новая. Группа. Ссылка; Новый. Сотрудник. Записать();
Поиск в справочнике Используются методы Найти. По. Коду, Найти. По. Наименованию и Найти. По. Реквизиту. Эти методы возвращают ссылку на найденный элемент или пустую ссылку. Проверка на пустую ссылку производится методом Пустая, который возвращает значение Истина, если ссылка действительно пустая. Примеры. Сотр. Ссылка = Справочники. Сотрудники, Найти. По. Коду(100); Если НЕ Сотр. Ссылка. Пустая() Тогда Сообщить("Найден сотрудник с кодом 100: " + Сотр. Ссылка. Наименование); Конец. Если; //2 -й вариант проверки на пустую ссылку Если Сотр. Ссылка = Справочники. Сотрудники. Пустая. Ссылка() Тогда … Конец. Если;
Удаление элемента или группы Производится с помощью объекта Справочник. Объект Сотр. Ссылка = Справочники. Сотрудники. Найти. По. Коду(100); Если Не Сотр. Ссылка. Пустая() Тогда Сотр. Объект = Сотр. Получить. Объект(); //1 -й вариант пометки на удаление Сотр. Объект. Пометка. Удаления = Истина; Сотр. Объект. Записать(); //2 -й вариант пометки на удаление Сотр. Объект. Установить. Пометку. Удаления(Истина); //3 -й вариант: непосредственное удаление объекта Сотр. Объект. Удалить(); Конец. Если; Метод Установить. Пометку. Удаления отличается от первого способа тем, что второй параметр этого метода позволяет установить (снять) пометку на удаление для всех подчиненных элементов, если справочник является иерархическим. Установить. Пометку. Удаления(<Пометка удаления>, <Включая подчиненные>) Пример: Объект. Установить. Пометку. Удаления(Истина, Истина);
Открытие форм справочника Часто требуется программно открыть какую либо форму справочника, например, при нажатии на клавишу Подбор в документах для заполнения табличной части. //обращение к форме по имени Форма = Справочники. Сотрудники. Получитьформу("Форма. Для. Мене джера"); Форма. Открыть(); //открыть основную форму списка Справочники. Сотрудники. Получить. Форму. Списка(). Откры ть();
Открытие форм справочника (продолжение) //открыть подбор товара из документа, //текущая форма будет владельцем открываемой формы Форма = Справочники. Номенклатура. Получить. Форму. Выбора(, Эта. Форма); Если НЕ Форма. Открыта() Тогда //если она еще не открыта Форма. Имя. Сохранения. Положения. Окна = "Номенклатура. Подбор"; Конец. Если; //установить свойства формы до ее открытия Форма. Режим. Выбора = Истина; Форма. Закрывать. При. Выборе = Ложь; //открыть форму или активизировать уже открытую форму Форма. Открыть();
Работа с табличным частями Для обхода строк табличной части рекомендуется при менять конструкцию «Для Каждого. . . » . Для Каждого Ут. Д Из Выб. Сотр. Утв. Документы Цикл Сообщить(Ут. Д. Документ); Конец. Цикла
Модуль объекта В нем располагаются обработчики событий, связанных с элементом справочника.
Модуль объекта(продолжение) • Перед. Записью • При. Записи ( после записи элемента справочника в БД, но до окончания транзакции записи, т. е. можно отказаться от записи элемента) • Перед. Удалением • При. Установке. Нового. Кода - событие возникает в момент, когда выполняется установка нового кода элемента справочника. • Обработка. Заполнения - событие возникает при вводе элемента справочника на основании, а также при выполнении метода Заполнить. В процедуре обработчике этого события должен быть описан алгоритм заполнения реквизитов элемента справочника на основании переданного значения. Обработчики событий будут вызываться всегда при наступлении указанных событий, даже если событие инициировано программными вызовами, например методами Записать и Удалить
Модуль объекта(пример) Допустим, в конфигурации не допускается ввод элемента справочника номенклатура без указания основной единицы измерения. Тогда в модуле объекта справочника Номенклатура необходимо предусмотреть обработку события Перед. Записью: Процедура Перед. Записью(Отказ) Если Это. Группа = Ложь И Единица. Измерения. Пустая() Тогда Сообщить("Не указана основная ед. измерения!"); Отказ = Истина; Конец. Если; Конец. Процедуры
4. 4. Элементы управления являются основными строительными блоками, из которых складывается интерфейс пользователя. Все элементы управления имеют некоторые сходные свойства. К таким свойствам относятся имя, заголовок, положение в форме и размеры, привязка границ, порядок обхода, видимость, доступность и др.
Список элементов управления
Поле ввода применяется для ввода значений различных типов, например, чисел, строк, дат. Оно также применяется для выбора элементов справочников, документов, значений перечислений и др. Поле ввода может содержать дополнительные кнопки для выбора значения, очистки поля, просмотра значения, выбора из списка и кнопки регулирования. Наличие этих кнопок определяется в свойствах поля ввода установкой соответствующих флажков
Продолжение
продолжение Каждый элемент управления имеет свойства, методы, события. Свойства и события ЭУ видны в окне палитры свойств объекта. Замечание. Необходимо понимать разницу между полем ввода и реквизитом объекта. Поле ввода является элементом управления, видимым пользователю и предназначенным для редактирования реквизита объекта. Чтобы реквизит объекта был доступен пользователю для просмотра и редактирования, между элементом управления (например, полем ввода или колонкой табличного поля) и реквизитом объекта устанавливается связь. Это делается путем указания свойства Данные для элемента управления. В зависимости от типа данных, связанных с элементом управления, он имеет различный набор свойств, методов, событий
продолжение Имя поле ввода может не совпадать с именем реквизита документа. Например, поле ввода с именем Поле. Оклад может быть связано с реквизитом Оклад. Имя элемента управления используется при обращении к нему для установки свойств, определяющих его внешний вид и поведение. В этом случае обращение производится через коллекцию Элементы. Формы, например Поле. Оклад = Элементы. Формы. Поле. Оклад; Поле. Оклад. Видимость = Истина; Поле. Оклад. Максимальное. Значение = 10000; Поле. Оклад. Минимальное. Значение = 500; Поле. Оклад. Отметка. Незаполненного = Истина; Поле. Оклад. Кнопка. Очистки = Истина;
продолжение У поля ввода существует несколько событий, которые разработчик может перехватывать для выполнения каких либо действий Начало. Выбора - Событие возникает при нажатии на кнопку выбора у поля ввода или нажатии клавиши F 4. Начало. Выбора. Из. Списка - Событие возникает при нажатии на кнопку выбора из списка. Очистка - Это событие возникает при нажатии кнопки очистки или по комбинации клавиш Shift+F 4 Регулирование - Данное событие возникает при нажатии на одну из кнопок регулирования (увеличения или уменьшения значения).
Продолжение Открытие - Событие возникает при нажатии на кнопку открытия объекта или комбинации клавиш Ctrl Shift F 4. Обработка. Выбора - Это событие возникает после осуществления выбора, но до помещения выбранного значения в элемент управления. Окончание. Ввода. Текста - Событие возникает после окончания ввода текста при переходе к другому элементу управления. Например, в расходной накладной при изменении контрагента нужно пересчитать цены в соответствии с типом цен для текущего контрагента: Процедура Контрагент. При. Изменении(Элемент) Если Не Контрагент. Пустая() Тогда Если Тип. Цен <> Контрагент. Тип. Цен Тогда Тип. Цен = Контрагент. Тип. Цен; Пересчет. Цен(); Конец. Если; Конец. Процедуры
Пример обращения к ЭУ «Надпись» Элементы. Формы. Надпись. Тип. Цен. Заголовок = "Тип розничной цены"; Элементы. Формы. Надпись. Тип. Цен. Цвет. Текста = Новый Цвет(200, 0, 0); Элементы. Формы. Надпись. Тип. Цен. Прозрачный. Фон = Истина; Элементы. Формы. Надпись. Тип. Цен. Видимость = Истина; Остальные ЭУ - самостоятельно
V8_4_КонстПеречСправочники.ppt