Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

ЧАСТЬ 2. Доработка приложения

 

I. ДОБАВЛЕНИЕ ПОДСИСТЕМЫ

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

Наличие подсистем определяет весь пользовательский интерфейс, позволяет «рассортировать» документы, справочники,отчеты по логически связанными с ними разделами и сотрудниками.

 

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

Создадим в прикладном решении три подсистемы:

1. Бухгалтерия (для расчетов с клиентами),

2. Оказание услуг (для формирования документов приема и выдачи оборудования, закрепления мастера за конкретным заказом),

3. Расчет зарплаты (для расчета зарплаты сотрудникам).

 

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

Создадим подсистемы.

Вернемся в конфигуратор.

 

1. Правой кнопкой мыши щелкнем по Общие выбираем Подсистемы и нажимаем кнопку Добавить (рис. 61а).

Рис. 61а. Фрагмент Дерево объектов конфигуратора – Добавление Подсистемы

2. Зададим имя подсистемы – Бухгалтерия (рис. 61б).

Рис. 61б. Установка имени и синонима подсистемы

 

3. Также зададим картинку для отображения подсистемы (рис. 61б). Для этого необходимо нажать на кнопку выбора в поле Картинка .

В окне Выбор картинки (рис. 61в) необходимо добавить картинку в список на закладке Имя конфигурации. Для этого нажмите на кнопку Добавить (рис. 61в).

Рис. 61в. Выбор картинки для представления подсистемы

 

4. Дадим картинке имя Бухгалтерия. Чтобы задать картинку нажмите на кнопку Выбрать из файла  (рис. 61г).

Рис. 61г. Окно редактирования объекта конфигурации

 

5. В папке Мои документы найдите папку Image -1C. Отметьте файл Бухгалтерия и нажмите кнопку Открыть (рис. 61д). (При отсутсвии файлов, выберите любые другие подходящие картинки)

 

Рис. 61г. Выбор картинки для представления подсистем

 

Выбранная картинка должна появиться в списке картинок на закладке Из конфигурации (рис. 61д).

Рис. 61д. Выбор картинки для представления подсистемы

 

7. Нажать ОК.

Т.о. в дереве объектов конфигурации появилась новая подсистема

 

8. Аналогично создайте еще две подсистем Оказание услуг, Расчет зарплаты, выбрав для них картинки Услуги, Зарплата.

 

9. Изменим порядок подсистем. Выделите корень дерева объектов конфигурации и выберите пункт Открыть командный интерфейс конфигурации (рис. 61е).

Рис. 61е. Вызов окна настройки командного интерфейса конфигурации

 

В открывшемся окне Командный интерфейс с помощью кнопок  изменим порядок, как представлено на рис. 61ж.

Рис. 61ж. Окно настройки подсистем

 

10. Определим принадлежность созданных ранее объектов подсистемам. Это можно сделать двумя способами:

- в дереве объектов конфигурации выбрать конкретную подсистему и на вкладке Состав отметить все необходимые объекты для этой подсистемы (рис. 61з).

Рис. 61з. Настройка подсистемы

- в дереве объектов конфигурации выбрать Подсистемы далее Все подсистемы (рис. 61и).

 

Рис. 61и. Фрагмент Дерево объектов конфигуратора – Общие – Подсистемы – Все подсистемы

 

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

Рис. 61к. Окно настройки подсистемы

 

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

На рис. 62. представлен вид разрабатываемого приложения.

Рис. 62. Разделы прикладного решения

II. ПАНЕЛЬ НАВИГАЦИИ И ПАНЕЛЬ РАЗДЕЛОВ

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

Кроме этого Окно 1С: Предприятия содержит панель действий. Панель действий содержит команды, которые соответствуют текущему разделу, выбранному в панели разделов. Эти команды объединены в стандартные группы: Создать, Отчеты, Сервис и группы, созданные разработчиком. Группа Создать включает команды создания новых объектов базы, например, документов или элементов справочника.

Рис. 63. Окно 1С: Предприятие

 

Далее произведем доработку системы – усложним ее.

 

III. ПРОВЕРКА ЗАПОЛНЕНИЯ СТАНДАРТНЫХ РЕКВИЗИТОВ В СПРАВОЧНИКЕ

Вернемся в конфигуратор.

Откроем Справочник Клиенты, на закладке Данные нажмем кнопку Стандартные реквизиты. Выделим в списке реквизитов реквизит Наименование, вызовем его контекстное меню и выберем пункт Свойства (рис. 64а).

