[РЕШЕНО] Как получить список документов из журнала документов?

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

  1. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте,

    Необходимо получить список документов открытого журнала документов в соответствии с отборами установленными в журнале.

    Делаю так:
    Код:
        ТекстЗапроса =
            "ВЫБРАТЬ
            |    ОбменСоСкладами.Ссылка,
            |    ОбменСоСкладами.Дата,
            |    ОбменСоСкладами.ПометкаУдаления,
            |    ОбменСоСкладами.Номер,
            |    ОбменСоСкладами.Проведен,
            |    ОбменСоСкладами.Организация,
            |    ОбменСоСкладами.Контрагент,
            |    ОбменСоСкладами.Склад,
            |    ОбменСоСкладами.Комментарий,
            |    ОбменСоСкладами.СуммаДокумента,
            |    ОбменСоСкладами.ВалютаДокумента,
            |    ОбменСоСкладами.Подразделение,
            |    ОбменСоСкладами.Тип КАК ВидДокумента
            |ИЗ
            |    ЖурналДокументов.ОбменСоСкладами КАК ОбменСоСкладами
            |АВТОУПОРЯДОЧИВАНИЕ";
        //
        Построитель = Новый ПостроительЗапроса (ТекстЗапроса);
        Построитель.ЗаполнитьНастройки();
        //
        Для Каждого Элемент из ЖурналДокументовСписок.Отбор Цикл
            Если Элемент.Использование Тогда
                Если Построитель.Отбор.Найти(Элемент.Имя) = Неопределено Тогда
                    Построитель.Отбор.Добавить(Элемент.Имя);
                КонецЕсли;       
                Построитель.Отбор [Элемент.Имя].Использование     = Истина;
                Построитель.Отбор [Элемент.Имя].ВидСравнения     = Элемент.ВидСравнения;
                Построитель.Отбор [Элемент.Имя].Значение         = Элемент.Значение;
                Построитель.Отбор [Элемент.Имя].ЗначениеПо         = Элемент.ЗначениеПо;
                Построитель.Отбор [Элемент.Имя].ЗначениеС         = Элемент.ЗначениеС;
                Построитель.Отбор [Элемент.Имя].Представление     = Элемент.Представление;
            КонецЕсли;
        КонецЦикла;    
    
    Всегда вылетаю на ошибку, если в журнале установлен отбор по "Вид документа". При любых других отборах не вылетает.
    Ошибка такая:
    ==============================================================================
    {ЖурналДокументов.ОбменСоСкладами.Форма.ФормаСпискаНовая.Форма(285)}: Ошибка при вызове метода контекста (Добавить)
    Построитель.Отбор.Добавить(Элемент.Имя);
    по причине:
    Недопустимое значение параметра (параметр номер '1')
    ==============================================================================

    Подскажите как решить проблему?
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Что мешает отладчиком пройтись?
  3. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так уж отладчиком это первое дело. Колонка ВидДокумента присутствуетю Тип совпадает.
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Ну судя по ошибке все же есть где-то расхождения. Сделайте остановку по ошибке. И покажите чему равно Элемент.Имя
  5. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Да, конечно.
    upload_2014-9-22_14-42-34.png
  6. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Приложу обработку, демонстрирующую данную проблему.

    Вложения:

  7. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Ну так Вы включите использование отбора то
    Код:
        Построитель = Новый ПостроительОтчета;
        Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных (РезультатЗапроса);
        Построитель.ЗаполнитьНастройки();
       
        Построитель.ДоступныеПоля.ВидДокумента.Отбор = Истина;
       
        // получаю ошибку
        Построитель.Отбор.Добавить("ВидДокумента");
    
  8. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Разобрался.
    В принципе, чтоб обойти журнал с включенным отбором достаточно этого кода:
    Код:
        Построитель = Новый ПостроительЗапроса;
        Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных (ЖурналДокументовСписок);
        Построитель.ЗаполнитьНастройки();
       
        Результат = Построитель.Результат;
    

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