Частина сьома «Перелічення»

Автор: admin · Рубрика Блог починаючого програміста · Есть 2 коммент.

Наша відеотека почала розвиватись і ми вже не просто позичаємо диски друзям і колегам, а і продаємо диски з фільмами (це означає що ми будемо купувати чисті диски та коробки і записувати на них фільми для продажі). Крім того ми вирішили записувати диски на носії інформації за певну суму (тобто надаємо послуги). Відповідно в програму потрібно внести зміни. Подивимось якими вони будуть.

Спочатку ми створимо перелічення «ВидТовару» з наступними значеннями: «Товар», «Послуга».

Потім ми створимо новий довідник «Номенклатура». В ньому вкажемо реквізит «Вид» і встановимо його тип «ВидТовару».

Тепер відредагуємо регістр накопичення «ЗалишкиДисків». Відкриємо вимір «Диски» і відредагуємо його вид даних наступним чиномВкажемо що в регістрі використовується складний тип даних. І відзначимо два довідники («Диски», «Номенклатура») як типи даних даного виміру (див. рис.).

clip_image002

Аналогічні дії потрібно буде провести в двох документах, там де фігурує тип даних «Диски».

Тепер давайте змінимо процедуру проведення документу «ПозичивПодивитись». Тепер процедура проведення буде виглядати так:

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

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

// Даний фрагмент побудований конструктором.

// При повторному використанні конструктора, внесені вручну зміни будуть втрачені!!!

Для Каждого ТекСтрокаДиски Из Диски Цикл

// регістр ЗалишкиДисків Расход

если ТекСтрокаДиски.Диск.Метаданные().Имя = “Номенклатура” тогда

если ТекСтрокаДиски.Диск.Вид <> перечисления.ВидТовару.Послуга тогда

Движение = Движения.ЗалишкиДисків.Добавить();

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

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

Движение.Диски = ТекСтрокаДиски.Диск;

Движение.Кількість = ТекСтрокаДиски.кть;

конецесли;

иначе

Движение = Движения.ЗалишкиДисків.Добавить();

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

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

Движение.Диски = ТекСтрокаДиски.Диск;

Движение.Кількість = ТекСтрокаДиски.кть;

конецесли;

КонецЦикла;

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

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

Як бачимо в тілі циклу додано дві вкладені одна в другу конструкції

Если … Тогда …. Конецесли;

В першій конструкції ми перевіряємо чи в колонці «Диск» табличної сатини «Диски» вибрано елемент довідника «Номенклатура». В разі якщо це так тоді другим «если» ми перевіряємо чи номенклатура є послугою. Якщо це твердження не відповідає дійсності тоді робимо рух по регістру. В разі якщо вибраний елемент не належить довіднику номенклатура ми просто проводимо його по регістру без додаткових перевірок.

На цьому пропоную закінчити.

Комментарии

  1. Евгений каже:

    Смысл есть, ток куда.

  2. Володя каже:

    Вот как надо!



Оставить комментарий или два