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