Имя: Пароль:
1C
1C 7.7
v7: Запрос в документе и во внешней обработки возвращает разный результат
0 zhenyat
 
27.04.12
11:28
Здравствуйте
Помогите пожалуйста разобраться.
Имеется следующий запрос:


+ Code
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)

   |Период с (ДатаНачалаРаботы) по (ДатаДок);
   |ТекущийДокумент=Документ.ПоступлениеБрака.ТекущийДокумент;
   |Товар = Документ.ПоступлениеБрака.Товар,Регистр.БракСторонний.ТМЦ, Регистр.БракОтремонтированный.ТМЦ,Регистр.БракОкончательный.ТМЦ;
   |СерийныйНомер = Документ.ПоступлениеБрака.СерийныйНомер,Регистр.БракСторонний.СерийныйНомер, Регистр.БракОтремонтированный.СерийныйНомер,Регистр.БракОкончательный.СерийныйНомер;
   |КолДок = Документ.ПоступлениеБрака.Количество;
   |КолОт = Регистр.БракОтремонтированный.Количество;
   |КолСт = Регистр.БракСторонний.Количество;
   |КолОк = Регистр.БракОкончательный.Количество;
   |Функция КолДокОст = КонОст(КолДок);
   |Функция КолОтОст = КонОст(КолОт);
   |Функция КолСтОст = КонОст(КолСт);
   |Функция КолОкПрих = Приход(КолОк);
   |Группировка Товар без групп;
   |Группировка СерийныйНомер;
   |Условие(Товар В СписокТоваров);
   |Условие(СерийныйНомер В СписокСН);
   |Условие(ТекущийДокумент = (ВыбТекущийДокумент));
   |"//}}ЗАПРОС

   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

Почему то этот запрос по разному работает, если его запускать в модуле формы документа или из внешней обработки.

Запущенный во внешней обработки он возвращает результаты функций, а в
документе - функции почти всегда возвращают 0!

И я не могу понять - почему?
1 Zmich
 
27.04.12
11:32
ДатаДок - одинаковые в документе и внешней обработке?
2 zhenyat
 
27.04.12
11:46
Да, все переменные одинаковые
Проверяю на одном и том-же документе - во внешней обработке есть поле для выбора документа
3 ALoHA
 
27.04.12
12:13
Документ расчитывает итоги по свою позицию, а отчет за целый день. Попробуй к дате дока прибавить 1 день, а в обработке оставить старую дату.
4 Подводный Таракан
 
27.04.12
12:17
ВыбТекущийДокумент - в документе правильно задан?
5 zhenyat
 
27.04.12
12:31
(4) Да, в документе вместо ВыбТекущийДокумент стоит ТекущийДокумент()
Специально в документ вставила вывод таблицы, такой же как и в обработке 0 обработка показывает остатки и приходы по регистрам, а документ - нет :(

   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Проверка");
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       Пока Запрос.Группировка(2) = 1 Цикл
           Таб.ВывестиСекцию("СерийныйНомер");
       КонецЦикла;
   КонецЦикла;
   Таб.ВывестиСекцию("Итого");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");


(3) Это не так, да и не имеет значения - документ составлен специально таким образом, чтобы некоторая продукция, внесенная в него гарантированно уже находилась на складах, и соответственно остатки и движения по регистрам, должны бы вычисляться и показываться...
6 zhenyat
 
28.04.12
10:35
Сама разобралась
Если делать запрос в документе, то строки
   |ТекущийДокумент=Документ.ПоступлениеБрака.ТекущийДокумент;
...
   |Условие(ТекущийДокумент = (ВыбТекущийДокумент));
- лишние, убрав их из запроса - получила искомый результат
7 vladko
 
28.04.12
10:39
конечно условие лишнее было на текущий документ в модуле формы
Закон Брукера: Даже маленькая практика стоит большой теории.