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