Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
20 Янв 2017, 10:43
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Запросы в цикле  (Прочитано 751 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zeed

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-04-27
  • Сайт: 
  • Профессия: Ученик 1С
Все знают, что запросы в цикле это плохо. Как в таком случае правильно организовать общий запрос. Допустим, в документе есть табличная часть с номенклатурой. Далее, в самой номенклатуре есть две табличные части (контакты, составные части).
В печатную форму надо вывести каждую номенклатуру, в колонках напротив адреса/телефоны (в одну ячейку) и составные части номенклатуры(в другую ячейку).
В общий запрос можно передать список номенклатуры из документа, это понятно. А как поступать с несколькими табличными частями. Как потом обходить запрос и выводить результат в макет?


Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Запросы в цикле
« Ответ #1: 24 Июн 2016, 09:47 »
В качестве примера
...
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура,
| СУММА(ЗаказПокупателяЗапасы.Количество) КАК Количество
|ПОМЕСТИТЬ втЗапасыДокумент
|ИЗ
| Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ЗаказПокупателяЗапасы.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втЗапасыДокумент.Номенклатура КАК Номенклатура,
| втЗапасыДокумент.Количество КАК Количество,
| НоменклатураДополнительныеРеквизиты.Значение КАК ЗначениеРеквизита,
| СпецификацииСостав.Номенклатура КАК СоставНоменклатура,
| СпецификацииСостав.Количество КАК КоличествоВСоставе
|ИЗ
| втЗапасыДокумент КАК втЗапасыДокумент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
| ПО втЗапасыДокумент.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
| ПО втЗапасыДокумент.Номенклатура = СпецификацииСостав.Ссылка.Владелец
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| СоставНоменклатура,
| ЗначениеРеквизита
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(КоличествоВСоставе)
|ПО
| Номенклатура,
| СоставНоменклатура,
| ЗначениеРеквизита";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

Макет=ПолучитьМакет("....");

ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаНоменклатура.Следующий() Цикл

СтрокаСостав="";

ВыборкаСоставНоменклатура = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СоставНоменклатура");
Пока ВыборкаСоставНоменклатура.Следующий() Цикл
СтрокаСостав=СтрокаСостав+Строка(ВыборкаСоставНоменклатура.СоставНоменклатура)+":"+Строка(ВыборкаСоставНоменклатура.КоличествоВСоставе);
КонецЦикла;

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

Оффлайн LexaK

  • *****
  • Сообщений: 1083
  • РЕПУТАЦИЯ: 284
  • КПД: 26%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Re: Запросы в цикле
« Ответ #2: 24 Июн 2016, 09:52 »
просто не смог удержаться, не ответить.

Все знают что прежде чем что-то делать, этому надо сначала научиться! :befhbt:
Поэтому ноги в руки и на курсы(хорошие/качественные) программистов 1С!
Так как, ни какой форум, не научит вас, как правильно и профессионально программировать.

На форуме, помогут ошибку какую найти, идейку подкинут как ту или иную проблему решить,
но не объяснять/разжевывать прописные истины. :fdbsdfbsd:
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Zeed

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-04-27
  • Сайт: 
  • Профессия: Ученик 1С
Re: Запросы в цикле
« Ответ #3: 24 Июн 2016, 09:59 »
В качестве примера
...
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура,
| СУММА(ЗаказПокупателяЗапасы.Количество) КАК Количество
|ПОМЕСТИТЬ втЗапасыДокумент
|ИЗ
| Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ЗаказПокупателяЗапасы.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втЗапасыДокумент.Номенклатура КАК Номенклатура,
| втЗапасыДокумент.Количество КАК Количество,
| НоменклатураДополнительныеРеквизиты.Значение КАК ЗначениеРеквизита,
| СпецификацииСостав.Номенклатура КАК СоставНоменклатура,
| СпецификацииСостав.Количество КАК КоличествоВСоставе
|ИЗ
| втЗапасыДокумент КАК втЗапасыДокумент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
| ПО втЗапасыДокумент.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
| ПО втЗапасыДокумент.Номенклатура = СпецификацииСостав.Ссылка.Владелец
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| СоставНоменклатура,
| ЗначениеРеквизита
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(КоличествоВСоставе)
|ПО
| Номенклатура,
| СоставНоменклатура,
| ЗначениеРеквизита";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

Макет=ПолучитьМакет("....");

ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаНоменклатура.Следующий() Цикл

СтрокаСостав="";

ВыборкаСоставНоменклатура = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"СоставНоменклатура");
Пока ВыборкаСоставНоменклатура.Следующий() Цикл
СтрокаСостав=СтрокаСостав+Строка(ВыборкаСоставНоменклатура.СоставНоменклатура)+":"+Строка(ВыборкаСоставНоменклатура.КоличествоВСоставе);
КонецЦикла;

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

Спасибо, что-то вроде этого я и искал!

Оффлайн temrmal

  • ***
  • Сообщений: 100
  • РЕПУТАЦИЯ: 12
  • КПД: 12%
  • Регистрация: 2011-11-10
  • Сайт: 
  • Профессия: Программист 8.1
Re: Запросы в цикле
« Ответ #4: 26 Июн 2016, 20:02 »
просто не смог удержаться, не ответить.

Все знают что прежде чем что-то делать, этому надо сначала научиться! :befhbt:
Поэтому ноги в руки и на курсы(хорошие/качественные) программистов 1С!
Так как, ни какой форум, не научит вас, как правильно и профессионально программировать.

На форуме, помогут ошибку какую найти, идейку подкинут как ту или иную проблему решить,
но не объяснять/разжевывать прописные истины. :fdbsdfbsd:

+10000


Теги:  запросы 
 

Зачем нужна табличная часть справочника, если есть регистр сведений 2.Чем отличаются пакетные запросы от временных таблиц

Автор ktu78Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 344
Последний ответ 02 Авг 2016, 18:36
от ktu78
Запросы. Получить обороты товаров за период только по определённым документам?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 5522
Последний ответ 15 Апр 2012, 17:32
от Dethmontt
Как отлаживать запросы в консоли запросов, в которые нужно передавать массив?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2537
Последний ответ 26 Апр 2012, 10:28
от cska-fanat-kz
Как из 1С слать запросы к MySQL? (нужно чтобы обновилась инфа на сайте)

Автор leklerkРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 450
Последний ответ 07 Авг 2015, 13:50
от leklerk
Здрвствуйте, изучаю запросы пытаюсь из регистра выгрузить в ТЗ не получается

Автор djonboxРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 5279
Последний ответ 13 Мар 2012, 14:27
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
alex0402
69 Сообщений
MuI_I_Ika MuI_I_Ika
45 Сообщений
LexaK
35 Сообщений
alexandr_ll
34 Сообщений
crow1983
31 Сообщений
sertak sertak
27 Сообщений
Vzonder
21 Сообщений
BuhRust
20 Сообщений
дфтын дфтын
17 Сообщений

* Кто онлайн

  • Точка Гостей: 977
  • Точка Скрытых: 0
  • Точка Пользователей: 15
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal