644 документа
← К списку

В режиме "Конфигуратор"

страница

В режиме «Конфигуратор»

Функция, возвращающая цену номенклатуры

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

Откроем конфигуратор, в ветке Общие > Общие модули добавим новый объект конфигурации Общий модуль и назовем его РаботаСоСправочниками.

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

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

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

Поместим в него следующий текст (листинг 9.1).

Листинг 9.1. Функция «РозничнаяЦена()»

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

 

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

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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