| 
    
        
     
     | 
    
    
  | 
Зацикливается функция | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        yavasya    
     29.09.14 
            ✎
    13:38 
 | 
         
        Функция ПолучитьРодительскиеДокументы(ДокументСсылка, СписокСвязанныхДокументов = Неопределено, мУжеВСписке = Неопределено) Экспорт 
 
        Если СписокСвязанныхДокументов = Неопределено Тогда СписокСвязанныхДокументов = Новый СписокЗначений; КонецЕсли; Если мУжеВСписке = Неопределено Тогда мУжеВСписке = Новый Соответствие; КонецЕсли; МетаданныеДокумента = ДокументСсылка.Метаданные(); СписокРеквизитов = Новый СписокЗначений; Для Каждого Реквизит ИЗ МетаданныеДокумента.Реквизиты Цикл ТипыРеквизита = Реквизит.Тип.Типы(); Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Попытка ЗначениеРеквизита = ДокументСсылка[Реквизит.Имя]; Исключение Прервать; КонецПопытки; ЕСли ЗначениеРеквизита<>Неопределено И НЕ ЗначениеРеквизита.Пустая() И ТипЗнч(ЗначениеРеквизита) = ТекущийТип И мУжеВСписке[ЗначениеРеквизита] = Неопределено И СписокРеквизитов.НайтиПоЗначению(ДокументСсылка[Реквизит.Имя]) = Неопределено Тогда Попытка СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ЗначениеРеквизита.Дата,"ДФ=yyyyMMddЧЧММсс")); Исключение ОтладкаТекстОшибки = ОписаниеОшибки(); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого ТЧ Из МетаданныеДокумента.ТабличныеЧасти Цикл СтрРеквизитов = ""; Попытка СодержимоеТЧ = ДокументСсылка[ТЧ.Имя].Выгрузить(); Исключение Прервать; КонецПопытки; Для Каждого Реквизит ИЗ ТЧ.Реквизиты Цикл ТипыРеквизита = Реквизит.Тип.Типы(); Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда СтрРеквизитов = СтрРеквизитов + ?(СтрРеквизитов = "", "", ", ") + Реквизит.Имя; Прервать; КонецЕсли; КонецЦикла; КонецЦикла; СодержимоеТЧ.Свернуть(СтрРеквизитов); Для Каждого КолонкаТЧ ИЗ СодержимоеТЧ.Колонки Цикл Для Каждого СтрокаТЧ ИЗ СодержимоеТЧ Цикл Попытка ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя]; Исключение Продолжить; КонецПопытки; МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита)); Если МетаданныеЗначения = Неопределено Тогда // базовый тип Продолжить; КонецЕсли; ЕСли ЗначениеРеквизита<>Неопределено И НЕ ЗначениеРеквизита.Пустая() И Метаданные.Документы.Содержит(МетаданныеЗначения) И мУжеВСписке[ЗначениеРеквизита] = Неопределено Тогда Если СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда Попытка СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ЗначениеРеквизита.Дата,"ДФ=yyyyMMddЧЧММсс")); Исключение ОтладкаТекстОшибки = ОписаниеОшибки(); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; мУжеВСписке.Вставить(ДокументСсылка, Истина); Для Каждого СтрСЗ Из СписокРеквизитов Цикл СписокСвязанныхДокументов = ПолучитьРодительскиеДокументы(СтрСЗ.Значение, СписокСвязанныхДокументов, мУжеВСписке); КонецЦикла; Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка | ИЗ Документ."+МетаданныеДокумента.Имя + " ГДЕ Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Выборка = Запрос.Выполнить().Выбрать(); ЕСли Выборка.Следующий() Тогда СписокСвязанныхДокументов.Добавить(Выборка.Ссылка); Иначе СписокСвязанныхДокументов.Добавить(ДокументСсылка); КонецЕсли; Возврат СписокСвязанныхДокументов; КонецФункции  | 
|||
| 
    1
    
        yavasya    
     29.09.14 
            ✎
    13:38 
 | 
||||
| 
    2
    
        ssh2QQ6    
     29.09.14 
            ✎
    13:40 
 | 
         
        Продолжайте наблюдения...     
         | 
|||
| 
    3
    
        yavasya    
     29.09.14 
            ✎
    13:40 
 | 
         
        если не находит родительские документы зацикливается пока все метаданные не переберет. Зацикливается всё на тип "строка" и не выходит из цикла, потому что она повторяется постоянно     
         | 
|||
| 
    4
    
        yavasya    
     29.09.14 
            ✎
    13:51 
 | 
         
        если счетчик <30 тогда продолжить, иначе возврат     
         | 
|||
| 
    5
    
        Лодырь    
     29.09.14 
            ✎
    13:52 
 | 
         
        тихо, сам с собою, я веду беседу..     
         | 
|||
| 
    6
    
        yavasya    
     29.09.14 
            ✎
    13:53 
 | 
         
        Для Счетчик = 1 По 5 Цикл
 
        Если Счетчик > 2 Тогда Прервать; КонецЕсли; Сообщить(Счетчик); // 1 2 КонецЦикла;  | 
|||
| 
    7
    
        yavasya    
     29.09.14 
            ✎
    13:53 
 | 
         
        ну может подскажешь как родительские документы получить?     
         | 
|||
| 
    8
    
        yavasya    
     29.09.14 
            ✎
    13:57 
 | 
         
        другой функцией     
         | 
|||
| 
    9
    
        yavasya    
     29.09.14 
            ✎
    13:57 
 | 
         
        запросом может ?     
         | 
|||
| 
    10
    
        France    
     29.09.14 
            ✎
    14:02 
 | 
         
        критерии отбора в помощь отцу русской демократии..     
         | 
|||
| 
    11
    
        yavasya    
     29.09.14 
            ✎
    14:03 
 | 
         
        подробнее     
         | 
|||
| 
    12
    
        yavasya    
     29.09.14 
            ✎
    14:09 
 | 
         
        (6) взлетело.  блин корявый код. как правильно написать?     
         | 
|||
| 
    13
    
        lodger    
     29.09.14 
            ✎
    14:13 
 | 
         
        (11) Глобальный контекст (Global context)
 
        КритерииОтбора (FilterCriteria) Использование: Только чтение. Описание: Тип: КритерииОтбораМенеджер. Используется для доступа к определенным в конфигурации критериям отбора. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: КритерииОтбораМенеджер (12) переписать с нуля через критерии отбора.  | 
|||
| 
    14
    
        yavasya    
     29.09.14 
            ✎
    14:14 
 | 
         
        блин, непонятно     
         | 
|||
| 
    15
    
        yavasya    
     29.09.14 
            ✎
    14:15 
 | 
         
        (13) вашу аську можно?     
         | 
|||
| 
    16
    
        yavasya    
     29.09.14 
            ✎
    14:16 
 | 
         
        запрос по критериям отбора из структуры починенности это имеете ввиду?     
         | 
|||
| 
    17
    
        hhhh    
     29.09.14 
            ✎
    14:30 
 | 
         
        По идее и должно зацикливать. Всё правильно работает.
 
        Например реализация ссылается на счет-фактуру, а счет-фактура ссылается на реализацию. У вас получается у реализации родитель счет-фактура, а у счет-фактуры родитель реализация. Ну и программа входит в бесконечный цикл.  | 
|||
| 
    18
    
        yavasya    
     29.09.14 
            ✎
    14:55 
 | 
         
        я это понимаю, как по другому сделать?     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |