maestro_voln, В этом экселевском документе "Магазин", "Склад" и пустое значение - это что, название складов? В одной расходной накладной может быть несколько складов?
maestro_voln, В этом экселевском документе "Магазин", "Склад" и пустое значение - это что, название складов? В одной расходной накладной может быть несколько складов?
uinny,"Магазин" и "Склад" это группы в справочнике "Ячейки"
uinny,а там где пусто это не установленное место хранения
Т.е. справочник "Ячейки" - это иерархический список, где часть элементов находятся в группах, а часть - нет, так?
uinny, да, это иерархический список, только все элементы находятся в группах
Да, тяжко вспоминать семерку...
Получается, что в работающем варианте вы выполняете запрос, проходите по результатам, получая ячейки, и для каждой перебираете заново таблицу товаров в документе, чтобы проверить, нужно ли именно этот товар выводить?
Кстати, а почему в запросе нет выборки количества товара из накладной? И почему условие отбора по складу пользователя, а не по складу документа?
Вообще, если делать по рабоче-крестьянски, я бы сделала так:
1. создать ТаблицуЗначений с полями (группа ячеек, ячейка, товар, количество)
2. пройти один раз по табличной части, заполнить ТаблицуЗначений
3. сгруппировать ТаблицуЗначений по полям (группа ячеек, ячейка, товар) с суммированием количества
4. вывести список.
Второй рабоче-крестянский способ - выводить данные сразу из запроса, но не использовать Группировку по ячейке, вместо нее использовать сортировку.
Завести переменную ТекущаяГруппа и проверять соответствие данных в строке результатов запроса этой переменной. Если сходятся - выводить строку, если нет - обновлять данные переменной, выводить данные группы ячеек, потом выводить саму строку.
Ну и третий способ - все-таки понять, как использовать синтаксис языка правильно. Я не вспомню без встроенной помощи точно. Но мне кажется, что раз есть возможность выбрать группировку
Пока Запрос.Группировка("Ячейка") > 0
то должна быть возможность выбрать строки этой группировки. Во всяком случае, в версии 8 именно так. Может что-то типа Пока Запрос.Группировка("Ячейка").ПолучитьДанные или ВыбратьРезультатыГруппировки. Сейчас получается, что у вас в запросе три группы ячеек, в каждой по несколько строк, но вы проходите только по трем, заглавным строкам.
Что-то много букв получилось, надеюсь, хоть что-то поможет )
uinny,Спасибо, попробую по 1-му варианту, без запроса должно быстрее работать.
Вот не уверена. Ведь придется вытаскивать для каждой строки данные подчиненного справочника.
А запросом вроде как все выбирается сразу.
uinny, у меня накладные небольшие, макс 30 строк, поэтому скорее всего будет быстрее через ТЗ
Тоже кривое решение, но вдруг пошустрее будет.
Я там много комментариев написал.
10 декабря 2024 года — Практическая конференция «День Документооборота» |
1C:Лекторий: 26 ноября 2024 года, начало в 10:00 — Бесплатная онлайн-лекция об учете НДФЛ и заполнении расчета 6-НДФЛ в программе 1С:ЗУП 8 ред.3 1C:Лекторий: 28 ноября 2024 года, начало в 10:00 — Бесплатная онлайн-лекция о разрешительном режиме при продаже маркированного товара, новом порядке работы |