Конфигурация - самописная с нуля
Проблема:
написал процедуру для удаления определенных документов, а она то идеально отрабатывает, то не до конца, т.е. удаляет не все нужные документы
Код:
Сообщить("101");
номер = 0; // просто для проверки для подсчета колва проверенных документов
НайденнаяСсылка2 = Документы.НовыйШтраф;
НайденноеНарушение = НайденнаяСсылка2.НайтиПоРеквизиту("Нарушитель", Справочники.ФИО.НайтиПоНаименованию(ЭлементыФормы.Нарушители.ТекущаяСтрока));
Док = Документы.НовыйШтраф;
Сообщить("102");
Для Каждого Док Из Метаданные.Документы Цикл
Сообщить("103");
Выборка = Документы[Док.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
//заплатка
Если НайденноеНарушение.Нарушитель.Пустая() Тогда
НайденноеНарушение = НайденнаяСсылка2.НайтиПоРеквизиту("Нарушитель", Справочники.ФИО.НайтиПоНаименованию(ЭлементыФормы.Нарушители.ТекущаяСтрока));
Сообщить("109");
КонецЕсли;
Сообщить("104");
номер = номер + 1;
Сообщить(номер);
Сообщить("1" + Выборка.Нарушитель);
Сообщить("3" + НайденноеНарушение.Нарушитель);
Если Выборка.Нарушитель = НайденноеНарушение.Нарушитель Тогда
Сообщить("Удалена запись" + Выборка.ПолучитьОбъект());
Выборка.ПолучитьОбъект().Удалить();
КонецЕсли;
КонецЦикла;
КонецЦикла;
Сообщить("105");
Проблема в том, что иногда после удаления очередного документа слетает переменная НайденноеНарушение и все последующие документы уже не удаляются. Слететь она может и после удаления первого документа и после 2,3 и т.п. - никакой зависимости не прослеживается. Пока для решения проблемы сделал заплатку (в коде выделил //заплатка). Но знаю, что это не правильно и проблема в коде. Даже почти уверен, что код процедуры не идеальный, но я только учусь )
П.С. с заплаткой работает без сбоев.
Помогите разобраться, чтобы работало по человечески без заплаток.
Если надо могу и всю конфигурацию скинуть.