
Создание отчета по остаткам
Создали отчет «ОстаткиНоменклатуры», открыли схему компоновки данных. Добавили набор данных запрос. Создали запрос с помощью конструктора запроса. Перенесли из База данных таблицу «ОстаткиНоменклатуры.Остатки» в таблицы. Переносли Номенклатура, КоличествоОстаток из «Таблицы» в «Поля» и получили запрос:
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
В поле путь проставили галочку у КоличествоОстаток и заменили Заголовок на «Количество».
Перешли во вкладку «Настройки» и открыли конструктор настроек. Тип отчета: Список, Поле (Номенклатура, КоличествоОстаток), Упорядочивание (Поле: Номенклатура, Тип группировки: По возрастанию).
На подвкладке «Параметры» выбирали Период и через свойства элемента пользовательских настроек нажали Включать в пользовательские настройки. На подвкладке «Другие настройки» устанавливаем Макет оформления: Античный, Расположение полей группировок: Отдельно и только в итогах, Расположение общих итогов по вертикали: Нет, Выводить параметры: Не выводить.
Рисунок 7 – Отчет «Остатки номенклатуры» на «1С:Предприятие».
Создание функциональной опции
Добавили Перечисление, Имя на «Склады», со значениями «Москва» и «Санкт_Питербург».
В документ «РасходнаяНакладная» добавили новый реквизит «Склад», Тип: «ПеречислениеСсылка.Склады». В свойствах на вкладке «Представление» поставили Значение заполнения на «Москва» и галочку у Заполнять из данных заполнения. Открыли «ФормаРасходнойНакладной» и перенесли «Склад» из реквизитов на форму. Сделали тоже самое для документа «ПриходнаяНакладная».
Рисунок 8 – Реквизит «Склад» документа «ПриходнаяНакладная» на «1С:Предприятие».
Рисунок 9 – Реквизит «Склад» документа «РасходнаяНакладная» на «1С:Предприятие».
Добавили константу, Имя на «СкладскойУчет», тип: Булево.
Рисунок 10 – Константа «СкладскойУчет» на «1С:Предприятие».
Открыли регистр сведений «ОстаткиНоменклатуры», добавили измерение «Склад» типа «ПеречислениеСсылка.Склады».
Открыли модуль объекта документа «ПриходнаяНакладная» », в процедуре ОбработкаПроведения(Отказ, Режим) в цикле Пока дописали строчку «Движение.Склад = Склад;», получив код процедуры:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ПриходнаяНакладнаяТовары.Товар КАК Номенклатура,
|СУММА(ПриходнаяНакладнаяТовары.Количество)КАК Количество,
|СУММА(ПриходнаяНакладнаяТовары.Сумма) КАК Сумма
|ИЗ
|Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
|ГДЕ
| ПриходнаяНакладнаяТовары.Ссылка =&Ссылка
|
|СГРУППИРОВАТЬ ПО
|ПриходнаяНакладнаяТовары.Товар";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Движение=Движения.ОстаткиНоменклатуры.ДобавитьПриход();
Движение.Период=Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Склад = Склад;
КонецЦикла;
КонецПроцедуры
Открыли модуль объекта документа «РасходнаяНакладная», заменили в процедуре ОбработкаПроведения(Отказ, Режим) строчку «НоваяМетодикаКонтроляОтрицательныхОстатков(Отказ);» на «СтараяМетодикаКонтроляОтрицательныхОстатковПоСкладам(Отказ);».
Заменили процедуру НоваяМетодикаКонтроляОтрицательныхОстатков(Отказ) на код:
Процедура СтараяМетодикаКонтроляОтрицательныхОстатковПоСкладам(Отказ)
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.ОстаткиНоменклатуры.Записать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Номенклатура,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ВТНоменклатура
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Товар
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТНоменклатура.Количество КАК Количество,
| ВТНоменклатура.Номенклатура КАК Номенклатура,
| ВТНоменклатура.Номенклатура.Представление КАК НоменклатураПредставление,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
|ИЗ
| ВТНоменклатура КАК ВТНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| Склад = &Склад
| И Номенклатура В
| (ВЫБРАТЬ
| ВТНоменклатура.Номенклатура КАК Номенклатура
| ИЗ
| ВТНоменклатура КАК ВТНоменклатура)) КАК ОстаткиНоменклатурыОстатки
| ПО ВТНоменклатура.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество>ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
Сообщение = СтрШаблон("Недостаточно товара: '%1', в количестве: %2 шт. на складе '%3' ",ВыборкаДетальныеЗаписи.НоменклатураПредставление,ВыборкаДетальныеЗаписи.Количество-ВыборкаДетальныеЗаписи.КоличествоОстаток,Склад);
Сообщить(Сообщение);
Отказ=Истина;
Конецесли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение.Склад=Склад;
КонецЦикла;
КонецПроцедуры
Открыли отчет «ОстаткиНоменклатуры», открыли схему компоновки данных, открыли конструктор запроса, перенесли Константы.СкладскойУчет в таблицы, оттуда перенесли в поля СкладскойУчет.Занчения и ОстаткиНоменклатурыОстатки.Склад.
Перешли во вкладку «Ресурсы», перенесли КоличествоОстаток, Выражение: Сумма(КоличествоОстаток).
Перешли во вкладку «Настройки» и открыли конструктор настроек. Тип отчета: Список, Поле (Номенклатура, Склад, КоличествоОстаток), Группировка (Поле: Номенклатура, Тип группировки: Без иерархии), Упорядочивание (Поле: Номенклатура, Направление сортировки: По возрастанию; Поле: Склад, Направление сортировки: По возрастанию).
Перешли на подвкладку Условие, добавили. Оформление (Минимальная ширина: -1, Максимальная ширина: -1, Минимальная высота: -1, Максимальная высота: -1), Условие (Значение Ровно Ложь), Оформляемые (Склад), Область использования (<Везде>).
Рисунок 11 – Отчет «Остатки номенклатуры» на «1С:Предприятие».
Раскрыли «Общие», «Функциональные опции», добавили, переименовали в «СкладскойУчет». Хранение: Константа.СкладскойУчет. На вкладке «Состав» выбрали Документы.РасходнаяНакладная.Реквизиты.Склад и Документы.ПриходнаяНакладная.Реквизиты.Склад.
Рисунок 12 – Реквизит «Склад» документа «ПриходнаяНакладная» при включенной функциональной опции «СкладскойУчет» на «1С:Предприятие».
Рисунок 13 – Реквизит «Склад» документа «РасходнаяНакладная» при включенной функциональной опции «СкладскойУчет» на «1С:Предприятие».
Рисунок 14 – Отчет «Остатки номенклатуры» при включенной функциональной опции «СкладскойУчет» на «1С:Предприятие».
Вывод
В данной лабораторной работе была проделана работа с механизмом накопления остатков.