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