Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объекты конфигурации.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Создание функции Розничная цена()

Сначала создадим функцию, которая будет возвращать актуальную розничную цену номенклатуры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверяем, как работает эта функция.

Автоматическое заполнение цены

в документе Оказание услуги

Задача, которая стоит, заключается в следу­ющем.

При создании документа ОказаниеУслуги необходимо обеспечить автоматическое заполнение поля Цена после того, как пользователь выберет услугу.

Причем цена услуги должна опреде­ляться исходя из даты создаваемого документа.

Найдем в конфигураторе документ ОказаниеУслуги и откроем его форму ФормаДокумента.

Откроем свойства поля ввода, распо­ложенного в колонке Номенклатура, и внизу списка найдем событие ПриИзменении.

Нажмем на кнопку с лупой и в открывшейся заго­товке обработчика события напишем следующий текст (листинг 1.2).

Листинг 1.2. Процедура ПереченъНоменклатурыНоменклатураПриИзменении()

Прокомментируем содержимое обработчика.

Первая строка обработчика уже знакома: получаем те­кущую строку табличной части документа, так как она понадо­бится в дальнейшем.

Во второй устанавливаем полученную цену в документе, вызывая нашу процедуру РозничнаяЦена.

Первым параметром передаем дату документа, на которую необходимо получить цену.

Вторым параметром передаем ссылку, которую отображает эле­мент управления формой, вызвавший это событие (Элемент.Значение), то есть ссылку на элемент справочника Номенклатура.

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

Проверим, как работает документ. Запустим 1С:Предприятие в режиме отладки и откроем регистр сведений Цены.

Для тран­зистора Philips добавим следующим числом новую цену (рис. 1.4).

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

Откроем документ Оказание услуги № 1. Этим документом «израсходовали» один транзистор

Рис. 1.5. Заполнение документа Оказание услуги

Установим дату документа равной той дате, когда было задано первое значение цены транзистора, и повто­рим выбор транзистора в колонке Номенкла­тура табличной части документа. Автома­тически установится первое значение цены (рис. 1.5).

Теперь изменим дату документа на следующий день и снова повторим выбор транзистора.

Будет установ­лено новое значение цены (рис. 1.6).

Рис. 1.6. Заполнение документа Оказание услуги

Таким образом, в документе появляется актуальная на момент создания документа цена услуги.