В 1C:EDT
страницаВ 1C:EDT
Функция, возвращающая цену номенклатуры
Сначала вы создадите функцию РозничнаяЦена(), которая будет возвращать вам актуальную розничную цену номенклатуры, и поместите ее в общий модуль конфигурации.
Добавьте объект конфигурации – общий модуль с именем РаботаСоСправочниками.
В панели Свойства у этого модуля по умолчанию установлен флажок Сервер. Это означает, что экземпляры этого модуля будут скомпилированы только на стороне сервера. Кроме этого установите флажок Вызов сервера, для того чтобы экспортные процедуры и функции этого модуля можно было вызывать с клиента.
Поместите в модуль следующий текст (листинг 9.1).
Листинг 9.1. Функция «РозничнаяЦена()»
Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
// Создать вспомогательный объект "Отбор".
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
// Получить актуальные значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции
Для получения розничной цены вы будете передавать в функцию два параметра:
АктуальнаяДата– параметр типа Дата, определяет точку на оси времени, в которой вас интересует значение розничной цены;ЭлементНоменклатуры– ссылка на элемент справочникаНоменклатура, для которого вы хотите получить розничную цену.
В теле функции вы сначала создаете вспомогательный объект Отбор.
Это структура, содержащая отбор по измерениям регистра. С его помощью вы определяете, что вас будут интересовать записи регистра, в которых измерение регистра Номенклатура равно переданной в функцию ссылке на элемент справочника.
Имя ключа структуры (Номенклатура) должно совпадать с именем измерения регистра, заданного в 1C:EDT, а значение элемента структуры (ЭлементНоменклатуры) задает отбираемое по данному измерению значение.
Во второй строке вы обращаетесь к менеджеру регистра сведений Цены(РегистрыСведений.Цены) и выполняете метод ПолучитьПоследнее(), который возвращает вам значения ресурсов самой поздней записи регистра, соответствующей передаваемой в функцию дате (АктуальнаяДата) и значениям измерений регистра (Отбор).
Метод ПолучитьПоследнее() возвращает структуру, содержащую значения ресурсов, которая сохраняется в переменной ЗначенияРесурсов. Вообще говоря, у регистра может быть несколько ресурсов. В вашем регистре ресурс один, но все равно будет возвращена структура, содержащая единственный элемент.
Поэтому в следующей строке вы получаете искомую розничную цену, просто указав имя нужного вам ресурса регистра через точку (ЗначенияРесурсов.Цена), и возвращаете ее при выполнении функции.
Теперь эту функцию нужно вызвать в некоторый момент работы документа.