8.х Как в запросе обработать все типы документов?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Ivan2014, 22 окт 2014.

  1. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Необходимо в запросе обработать все типы документов. Как это сделать?
    Т.е. мне нужно посчитать по определенному условию (документ за прошлый период) количество таких документов. Как это можно реализовать. Прошу наводку.
    Большое спасибо.
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    наводка: поищите по данному форуму - не раз примеры приводились как задать условие по типу в запросе
    Ivan2014 нравится это.
  3. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Я понимаю что по всей вероятности сначала нужно получить все типы документов
    Код:
    Для Каждого ТипДок Из Метаданные.Документы Цикл
    а затем уже как-то их передать в запрос, вот с этим уже проблема у меня.
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    На вскидки типа такого
    Ну прошлись вы данным циклом сложили в массив нименвания объектов
    а затем что то типа запрос в цикле, понятно что звучит очень плохо но все же

    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |.......
    |
    | ИЗ Документы."+СТР+" КАК ДокументыОбработки

    Для каждого СТР из МассивМетаданных Цикл

    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |.......
    |
    | ИЗ Документы."+СТР+" КАК ДокументыОбработки


    Запрос.УстановитьПараметры(ИмяМетаданных,СТР);
    Выборка= Запрос.Выполнить().Выбрать();
    //---- обработка выборки
    КонецЦикла

    Т.е вместо СТР будет подставляться Ваш объект метаданных
    Ivan2014 нравится это.
  5. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Я не могу понять следующее. Есть Цикл
    Код:
    Для Каждого ТипДок Из Метаданные.Документы Цикл
    Почему следующий код не работает:
    Код:
    Если ТипДок.Имя="ПлатежноеПоручение" Тогда
        Док=ТипДок.Выбрать();
        Пока Док.Следующий Цикл
    
    Ругается на Выбрать. Никак не могу понять. Как я понимал я фактически уже получил таблицу документов ПлатежноеПоручение. Получается что нет?
    --- Объединение сообщений, 22 окт 2014 ---
    Я понимаю как условие по типу в запросе задать.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну конечно не будет работать. т.к Метаданные.Документы возвращает Вам ОбъектМетаданных
    А Документы,платежноеПоручение.Выбрать - это ДокументМенеджер разные типы

    Тут либо через запрос либо попробовать вот так

    текстКода="Док=Документы."+ТипДок+".Выбрать();";
    Выполнить(текстКода);

    По сути должен выполниться код Док=Документы.ПлатежноеПоручение.Выбрать(); и присвоиться значение вашей переменной
    Ivan2014 нравится это.

Поделиться этой страницей