18c0693f

Мини-склад (пример)

Требуется создать простейшую систему складского учета для нескольких складов, которая позволит приходовать и отпускать материалы, а также формировать отчет по остаткам материалов.



В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Материалы (количество уровней: 3)
  • Склады
Документы
  • Приход

    (реквизиты шапки: Склад,

    реквизиты табличной части: Материал, Количество)
  • Расход

    (реквизиты шапки: Склад,

    реквизиты табличной части: Материал, Количество)
При создании документов не забудьте поставить галочку Оперативный учет, чтобы данный документ мог делать движения в регистрах.
Журналы документов
  • Складские
Регистры
  • ОстаткиМатериалов
Отчеты
  • ОстаткиМатериалов

Экранная форма документа Приход выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;

Регистр.ОстаткиМатериалов.Склад = Склад;

Регистр.ОстаткиМатериалов.Количество = Количество;

Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();

КонецЦикла;

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



Экранная форма документа Расход выглядит следующим образом (отличается только названием):

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;

Регистр.ОстаткиМатериалов.Склад = Склад;

Регистр.ОстаткиМатериалов.Количество = Количество;

Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();

КонецЦикла;

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

Экранная форма диалога отчета выглядит следующим образом:

Шаблон печатной формы (в Конфигураторе):

Модуль отчета:

Процедура Сформировать()

Запрос = СоздатьОбъект(Запрос);



ТекстЗапроса =

|Материал = Регистр.ОстаткиМатериалов.Материал;

|Склад = Регистр.ОстаткиМатериалов.Склад;

|Количество = Регистр.ОстаткиМатериалов.Количество;

|Функция КоличествоКонОст = КонОст(Количество);

|Группировка Материал;

|Группировка Склад;

|Условие (Материал в ВыбрМатериалГруппа);

|Условие (Склад в ВыбрСклад);

|;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

...Возврат;

КонецЕсли;

Таб = СоздатьОбъект(Таблица);

Таб.ВывестиСекцию(Заголовок);



Пока Запрос.Группировка(1) = 1 Цикл

Если Запрос.Материал.ЭтоГруппа()=1 Тогда

... Таб.ВывестиСекцию(Группа);

Иначе

Таб.ВывестиСекцию(Материал);



Если Фл_НеВыводитьСклады = 0 Тогда

...Пока Запрос.Группировка(2) = 1 Цикл

......Таб.ВывестиСекцию(Склад);

...КонецЦикла;

КонецЕсли;

КонецЕсли;

КонецЦикла;



Таб.Опции(0);

Таб.Показать(ОстаткиМатериалов, );

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

Примеры работы отчета:

В следующем примере отключена детализация по складам:

Вам предлагается самостоятельно реализовать следующие дополнительные функции:



Содержание раздела