Запросы. Вопросы возникли по Запросам!

1. planod 09.02.12 09:18 Сейчас в теме
Есть вот такой код
	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|ОбрабатыватьДокументы все; 
	|Без итогов; 
	|ПлатежноеПоручение = Документ.ПлатежноеПоручение.ТекущийДокумент;
	|НомерДок = Документ.ПлатежноеПоручение.НомерДок;
	|ДатаДок = Документ.ПлатежноеПоручение.ДатаДок;
	|ЮрЛицо = Документ.ПлатежноеПоручение.ЮрЛицо;
	|БанковскийСчет = Документ.ПлатежноеПоручение.БанковскийСчет;
	|ВидПлатежа = Документ.ПлатежноеПоручение.ВидПлатежа;
	|Контрагент = Документ.ПлатежноеПоручение.Контрагент;
	|Очередность = Документ.ПлатежноеПоручение.Очередность;
	|ИННПлательщика = Документ.ПлатежноеПоручение.ИННПлательщика;
	|ИННПолучателя = Документ.ПлатежноеПоручение.ИННПолучателя;
	|СтавкаНДС = Документ.ПлатежноеПоручение.СтавкаНДС;
	|Сумма = Документ.ПлатежноеПоручение.Сумма; 
	|Группировка ПлатежноеПоручение;
	|"//}}ЗАПРОС
	;
	// Если ошибка в запросе, то выход из процедуры
	
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли; 
Показать

Как мне вывести (можно с помощью функции Сообщить()) все данные?
Подозреваю, что у меня ошибка в Группировке (если я Группирую по НомерДок, то могу вывести как раз только НомерДок)
Подскажите, пожалуйста, в чем ошибки?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. onyx 29 09.02.12 09:34 Сейчас в теме
(1) planod, после
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
  Возврат;
КонецЕсли; 

необходимо перебрать результаты группировки
Пока Запрос.Группировка("ПлатежноеПоручение") = 1 Цикл
   сообщить(Запрос.ПлатежноеПоручение+", "+Запрос.НомерДок+" ")//и т.д.
КонецЦикла;

или выгрузить в ТЗ =)
ТЗ=Создатьобъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,,);
3. Sibul 09.02.12 09:36 Сейчас в теме
Запрос.Выгрузить(ТЗ)
ТЗ.ВыбратьСтроку("")
4. Sibul 09.02.12 09:37 Сейчас в теме
ТЗ = СоздатьОбъект("ТаблицаЗначений") - соответственно
5. Sibul 09.02.12 09:39 Сейчас в теме
А какая цель этого запроса без единого условия, простого обхода документов?
6. planod 09.02.12 09:42 Сейчас в теме
(5) Sibul, Да, обход документов в интервале дат.
7. Sibul 09.02.12 09:46 Сейчас в теме
(6) planod, а чем обчный обход не нравиться?

Док = СоздатьОбъект("Документ.ПлатежноеПоручение");
Док.ВыбратьДокументы(ВыбНачПериода, ВыбКонПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл

КонецЦикла;
8. planod 09.02.12 09:51 Сейчас в теме
(7) Sibul, метод нравится) а вот отсутствие опыта у меня для программирования в 7.7 мне не очень нравится)))) спасибо)
9. Sibul 09.02.12 10:07 Сейчас в теме
(8) planod, в этом варианте вы имеете документ как объект, соответственно можете производить его корректировку запись, проведение или удаление. В случае с запросом вы имеете только ссылку и документ по сути у вас только для чтения.
10. planod 09.02.12 10:20 Сейчас в теме
(9) Sibul, но как мне подсказывает начальник, запрос работает быстрее, чем обход, это так?
11. Sibul 09.02.12 10:40 Сейчас в теме
(10) planod, с семеркой не всегда так (особенно если база ДБФ), при построении отчетов запрос зачастую быстрее, особенно если большой объем данных. Но этот выигрыш теряется если нужны какие то изменения в объектах. Плюс возможности запроса в 77 ограничены и его имеет смысл использовать если разом можно получить все данные. А скажем отчет ДеревоДокументов через запрос уже сделать гемарно.
12. dusha0020 1115 09.02.12 10:48 Сейчас в теме
(10) planod, В Вашем случае сомнительно... Запрос нацелен на быстрый отбор по условиям, а в Вашем контексте условий нет. %80 времени все рано будет занимать вывод информации, а не перебор или выполнение запроса. И в конце концов что вам мешает сделать два варината и замер производительноси по каждому?
13. planod 09.02.12 10:49 Сейчас в теме
База как раз ДБФ. Спасибо за пояснение... Пойду дальше воевать и набирать опыта в 7.7
14. Sibul 09.02.12 11:42 Сейчас в теме
(13) planod, вы лучше описывайте конечную задачу, так легче советовать что лучше
15. planod 09.02.12 12:55 Сейчас в теме
(14) Sibul, Конечная задача довольна-таки интересна. Стоит ТиС релиза 924, обновить не можем, так как предыдущий 1с-специалист влил туда кучу своих доработок и реквизитов. Нужна выгрузка в "Клиент Банка". Это обработка повилась только в 930 релизе. Если её выдернуть из 930, но работать не будет, так как, повторюсь, куча своих реквизитов натыкано. Вот я и сижу, человек, который сразу начал изучать 8.2, с конфигуратиором 7.7, и по имеющейся структуре файла обмена "1с - Клиент Банка" пытаюсь создать внешнюю обработку для выгрузки.
16. Sibul 09.02.12 13:04 Сейчас в теме
Тогда точно вариантом не запроса. потому как вам 100% понадобиться отмечать что данный документ уже был выгружен, а это запись и запрос 77 тут не подойдет. Искать же объект по списку запроса тем более увеличит время обработки.
17. planod 09.02.12 13:09 Сейчас в теме
(16) Sibul, про отметку я не запариваюсь - пускаю бухи правильно данные ставят. В 8.2 все намного проще в этом плане (по крайней мере для меня), язык запросов похож на sql....а вывод результатов еще легче)
18. dusha0020 1115 09.02.12 13:58 Сейчас в теме
(17) planod, Ну если Вам клиент-банк нужен, то при чем здесь скорость!:) Несколько десятков платежек в день (даже сотен) - вы разницу и не заметите.

ПП = СоздатьОбъект("Документ.ПлатежноеПоручение");
ПП.УстановитьФильтр(1,0);//если нужны только проведенные
ПП.ВыбратьДокументы(НачДата,КонДата);
Пока ПП.ПолучитьДокумент() = 1 Цикл
ДатаПП = ПП.ДатаДок;
ЮрЛицо = ПП.ЮрЛицо;//Для агрегатных объектов скорее всего нужно указать конкретное значение реквизита например ПП.ЮрЛицо.Наименование
...
//Перед концом цикла можете засовывать переменные ДатаПП, ЮрЛицо и т.д куда хотите
КонецЦикла;
Показать


Достаточно просто я думаю и в клюшке:)
19. planod 10.02.12 03:48 Сейчас в теме
(18) dusha0020, но ведь все равно придется повозится с запросами, т.к. клиент-банк требует такие реквизиты как расчетный счет пллательщика и получателя, КорСчет плательшика и получателя и тому подобное)
20. dusha0020 1115 10.02.12 11:05 Сейчас в теме
(19) planod, Это я думаю вопрос не по программированию, а по бухгалтерии. У меня, например, счета собственный и получателя являются реквизитами платежного поручения и получить через точку доступ к коррсчетам, МФО и прочим реквизитам этих счетов совсем не сложно. Ну а если у Вас в платежке нет реквизита расчетный счет получателя и плательщика, то мне сложно представить как это работает, а тем более что-то посоветовать...
21. Sibul 10.02.12 11:19 Сейчас в теме
(19) planod, это все есть в ПП, зачем запрос? В восьмерке когда получение таблицы дает некий выйгрыш и получить запросом значение реквизита выгоднее, то в семерке и на ДБФ запросы наоборот могут увеличить время обработки.
Опять же, речь про клиент-банк, где критичность скорости так низка что теряется всякий смысл разговора о том что быстрее. Человек явно путается с запросами, опыт еще небольшой, так зачем ему заморачиваться, когда можно написать прямо и понятно (а иначе зачем вообще метод ВыбратьДокументы()). А после того как девочка на банке будет довольна, будет несколько свободного времени, можно и по изучать вариант с запросом и это будет очень полезно на будущие задачи.
PS По опыту скажу так, запросы к дбф в 77 иногда (особенно на серверных платформах в терминале в купе с каким нибудь аладином и докторвебером вгоняют в ступор на 1-2 минуты с не пойми чего... Поэтому ради простой выборки документов стараюсь их не использовать, но это возможно только мне так повезло.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот