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

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

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

РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры

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

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

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


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

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

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

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


 


126



Использование основных объектов конфигурации


Периодический регистр сведений


 


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


Что нового мы узнали


 


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


- для чего предназначен объект конфигурации Регистр сведений

- какими особенностями обладает объект конфигурации Регистр сведений

- в чем главные отличия регистра сведений от регистра накопления

- какие поля определяют ключ уникальности регистра

накопления - что такое периодический регистр сведений и что такое

независимый регистр сведений - как создать периодический регистр сведений - что такое ведущее измерение регистра - как получить значения ресурсов наиболее поздних

записей регистра средствами встроенного языка


 


128



Перечисление


Глава 2. Перечисление

До сих пор мы с вами не обращали внимания на то, что у нас нет никакого признака, по которому мы могли бы сказать, чем является конкретный элемент справочника «Номенклатура»: материалом или услугой. To, что все элементы справочника разложены у нас по некоторым группам, не может являться надежным критерием оценки: группы можно удалить, переименовать, сгруппировать элементы по другим принципам...

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

В этой главе мы создадим у справочника «Номенклатура»
специальный реквизит, тип значения которого образуется новым пока
еще для нас объектом конфигурации Перечисление. Это поможет нам
в дальнейшем легко определять, чем является элемент справочника
«Номенклатура»: услугой или материалом. Кроме этого, мы
скорректируем процедуру проведения документа ОказаниеУслуги и
покажем, как работать с перечислением средствами встроенного
языка. ™


Объект конфигурации Перечисление

О

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

В реальной жизни этому объекту может соответствовать, например, перечисление вариантов указания цены («включая НДС», «без НДС»).

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

Из этого следует важная особенность перечисления: значения перечисления не «обезличены» для конфигурации, на них могут опираться алгоритмы работы программы.

тех, ктоработал с версией 7.7

Перечисления могут теперь иметь формы (в том числе основную форму списка и выбора), а также макеты.


" Узнай больше!

О структуре объектов встроенного языка, предназначенных для работы с перечислениями можно прочитать в главе «Перечисления» на странице 584.


130



Использование основных объектов конфигурации


Перечисление


 


Реорганизация справочника Номенклатура

О

ткроем конфигуратор и создадим сначала новый объек
конфигурации Перечисление с имене\

«ВидыНоменклатуры».

На закладке «Данные» добавим два значен» перечисления: «Материал» и «Услуга»:


После этого запустим 1С:Предприятие в режиме отладки и зададим для каждого элемента справочника «Номенклатура» соответствующее значение реквизита «ВидНоменклатуры»:

Теперь посмотрим, как можно использовать новые данные,
полученные благодаря использованию перечисления

«ВидыНоменклатуры».


Затем добавим в справочник «Номенклатура» новый реквизит
«ВидНоменклатуры» с типом

ПеречислениеСсылка.ВидыНоменклатуры:




 


 


132



Использование основных объектов конфигурации


Перечисление


 


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

Е

сли вы помните, в первой части книги, когда создавались движения документа «ОказаниеУслуги» по регистру накопления «ОстаткиМатериалов», мы сказали, что они не совсем правильные, поскольку в регистр будут попадать нетолько записи об израсходованных материалах, но и записи об оказанных услугах.

Теперь мы займемся тем, что доработаем документ таким образом, чтобы в регистре появлялись только записи, относящиеся к расходу материалов. Эта доработка будет не совсем эффективна с точки зрения производительности, зато позволит нам получить нужные данные в регистре «ОстаткиМатериалов».

Более эффективный вариант обработки проведения этого документа мы рассмотрим после изучения главы, рассказывающей о механизме запросов 1С:Предприятия 8.0.

Скорректируем движения документа, исключив из обработки те строки табличной части, в которых находятся услуги. Для этого в обработчик события «ОбработкаПроведения», расположенный в модуле документа «ОказаниеУслуги», добавим следующий текст (добавленный текст выделен жирным шрифтом):

Процедура ОбработкаПроведения(Отказ, Режим) //{{_КОНСТРУКТОРЛВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл

Если ТекСтрокаПереченьНоменклатуры.Номеиклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Материал тогда Продолжить; КонецЕсли;

// регистр ОстаткиМатериалов Расход

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаПереченъНоменклатуры.Номенклатура;

Движение.Склад = Склад:


Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

КонецЦикла;

// записываем движения регистров Движения.ОстаткиМатериалов.Записать()-

//} }_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры

Добавленный текст исключает из выполнения операторов цикла те
строки документа, в которых номенклатура не является материалом. К
значению перечисления «Материал» мы обращаемся, используя
менеджер перечисления «ВидыНоменклатуры»

(Перечисления.ВидыНоменклатуры),указывая в качестве его свойства имя нужного нам значения перечисления.

Запустим 1С:Предприятие в режиме отладки и проверим работу процедуры проведения документа «ОказаниеУслуги».

Откроем документ Оказание услуги №1 и внесем в него следующие изменения (обратите внимание, что изменен не только состав номенклатуры в табличной части, но и время документа):

Перед тем, как провести документ, откроем список регистра «ОстаткиМатериалов», содержащий движения этого документа. Для этого выполним команду Перейти | Остатки материаловиз командной панели документа.


 


134



Использование основных объектов конфигурации


Перечисление


 


Проведем документ и убедимся, что в движения по регистру «ОстаткиМатериалов» включаются только строки, содержащие материалы: