![]() |
![]() |
|
Не группируются наименования в запросе | ☑ | ||
---|---|---|---|---|
0
SHUSHU
16.02.06
✎
22:48
|
Построила модуль отчета конструктором запроса. Суть - сгруппировать наименования справочника, а цены наименований усреднить. Проблема: выводит упорядоченные наименования, но группировать никак не хочет. Одинаковые наименования просто друг за дружкой стоят. В чём причина?
|
|||
1
Diter
16.02.06
✎
22:50
|
Наверное в том что это строки?
|
|||
2
SHUSHU
16.02.06
✎
22:56
|
А разве строки не группируютя? Что же тогда группируется?
|
|||
3
baer
16.02.06
✎
23:01
|
А что вы вкладываете в понятие "группируются"?
|
|||
4
SHUSHU
16.02.06
✎
23:09
|
Я до этого писала на Accesse, и там группировка по какому-либо полю означала объединение одинаковых наименований или чисел, а числовые значения, которые им соответствовали, м. б. складывать, получать среднее и т. д. Мне в 1С надо тоже получить сводный отчет. Т. е. Получить все наименования справочника, а цены (они м. б. разными у одних и тех же наименований) усреднить, т. е. проставить среднюю цену. И вот никак не пойму, чего надо.
|
|||
5
baer
16.02.06
✎
23:11
|
Жаль вас разочаровывать, но в 1С так просто не получится...
|
|||
6
insider
16.02.06
✎
23:12
|
(4) объясни конкретнее: у тебя у разных элементов справочника одни и те же наименования и нужно сгруппировать одинаковые? а цены периодические или как?
код в студию, так будет проще, телепатировать сложнее |
|||
7
6pak
16.02.06
✎
23:15
|
мона быть это не самый лучший вариант, но я на такой случай написал, обработку по принципу:сначала все сортировалось, т.е. одинаковые выстраивались в очередь, а потом они перебирались друг за другом, сравнивались и переносились в новую таблицу, и соотоветственно 1=2, то новый элемент не создавался, если 1<>2 то создавался новый, только у меня фишка была такая, что если цена одинаковая - одна позиция, а если разная, то две, но смысл в том же - обработка одинаковых елементов.
|
|||
8
SHUSHU
16.02.06
✎
23:16
|
Я уже начала догадываться, что не все так просто. Цены не периодические и действительно нужно сгруппировать одинаковые наименования. Похоже мне самой придётся эту задачу программировать?
|
|||
9
insider
16.02.06
✎
23:17
|
(7) здесь имхо и в ТЗ результаты запроса выкинуть можно
|
|||
10
insider
16.02.06
✎
23:17
|
(8) а тебе код накидать? :)
|
|||
11
avm-nn
16.02.06
✎
23:21
|
(0)А код запроса можно посмотреть?
|
|||
12
SHUSHU
16.02.06
✎
23:23
|
Интересно, если не сложно
|
|||
13
у лю 427
16.02.06
✎
23:24
|
(0) делай через ТЗ...
|
|||
14
MikleV
16.02.06
✎
23:25
|
(13) - верняк, только вот потом его к построителю хрен присобачишь..
|
|||
15
insider
16.02.06
✎
23:25
|
(12) та не жалко:
осталось поделить сумму цен на счетчик и будет средняя, но это тупняк, построенный конструктором, если сложнее надо, пиши |
|||
16
у лю 427
16.02.06
✎
23:26
|
результат запроса выгрузить в ТЗ
добавить колонку для условий суммирования Свернуть ТЗ по колонке... |
|||
17
avm-nn
16.02.06
✎
23:28
|
Не очень понятно, почему не катит группировка. Длина текстового поля "Наименование" одинаковая, пробелы не путаются под ногами. Странно.
|
|||
18
SHUSHU
16.02.06
✎
23:29
|
Огромное спасибо, никогда не забуду.
|
|||
19
insider
16.02.06
✎
23:30
|
(18) та ладно, не за что, только текст отформатируй, а то движок форума чуть накосячил с ним
|
|||
20
avm-nn
16.02.06
✎
23:33
|
(16) Это уж на крайняк, если не получится по-нормальному разобраться. Непонятно, почему так не работает.
|
|||
21
insider
16.02.06
✎
23:34
|
(20) ну если в контексте задачи, то (15) работает
|
|||
22
у лю 427
16.02.06
✎
23:34
|
интересно, что получится, если одинаковые наименования находятся в разных группах справочника...
Или такого нет? Обычно группировать надо находящиеся в одной группе... |
|||
23
insider
16.02.06
✎
23:36
|
(22) добавляем в запрос Родителя и группировку по нему первой
|
|||
24
у лю 427
16.02.06
✎
23:38
|
лень спорить... но это тоже не всегда работает...
хотя в контексте задачи вполне... P.S. я обычно более универсально делаю... |
|||
25
insider
16.02.06
✎
23:39
|
(24) ну так кто ж спорит :)
кстати действительно свернет наименования, если по родителю не группировать, все верно |
|||
26
у лю 427
16.02.06
✎
23:44
|
это не полное условие...
|
|||
27
insider
16.02.06
✎
23:56
|
(26) т.е.? тогда уже и задача наверное немного другая? :)
|
|||
28
Diter
16.02.06
✎
23:59
|
Если задача стоит в том, чтобы отловить дубли - есть простое решение в 15 строк без запроса ;))
|
|||
29
insider
17.02.06
✎
00:02
|
(28) отловить и усреднить цену по ним, а че за решение?
впрочем мое без каментов и то короче, стареешь :) |
|||
30
Diter
17.02.06
✎
00:02
|
(+38) ошибся - 45 строк с селекторам как ловить дубли - по полному совпадению имени или по первым символам
|
|||
31
Diter
17.02.06
✎
00:02
|
//*****************************************
Процедура ВернутьСписокДублей(ТекЭл,СписокДублей) ТекИмяЭл=ТекЭл.Наименование; Спр=СоздатьОбъект("Справочник."+ТекСпр); Спр_=СоздатьОбъект("Справочник."+ТекСпр); Спр.НайтиЭлемент(ТекЭл); Спр.Удалить(1); Если ИмяТочно=1 Тогда Если Спр_.НайтиПоНаименованию(ТекИмяЭл,0,1)=0 Тогда // нет дубля Возврат; Иначе СписокДублей.ДобавитьЗначение(Спр_.ТекущийЭлемент()); ВернутьСписокДублей(Спр_.ТекущийЭлемент(),СписокДублей); КонецЕсли; Иначе Если Спр_.НайтиПоНаименованию(ТекИмяЭл,0,0)=0 Тогда // нет дубля Возврат; Иначе СписокДублей.ДобавитьЗначение(Спр_.ТекущийЭлемент()); ВернутьСписокДублей(Спр_.ТекущийЭлемент(),СписокДублей); КонецЕсли; КонецЕсли; КонецПроцедуры //***************************************** Процедура ВыполнитьПоискДублей() Спр=СоздатьОбъект("Справочник."+ТекСпр); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()<>0 Цикл Если Спр.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; ТекЭл=Спр.ТекущийЭлемент(); СписокДублей=СоздатьОбъект("СписокЗначений"); СписокДублей.ДобавитьЗначение(Спр.ТекущийЭлемент()); НачатьТранзакцию(); ВернутьСписокДублей(ТекЭл,СписокДублей); ОтменитьТранзакцию(); КонецЦикла; КонецПроцедуры |
|||
32
Diter
17.02.06
✎
00:03
|
Может чего и лишнего написАл для перестраховки ;))
|
|||
33
insider
17.02.06
✎
00:07
|
(32) э... зачем так? имхо отсортировать по наименованию, найти первое и выборкой до тех пор, пока наименование не станет другим и без всяких рекурсий....
|
|||
34
Diter
17.02.06
✎
00:09
|
(33) А я захотел сделать так ;))
Ну нравятся мне рекурсии. Есть в них что то... мистическое ;) |
|||
35
Diter
17.02.06
✎
00:10
|
(34) Кроме того - это маленький кусочек кода, по отлову дублей, поиску ссылок на них, определение элемента, который останется, замена дублей на этот элемент и удаление лишних дублей
|
|||
36
insider
17.02.06
✎
00:13
|
(34) эт я поторопился, по-моему не получится, точнее долго может быть, так что оставим пока твой вариант :)
|
|||
37
Diter
17.02.06
✎
00:14
|
(36) да бога ради.. мне не жалко ;))
могу кинуть переделанный REPLVAL.ERT который делает то, что я сказал в 35 |
|||
38
insider
17.02.06
✎
00:20
|
(37) пасиб, но я по IDD ищу при обменах (как правило), ну и для особо одаренных юзеров, или в случае, если юзеру физически трудно быстро определить, делает ли он сейчас дубль (например списки рассылки, там ФИО, адрес и т.п.) - обработка при вводе нового эл-та, ищу как правило прямыми запросами, т.е. ошибка исключена при вводе.
P.S. не смейся, но почему-то не помню что это за ерт. может и не видел или склероз... |
|||
39
Diter
17.02.06
✎
00:22
|
(38) Поиск ссылок и замена значения с одного на другой. Идёт на ИТС...
речь не об обмене идёт. Там я ищу по ключу и соответствиям. Речь идёт об отлове дублей в уже заполненном справочнике. Мне например пришлось искать дубли в справочнике "Товары" после неудачного использования юзером ТранРефа |
|||
40
Diter
17.02.06
✎
00:23
|
(38) Прямые запросы к таблицам? А можешь пример такого запроса привести. Только не голый текст запроса а пример в коде 1С с выборкой результатов. Простенький
|
|||
41
insider
17.02.06
✎
00:24
|
(39) ага, помню, была такая тема... ну как-то не сталкиваюсь с такими задачами (может везет?)
(40) э... щас подумаю что показать лучше |
|||
42
insider
17.02.06
✎
00:28
|
+41 на например фрагмент обработки поиска двойников по фамилии и почт. индексу в справочнике по первым символам, т.е. ты вводишь и она в динамике ищет, пожалуй примитивнее некуда:
функция подвешена на текстовый реквизит |
|||
43
Diter
17.02.06
✎
00:30
|
напоминает запросы из Access'а... я писАл когда то такие.. спасибо.
|
|||
44
Diter
17.02.06
✎
00:31
|
Ладно.. всем бай бай.
Удачи и процветания |
|||
45
insider
17.02.06
✎
00:31
|
(43) дык это ж скуль и есть, т.е. не MS SQL, а язык sql, он почти одинаков, разве что диалекты под разные СУБД
(44) и тебе :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |