mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
Update homework-5-5.md
This commit is contained in:
parent
4198a3a6ac
commit
08891d9ef8
138
homework-5-5.md
138
homework-5-5.md
@ -1 +1,139 @@
|
||||
# Задание к занятию "Виртуальные таблицы"
|
||||
|
||||
## Задача 1 Добавить контроль остатков в проведение документа Реализация
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Добавляем контроль остатков товара при проведении документа Реализация.
|
||||
|
||||
Продавать можно товар, который есть наличии.
|
||||
|
||||
Для этого сначала его необходимо оприходововать товар или иметь в остатках.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
При проведении реализации система контролирует наличие остатков.
|
||||
|
||||
Если товара нет в наличии, система не формирует движения, отказ на проведение и сообщает о причине пользователю.
|
||||
|
||||
В сообщении указывается какого товара и в каком количестве не хватает.
|
||||
|
||||
### Процесс выполнения
|
||||
|
||||
в процедуру ОбработкаПроведения добавить запрос на проверку наличия остатка по номенклатуре из ТЧ документа
|
||||
|
||||
Если не хватает, то возвращаем Отказ = Истина
|
||||
|
||||
Иначе даем возможность системе провести документ
|
||||
|
||||
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
|
||||
|
||||
```bsl
|
||||
// 1. Получение запросом данных документа
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| Товары.Номенклатура КАК Номенклатура,
|
||||
| СУММА(Товары.Количество) КАК Количество
|
||||
|ПОМЕСТИТЬ Товары
|
||||
|ИЗ
|
||||
| Документ.Реализация.Товары КАК Товары
|
||||
|ГДЕ
|
||||
| Товары.Ссылка = &Ссылка
|
||||
|
|
||||
|СГРУППИРОВАТЬ ПО
|
||||
| Товары.Номенклатура
|
||||
|
|
||||
|ИНДЕКСИРОВАТЬ ПО
|
||||
| Номенклатура
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
|ВЫБРАТЬ
|
||||
| Товары.Номенклатура КАК Номенклатура,
|
||||
| Товары.Количество КАК Количество
|
||||
|ИЗ
|
||||
| Товары КАК Товары";
|
||||
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
// 2. Формирование движений-расход регистра
|
||||
Движения.ДвиженияТовара.Очистить();
|
||||
ВыборкаТовары = РезультатЗапроса.Выбрать();
|
||||
Пока ВыборкаТовары.Следующий() Цикл
|
||||
Движение = Движения.ДвиженияТовара.ДобавитьРасход();
|
||||
Движение.Период = Дата;
|
||||
Движение.Номенклатура = ВыборкаТовары.Номенклатура;
|
||||
Движение.Количество = ВыборкаТовары.Количество;
|
||||
КонецЦикла;
|
||||
|
||||
// 3. Запись движений в БД
|
||||
Движения.ДвиженияТовара.Записывать = Истина;
|
||||
Движения.Записать();
|
||||
|
||||
// 4. Запрос, получающий отрицательные остатки из регистра
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| Остатки.Номенклатура КАК Номенклатура,
|
||||
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Номенклатура) КАК НоменклатураПредставление,
|
||||
| -Остатки.КоличествоОстаток КАК Дефецит
|
||||
|ИЗ
|
||||
| РегистрНакопления.ДвиженияТовара.Остатки(
|
||||
| &МоментВремени,
|
||||
| Номенклатура В
|
||||
| (ВЫБРАТЬ
|
||||
| Товары.Номенклатура КАК Номенклатура
|
||||
| ИЗ
|
||||
| Товары КАК Товары)) КАК Остатки
|
||||
|ГДЕ
|
||||
| Остатки.КоличествоОстаток < 0";
|
||||
|
||||
ГраницаКонтроля = Новый Граница(МоментВремени(), ВидГраницы.Включая);
|
||||
Запрос.УстановитьПараметр("МоментВремени", ГраницаКонтроля);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
// 5. Вывод сообщений о недостатке товаров
|
||||
Если Не РезультатЗапроса.Пустой() Тогда
|
||||
Отказ = Истина;
|
||||
ВыборкаОшибки = РезультатЗапроса.Выбрать();
|
||||
Пока ВыборкаОшибки.Следующий() Цикл
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = "Товара "+ВыборкаОшибки.НоменклатураПредставление+" недостаточно в количестве "+ВыборкаОшибки.Дефецит+" шт.";
|
||||
Сообщение.Сообщить();
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
```
|
||||
## Задача 2 Создать отчет СКД "Остатки товаров"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создадим отчет для формирования остатков товаров
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Остатки формируются на указанную дату
|
||||
|
||||
Можно выбрать дату, отбор по номенклатуре
|
||||
|
||||
### Процесс выполнения
|
||||
|
||||
0. Удобнее будет отладить отчет как внешний и далее загрузить в конфигурацию уже рабочий. Можно сразу в конфигурации.
|
||||
|
||||
1. Создадим новый отчет - нажмем "Открыть схему компановки данных" - добавить Набор данных запрос - из Регистра накопления ДвиженияТовара
|
||||
|
||||
добавим
|
||||
- Номенклатура
|
||||
- Количество
|
||||
|
||||
2. Количество добавим в ресурсы, выражение Сумма
|
||||
|
||||
3. вкладка Настройки - добавим новую группировку, пустую
|
||||
|
||||
4. выбранные поля - добавим номенклатуру и количество
|
||||
|
||||
5. отбор - добавим Номенклатура. Правой кнопкой мыши нажмем на нее - откроем Свойства элемента пользовательских настроек - поставим галочку Включать пользовательские настройки
|
||||
|
||||
## Задача 3 (опциональная, можно не делать) Перенесем все в расширение
|
||||
|
Loading…
Reference in New Issue
Block a user