В начало

Регламентное задание «ИнцидентВзрывнаяДЗ»

 

            Пример регламентного задания по информированию пользователя по электронной почте в случае превышения дебиторской задолженности более заданного значения, в данном случае – 20 %.

Рис. Свойства регламентного задания «ИнцидентВзрывнаяДЗ»

 

            Далее приведены процедуры в общем модуле, которые осуществляют запрос к регистрам, в которых находится информация по оплатам и начислениям. В том случае, если дебиторская задолженность имеется, т.е. результат запроса не пустой, происходит отправка электронного письма с информацией в разрезе городов, управляющих компаний и домов.

 

Листинг. Общий модуль «Инциденты»

&НаСервере

Функция РасчетДЗвРазрезеДомов()

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ПредМесяц

                        |ПОМЕСТИТЬ втПредМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = ДОБАВИТЬКДАТЕ(&МесяцНачисления, МЕСЯЦ, -1)

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ТекМесяц

                        |ПОМЕСТИТЬ втТекМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = &МесяцНачисления

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втТекМесяц.Город КАК Город,

                        |          втТекМесяц.Дом КАК Дом,

                        |          втТекМесяц.УК КАК УК,

                        |          втТекМесяц.МесяцНачисления КАК МесяцНачисления,

                        |          втТекМесяц.ДЗ_ТекМесяц КАК ДЗ_ТекМесяц,

                        |          втПредМесяц.ДЗ_ПредМесяц КАК ДЗ_ПредМесяц,

                        |          ВЫБОР

                        |                     КОГДА втПредМесяц.ДЗ_ПредМесяц <> 0

                        |                                 ТОГДА (втТекМесяц.ДЗ_ТекМесяц - втПредМесяц.ДЗ_ПредМесяц) / втПредМесяц.ДЗ_ПредМесяц * 100

                        |                     ИНАЧЕ 0

                        |          КОНЕЦ КАК ПроцентИзмененияДЗ

                        |ПОМЕСТИТЬ втИзменениеДЗ

                        |ИЗ

                        |          втТекМесяц КАК втТекМесяц

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ втПредМесяц КАК втПредМесяц

                        |                     ПО втТекМесяц.Город = втПредМесяц.Город

                        |                                 И втТекМесяц.Дом = втПредМесяц.Дом

                        |                                 И втТекМесяц.УК = втПредМесяц.УК

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втИзменениеДЗ.Дом КАК Дом,

                        |          СУММА(втИзменениеДЗ.ПроцентИзмененияДЗ) КАК ПроцентИзмененияДЗ

                        |ИЗ

                        |          втИзменениеДЗ КАК втИзменениеДЗ

                        |ГДЕ

                        |          втИзменениеДЗ.ПроцентИзмененияДЗ > 20

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          втИзменениеДЗ.Дом

                        |

                        |УПОРЯДОЧИТЬ ПО

                        |          втИзменениеДЗ.Дом.Наименование";

           

            Запрос.УстановитьПараметр("МесяцНачисления", НачалоМесяца(ТекущаяДата()));   

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

           

            СЗ = Новый СписокЗначений;

 

            Пока Выборка.Следующий() Цикл

                        СЗ.Добавить(Строка(Выборка.Дом) + "   " + Строка(Формат(Выборка.ПроцентИзмененияДЗ, "ЧЦ=10; ЧДЦ=2")) + " %");

            КонецЦикла;                    

                       

            Если НЕ Результат.Пустой() Тогда

                        Возврат СЗ;

            Иначе

                        Возврат Неопределено;

            КонецЕсли

           

КонецФункции

 

&НаСервере

