Вопрос № 164048: Доброго времени суток. Я сделал запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаС по ДатаПО; |Обрабатывать НеПомеченныеНаУдаление; |ОбрабатыватьДокументы Проведенн...
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Каким образом мне теперь отдельно пройтись по отобранным документам и табличным частям к ним. И как мне результаты запроса присвоить переменным?
Отправлен: 03.04.2009, 16:31
Вопрос задал: Netizen (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Владимир Лазурко
Здравствуйте, Netizen!
Если требуется просто вывести содержимое документов из запросов, то на мой взгляд, лучше вместо второго цикла (группировки запроса) использовать процедуру вывода табл. части. Тогда ресурсы системы меньше используются. Но если стоит задача получить выборку выписанных товаров - используйте запрос, ибо запрос быстрее и рациональнее сделает такую выборку, чем перебор документов и заполнение таблицы значений,
Код:
Процедура ВывестиТовСостав(Документ, Таблица) Таблица.ВывестиСекцию("ДокШапка"); Документ.ВыбратьСтроки(); Пока Документ.ПолучитьСтроку()=1 Цикл Таблица.ВывестиСекцию("ДокСтрока"); КонецЦикла; //Документ.ПолучитьСтроку()=1 Таблица.Вывестисекцию("ДокДно"); КонецП
роцедуры //ВывестиТовСостав
Пока Запрос.Группировка(1)=1 Цикл // первая группировка - Реализация. Можно Пока Запрос.Групировка("Реализация")=1 Цикл, будет то же самое // цикл по документам Реализация Таб.ВывестиСекцию("Документ"); ВывестиТовСостав(Запрос.Реализация, Таб); КонецЦикла;
Самый простой способ - сделать это в цикле запроса. Сложнее, но "красивше" - выгрузить запрос в таблицу значений.
Код:
Перем Проект, НаимТовара; ...
Пока Запрос.Группировка(1) Цикл Проект = Запрос.Проект; НаимТовара = Запрос.Номен; КонецЦикла;
Я бы посоветовал изменить строку запроса |Номен = Документ.Реализация.Номенклатура.Наименование; на такую: |Номен = Документ.Реализация.Номенклатура;
Тогда через переменную запроса Номен Вы будете иметь доступ непосредственно к элементам справочника Номенклатура,
которые попадут в запрос. Соответсвенно и получать код товара и наименование, поэтому эти строки можно исключить из запроса - так будет оптимальнее. Кстати, наименование товара и так имеет представление в виде строки.
В Приложении примерный код того, как с помощью только запроса получить товарный состав (я взял только товары) и вывести документы и их товарный состав на печать. Во Вложении готовая обработка, где это уже реализовано. Думаю, по аналогии с моим пример
ом Вы реализуете свой функционал.
Успехов! С уважением, Владимир.
Приложение:
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
Ответ отправил: Владимир Лазурко (статус: Практикант)
Ответ отправлен: 07.04.2009, 09:56
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 246977 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.