Рис. 64а. Состав стандартных реквизитов справочника

 

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

Рис. 64б. Палитра свойств стандартного реквизита Наименование

IV. ИЕРАРХИЧЕСКИЙ СПРАВОЧНИК

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

 

1. Создадим иерархический справочник с реквизитами с наименованием Подразделения (рис. 65а).

Рис. 65а. Установка наименования справочника Подразделения

 

2. Отметим, что справочник участвует во всех подсистемах Бухгалтерия, Оказание услуг, Расчет зарплаты (рис. 65б).

Рис. 65б. Определение списка подсистем,в которых участвует справочник

 

3. На закладке Иерархия установим флажок Иерархический справочник, Количество уровней иерархии – 2, ограничение количества уровней иерархии (рис. 65в).

Рис. 65в. Установка признака иерархического справочника

 

4. Установим видимость создания объектов справочника в подсистеме Расчет зарплаты (рис. 65г).

Рис. 65г. Окно настройки подсистем

 

5. Кроме типовых реквизитов справочник должен содержать другие данные (рис. 65д). На закладке данные создайте новые реквизиты:

- наименование – Должность, тип данных – строка, длина – 20;

- наименование – дата рождения, тип данных – дата;

- наименование – оклад, тип данных – число, длина – 6, неотрицательное.

Рис. 65д. Добавление новых реквизитов в справочник

 

6. При создании нового справочника автоматически создаются два реквизита: код и наименование. Реквизит Код необходим, а вот наименование не совсем логичное название реквизита. Заменим название реквизита Наименование на реквизит ФИО. Для этого откроем вкладку Формы и добавим Форму элемента справочника (рис. 65е).

Рис. 65е. Конструктор формы справочника

 

Нажимаем кнопку Далее. На экране откроется список реквизитов формы (рис. 65ж). В списке ничего не меняем. Нажимаем на кнопку ОК.

Рис. 65ж. Список элементов (реквизитов) формы справочника

 

7. На экране откроется Окно редактирования форм, которое имеет три области: реквизиты, типы реквизитов, внешний вид формы (рис. 65з).

Рис. 65з. Окно редактирования форм

 

В верхнем левом поле, где представлены реквизиты, выделите реквизит Наименование. Откройте свойства данного поля и замените заголовок на ФИО (рис. 65и).

Рис. 65и. Фрагмент Свойства реквизита Наименование Формы справочника Подразделения

 

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

 

Созданный справочник имеет иерархическую структуру:

- вначале создаем подразделения нажатием на кнопку  (рис. 65к);

Рис. 65к. Форма создания новой группы в справочнике Подразделения

- потом заносим информацию по сотруднику (рис. 65л).

Рис. 65л. Форма создания нового сотрудника в справочнике Подразделения

 

ВВОД ДАННЫХ В БД

1. Введем в разработанный справочник 4 подразделения: Дирекция, Бухгалтерия, Мастера, Склад (рис. 65м).

Рис. 65м. Форма создания группы справочника Подразделения

 

2. В каждое подразделение введем данные по сотрудникам: Дирекция – 3 человека, Бухгалтерия – 2 человека, Мастера – 8 человек, Склад – 2 человека. Данные для ввода сформулируйте самостоятельно по смыслу разрабатываемого решения (рис. 65н).

Рис. 65н. Форма создания элемента справочника Подразделения

 

V. ИЕРАРХИЧЕСКИЙ СПРАВОЧНИК С ТАБЛИЧНОЙ ЧАСТЬЮ И СВЯЗЬ С ДОКУМЕНТОМ

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

Данный справочник будет сложный.

Кроме этого свяжем справочник Номенклатура услуг с документом Акт приема в ремонт. Создадим у данного документа табличную часть так, чтобы наименование услуги можно было выбрать из справочника.

 

1. Введите необходимые данные по справочнику, как показано на рис.

Рис. 66а. Установка наименования справочника Номенклатура услуг

Рис. 66б. Определение списка подсистем,в которых участвует справочник

Рис. 66в. Установка признака иерархического справочника

Рис. 66г. Окно настройки подсистем

2. Откроем вкладку Данные документа АктПриемаВРемонт и добавим в табличную часть Услуги. Создадим следующие реквизиты табличной части для Услуги (рис. 66д):

- Имя – Услуга, Тип данных – СправочникСсылка.НоменклатураУслуг (рис. 66е).

- Имя – Цена, Тип данных – Число, Флаг – неотрицательное, Точность – 2 (рис. 66ж).

- Имя – Количество, Тип данных – Число, Флаг – неотрицательное, Точность – 0 (рис. 66з).

