|
v7: Документы: ВыбратьПоЗначению |
☑ |
0
vadim777
13.01.17
✎
12:50
|
Нужно обработать документы определенного вида для нескольких фирм, заданных списком. Как это сделать?
PS: Пробую след. образом:
Для Инд = 1 По спФирмы.РазмерСписка() Цикл
Доки = СоздатьОбъект("Документ.ПриходныеНакладные");
Доки.ВыбратьПоЗначению(Дата1,Дата2,"Фирма",спФирмы.ПолучитьЗначение(Инд));
....
На последней строке - сообщение об ошибке:
.... Объект - документ определенного вида!
Понятно, что нужно так: Доки = СоздатьОбъект("Документ")
Но тогда для меня теряется смысл отбора по значению, если после этого в цикле нужно дополнительно проверять вид документа.
Можно конечно выбрать документа заданного вида, и в цикле проверять на вхождение реквизита Фирма документа в спФирмы.
А вот так чтобы сразу - выбрать документы определенного вида по значению его реквизита? А еще лучше - по вхождению значения реквизита в список значений?
|
|
1
Zmich
13.01.17
✎
12:54
|
(0). Используй запрос
|
|
2
Builder
13.01.17
✎
12:55
|
Запрос не предлагать?
|
|
3
vadim777
13.01.17
✎
12:55
|
(1)(2) А о запросе и не подумал. Спасибо.
|
|
4
Рэйв
13.01.17
✎
12:59
|
ВыбратьПоЗначению только для "Документ"
|
|
5
vadim777
13.01.17
✎
13:46
|
Сделал запросом:
Запрос = СоздатьОбъект("Запрос");
ТекстЗ = "
|Период с Дата1 по Дата2;
|ОбрабатыватьДокументы Проведенные;
|ПН = Документ.ПриходнаяНакладная.ТекущийДокумент;
|Фирма = Документ.ПриходнаяНакладная.Фирма;
|Группировка ПН Упорядочить по ПН.ДатаДок;
|Условие(Фирма в спФирмы);
|";
Если Запрос.Выполнить(ТекстЗ) = 0 Тогда
Сообщить("Не выполнился запрос по ПН.","!!");
Возврат;
КонецЕсли;
ТекДок = СоздатьОбъект("Документ.ПриходнаяНакладная");
Пока Запрос.Группировка() = 1 Цикл
ТекДок.НайтиДокумент(Запрос.ПН);
СформироватьЦены();
КонецЦикла;
Под условие попадает один документ, а цикл по запросу идет на второй шаг, при этом поле ПН - пустое, Фирма - заполненное.
В чем тут дело?
|
|
6
Ёпрст
гуру
13.01.17
✎
14:11
|
(0) можешь ограничить выборку конкретным видом, если напишешь ИспользоватьЖурнал перед этим
|
|
7
Ёпрст
гуру
13.01.17
✎
14:14
|
(5)
//|ОбрабатыватьДокументы Проведенные;
....
//|Группировка ПН Упорядочить по ПН.ДатаДок;
Пока Запрос.Группировка() = 1 Цикл
ЗЫ: выкинь лишнее и воткни параметр в метод группировка, ты же не используешь БезИтогов в запросе.
|
|
8
Ёпрст
гуру
13.01.17
✎
14:15
|
Писать ОбрабатыватьДокументы не нужно, запрос и так по-умолчанию выбирает только проведенные и сам упорядочивает по дате
|
|
9
vadim777
13.01.17
✎
14:28
|
(7)(8) Все получилось. Спасибо.
|
|