- •Лабораторная работа № 7 Создание периодического регистра сведений Цены, функции розничнаяЦена()
- •Пояснения к работе
- •Задания
- •Ход выполнения лабораторной работы Создание периодического регистра сведений Цены
- •Создание функции РозничнаяЦена()
- •Автоматическое заполнение цены в документе ОказаниеУслуги
- •Реорганизация справочника Номенклатура
- •Изменение процедуры проведения документа ОказаниеУслуги
- •Содержание отчета
- •Контрольные вопросы
Реорганизация справочника Номенклатура
Откроем конфигуратор и создадим сначала новый объект конфигурации Перечисление с именем «ВидыНоменклатуры».
На закладке « Данные» добавим два значения перечисления: «Материал» и «Услуга»:
Затем добавим в справочни «Номенклатура» новый реквизит к « ВидНоменклатуры» с типом ПеречислениеСсылка.ВидыНоменклатуры:
После этого запустим 1С:Предприятие в режиме отладки и зададим для каждого элемента справочника « Номенклатура» соответствующее значение реквизита « ВидНоменклатуры»:
Теперь посмотрим, как можно использовать новые данные, полученные благодаря использованию перечисления « ВидыНоменклатуры».
Изменение процедуры проведения документа ОказаниеУслуги
Если вы помните, когда создавались движения документа « ОказаниеУслуги» по регистру накопления « ОстаткиМатериалов», мы сказали, что они не совсем правильные, поскольку в регистр будут попадать не только записи об израсходованных материалах, но и записи об оказанных услугах.
Теперь мы займемся тем, что доработаем документ таким образом, чтобы в регистре появлялись только записи, относящиеся к расходу материалов. Эта доработка будет не совсем эффективна с точки зрения производительности, зато позволит нам получить нужные данные в регистре « ОстаткиМатериалов».
Более эффективный вариант обработки проведения этого документа мы рассмотрим после изучения главы, рассказывающей о механизме запросов 1С:Предприятия 8.0.
Скорректируем движения документа, исключив из обработки те строки табличной части, в которых находятся услуги. Для этого в обработчик события « ОбработкаПроведения», расположенный в модуле документа « ОказаниеУслуги», добавим следующий текст ( добавленный текст выделен жирным шрифтом):
Процедура ОбработкаПроведения(Отказ, Режим)\
//{{_КОНСТРУКТОРДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора,
// внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаПереченьНоменклатуры Из
ПереченьНоменклатуры Цикл
Если ТекСтрокаПереченьНоменклатуры.Номеиклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Материал тогда
Продолжить;
КонецЕсли;
// регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченъНоменклатуры.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
// записываем движения регистров
Движения.ОстаткиМатериалов.Записать()
- //} }_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Добавленный текст исключает из выполнения операторов цикла те строки документа, в которых номенклатура не является материалом. К значению перечисления « Материал» мы обращаемся, используя менеджер перечисления « ВидыНоменклатуры» ( Перечисления.ВидыНоменклатуры), указывая в качестве его свойства имя нужного нам значения перечисления.
Запустим 1С:Предприятие в режиме отладки и проверим работу процедуры проведения документа « ОказаниеУслуги».
Откроем документ Оказание услуги № 1 и внесем в него следующие изменения ( обратите внимание, что изменен не только состав номенклатуры в табличной части, но и время документа):
Перед тем, как провести документ, откроем список регистра «ОстаткиМатериалов», содержащий движения этого документа. Для этого выполним команду Перейти | Остатки материалов из командной панели документа.
Проведем документ и убедимся, что в движения по регистру « ОстаткиМатериалов» включаются только строки, содержащие материалы:
