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