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