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

В 1C:EDT

страница

В 1C:EDT

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

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

Добавьте объект конфигурации – общий модуль с именем РаботаСоСправочниками.

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

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

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

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

 

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

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

 

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

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

 

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

 

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

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

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

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

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

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

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

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

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

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