- Имя – Сумма, Тип данных – Число, Флаг – неотрицательное, Точность – 2 (рис. 66и).

Рис. 66д. Создание реквизитов табличной части

Рис. 66е. Свойства реквизита табличной части Услуга

Рис. 66ж. Свойства реквизита табличной части Цена

Рис. 66з. Свойства реквизита табличной части Количество

Рис. 66и. Свойства реквизита табличной части Сумма

3. Для ввода данных нам понадобится форма документа. Нажмем на закладку Формы. Нажимаем на кнопку Просмотр поля Форма документа. На экране появилось окно Конструктор формы документа (рис. 67а). Выбираем Форма документа. Нажимаем на кнопку Далее. Открывается окно с реквизитами создаваемой формы. Ничего не меняем. Нажимаем на кнопку Готово (рис. 67б).

Рис. 67а. Конструктор формы документа

Рис. 67б. Конструктор формы документа – Реквизиты формы

 

4. На экране откроется Окно редактирования форм, которое имеет три области: реквизиты, типы реквизитов, внешний вид формы (рис. 67в).

Рис. 67в. Окно редактирования формы документа

 

В верхнем левом поле представлены реквизиты документа Акт приема в ремонт (рис. 67г).

Рис. 67г. Элементы документа Акт приема в ремонт

 

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

Т.е. необходимо написать на встроенном языке команду, похожую на Сумма = Количество*Цена, которая будет выполняться при изменении значения поля Количество или Цена.

 

Создание процедуры обработки события в модуле формы.

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

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

 

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

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

Рис. 68. Шаблон обработчика события «ПриИзменении» поля табличной части «Количество»

 

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

 

Модуль – это «хранилище» для текста программы на встроенном языке. В данном случае это модуль формы, т.к. обработчики всех интерактивных событий, связанных с элементами формы, помещаются именно в модуль формы.

 

До процедуры УслугиКоличествоПриИзменении напишем процедуру расчета Суммы, которую необходимо будет вызывать при изменении Количества или Цены.

В первой части строки создадим переменную СтрокаТабличнойЧасти, в которую будет помещен объект, содержащий данные, находящиеся в строке табличной части,которую необходимо пересчитать. Здесь не надо объявлять переменные заранее. Создаем переменную прямо по ходу работы, и ее тип определяется типом значения, которое она содержит.

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

В модуль формы рис. 68 добавим следующий текст для УслугиКоличествоПриИзменении:

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

Коллекция элементов формы является объектом встроенного языка ВсеЭлементыФормы, содержащим все элементы формы. Т.е. это программный аналог корня дерева элементов формы.

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

Табличная часть документа представляет собой объект встроенного языка ТаблицаФормы. Получив ту строку,в которой в настоящее время осуществляется редактирование,можно при помощи свойства программного объекта ТаблицаФормы – ТекущиеДанные (Элементы.Услуги.ТекущиеДанные).

 

6. Аналогично создадим обработчик событий ПриИзменении для УслугиЦенаПриИзменении:

Данная процедура должна вызываться каждый раз при изменении Цены.

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие. Проверим работу внесенных изменений.

ВВОД ДАННЫХ В БД

1. В справочнике НоменклатураУслуг ведем 3 группы услуг: Кузовной цех, Малярный цех, ТрейдИН (рис. 67д).

Рис. 67д. Форма создания группы справочника Номенклатура услуг

2. В каждую группу услуг введем не менее 6 записей. Данные для ввода сформулируйте самостоятельно по смыслу разрабатываемого решения (рис. 67е).

Рис. 67е. Форма создания элемента справочника Номенклатура услуг

 

3. Внесите не менее 10 Актов приема в ремонт (рис. 67ж).

Рис. 67ж. Форма для ввода данных по документу Акт приема в ремонт

VI. ОДНА ПРОЦЕДУРА ДЛЯ ОБРАБОТКИ НЕСКОЛЬКИХ СОБЫТИЙ

В рассмотренном выше примере два раза был использован один и тот же программный код при обработке событий.

 

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

1. В дереве объектов конфигурации выбрать Общие далее Общие модули, кнопка Добавить (рис. 68а).

Рис. 68а. Выбор объекта конфигурации Общие модули

2. Назовем новый общий модуль РаботаСДокументами (рис. 68б). Установим в свойствах флажок Клиент (управляемое приложение), а флажок Сервер снимем. Это значит, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента.

Рис. 68б. Свойства объекта конфигурации Общие модули

 

