Лабораторная работа 6

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

2. С помощью Синаткс-Помощника проанализируйте текст всех созданных процедур.

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

ОбластьИтог=Макет.ПолучитьОбласть(“Всего”);

СуммаИтог=0;

СуммаИтог=СуммаИтог+ВыборкаПереченьНоменклатуры.Сумма;

ОбластьИтог.Параметры.ВсегоПоДокменту=СуммаИтог;

ТабДок.Вывести(ОбластьИтог);

4. Проверьте работу печатной формы документа Оказание услуги (рис. 9.5).

Рис. 9.5.

 

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

Рис. 9.6

 

10. Регистры сведений

 

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

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

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

Периодичность регистра сведений можно определить одним из следующих значений:

в пределах секунды;

в пределах дня;

в пределах месяца;

в пределах квартала;

в пределах года;

в пределах регистратора (если установлен режим записи Подчинение регистратору).

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

Например, если в регистр сведений с периодичностью в пределах месяца записать данные, в которых период указан как 08.04.2016, то регистр сохранит эти данные со значением периода, равным 01.04.2016.

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

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

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

 

10.1. Создание периодического регистра сведений

Создадим механизм, позволяющий отслеживать во времени цены материалов и услуг, оказываемых нашим предприятием. Для этого создадим регистр сведений Цены. Периодичность: В пределах секунды. (Такая «частая» периодичность выбрана чисто в учебных целях, чтобы была возможность несколько раз менять цены во время одного занятия; обычно реальная периодичность изменения цен – В пределах дня). Режим записи: Независимый. Представление записи: Цена. Представление списка: Цены на номенклатуру.

Доступность в подсистемах: Бухгалтерия, УчетМатериалов, ОказаниеУслуг.

Измерение: Номенклатура (тип СправочникСсылка.Номенклатура). Укажем, что это измерение Ведущее (рис. 10.1).

 

Рис.10.1

 

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

 

Рис.10.2

 

Затем создадим ресурс Цена, тип Число, длина 15, точность 2, неотрицательное.

 

10.2. Использование периодического регистра сведений в документе

 

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

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

 

Рис.10.3

 

Поместите в модуль следующий текст (рис. 10.4)

 

Рис. 10.4

 

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

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

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

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

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

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

 

Рис. 10.5

 

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

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








Дата добавления: 2016-02-16; просмотров: 785;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.