Постановка задачи
Требуется создать простейшую систему складского учета для нескольких складов, которая позволит приходовать и отпускать материалы, а также формировать отчет по остаткам материалов.
Объекты конфигурации
В конфигурации потребуется создать следующие объекты:
Тип объектов
| Объекты
|
Справочники
| - Материалы (количество уровней: 3)
- Склады
|
Документы
| - Приход (реквизиты шапки: Склад, реквизиты табличной части: Материал, Количество)
- Расход (реквизиты шапки: Склад, реквизиты табличной части: Материал, Количество)
При создании документов не забудьте поставить галочку "Оперативный учет", чтобы данный документ мог делать движения в регистрах.
|
Журналы документов
| |
Регистры
| |
Отчеты
| |
Документ "Приход"
Экранная форма документа Приход выглядит следующим образом:
Модуль проведения:
Процедура ОбработкаПроведения()
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиМатериалов.Материал = Материал; Регистр.ОстаткиМатериалов.Склад = Склад; Регистр.ОстаткиМатериалов.Количество = Количество; Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
|
Документ "Расход"
Экранная форма документа Расход выглядит следующим образом (отличается только названием):
Модуль проведения:
Процедура ОбработкаПроведения()
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиМатериалов.Материал = Материал; Регистр.ОстаткиМатериалов.Склад = Склад; Регистр.ОстаткиМатериалов.Количество = Количество; Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();
КонецЦикла;
КонецПроцедуры
|
Отчет "Остатки материалов"
Экранная форма диалога отчета выглядит следующим образом:
Шаблон печатной формы (в Конфигураторе):
Модуль отчета:
Процедура Сформировать()
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Материал = Регистр.ОстаткиМатериалов.Материал; |Склад = Регистр.ОстаткиМатериалов.Склад; |Количество = Регистр.ОстаткиМатериалов.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Материал; |Группировка Склад; |Условие (Материал в ВыбрМатериалГруппа); |Условие (Склад в ВыбрСклад); |";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда...Возврат; КонецЕсли;
Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Заголовок"); Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Материал.ЭтоГруппа()=1 Тогда... Таб.ВывестиСекцию("Группа"); Иначе
Таб.ВывестиСекцию("Материал"); Если Фл_НеВыводитьСклады = 0 Тогда...Пока Запрос.Группировка(2) = 1 Цикл......Таб.ВывестиСекцию("Склад");...КонецЦикла; КонецЕсли;
КонецЕсли;
КонецЦикла; Таб.Опции(0); Таб.Показать("ОстаткиМатериалов", "");
КонецПроцедуры
|
Примеры работы отчета:
В следующем примере отключена детализация по складам: