Рекурсивный поиск ссылок #114915


#0 by zenik
Есть идея написать обработку, которая будет распроводить документ на который имеются ссылки, но при этом и проверить ссылки по ссылочным документам. Т.е. выбираем документ, жмакаем кнопку, ТЗ заполняется документами, которые являются ссылками для выбранного документа, потом из ТЗ выбираем документы ссылки, проверяем ссылки на них и так до тех пор, пока не получим конечные документы без ссылок. Таблицу сворачиваем, сортируем по документам и начинаем их распроводить с конца. Потом распроводим выбранный документ и проводим документы которые распровели. После 2-3 проходов БД вываливается из за ошибки MSSQL: Messge: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a dublicate key was found for index ID 1. Most significant primary key is `O1`. ... Ну и далее еще всякая байда, которая ссылается уже на эту ошибку. Вывалится может и при 4000 документов в СпискеЗначений и при 400. Ошибка одна и таже. Может я чего не так делаю, может еще что. Может есть другой путь решения данной проблемы, а может и уже что готовое есть? Вообщем хоть что нить по теме буду рад услышать. з.ы. Если надо, могу дать код, но там ничего привлекательного пока нет, кроме поиска ссылок.
#1 by zenik
Чего то блин перечитал и сам не понял ;) Ошибка выдается когда идет поиск ссылок.
#2 by lexa
смотри обработку Дерево документов ( вызывается по кнопке действия- стуктура подчиненности
#3 by zenik
Это в какой конфе такое чудо? У меня просто не типовая конфа стоит.
#4 by Волшебник
LOL!
#5 by Rovan
А вот и кандидат на самый прикольный вопрос месяца!
#6 by zenik
И в чем прикол? У человека проблема, а вы помоч не хотите.
#7 by Rovan
Прикол в компоновке слов в . А если хочешь подсказок, показывай код.
#8 by zenik
Так бы и сказали, что "пива нет"... (с) Вот код: На форме ТЗ (тзДокумент), поле выбора документа (ВыбДокумент), кнопка - вызывает процедуру ПоискСсылокПоДокументу.
#9 by Rovan
Сделал рекурсивный вызов, а исползуется внешняя ТЗ (тзДокументы) в:
#10 by zenik
Не понял...
#11 by Rovan
В рекусурсивных вызовах лучше использовать только внутренние объекты или нужен внешний счетчик, отвечающий за раграничение областей записи (чтения) во внешний объект в различных рекурсивных вызовах. (ПС: я больше писать не могу - я домой пошел)
#12 by zenik
Но ведь в этом цикле просто идет преобразование ТЗ в СписокЗначений, который подсовывается функции поиска ссылок... Все равно ячего то не догоняю... Она кстати прекрасно отрабатывает, когда у ссылочных документов нет ссылок.
#13 by По идее так
1.Прибей все локальные объекты в рекурсивной функции (т.е  тзСсылки=создатьОбъект("ТаблицаЗначений");      Объект=СоздатьОбъект("СписокЗначений"); - всё вынеси за до вызова ПоискСсылокПоТЗ ; и сделай в начале модуля Перем тзСсылки,Объект 2. В процедуре  ПоискСсылокПоТЗпропиши Объект.УдалитьВсе;
#14 by Rovan
Ну как ты там ? Получилось ?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С