Имя: Пароль:
1C
1C 7.7
v7: получение данных запросом в модуле проведения
,
0 dbehterev
 
12.01.12
21:36
Всем привет. Столкнулся с тем, что нельзя получить остатки в модуле документа, тогда как в модуле формы без проблем. Я чего-то пропустил?
Т.е. есть вот такой кусок:
Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "
   |Период с ДатаДок по ДатаДок;
   |ФирмаЗапроса            = Регистр.ПартииОтданные.Фирма;
   |...
   |Группировка Товар Без Групп;";
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат 1;
   КонецЕсли;
   
   ТЗ = "";
   Запрос.Выгрузить(ТЗ,,0);

В модуле проведения не работает.
Всем спасибо за ответы.
1 SnarkHunter
 
12.01.12
21:39
Видимо пропустил...
В запросе к регистру обязательно должны присутствовать функции...
2 dbehterev
 
12.01.12
21:40
Вот полный код:
Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "
   |Период с ДатаДок по ДатаДок;
   |ФирмаЗапроса            = Регистр.ПартииОтданные.Фирма;
   |Товар                    = Регистр.ПартииОтданные.Товар;
   |Контрагент                = Регистр.ПартииОтданные.Контрагент;    
   |Количество            = Регистр.ПартииОтданные.Количество;
   |Сумма                    = Регистр.ПартииОтданные.ПродСтоимость;
   |Функция КонОстС        = КонОст(Сумма);
   |Функция КонОстК        = КонОст(Количество);
   |Условие (ФирмаЗапроса = Фирма);
   |Условие (Контрагент = Клиент);
   |Группировка Товар Без Групп;";
   
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат 1;
   КонецЕсли;
   
   ТЗ = "";
   Запрос.Выгрузить(ТЗ,,0);
В Модуле проведения имеем пустую ТЗ, в модуле формы - все ОК.
3 andrewks
 
12.01.12
21:41
неплохо было бы получать не на ДатаДок, а на позицию дока
4 Ёпрст
 
12.01.12
21:42
(2)чорный запрос в модуле проведения - это моветон.
А итоги в разы проще получить через методы объекта Регистры
5 Сияющий Асинхраль
 
12.01.12
21:43
Кроме того обрати внимание ни в одной типовой запросов в модулях проведения нет - из-за их неторопливости это плохой стиль
6 ДенисЧ
 
12.01.12
21:48
(5)
"ни в одной типовой запросов в модулях проведения нет"

Мягко говоря - неправда, а грубо говоря - враньё,...
7 dbehterev
 
12.01.12
21:49
(3) тут похоже какое-то еще ограничение, нежели в ДатаДок.
(4), (5) - понял, буду переделывать.
Запрос переделаю на регистры, просто интересно, почему не выходит запросом, ясно, что плохой стиль, но все же.
8 Guk
 
12.01.12
21:56
(7) не слушай никого, привыкай к нормальному программированию на 1С ;) в 8-ке запросы, как способ обращения к данным, это вообще стандарт...
9 Джинн
 
12.01.12
21:58
(6) Мягко говоря запрос получает остатки в пять раз медленнее выгрузки итогов.
Поэтому в типовых их действительно практически нет.
10 dbehterev
 
12.01.12
22:00
(9) вопрос не в том, что медленно, вопрос в том, что нулевые данные...
11 Джинн
 
12.01.12
22:02
(10) С периодом запроса разберись. Открой для себя позицию документа.
12 dbehterev
 
12.01.12
22:20
(10) открыл для себя позицию документа:
Позиция = СформироватьПозициюДокумента(ТекущийДокумент());
Соответственно в запросе переписал ДатаДок на Позиция.
Ситуация не поменялась. В-общем х. с ним, пойду по шаблону.
13 andrewks
 
12.01.12
22:25
у тебя Запрос.Выполнить(ТекстЗапроса) что возвращает?
14 dbehterev
 
12.01.12
22:26
пустую ТЗ
15 andrewks
 
12.01.12
22:27
(14) какую ТЗ? он, вообще-то, число возвращает
16 dbehterev
 
12.01.12
22:27
сам запрос выполняется успешно, если вы об этом.
17 andrewks
 
12.01.12
22:30
Рез=Запрос.Выполнить(ТекстЗапроса);
Сообщить("Результат выполнения запроса = "+Рез);
Если Рез = 0 Тогда
       Возврат 1;
   КонецЕсли;
   
   ТЗ = "";
   Рез=Запрос.Выгрузить(ТЗ,,0);
Сообщить("Результат выгрузки результата запроса = "+Рез);

что появляется в окне сообщений?
18 dbehterev
 
12.01.12
22:39
Возвращает 1.
19 andrewks
 
12.01.12
22:43
там два результата. поточнее, плз, где какое значение возвращает
20 dbehterev
 
12.01.12
22:53
Результат выполнения запроса: 1
Результат выгрузки в ТЗ: 1
21 Эльниньо
 
13.01.12
09:56
Что за мания - пихать запросы куда надо и не надо?
22 nicxxx
 
13.01.12
10:19
(20) Да ты ТЗ просмотри - есть там чего-нибудь или нет, а не результат выгрузки в нее изучай
23 nicxxx
 
13.01.12
10:19
любую обработку с инфостарта типа "просмотр значений" можно взять