Имя: Пароль:
1C
1С v8
Обход журнала документов с включенным отбором по ВидДокумента
0 yegorka
 
23.09.14
16:21
Здравствуйте,
задача обойти все документы журнала в котором включен отбор по ВидДокумента. С любым другим отбором работает.
Подробно проблему описал здесь http://1c-pro.ru/threads/kak-poluchit-spisok-dokumentov-iz-zhurnala-dokumentov.51359/

Для тех у кого возникнет желание проверить, сделал обработку с комментарием. Обработка здесь http://1c-pro.ru/threads/kak-poluchit-spisok-dokumentov-iz-zhurnala-dokumentov.51359/#post-328262

Обидно, что в любом журнале отбор по Виду документа работает.
Кто сталкивался с подобной задачей подскажите, плиз,как ее решить.
1 shuhard
 
23.09.14
16:23
(0) миста не пойдём на чуждый форум решать твои проблемы
2 yegorka
 
23.09.14
16:27
Хорошо. Понял.
В форме журнала документов код:
    ТекстЗапроса =
        "ВЫБРАТЬ
        |    ОбменСоСкладами.Ссылка,
        |    ОбменСоСкладами.Дата,
        |    ОбменСоСкладами.ПометкаУдаления,
        |    ОбменСоСкладами.Номер,
        |    ОбменСоСкладами.Проведен,
        |    ОбменСоСкладами.Организация,
        |    ОбменСоСкладами.Контрагент,
        |    ОбменСоСкладами.Склад,
        |    ОбменСоСкладами.Комментарий,
        |    ОбменСоСкладами.СуммаДокумента,
        |    ОбменСоСкладами.ВалютаДокумента,
        |    ОбменСоСкладами.Подразделение,
        |    ОбменСоСкладами.Тип КАК ВидДокумента
        |ИЗ
        |    ЖурналДокументов.ОбменСоСкладами КАК ОбменСоСкладами
        |АВТОУПОРЯДОЧИВАНИЕ";
    //
    Построитель = Новый ПостроительЗапроса (ТекстЗапроса);
    //Построитель = Новый ПостроительЗапроса;
    //Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных (ЖурналДокументовСписок);
    Построитель.ЗаполнитьНастройки();
    //
    Для Каждого Элемент ИЗ ЖурналДокументовСписок.Отбор Цикл
        Если Элемент.Использование Тогда
            Если Построитель.Отбор.Найти(Элемент.Имя) = Неопределено Тогда
                Построитель.Отбор.Добавить(Элемент.Имя);
            КонецЕсли;        
            Построитель.Отбор [Элемент.Имя].Использование     = Истина;
            Построитель.Отбор [Элемент.Имя].ВидСравнения     = Элемент.ВидСравнения;
            Построитель.Отбор [Элемент.Имя].Значение         = Элемент.Значение;
            Построитель.Отбор [Элемент.Имя].ЗначениеПо         = Элемент.ЗначениеПо;
            Построитель.Отбор [Элемент.Имя].ЗначениеС         = Элемент.ЗначениеС;
            Построитель.Отбор [Элемент.Имя].Представление     = Элемент.Представление;
        КонецЕсли;
    КонецЦикла;     


Вылетает на Построитель.Отбор.Добавить(Элемент.Имя), кодга Элемент.Имя = "ВидДокумента", в остальных случаях не вылетает.
Вылетает по ошибке: Недопустимое значение параметра (параметр номер '1')
3 Зеленый пень
 
23.09.14
16:30
(2) А еще есть отбор по периоду.
4 yegorka
 
23.09.14
16:31
(3) любой другой отбор работает............
5 Зеленый пень
 
23.09.14
16:33
Я бы по-старинке:
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЖурналДокументовСписок);
    РезультатЗапроса = Построитель.Результат;
6 Мимохожий Однако
 
23.09.14
16:34
Если Построитель.Отбор.Найти(Элемент.Имя) = Неопределено Тогда
                Построитель.Отбор.Добавить(Элемент.Имя);
7 yegorka
 
23.09.14
16:35
В этом случае, получим без отборов в журнале. Их все равно нужно добавлять в построитель. Если код смотрели специльно там оставил закоментированные строки...
8 yegorka
 
23.09.14
16:36
(6) вы код смотрели??
9 Мимохожий Однако
 
23.09.14
16:46
Посмотри СП
Отбор.Добавить (Filter.Add)
Отбор (Filter)
Добавить (Add)
Синтаксис:

Добавить(<Описание>, <Имя>, <Представление>)
Параметры:

<Описание> (обязательный)

Тип: Строка.
Описание элемента отбора в виде наименования доступного поля или в виде развернутого пути
Например, "Контрагент.Код", где "Контрагент" - одно из полей доступных для отбора.
<Имя> (необязательный)

Тип: Строка.
Имя элемента отбора. Если не задано, то имя задается автоматически по переданному в качестве первого параметра описанию.
<Представление> (необязательный)

Тип: Строка.
Пользовательское представление добавляемого элемента отбора.
Возвращаемое значение:

Тип: ЭлементОтбора; Неопределено.
Если добавить элемент отбора не удалось, то возвращает значение Неопределено.
Описание:

Добавляет элемент отбора по переданному описанию поля отбора в виде "пути".
Например, если среди доступных полей есть поле "Контрагент", то возможно добавление элемента отбора "Контрагент", "Контрагент.ТипКонтрагента", "Контрагент.ТипКонтрагента.Наименование" и т.д.
Внимание! Метод не доступен для отбора динамических списков (свойство Отбор объектов СправочникСписок.<Имя справочника>, ДокументСписок.<Имя документа> и т.д.)

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Добавление возможно только из коллекции доступных полей.
Пример:

Отбор = ОтчетОстатки.ПостроительОтчета.Отбор;
Если Отбор.Найти("Номенклатура") = Неопределено Тогда
    Отбор.Добавить("Номенклатура");
КонецЕсли;
Отбор["Номенклатура"].Использование = Истина;
Отбор["Номенклатура"].Значение      = Номенклатура;
Отбор["Номенклатура"].ВидСравнения  =
        ?(Номенклатура.ЭтоГруппа,
            ВидСравнения.ВСпискеПоИерархии,
            ВидСравнения.Равно);


См. также:

Отбор, метод УстановитьДоступныеПоля
10 yegorka
 
23.09.14
16:57
(9) Не беспокойся СП первое к чему обратился.
Код, что я привел соответствует СП.
А вы, похоже, так ине потрудились раскрыть код... Если б взглянули, ваш пост был бы не нужен.
11 Зеленый пень
 
23.09.14
17:02
Повторюсь:
Новый ОписаниеИсточникаДанных()  - прекрасно отрабатывает все отборы
12 Зеленый пень
 
23.09.14
17:03
(если это действительно журнал, а не табличная часть)