Удаление битых ссылок в регистрах
Ссылки на не существующие объекты конфигурации
Часто бывает, что в результате обмена данных или некорректных обработок случаются ошибки, и вместо значения ссылочных данных в полях встречается «Объект не найден», то есть «битые ссылки». Вот что происходит в отчетах , когда такие битые ссылки встречаются в регистрах:
Я стал сформировать журнал учета полученных и выданных счетов фактур в прикладном решении “Бухгалтерия предприятия 3.0″ и при определяемых условиях отбора отчет не формируется и видает такое сообщение
Я сразу не понял, что причина нужно искать в этих битых ссылках и стал обвинять пользователей в неправильности ввода счетов фактур, особенно если эти счета-фактур не вводятся интерактивно, а вводятся с автоматически программным путем с помощью каких -то внешних обработок. После просмотра формирования отчета с помощью отладчика я понял, что причина заключается в наличии битых ссылок.
Я создал простую обработку удаления битых ссылок для программы ” Бухгалтерия предприятия 3.0″. В форме обработки я добавил 2 кнопки – тестирование и удаление. Мне нужно было убедится какие еще регистры ссылаются на эти битые ссылки. В данном случае только регистр сведения “журнал учета счетов фактур” ссылались на битые ссылки как показано на рис.2. К счастью, в данном случае, битые ссылки были только в регистре сведения “журнал учета счетов фактур”.
После выполнения удаления битые ссылки исчезли и отчет журнал учета полученных и выданных счетов фактур сформировался.
Программный код обработки очень простой, но в ней очень интересные нюансы:
Во первых , при вызове функции ОбработатьНаборЗаписей возникает ошибка если в регистре отсутствует битых ссылок, а я питаюсь записать пустой набор записей с отбором по битой ссылке на регистратора. Поэтому мне пришлось добавить условие Если количествоЗаписей >0 тогда удаляем ( очищаем и записываем набор) ( см . рис.3)
Во- вторых, чтобы запросом найти битую ссылку на регистратора регистра нужно 2 условия : Одно условия должно быть Не журналСчетофактур.регистратор ЕСТЬ NULL ( этим я определяю, что ссылка установлена), а другое условие я обращаясь к свойствам регистратора, например на дату по точке и поскольку такого значения нет то запрос возвращает NULL ( См. рис 3)
Отметим, что в этой процедуре я обрабатываю все регистры движения счета фактуры с битой ссылкой. При этом нужно иметь ввиду, что при удалении битых ссылок удаются также вся информация о сумме НДС и следовательно, остатки по НДС до и после обработки будут отличаться. К счастью, в данном случае, битые ссылки были только в регистре сведения “журнал учета счетов фактур”
Стоимость отчета 2000 р. Для приобретения обработки нужно обратиться по почте master1c8x@mail.ru