Untitled
plain_text
2 months ago
4.3 kB
2
Indexable
Never
// Через подписку на событие обработки проведения вызывается сразу для 4ых документов (Приходная и Расходная накладная, Приход и Расход денег) Процедура ОбработкаПроведенияДокументовКонтрольБюджета(Источник, Отказ, РежимПроведения) Экспорт // ДВИЖЕНИЯ ПО РЕГИСТРУ БЮДЖЕТ ДвиженияБюджет = Источник.Движения.Бюджет; ДвиженияБюджет.Записывать = Истина; ДвиженияБюджет.БлокироватьДляИзменения = Истина; // Отражение движения по регистру Бюджет по подразделению, Статье и сумме документа Движение = ДвиженияБюджет.Добавить(); Движение.Период = Источник.Дата; Движение.Подразделение = Источник.Подразделение; Движение.СтатьяЗатрат = Источник.СтатьяЗатрат; Движение.Факт = Источник.СуммаПоДокументу; // Запись движений в регистр Источник.Движения.Записать(); // Запрос контроля превышения планируемой суммы бюджета Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | БюджетОбороты.ФактОборот - БюджетОбороты.ПланОборот КАК ДопустимоеПревышение, | БюджетОбороты.ФактОборот - БюджетОбороты.ПланОборот - БюджетОбороты.ДопустимоеПревышениеОборот КАК ПревышениеСверхДопустимого |ИЗ | РегистрНакопления.Бюджет.Обороты( | &НачалоПериода, | &КонецПериода, | , | Подразделение = &Подразделение | И СтатьяЗатрат = &СтатьяЗатрат) КАК БюджетОбороты |ГДЕ | БюджетОбороты.ФактОборот > БюджетОбороты.ПланОборот"; ДатаДокумента = Источник.Дата; Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ДатаДокумента)); Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ДатаДокумента)); Запрос.УстановитьПараметр("Подразделение", Источник.Подразделение); Запрос.УстановитьПараметр("СтатьяЗатрат", Источник.СтатьяЗатрат); // Обход результатов запроса РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда // Бюджет превышен, выводим соответствующее сообщение о превышении Данные = РезультатЗапроса.Выбрать(); Данные.Следующий(); Если Данные.ПревышениеСверхДопустимого > 0 Тогда ТекстСообщения = СтрШаблон("Превышение запланированного бюджета сверх допустимого на %1", Данные.ПревышениеСверхДопустимого); Иначе ТекстСообщения = СтрШаблон("Превышение запланированного бюджета в пределах допустимого на %1", Данные.ДопустимоеПревышение); КонецЕсли; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = ТекстСообщения; Сообщение.Сообщить(); КонецЕсли; КонецПроцедуры