Інформаційні системи за помахом чарівної палички!
2.19 Прибуткова накладна.
Ми підійшли до найважливішої і складної частини завдання - опису товарообігу. Першим документом у нас буде прибуткова накладна. Нам треба занести залишки на склади, інакше нічого буде переміщати, ні тим більше списувати.
Візьмемо звичайну паперову накладну. Номер накладної залежить від постачальника. Значить зробимо можливість занесення не унікальні номери прибуткових накладних. У ній крім полів Номер документа і дата документа присутні сторони, які беруть участь в товарообігу - "Від кого" і "Кому". В нашій прибуткової накладної їм будуть відповідати поля "Постачальник" - наш контрагент і "Склад" - наш склад. Додамо ще одне поле - "Договір", нам треба знати, на підставі чого відбулася поставка товару.
Перейдемо до табличній частині. Є графа "Найменування товару". Цією графі буде відповідати графа "Товар", Графи "К", "Ціна", "Сума" - так буде і у нас. Крім цих граф додадуться такі - "Од" (одиниця виміру) - вона покаже, в чому ми вимірюємо кількість. "Коло" - якщо при цьому кількість в графі "Кол", наприклад, для яблук можемо вказати або в кілограмах, або в ящиках, пишемо в довільній одиниці виміру, то в графі "Коло" - ми його подаємо до основній одиниці виміру товару. На різні сорти товару буде різна ціна, значить нам треба вказувати сорт в новій графі "Сорт". Таким чином ціна у нас буде - ціною вибраного сорту основної одиниці виміру товару. За графами "Коло" та "Сума" нам знадобиться підсумок по колонці. Документ ми розмістимо в журналі накладних.
Ідентифікатор: ПриходнаяНакладная
Журнал: Накладні
Нумератор: Немає nbsp nbsp nbsp nbsp Періодичність: Рік
Довжина: 5 nbsp nbsp nbsp nbsp Тип: число
Унікальність: немає nbsp nbsp Автонумерація: немає
Оперативний облік: так
Може бути підставою для документа будь-якого виду. немає
Є підставою для
Вводиться на підставі
Процедура ОбработкаПроведенія ()
// Борг за поставлений нам товар зріс
nbsp Регістр.Взаіморасчети.Контрагент = Постачальник;
nbsp Регістр.Взаіморасчети.Договор = Договір;
nbsp Регістр.Взаіморасчети.Сумма = Підсумок ( "Сума");
nbsp Регістр.Взаіморасчети.ФлагДвіженія = 1;
nbsp Регістр.Взаіморасчети.ДвіженіеПріходВиполніть ();
// по кожному рядку
nbsp ВибратьСтрокі ();
nbsp Поки ПолучітьСтроку () = 1 Цикл
// Збільшуємо кількість товару на складі
nbsp nbsp Регістр.ОстаткіТоваров.Склад = Склад;
nbsp nbsp Регістр.ОстаткіТоваров.Товар = Товар;
nbsp nbsp Регістр.ОстаткіТоваров.Сорт = Сорт;
nbsp nbsp Регістр.ОстаткіТоваров.Партія = ТекущійДокумент ();
nbsp nbsp Регістр.ОстаткіТоваров.Колічество = Коло;
nbsp nbsp Регістр.ОстаткіТоваров.СуммаП = Сума;
nbsp nbsp Регістр.ОстаткіТоваров.СуммаД = Сума;
nbsp nbsp Регістр.ОстаткіТоваров.ФлагДвіженія = 1;
nbsp nbsp Регістр.ОстаткіТоваров.ПрівязиватьСтроку (НомерСтрокі);
// Вказавши команду ПрівязиватьСтроку () ми до кожного запису по руху
// регістра вкажемо - яка конкретно рядок документа справила це рух
nbsp nbsp Регістр.ОстаткіТоваров.ДвіженіеПріходВиполніть ();
// Додаємо запис про зростання товарообігу
nbsp nbsp Регістр.ОборотиТоваров.Склад = Склад;
nbsp nbsp Регістр.ОборотиТоваров.Товар = Товар;
nbsp nbsp Регістр.ОборотиТоваров.Сорт = Сорт;
nbsp nbsp Регістр.ОборотиТоваров.Колічество = Коло;
nbsp nbsp Регістр.ОборотиТоваров.СуммаУ = Сума;
nbsp nbsp Регістр.ОборотиТоваров.ФлагДвіженія = 1;
nbsp nbsp Регістр.ОборотиТоваров.ПрівязиватьСтроку (НомерСтрокі);
nbsp nbsp Регістр.ОборотиТоваров.ДвіженіеВиполніть ();
// Оборотний регістр здійснює не прихід / витрата а рух
nbsp КонецЦікла;
КонецПроцедури
Умови, при яких документ не повинен проводитися напишіть самі, якщо хочете.
У цій процедурі ми зробили рух відразу за трьома регістрів.
По одному - "Взаєморозрахунки" - відразу на весь документ сумою, і за двома іншими через підрядник.
Скільки рядків буде в документі, стільки і рухів по кожному регістру.