Наша відеотека почала розвиватись і ми вже не просто позичаємо диски друзям і колегам, а і продаємо диски з фільмами (це означає що ми будемо купувати чисті диски та коробки і записувати на них фільми для продажі). Крім того ми вирішили записувати диски на носії інформації за певну суму (тобто надаємо послуги). Відповідно в програму потрібно внести зміни. Подивимось якими вони будуть.
Спочатку ми створимо перелічення «ВидТовару» з наступними значеннями: «Товар», «Послуга».
Потім ми створимо новий довідник «Номенклатура». В ньому вкажемо реквізит «Вид» і встановимо його тип «ВидТовару».
Тепер відредагуємо регістр накопичення «ЗалишкиДисків». Відкриємо вимір «Диски» і відредагуємо його вид даних наступним чиномВкажемо що в регістрі використовується складний тип даних. І відзначимо два довідники («Диски», «Номенклатура») як типи даних даного виміру (див. рис.).
Аналогічні дії потрібно буде провести в двох документах, там де фігурує тип даних «Диски».
Тепер давайте змінимо процедуру проведення документу «ПозичивПодивитись». Тепер процедура проведення буде виглядати так:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Даний фрагмент побудований конструктором.
// При повторному використанні конструктора, внесені вручну зміни будуть втрачені!!!
Для Каждого ТекСтрокаДиски Из Диски Цикл
// регістр ЗалишкиДисків Расход
если ТекСтрокаДиски.Диск.Метаданные().Имя = “Номенклатура” тогда
если ТекСтрокаДиски.Диск.Вид <> перечисления.ВидТовару.Послуга тогда
Движение = Движения.ЗалишкиДисків.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Диски = ТекСтрокаДиски.Диск;
Движение.Кількість = ТекСтрокаДиски.кть;
конецесли;
иначе
Движение = Движения.ЗалишкиДисків.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Диски = ТекСтрокаДиски.Диск;
Движение.Кількість = ТекСтрокаДиски.кть;
конецесли;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Як бачимо в тілі циклу додано дві вкладені одна в другу конструкції
Если … Тогда …. Конецесли;
В першій конструкції ми перевіряємо чи в колонці «Диск» табличної сатини «Диски» вибрано елемент довідника «Номенклатура». В разі якщо це так тоді другим «если» ми перевіряємо чи номенклатура є послугою. Якщо це твердження не відповідає дійсності тоді робимо рух по регістру. В разі якщо вибраний елемент не належить довіднику номенклатура ми просто проводимо його по регістру без додаткових перевірок.
На цьому пропоную закінчити.
Подпишитесь на RSS канал сайта. Это дает Вам преимущество в скорости получения обновлений и свежей информации.
Смысл есть, ток куда.
Вот как надо!