3. Внесем в модуль следующий текст:

 

В процедуру РассчитатьСумму() передаем переменную СтрокаТабличнойЧасти, которая была определена в обработчике событий ПриИзменении полей Количество и Цена документа Акт приема в ремонт.

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

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

 

4. Внесем изменения в Модуль Формы документа Акт приема в ремонт для полей Количество и Цена.

 

В результате выполнения первой строки процедуры обработчика переменная СтрокаТабличнойЧасти будет содержать объект ДанныеФормыСтруктура. Этот объект содержит данные,находящиеся в текущей строке табличной части документа (Элементы.Услуги.ТекущиеДанные).

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

 

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

ВВОД ДАННЫХ В БД

1. Внесите еще 2 записи в Акты приема в ремонт для того, чтобы проверить работу приложения после изменений (рис. 67ж).

VII. ДОКУМЕНТ «ОКАЗАНИЕ УСЛУГИ»

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

 

1. Добавим новый ДокументВыполнениеУслуги. Введем данные, как показано на рис. 69. Обратите внимание на Представление списка – Оказание услуги, так документ будет называться в приложении.

Рис. 69а. Установка основных свойств документа

2. Отметим необходимые подсистемы (рис. 69б).

Рис. 69б. Определение списка подсистем

3. На закладке Данные создадим реквизиты документа (рис. 69в):

- Клиент – СправочникСсылка.Клиенты. Установим свойство Проверка заполнения в значение Выдавать ошибку;

- Оборудование Справочник.Сссылка.Оборудование. Установим свойство Проверка заполнения в значение Выдавать ошибку;

- Склад – СправочникСсылка.Склады. Выбреем для свойства Значение заполнение предопределенный элемент Основной склад справочника.

- Мастер – Справочник.Ссылка.Подразделения. Установим свойство Проверка заполнения в значение Выдавать ошибку.

Рис. 69в. Реквизиты документа ВыполнениеУслуги

 

В табличной части документа создадим ПереченьНоменклатуры с реквизитами (рис. 69г):

- Услуга, тип СправочникСсылка.НоменклатураУслуг;

- Количество, тип Число, длина 15, точность 3, неотрицательное;

- Цена, тип Число, длина 15, точность 2, неотрицательное;

- Сумма, тип Число, длина 15, точность 3, неотрицательное.

Рис. 69г. Реквизиты табличной части документа ВыполнениеУслуги

 

4. На закладке Формы создайте основную форму документа аналогично Форме АктПриемаВРемонт.

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

Необходимо создать два обработчика событий ПереченьНоменклатурыКоличествоПриИзменении и ПереченьНоменклатурыЦеныПриИзменении.

 

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

 

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

ВВОД ДАННЫХ В БД

1. Внесите не менее 10 документов Оказание услуги для того, чтобы проверить работу приложения после изменений.

Рис. 69д. Форма ввода данных по документу Оказание услуги

VIII. ПЕРИОДИЧЕСКИЙ РЕГИСТР СВЕДЕНИЙ

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

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

В дальнейшем может возникнуть потребность анализа изменений стоимости услуг во времени.

Для этого воспользуемся Регистром сведений.

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

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

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

 

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

 

1. Добавить новый Регистр сведений (рис. 70а).

Рис. 70а. Выбор объекта конфигурации Регистр сведений

 

2. Присвоим имя Регистру сведений – Цены. Установим периодичность В пределах секунды (т.к. необходимо отслеживать цены несколько раз в течении дня). Также установим Представление записи как Цена, а Представление списка как Цены на номенклатуру (рис. 70б).

Рис. 70б. Основные свойства регистра сведений Цены

 

Обратите внимание на свойство Режим записи. По умолчанию оно имеет значение – Независимый, т.е. в созданный независимый регистр сведений в дальнейшем можно будет вводить данные без использования регистратора», вручную».

 

3. На закладке Подсистемы по логике конфигурации укажем, что регистр будет доступен в разделах Бухгалтерия, Оказание услуг.

 

4. На закладке Данные создадим измерение НоменклатураУслуг с типом СправочникСсылка.НоменклатураУслуг. Укажем, что это измерение будет Ведущим (рис. 70в).

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

Рис. 70в. Создание ведущего измерения регистра сведений

 

4. Далее создадим ресурс Цена, тип Число, длина 15, точность 2, неотрицательное (рис. 70г).

Рис. 70г. Ресурс регистра сведений

 

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

 

ВВОД ДАННЫХ В БД

