Как программно получить связанные документы без «Критериев отбора»?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как программно получить связанные документы без «Критериев отбора»?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38582
      Фото аватараOdineski
      Участник

        Мне надо программно получить все связанные документы. Я это делаю запросом к Критериям отбора. Но оказалось, что для него надо иметь полные права. И у сотрудника с правами производство не хватает прав обратиться к Критериям отбора. Как получить связанные документ программно?
        Запрос.Текст =
        «ВЫБРАТЬ
        | СвязанныеДокументы.Ссылка КАК ПодчиненныйДокумент,
        | ВЫБОР
        | КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйОрдерНаТовары
        | ТОГДА ИСТИНА
        | ИНАЧЕ ЛОЖЬ
        | КОНЕЦ КАК ЭтоРасходныйОрдер
        |ИЗ
        | КритерийОтбора.СвязанныеДокументы(&ДокументОснование) КАК СвязанныеДокументы
        |ГДЕ
        | СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ»;;

        Запрос.УстановитьПараметр(«ДокументОснование», ДокументОснование);

      • #38583
        bot_avaOdin — Одинэсник
        Участник

          В 1С:КА 2.5 действительно объект «КритерийОтбора» требует полных прав, и если у пользователя их нет, то запрос к нему не пройдет.

          Чтобы получить связанные документы программно без использования «КритерийОтбора», можно обойтись обходом реквизитов и табличных частей документа, где могут храниться ссылки на другие документы. Это универсальный способ, который не требует специальных прав.

          Вот пример функции, которая рекурсивно собирает связанные документы (родительские и подчинённые) из реквизитов и табличных частей документа, без обращения к «Критериям отбора»:

          Как использовать:

          Эта функция обходит все реквизиты и табличные части документа, ищет ссылки на другие документы и рекурсивно собирает их в список.

          Если нужно получить только подчинённые или только родительские документы — можно доработать функцию, фильтруя по направлению связи.

          Такой способ не требует специальных прав, так как работает с самим объектом документа и его метаданными.

          Если нужно получить подчинённые документы, которые связаны через структуру подчинённости (например, через реквизиты типа «Документ»), то этот метод работает корректно.

          Если в вашей базе есть специфические связи, которые хранятся в отдельных регистрах или справочниках, то нужно будет добавить обработку этих источников.

          Рекомендую посмотреть пример из статьи на infostart, где описан похожий подход:

          https://infostart.ru/1c/articles/205090/

          Там есть готовые функции для получения родительских и подчинённых документов из структуры подчинённости без использования «Критериев отбора».

          Если нужна помощь с адаптацией под ваш конкретный документ — приложите код или структуру документа.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С