Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Як користуватися функцією НайтиПоСсылкам
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
alex-l1904
Доброго дня,
підкажіть як користуватися функцією НайтиПоСсылкам,
треба аналізувати чи можна видаляти помічений на видалення документ.

Функция УдалитьОдинВидДокумента(ТекИмяДока,ДатаНач,ДатаКон)
    
    КолвоУд = 0;
    
    Имя = ТекИмяДока;
    
    Запрос = Новый Запрос("Выбрать Док.ссылка КАК Ссылка Из Документ."+Имя+" КАК Док ГДЕ Док.ПометкаУдаления И Док.Дата МЕЖДУ &ДатаН И &ДатаК");
    
    Запрос.УстановитьПараметр("ДатаН",ДатаНач);
    Запрос.УстановитьПараметр("ДатаК",КонецДня(ДатаКон));

    ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
    
    Пока ВыборкаЗапроса.Следующий() Цикл
        
        
        
                Если ПроверкаВозможностиУдаления(ВыборкаЗапроса.Ссылка) Тогда
          
                      ТекОб =  ВыборкаЗапроса.Ссылка.ПолучитьОбъект();
                     ТекОб.удалить();
              
                  КонецЕсли;
        
        КолвоУд = КолвоУд + 1;


    КонецЦикла;
    
    Если КолвоУд > 0 Тогда
         Сообщить("Видалено "+Имя +" " +Строка(КолвоУд));
    КонецЕсли;
    
    Возврат КолвоУд
КонецФункции


допоможіть з кодом для ПроверкаВозможностиУдаления(ТекДокумент)

В СП
НайтиПоСсылкам(<СписокСсылок>, <ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>)

Возвращаемое значение:
Тип: ТаблицаЗначений.
Возвращает ссылки на найденные объекты в виде ТаблицаЗначений.
Первая колонка - исходная ссылка.
Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице, или значение, олицетворяющее запись необъектной таблицы.
Третья колонка - объект метаданных, которому соответствуют данные, в которых найдена ссылка.

AnryMc
alex-l1904 @ Сегодня, 9:21 необходимо зарегистрироваться для просмотра ссылки ,

Несколько лет назад "тра...ся" с этой функцией несколько недель... На Инфостарте - большое обсуждение было...

Уже подробностей не помню, но кажется: хоть в СП пишут что 2, 3 и 4 параметры необязательные, но если использовать хотя бы один из них нужно объявлять ВСЕ... И не в самой функции...

Но так и не смог заставить её работать как мне нужно

Примерно так работало:
    МассивИскомого = НОВЫЙ Массив;
    МассивИскомого.Добавить(Объект.ЧтоИщем.Ссылка);
    
    МассивГдеИщем = Новый Массив;
    МассивГдеНеИщем = Новый Массив;
    
    Для Каждого текГдеИщем Из Объект.ГдеИщем Цикл
        
        Если  текГдеИщем.Использовать Тогда
            
            МассивГдеИщем.Добавить(Метаданные.НайтиПоПолномуИмени(текГдеИщем.ПолныйТип));        //Тип(СтрЗаменить(текГдеИщем.ПолныйТип,"ы.", "Ссылка."))
            
        КонецЕсли;                                                                                  //Метаданные.НайтиПоПолномуИмени(текГдеИщем.ПолныйТип)
        
    КонецЦикла;
    
    Для Каждого текГдеНеИщем Из Объект.ГдеНеИщем Цикл
        
        Если текГдеНеИщем.Использовать Тогда
            
            МассивГдеНеИщем.Добавить(текГдеНеИщем.ПолныйТип);
            
        КонецЕсли;
        
    КонецЦикла;
    
    МассивСсылок = НайтиПоСсылкам(МассивИскомого, Новый Массив, МассивГдеИщем, МассивГдеНеИщем);
    
    Для Каждого текНайденный Из МассивСсылок Цикл
        
        нсн = Объект.ЧтоНашли.Добавить();
        
        Попытка
        нсн.НайденнаяСсылка = текНайденный.Данные.Ссылка;
    Исключение
        нсн.НайденнаяСсылка = текНайденный.Данные;
    КонецПопытки;
    
    нсн.ТипНайденного = ТипЗнч(текНайденный.Данные);
        
    КонецЦикла;
sunion
AnryMc @ Сегодня, 14:11 необходимо зарегистрироваться для просмотра ссылки ,
Так а в чем там проблема?

Вот этот код работает и возвращает массив объектов с которым связан "док"

Для Каждого док Из ТаблицаДокументов Цикл
        Массив = Новый Массив;
        Массив.Добавить(док.Документ);    
        ТабСсылок = НайтиПоСсылкам(Массив);
        Если ТабСсылок.Количество() > 0 Тогда
            док.Связан =Истина;
        КонецЕсли;    
    КонецЦикла;


AnryMc
Цитата(sunion @ 05.05.23, 14:19) необходимо зарегистрироваться для просмотра ссылки
Так а в чем там проблема?


Цитата(AnryMc @ 05.05.23, 13:11) необходимо зарегистрироваться для просмотра ссылки
хоть в СП пишут что 2, 3 и 4 параметры необязательные, но если использовать хотя бы один из них нужно объявлять ВСЕ...


Если в приведенном коде убрать любой из параметров (2,3,4) - не работает или работает неправильно, во всяком случае так было на релизе примерно 5-ти летней давности...
sunion
AnryMc @ Сегодня, 15:29 необходимо зарегистрироваться для просмотра ссылки ,
То есть, вам нужно задействовать необязательные параметры. Просто вы описали задачу. как необходимость удаления файла и проверки с чем он связан. Но оставшиеся параметры решают более конкретные задачи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.