Функция РасчетДЗвРазрезеГородов()

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ПредМесяц

                        |ПОМЕСТИТЬ втПредМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = ДОБАВИТЬКДАТЕ(&МесяцНачисления, МЕСЯЦ, -1)

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ТекМесяц

                        |ПОМЕСТИТЬ втТекМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = &МесяцНачисления

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втТекМесяц.Город КАК Город,

                        |          втТекМесяц.Дом КАК Дом,

                        |          втТекМесяц.УК КАК УК,

                        |          втТекМесяц.МесяцНачисления КАК МесяцНачисления,

                        |          втТекМесяц.ДЗ_ТекМесяц КАК ДЗ_ТекМесяц,

                        |          втПредМесяц.ДЗ_ПредМесяц КАК ДЗ_ПредМесяц,

                        |          ВЫБОР

                        |                     КОГДА втПредМесяц.ДЗ_ПредМесяц <> 0

                        |                                 ТОГДА (втТекМесяц.ДЗ_ТекМесяц - втПредМесяц.ДЗ_ПредМесяц) / втПредМесяц.ДЗ_ПредМесяц * 100

                        |                     ИНАЧЕ 0

                        |          КОНЕЦ КАК ПроцентИзмененияДЗ

                        |ПОМЕСТИТЬ втИзменениеДЗ

                        |ИЗ

                        |          втТекМесяц КАК втТекМесяц

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ втПредМесяц КАК втПредМесяц

                        |                     ПО втТекМесяц.Город = втПредМесяц.Город

                        |                                 И втТекМесяц.Дом = втПредМесяц.Дом

                        |                                 И втТекМесяц.УК = втПредМесяц.УК

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втИзменениеДЗ.Город КАК Город,

                        |          СУММА(втИзменениеДЗ.ПроцентИзмененияДЗ) КАК ПроцентИзмененияДЗ

                        |ИЗ

                        |          втИзменениеДЗ КАК втИзменениеДЗ

                        |ГДЕ

                        |          втИзменениеДЗ.ПроцентИзмененияДЗ > 20

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          втИзменениеДЗ.Город

                        |

                        |УПОРЯДОЧИТЬ ПО

                        |          втИзменениеДЗ.Город.Наименование";

           

            Запрос.УстановитьПараметр("МесяцНачисления", НачалоМесяца(ТекущаяДата()));   

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

           

            СЗ = Новый СписокЗначений;

 

            Пока Выборка.Следующий() Цикл

                        СЗ.Добавить(Строка(Выборка.Город) + "   " + Строка(Формат(Выборка.ПроцентИзмененияДЗ, "ЧЦ=10; ЧДЦ=2")) + " %");

            КонецЦикла;                    

                       

            Если НЕ Результат.Пустой() Тогда

                        Возврат СЗ;

            Иначе

                        Возврат Неопределено;

            КонецЕсли

           

КонецФункции

 

&НаСервере

Функция РасчетДЗвРазрезеУК()

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ПредМесяц

                        |ПОМЕСТИТЬ втПредМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = ДОБАВИТЬКДАТЕ(&МесяцНачисления, МЕСЯЦ, -1)

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления КАК МесяцНачисления,

                        |          Партнеры.F1_Город КАК Город,

                        |          Партнеры.F1_Дом КАК Дом,

                        |          УК_ПоставщикиУслуг.Ссылка КАК УК,

                        |          СУММА(УК_СостояниеРасчетов.Сумма - УК_Оплаты.Сумма) КАК ДЗ_ТекМесяц

                        |ПОМЕСТИТЬ втТекМесяц

                        |ИЗ

                        |          РегистрСведений.УК_СостояниеРасчетов КАК УК_СостояниеРасчетов

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УК_ПоставщикиУслуг КАК УК_ПоставщикиУслуг

                        |                     ПО УК_СостояниеРасчетов.ПоставщикРЦ.Поставщик = УК_ПоставщикиУслуг.Ссылка

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УК_Оплаты КАК УК_Оплаты

                        |                     ПО УК_СостояниеРасчетов.ЛС = УК_Оплаты.Абонент

                        |                                 И УК_СостояниеРасчетов.МесяцНачисления = УК_Оплаты.Период

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры

                        |                     ПО УК_СостояниеРасчетов.ЛС = Партнеры.Ссылка

                        |ГДЕ

                        |          УК_СостояниеРасчетов.МесяцНачисления = &МесяцНачисления

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          Партнеры.F1_Город,

                        |          Партнеры.F1_Дом,

                        |          УК_ПоставщикиУслуг.Ссылка,

                        |          УК_СостояниеРасчетов.МесяцНачисления

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втТекМесяц.Город КАК Город,

                        |          втТекМесяц.Дом КАК Дом,

                        |          втТекМесяц.УК КАК УК,

                        |          втТекМесяц.МесяцНачисления КАК МесяцНачисления,

                        |          втТекМесяц.ДЗ_ТекМесяц КАК ДЗ_ТекМесяц,

                        |          втПредМесяц.ДЗ_ПредМесяц КАК ДЗ_ПредМесяц,

                        |          ВЫБОР

                        |                     КОГДА втПредМесяц.ДЗ_ПредМесяц <> 0

                        |                                 ТОГДА (втТекМесяц.ДЗ_ТекМесяц - втПредМесяц.ДЗ_ПредМесяц) / втПредМесяц.ДЗ_ПредМесяц * 100

                        |                     ИНАЧЕ 0

                        |          КОНЕЦ КАК ПроцентИзмененияДЗ

                        |ПОМЕСТИТЬ втИзменениеДЗ

                        |ИЗ

                        |          втТекМесяц КАК втТекМесяц

                        |                     ЛЕВОЕ СОЕДИНЕНИЕ втПредМесяц КАК втПредМесяц

                        |                     ПО втТекМесяц.Город = втПредМесяц.Город

                        |                                 И втТекМесяц.Дом = втПредМесяц.Дом

                        |                                 И втТекМесяц.УК = втПредМесяц.УК

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |          втИзменениеДЗ.УК КАК УК,

                        |          СУММА(втИзменениеДЗ.ПроцентИзмененияДЗ) КАК ПроцентИзмененияДЗ

                        |ИЗ

                        |          втИзменениеДЗ КАК втИзменениеДЗ

                        |ГДЕ

                        |          втИзменениеДЗ.ПроцентИзмененияДЗ > 20

                        |

                        |СГРУППИРОВАТЬ ПО

                        |          втИзменениеДЗ.УК

                        |

                        |УПОРЯДОЧИТЬ ПО

                        |          втИзменениеДЗ.УК.Наименование";

           

            Запрос.УстановитьПараметр("МесяцНачисления", НачалоМесяца(ТекущаяДата()));   

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

           

            СЗ = Новый СписокЗначений;

 

            Пока Выборка.Следующий() Цикл

                        СЗ.Добавить(Строка(Выборка.УК) + "   " + Строка(Формат(Выборка.ПроцентИзмененияДЗ, "ЧЦ=10; ЧДЦ=2"))  + " %");

            КонецЦикла;                   

                       

            Если НЕ Результат.Пустой() Тогда

                        Возврат СЗ;

            Иначе

                        Возврат Неопределено;

            КонецЕсли

           

