![]() |
|
Обход журнала документов с включенным отбором по ВидДокумента | ☑ | ||
---|---|---|---|---|
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
|
(если это действительно журнал, а не табличная часть)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |