Заметка о процедуре ОбработкаУдаленияПроведения() из модуля документа "ЗаявкаНаОткрытиеСчетов" типового 1С:ЗУП (2.5.80.2)

Администрирование - Тестирование и исправление

Включил замер производительности при тестировании обмена с банками заявками на открытие лицевых счетов и...

И увидел постоянный вызов ОбработкаУдаленияПроведения модуля документа "ЗаявкаНаОткрытиеСчетов" при попытке перезаписи ранее проведенных документов "ЗаявкаНаОткрытиеСчетов".
С чего это вдруг? Ведь документ как был проведенным, так и остается. В табличке документа программно редактируется реквизит и далее он просто перезаписывается.
Стек вызов быстро дает ответ. Собственно код из модуля документа "ЗаявкаНаОткрытиеСчетов":

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
 
 Если ОбменДанными.Загрузка Тогда
  Возврат;
 КонецЕсли;
 
 Если Проведен Тогда     
  ОбъектВБазе = Ссылка.ПолучитьОбъект();
  мОрганизация = ОбъектВБазе.Организация;
  мБанк = ОбъектВБазе.Банк;
  ОбработкаУдаленияПроведения(Ложь);
 КонецЕсли;
 
 Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
  Запрос = Новый Запрос;

Становится очевидно, что обработка ОбработкаУдаленияПроведения() вызывается при любых действиях с уже проведенным документом.
В том числе и когда мы хотим просто перезаписать документ программно.
По ряду причин лучше переписать в типовой код так:

 Если НЕ РежимЗаписи = РежимЗаписиДокумента.ЗаписьТогда    

 // 

 ОбработкаУдаленияПроведения(Ложь);
КонецЕсли;

вместо 
  Если Проведен Тогда

//

ОбработкаУдаленияПроведения(Ложь);
КонецЕсли;

 

Дожидаться выпуска обновления, если конфа снята с поддержки не имеет смысла.

Если делаете частую перезапись "ЗаявокНаОткрытиеСчетов", то рекомендую.

См. также

Комментарии
1. TMV 14 25.07.14 10:30 Сейчас в теме
(0) Для документов при обмене обычно включают ОбменДанными.Загрузка в Истина, тем более что:
Если ОбменДанными.Загрузка Тогда
  Возврат;
 КонецЕсли;

Только если вам не нунжо, чтобы выполнялся код, следуемый далее.
В общем, заметка ни о чем.
2. Иван Пантелеев (RailMen) 680 25.07.14 19:39 Сейчас в теме
(1) TMV, речи об обмене данными нет. Речь о перезаписи проведенных документов при обмене с банком, когда типовой документ ЗаявкаНаОткрытиеСчетов неоправдано удаляет записи РС и снова добавляет точно такие же. Речь о нарушенной методологии.
З.Ы. Не советую злоупотреблять конструкцией
Если ОбменДанными.Загрузка Тогда

там, где в этом нет необходимости и смысла.
3. TMV 14 26.07.14 06:58 Сейчас в теме
(2) RailMen, Какой сакральный смысл неиспользования этого механизма в вашем конкретном случае?

Я вижу противоречие здесь:
речи об обмене данными нет. Речь о перезаписи проведенных документов при обмене с банком
Вы нет?

Я к тому, что используй этот механизм изначально, вы даже и не обнаружили бы перезаписи регистров и пр., а следовательно и заметки бы не было.

З.Ы.
Предлагаю вам пробежаться по всем документам и справочникам типовых конфигураций и по каждому объекту написать такую вот заметку.
4. Иван Пантелеев (RailMen) 680 28.07.14 01:03 Сейчас в теме
(3) TMV, я просто за методологическую правильность типового кода в типовых конфигурациях. И еще раз: методологическую. Надеюсь вы еще раз сравните 2 варианта кода ) Конструкция : "ОбменДанными.Загрузка=Истина" - должна использоваться только по назначению при реализации обменов данными. Обмен с банками - это конечно же тоже "обмен" данными, только суть то не в этом. Имел ввиду другое: при перезаписи документов "Заявка на открытие счетов" типовая логика удаляет набор записей, а затем снова создает. Что если захотим воспользоваться типовой же групповой обработкой документов? А где гарантия, что в новых релизах не измениться код ОбработкиПроведения и ее повторный запуск даст весьма неожиданный результат? Просто факт остается фактом: нарушена методология.
5. Евгений (Scop) 21 30.07.14 08:44 Сейчас в теме
(4) RailMen, полностью согласен. Проверил УПП 1.3.55.1 - та же самая ситуация.
Оставьте свое сообщение