КонецФункции

 

&НаСервере

Процедура ОтправитьПочтовоеСообщениеСИнцидентом(Знач Сообщение) Экспорт//Ark, 2022-10-21  

Попытка         

    АдресПолучателя = "info@pochta.ru";

            АдресОтвета ="";

            ТемаПисьма ="Инцидент - Взрывная дебиторская задолженность";

            ТекстПисьма = Сообщение; 

           

            МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями");

            УчетнаяЗапись = МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();       

           

            ПараметрыПисьма = Новый Структура;

            ПараметрыПисьма.Вставить("Кому", АдресПолучателя);

            ПараметрыПисьма.Вставить("УчетнаяЗапись", УчетнаяЗапись);                                                              

            ПараметрыПисьма.Вставить("АдресОтвета", АдресОтвета);

            ПараметрыПисьма.Вставить("Тема", ТемаПисьма);          

            ПараметрыПисьма.Вставить("Тело", ТекстПисьма);

            ПараметрыПисьма.Вставить("ТипТекста", "ПростойТекст");

                                  

            РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма);

Исключение

КонецПопытки;

КонецПроцедуры

 

&НаСервере

Процедура ИнцидентВзрывнаяДЗ() Экспорт 

            СписокГородов = РасчетДЗвРазрезеГородов();

            СписокУК = РасчетДЗвРазрезеУК();

            СписокДомов = РасчетДЗвРазрезеДомов();

           

            Если СписокДомов <> Неопределено Тогда

                        Если СписокДомов.Количество() > 0 Тогда

 

                                   Сообщение = "ДЗ в разрезе ГОРОДОВ" + Символы.ПС + "=====================================" + Символы.ПС;

                                   Для Каждого Эл Из СписокГородов Цикл

                                               Сообщение = Сообщение + Строка(Эл) + Символы.ПС;

                                   КонецЦикла; 

                                  

                                   Сообщение = Сообщение + Символы.ПС + "ДЗ в разрезе УК" + Символы.ПС + "=====================================" + Символы.ПС;

                                   Для Каждого Эл Из СписокУК Цикл

                                               Сообщение = Сообщение + Строка(Эл) + Символы.ПС;

                                   КонецЦикла; 

                                                                      

                                   Сообщение = Сообщение + Символы.ПС + "ДЗ в разрезе ДОМОВ" + Символы.ПС + "=====================================" + Символы.ПС;

                                   Для Каждого Эл Из СписокДомов Цикл

                                               Сообщение = Сообщение + Строка(Эл) + Символы.ПС;

                                   КонецЦикла;                                     

                                  

                                   ОтправитьПочтовоеСообщениеСИнцидентом(Сообщение);

                        КонецЕсли;    

            КонецЕсли;

           

КонецПроцедуры

 

Рис. Фрагмент письма с сообщением о ДЗ