Удаление битых ссылок в регистрах

Печать (Ctrl+P)

Ссылки на не существующие объекты конфигурации

Часто бывает, что в результате обмена данных  или некорректных обработок  случаются ошибки, и вместо значения ссылочных данных в полях встречается «Объект не найден», то есть «битые ссылки». Вот что происходит в отчетах , когда такие битые ссылки встречаются в регистрах:

Я стал сформировать журнал учета полученных и выданных счетов фактур в прикладном решении “Бухгалтерия предприятия 3.0″ и при определяемых условиях отбора отчет не формируется и видает такое сообщение

Рис 1. Отчет “журнал учета полученных и выданных счетов фактур

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

Я создал  простую обработку удаления битых ссылок для  программы ” Бухгалтерия предприятия 3.0″.  В форме обработки я добавил 2 кнопки – тестирование и  удаление.  Мне нужно было убедится какие еще регистры ссылаются на эти битые ссылки.  В данном случае только регистр сведения “журнал учета счетов  фактур”  ссылались на битые ссылки как показано на рис.2.  К счастью, в данном случае, битые ссылки были только в регистре  сведения “журнал учета счетов  фактур”.

Рис 2. Обработка удаления битых ссылок

 

После  выполнения удаления битые ссылки исчезли и отчет   журнал учета полученных и выданных счетов фактур сформировался.

Программный код обработки очень простой, но в ней очень интересные нюансы:

Во первых , при вызове функции ОбработатьНаборЗаписей возникает ошибка  если в регистре отсутствует битых ссылок, а я питаюсь записать пустой набор записей с отбором по битой ссылке на регистратора. Поэтому мне пришлось добавить условие Если количествоЗаписей >0 тогда   удаляем ( очищаем и записываем набор)  ( см . рис.3)

Рис 3. Программный код

Во- вторых, чтобы запросом  найти битую ссылку на регистратора регистра нужно 2 условия :   Одно условия должно быть  Не журналСчетофактур.регистратор ЕСТЬ NULL (  этим я определяю, что ссылка установлена), а  другое условие я обращаясь к свойствам регистратора, например на дату по точке и поскольку такого значения нет то запрос возвращает NULL ( См. рис 3)

Рис 4. Программный код

Отметим, что в этой процедуре я обрабатываю все регистры движения счета фактуры с битой ссылкой. При этом нужно иметь ввиду, что при удалении битых ссылок удаются также вся информация о сумме НДС и следовательно, остатки по НДС до и после обработки будут отличаться. К счастью, в данном случае, битые ссылки были только в регистре  сведения “журнал учета счетов  фактур”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *