feat(извещения): перезаполнение извещений при изменении документов, версия 1.0.1

This commit is contained in:
4 changed files with 69 additions and 5 deletions
@@ -242,12 +242,19 @@
"Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее"); "Организация, Учреждение, ИФО, Период, Ответственный, ИзвещениеИсходящее");
ИзвещениеОбъект = Неопределено; ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда Если ЗначениеЗаполнено(Реквизиты.ИзвещениеИсходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект(); ИзвещениеОбъект = Реквизиты.ИзвещениеИсходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли; КонецЕсли;
Если ИзвещениеОбъект = Неопределено Тогда Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент(); ИзвещениеОбъект = Документы.ИзвещениеИсходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " Снимите пометку удаления или отвяжите извещение от документа передачи.");
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю( ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
@@ -255,7 +262,9 @@
Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка(); Возврат Документы.ИзвещениеИсходящее.ПустаяСсылка();
КонецЕсли; КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация; ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение); ИзвещениеОбъект.Получатель = КонтрагентПоОрганизации(Реквизиты.Учреждение);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода; ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийИсходящееИзвещение.ПолучениеДохода;
@@ -292,12 +301,19 @@
"Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи"); "Организация, ЦБ, ИФО, Период, Ответственный, ИзвещениеВходящее, ДокументПередачи");
ИзвещениеОбъект = Неопределено; ИзвещениеОбъект = Неопределено;
ЭтоНовоеИзвещение = Истина;
Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда Если ЗначениеЗаполнено(Реквизиты.ИзвещениеВходящее) Тогда
ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект(); ИзвещениеОбъект = Реквизиты.ИзвещениеВходящее.ПолучитьОбъект();
ЭтоНовоеИзвещение = ИзвещениеОбъект = Неопределено;
КонецЕсли; КонецЕсли;
Если ИзвещениеОбъект = Неопределено Тогда Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент(); ИзвещениеОбъект = Документы.ИзвещениеВходящее.СоздатьДокумент();
ИначеЕсли ИзвещениеОбъект.ПомеченНаУдаление Тогда
ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " помечено на удаление: изменения в него не вносятся."
+ " Снимите пометку удаления или отвяжите извещение от документа принятия.");
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
ИначеЕсли ИзвещениеОбъект.Проведен Тогда ИначеЕсли ИзвещениеОбъект.Проведен Тогда
ОбщегоНазначения.СообщитьПользователю( ОбщегоНазначения.СообщитьПользователю(
"Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся." "Извещение " + Строка(ИзвещениеОбъект.Ссылка) + " проведено: изменения в него не вносятся."
@@ -305,7 +321,9 @@
Возврат Документы.ИзвещениеВходящее.ПустаяСсылка(); Возврат Документы.ИзвещениеВходящее.ПустаяСсылка();
КонецЕсли; КонецЕсли;
Если ЭтоНовоеИзвещение Тогда
ИзвещениеОбъект.Дата = ТекущаяДатаСеанса(); ИзвещениеОбъект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
ИзвещениеОбъект.Организация = Реквизиты.Организация; ИзвещениеОбъект.Организация = Реквизиты.Организация;
ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ); ИзвещениеОбъект.Отправитель = КонтрагентПоОрганизации(Реквизиты.ЦБ);
ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода; ИзвещениеОбъект.ВидИзвещения = Перечисления.ВидыОперацийВходящееИзвещение.ПолучениеДохода;
@@ -329,6 +347,44 @@
КонецФункции КонецФункции
// Синхронизирует связанное извещение с изменившимся документом подсистемы.
//
// Вызывается из обработчика записи документов передачи и принятия платежей: извещение
// перезаполняется по актуальным строкам реестра, чтобы его печатная форма не разошлась
// с учётным документом. Проведённое извещение и извещение, помеченное на удаление,
// не изменяются - такие документы пользователь приводит в порядок сам.
//
// Параметры:
// ДокументОбъект - ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения,
// ДокументОбъект.ПС_ПринятиеПоступившихПлатежейИзЦБ - записываемый документ.
//
Процедура ОбновитьИзвещениеПриИзмененииДокумента(ДокументОбъект) Экспорт
Если ДокументОбъект.ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ЭтоПередача = ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПС_ПередачаПоступившихПлатежейВУчреждения");
Извещение = ?(ЭтоПередача, ДокументОбъект.ИзвещениеИсходящее, ДокументОбъект.ИзвещениеВходящее);
Если НЕ ЗначениеЗаполнено(Извещение) Тогда
Возврат;
КонецЕсли;
СостояниеИзвещения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Извещение,
"Проведен, ПометкаУдаления");
Если СостояниеИзвещения.Проведен ИЛИ СостояниеИзвещения.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
Если ЭтоПередача Тогда
СоздатьИзвещениеПоПередаче(ДокументОбъект.Ссылка);
Иначе
СоздатьИзвещениеПоПринятию(ДокументОбъект.Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -28,7 +28,7 @@
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
<defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles> <defaultRoles>Role.ПС_ОсновнаяРоль</defaultRoles>
<version>1.0.0</version> <version>1.0.1</version>
<defaultLanguage>Language.Русский</defaultLanguage> <defaultLanguage>Language.Русский</defaultLanguage>
<interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode> <interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode>
<languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715"> <languages uuid="2f74bb63-c643-4692-af13-1f99a56719fb" extendedConfigurationObject="4b1b900f-9c8f-4b2b-8292-3a9a6db40715">
@@ -67,6 +67,10 @@
// расходящиеся электронные документы аннулируются. // расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
@@ -133,6 +133,10 @@
// расходящиеся электронные документы аннулируются. // расходящиеся электронные документы аннулируются.
ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ); ПС_ВнутреннийЭДОИзвещений.ПС_АннулироватьЭлектронныеДокументыПриИзменении(ЭтотОбъект, Отказ);
// Связанное извещение перезаполняется по актуальным строкам реестра,
// чтобы его печатная форма не разошлась с документом.
ПС_УчетРодительскойПлаты.ОбновитьИзвещениеПриИзмененииДокумента(ЭтотОбъект);
КонецПроцедуры КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)