1. Задайте несколько вариантов цен от 2-х до 5-ти по каждой услуги из справочника на разные даты при помощи формы (рис. 70д).

Рис. 70г. Форма для ввода цен на услуги в регистре сведений

 

IX. АВТОМАТИЧЕСКАЯ ПОДСТАНОВКА ЦЕНЫ В ДОКУМЕНТ ПРИ ВЫБОРЕ НОМЕНКЛАТУРЫ

 

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

Для этого необходимо:

1. написать функцию РозничнаяЦена, которая будет возвращать актуальную цену;

2. вызвать функцию, когда в документ будет добавляться новая номенклатура.

Поскольку такая функция может понадобиться в дальнейшем, напишем ее в «общедоступном» месте – в общем модуле.

 

1. Создать функцию РозничнаяЦена в ветке Общие – Общие модули с названием РаботаСоСправочниками. Установить флаг Вызов сервера (чтобы экспортные процедуры и функции этого модуля можно было бы вызвать с клиента) (рис. 71а).

Рис. 71а. Свойства общего модуля

 

2. Поместите в модуль следующий текст.

Функция РозничнаяЦена(АктуальнаяДата,ЭлементНоменклатурыУслуг)Экспорт

       //Создать вспомогательный объект Отбор

       Отбор = Новый Структура("НоменклатураУслуг",ЭлементНоменклатурыУслуг);

           

       //Получить актуальные значения ресурсов регистра

       ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,Отбор);

       Возврат ЗначенияРесурсов.Цена;

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

 

 

Поясним функцию.

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

- АктуальнаяДата – параметр типа Дата, определяет точку на оси времени, в которой нас интересует значение розничной цены.

- ЭлементНоменклатурыУслуг – ссылка на элемент справочника НоменклатураУслуг, для которого необходимо получить розничную цену.

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

Имя ключа структуры («Н оменклатураУслуг») должна совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры (ЭлементНоменклатурыУслуг) задает отбираемое по данному измерению значение.

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

Метод ПолучитьПоследнее возвращает структуру, содержащую значения ресурсов, которая сохраняется в переменной ЗначенияРесурсов.

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

Т.о. данную функцию можно вызывать в некоторый момент времени.

 

3. Далее решим задачу подстановки актуальной цены в документ.

Необходимо открыть Форму документа ВыполнениеУслуги (она была создана ранее). В Модуль формы необходимо дописать Процедуру ПриИзменении.

Для этого дважды щелкните на элемент формы ПереченьНоменклатурыУслуга (рис. 71б).

Рис. 71б. Элементы документа Выполнение услуги

 

В окне свойств в событии ПриИзменении создайте обработчик события, в который внесем следующий текст:

 

&НаКлиенте

Процедура ПереченьНоменклатурыУслугаПриИзменении(Элемент)

       //Получить следующую строку табличной части

       СтрокаТабличнойЧасти=Элементы.ПереченьНоменклатуры.ТекущиеДанные;

 

       //Установить цену

СтрокаТабличнойЧасти.Цена=РаботаСоСправочниками.РозничнаяЦена(Объект.Дата,СтрокаТабличнойЧасти.Услуга);

 

       //Пересчитать сумму

       РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

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

 

 

Поясним функцию.

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

Затем вызываем функцию РозничнаяЦена() из общего модуля РаботаСоСправочниками.

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

Вторым параметром передаем ссылку на элемент справочника НоменклатураУслуг, который содержится в текущей строке табличной части документа (СтрокаТабличной.Услуга).

Функция возвращает последнее значение цены, и это значение присваивается полю Цена в текущей строке табличной части документа (СтрокаТабличнойЧасти.Цена).

Здесь вызывается процедура РассчитатьСумму из общего модуля РаботаСДокументами.

Обратите внимание, что процедура ПереченьНоменклатурыУслугаПриИзменении() начинает работать в модуле формы на стороне клиента, т.к. это обработчик интерактивного события формы. Создавая заготовку этой процедуры, платформа автоматически разместит перед описанием процедуры директиву компиляции &НаКлиенте.

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

 

Проверим в работе выполненные выше действия, запустим приложение в режиме 1С: Предприятие. Поработаем с разработанной конфигурацией.

ВВОД ДАННЫХ В БД

1. Введите в приложение не менее 8-ми документов Оказание услуги.

X. ПЕРЕЧИСЛЕНИЯ

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

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

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

 

1. Создайте новый объект конфигурации Перечисления с именем ВидыНоменклатурыУслуг (рис. 72а).

Рис. 72а. Выбор объекта конфигурации Пер

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...