21.4. Создание функции РозничнаяЦена

122. Создайте функцию, которая будет возвращать актуальную розничную цену номенклатуры: в ветке Общие | Общие модули создайте новый объект конфигурации Модуль и назовите его РаботаСоСправочниками

123. Разместите код:

Пример 21.1.

Функция РозничнаяЦена(АктуальнаяДата,
ЭлементНоменклатуры) Экспорт  //создать
вспомогательный объект Отбор
 Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);
 //получить актуальные значения ресурсов
регистра
ЗначенияРесурсов=РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата,
Отбор); 
Возврат ЗначенияРесурсов.Цена; 
КонецФункции


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

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

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

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

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

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