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