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