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