Имя: Пароль:
1C
1C 7.7
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) Все получилось. Спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс