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