Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
№7 Создание регистра сведений.doc
Скачиваний:
6
Добавлен:
13.11.2019
Размер:
203.78 Кб
Скачать

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

Откроем конфигуратор и создадим сначала новый объект конфигурации Перечисление с именем «ВидыНоменклатуры».

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

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

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

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

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

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

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

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

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

Процедура ОбработкаПроведения(Отказ, Режим)\

//{{_КОНСТРУКТОРДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора,

// внесенные вручную изменения будут утеряны!!!

Для Каждого ТекСтрокаПереченьНоменклатуры Из

ПереченьНоменклатуры Цикл

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

Продолжить;

КонецЕсли;

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

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

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

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

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

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

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

КонецЦикла;

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

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

- //} }_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

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

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

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

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

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