Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_laboratornaya_BST2104_Salnikova.docx
Скачиваний:
0
Добавлен:
11.05.2025
Размер:
621.64 Кб
Скачать

Создание отчета по остаткам

Создали отчет «ОстаткиНоменклатуры», открыли схему компоновки данных. Добавили набор данных запрос. Создали запрос с помощью конструктора запроса. Перенесли из База данных таблицу «ОстаткиНоменклатуры.Остатки» в таблицы. Переносли Номенклатура, КоличествоОстаток из «Таблицы» в «Поля» и получили запрос:

ВЫБРАТЬ

ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,

ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток

ИЗ

РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки

В поле путь проставили галочку у КоличествоОстаток и заменили Заголовок на «Количество».

Перешли во вкладку «Настройки» и открыли конструктор настроек. Тип отчета: Список, Поле (Номенклатура, КоличествоОстаток), Упорядочивание (Поле: Номенклатура, Тип группировки: По возрастанию).

На подвкладке «Параметры» выбирали Период и через свойства элемента пользовательских настроек нажали Включать в пользовательские настройки. На подвкладке «Другие настройки» устанавливаем Макет оформления: Античный, Расположение полей группировок: Отдельно и только в итогах, Расположение общих итогов по вертикали: Нет, Выводить параметры: Не выводить.

Рисунок 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С:Предприятие».

Вывод

В данной лабораторной работе была проделана работа с механизмом накопления остатков.

Соседние файлы в предмете Прикладные информационные системы