Untitled
unknown
plain_text
2 years ago
6.6 kB
6
Indexable
// ДВИЖЕНИЯ ПО РЕГИСТРУ ЗАКАЗЫ ПОКУПАТЕЛЕЙ (НОВАЯ МЕТОДИКА ПРОВЕДЕНИЯ)
Движения.ЗаказыПокупателей.Записывать = Истина;
Движения.ЗаказыПокупателей.БлокироватьДляИзменения = Истина;
// Получение данных для формирования движений
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| ПриходнаяНакладнаяСписокНоменклатуры.ЗаказПокупателя КАК ЗаказПокупателя,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВТ_СписокНоменклатуры
|ИЗ
| Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| ПриходнаяНакладнаяСписокНоменклатуры.ЗаказПокупателя
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| ЗаказПокупателя
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_СписокНоменклатуры.Номенклатура КАК Номенклатура,
| ВТ_СписокНоменклатуры.Количество КАК Количество,
| ВТ_СписокНоменклатуры.Сумма КАК Сумма,
| ВТ_СписокНоменклатуры.ЗаказПокупателя КАК ЗаказПокупателя
|ИЗ
| ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
ВыборкаТЧ = Запрос.Выполнить().Выбрать();
// Формирование движений и запись в регистр
Пока ВыборкаТЧ.Следующий() Цикл
Движение = Движения.ЗаказыПокупателей.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаТЧ.Номенклатура;
Движение.ЗаказПокупателя = ВыборкаТЧ.ЗаказПокупателя;
Движение.Количество = ВыборкаТЧ.Количество;
КонецЦикла;
Движения.Записать();
// Контроль появления отрицательных остатков в регистре
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказыПокупателейОстатки.Номенклатура.Представление КАК НоменклатураПредставление,
| ЗаказыПокупателейОстатки.ЗаказПокупателя.Представление КАК ЗаказПокупателяПредставление,
| -ЗаказыПокупателейОстатки.КоличествоОстаток КАК Превышение
|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Остатки(
| &МоментВремени,
| (Номенклатура, ЗаказПокупателя) В
| (ВЫБРАТЬ
| ВТ_СписокНоменклатуры.Номенклатура КАК Номенклатура,
| ВТ_СписокНоменклатуры.ЗаказПокупателя КАК ЗаказПокупателя
| ИЗ
| ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры)) КАК ЗаказыПокупателейОстатки
|ГДЕ
| ЗаказыПокупателейОстатки.КоличествоОстаток < 0";
Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени()));
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон ("Превышение остатка по номенклатуре %1 заказу %2 в количестве %3",
Выборка.НоменклатураПредставление, Выборка.ЗаказПокупателяПредставление, Выборка.Превышение);
Сообщение.Сообщить();
КонецЦикла;
Отказ = Истина;
Возврат;
КонецЕсли;
// ДВИЖЕНИЯ ПО РЕГИСТРУ ОСТАТКИ НОМЕНКЛАТУРЫ
Движения.ОстаткиНоменклатуры.Записывать = Истина;
ВыборкаТЧ.Сбросить(); // используем ту же выборку, что использовали для заполнения движений по регистру Заказы Номенклатуры
Пока ВыборкаТЧ.Следующий() Цикл
Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
Движение.Период = Дата;
Движение.ЗаказПокупателя = ВыборкаТЧ.ЗаказПокупателя;
Движение.Номенклатура = ВыборкаТЧ.Номенклатура;
Движение.Количество = ВыборкаТЧ.Количество;
Движение.Сумма = ВыборкаТЧ.Сумма;
КонецЦикла;
Editor is loading...