1С-Предприятие 8.0. Практическое пособие разработчика

       

Автоматическое заполнение цены в документе ОказаниеУслуги


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

Найдем в конфигураторе документ "ОказаниеУслуги" и откроем его форму "ФормаДокумента". Откроем свойства поля ввода, расположенного в колонке "Номенклатура" и внизу списка найдем событие "При изменении". Нажмем на кнопку с лупой и в открывшейся заготовке обработчика события напишем следующий текст:

Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)

//получить текущую строку табличной части

СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;

//установить цену

СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата, Элемент.Значение);

//пересчитать сумму строки



РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

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

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

Во второй мы устанавливаем полученную цену в документе, вызывая нашу процедуру "РозничнаяЦена". Первым параметром мы передаем дату документа, на которую необходимо получить цену, а вторым параметром мы передаем ссылку, которую отображает элемент управления формой, вызвавший это событие (Элемент.Значение), т.е. ссылку на элемент справочника "Номенклатура". [126]

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

Проверим, как теперь работает наш документ. Запустим 1С:Предприятие в режиме отладки и откроем регистр сведений "Цены". Для транзистора Philips добавим следующим числом новую цену:

Теперь откроем документ ОказаниеУслуги №1. Как вы помните, этим документом мы как раз "израсходовали" один такой транзистор.

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


[127]

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

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



Содержание раздела