В ЗУП 2.5 у ряда документов есть чудный реквизит ПерерассчитываемыйДокумент
На данном реквизите строится механизм исправлений. Получается что некий документ может быть исправлен другим документом причём тот в свою очередь теоретически может быть исправлен третьим документом. Есть линейный запрос в котором я формирую из объектов временную таблицу значений. При этом если у объекта есть реквизит с наименованием ПерерассчитываемыйДокумент то в некое поле я пишу истина, а нет так ложь. Далее если реквизит имеется то в некое поле я возвращаю в запросе содержимое поля, а если нет то в этом поле NULL.
Получается что то типа
ВЫБРАТЬ
_Объект.Ссылка,
_Объект.ПерерассчитываемыйДокумент,
ИСТИНА
Далее мне необходимо в запросе разделить таблицу на объекты с реквизитом и объекты без реквизита. Потом как я понимаю мне надо в таблице объектов имеющих ПерерассчитываемыйДокумент каким то образом получить иерархию и задать такой порядок сортировки или такую систему с итогами что бы в начале летели документы которые являются исправлениями, а потом бы я получал документы которые исправлялись.
Суть проблемы. Я чищу и правлю автоматически документы которые имеют ссылки на уволенных сотрудников. При попытке поправить с очищением ссылки на уволенного сотрудника документа по которому были исправления попытка записи завершается неудачей. В итоге хочется рвать временно связь между документом исправления и исправляемым документом менять начинку документа и потом, записав, восстанавливать связь. Ситуация усугубляется тем что документ исправление сам может быть исправлен.
Поможите люди добрые. А то всю голову себе сломал на предмет как это всё сделать минимальным числом строк кода/запросом.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший