Вход | Регистрация

1С:Предприятие ::

Метки:

Не могу разобраться с группировкой уже целый день

Я
   Darksquall
 
27.08.04 - 15:17
Буду благодарен если ответите на следующий вопрос:

Есть справочник в нем 4 реквизита Код,Наименование,Телефон,Контактные
лица

Когда я выполняю следующую процедуру,

        Запрос=СоздатьОбъект("Запрос");
        Текст="
        |Орган=Справочник.Организации.ТекущийЭлемент;
        |Имя=Справочник.Организации.Наименование;
        |Код=Справочник.Организации.Код;
        |Тел=Справочник.Организации.Тел;
        |Кон=Справочник.Организации.КонтактныеЛица;
        |Группировка Имя;
        |";                                      


        Запрос.Выполнить(Текст);
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        Пока Запрос.Группировка("Имя")=1 Цикл
                        Таб.ВывестиСекцию("Колонки");
        КонецЦикла;
        Таб.Показать();

выбираются все неОдинаковые наименования, но я теряю остальные
реквизиты справочника(Телефон,Контактные лица)
       
Как мне получить группировку по Наименованию и не потерять другие
реквизиты?

Например:
Наименование     тел     КонтЛица
Лабтехсервис    12345    Сергей
Лабтехсервис    12345    Сергей
Лабтехсервис    12345    Сергей
Лабтехсервис             Сергей
Лабтехсервис    1265     Иван
Лабтехсервис2   12345    Иван
Химсервис       1265     Иван

После запроса должны быть следующие строки
Лабтехсервис    12345    Сергей
Лабтехсервис             Сергей
Лабтехсервис    1265     Иван
Лабтехсервис2   12345    Иван
Химсервис       1265     Иван

Не пойму если выполнить Группировку по Орган то почему выводится вся моя таблца целиком? из за того что код уникальный?

если делаю две группировки по ИМЯ а затем по Тел то у меня запрос обрабатывается ооочень долго,в чем причина?
Не могу разобратся как эти запросы работают.
Обьясните плиз.
 
  Рекламное место пустует
   Мулька
 
1 - 27.08.04 - 15:24
|ТекЭл=Справочник.Организации.ТекущийЭлемент; 
Группировка ТекЭл
   Darksquall
 
2 - 27.08.04 - 15:28
Мулька у меня Орган тоже самое, что и ТекЭл, пробовал группировать по нему, а выдает всю таблицу целиком :-(
Как быть,замучался уже
   Мулька
 
3 - 27.08.04 - 15:33
Сформулируй задачу. Что конкретно надо получить ?
   ksv22
 
4 - 27.08.04 - 15:35
в запросе сделай группировку по Орган, результаты запроса выгрузи в промежуточную таблицу значений (ТЗ), затем сверни ее ТЗ.Свернуть("Имя,Тел,Кон") и выводи в отчет уже строки ТЗ
   lemon
 
5 - 27.08.04 - 15:36
(2) ТЗ
   Darksquall
 
6 - 27.08.04 - 15:42
Получить нужно таблицу состоящую из трех реквизитов Наименование,Тел,Имя

где каждый элемент (таблицы) будет уникален.
т.е.
Любой реквизит (Наименование,Тел,Имя) может повторяться (в другой записи) в том случае если хотябы один из остальных реквизитов не похож на аналогичные.
Наприм
Наименование  Тел  Имя
КоляТранс     123  Николай
КоляТранс1    123  Николай
КоляТранс     1234 Петр

все записи уникальны
   Мулька
 
7 - 27.08.04 - 15:58
То бишь у тебя в базе может быть две и более записи одинаковые (КоляТранс     123  Николай ), а вывести надо одну ? или одинаковых (по трем полям) вообще нету ?
   UShAG_Lis
 
8 - 27.08.04 - 16:00
имхо, надо так:
1. Группировать по Орган с упорядочиванием по наименованию
2. В цикле перебора значений группировки получаешь Ссылку на текущийЭлемент (со всеми реквизитами), но упорядоченную по наименованию. В этом случае, доп. переменные в запросе можно не объявлять.

       Запрос=СоздатьОбъект("Запрос"); 
       Текст=" 
       |Орган=Справочник.Организации.ТекущийЭлемент; 
       |Группировка Орган упорядочить по Орган.Наименование; 
       |";                                       



       Запрос.Выполнить(Текст); 
       Таб = СоздатьОбъект("Таблица"); 
       Таб.ИсходнаяТаблица("Таблица"); 
       Пока Запрос.Группировка(1)=1 Цикл 
       Эл = Запрос.Орган;
       Имя = Эл.Имя
       ...
       Таб.ВывестиСекцию("Колонки"); 
       КонецЦикла; 
      Таб.Показать();
Замечание. По-умолчанию элементы справочника будут отсортированны по наименованию, так что "упорядочить по Орган.Наименование; " можно опустить.


Если есть большай любовь к ТЗ, то такой вариант:
1. Группировать по Орган с упорядочиванием по наименованию
2. После выполнения запроса, можно Запрос.Выгрузить() в ТЗ, читай параметры. Получишь  5 колонок, первая Орган - ссылка на объект, далее имена колонок = именам переменных запроса.

Замечание. Если нужно просто перебрать элементы справочника по наименованию, то лучше использовать выборку, работать будет быстрее.
   romix
 
9 - 27.08.04 - 16:01
Я очень редко использую запросы (мне в 7.7 они не нравятся, другое дело в 8.0, где их сделали просто замечательно :-). Обычно я выбираю элементы справочника в Таблицу Значений (ТЗ), и уже с ней выполняю различные действия (сортировка, свертка...). По документам я максимально использую регистры. Также есть хороший способ сделать сразу правильный запрос: использовать Мастер. Можно комбинировать эти два способа (ТЗ и запрос, сделанный Мастером), и быстро получать хорошие результаты.
   SnarkHunter
 
10 - 27.08.04 - 16:03
Ну ты-то у нас известный Мастер...
 
 
   Эмблема форума
 
11 - 27.08.04 - 16:06
(9) - начало тупого развода ...
   romix
 
12 - 27.08.04 - 16:16
(10,11) Ну хорошо хоть не ведущий модер правила форума нарушает. пп 1, 4 и 5.
Правда, я всех достал? :-)
   SnarkHunter
 
13 - 27.08.04 - 16:34
Собака лает, караван идет...
   skunk
 
14 - 27.08.04 - 16:38
(12)это точно
   Darksquall
 
15 - 27.08.04 - 16:40
Мулька, одинаковых по 3м полям нет.
UShAG_Lis с подобной группировкой не получается.

ksv22
Получилось, дай я тебя расцелую :-) Ураааааа!!!!! :-)

с запросом весь день возился, а тут оказывается все так просто :-)
у меня 80 000 позиций, так клево все получилось
Супер
   Рупор абсурда
 
16 - 27.08.04 - 16:43
(15) Мы с любимым "на ура!" целовались до утра ...
   SnarkHunter
 
17 - 27.08.04 - 16:47
Голубая луна...
   Darksquall
 
18 - 27.08.04 - 17:05
Да ладно вам, сразу голабая луна.
От радости это, после долгих мучений :-)


Список тем форума
Рекламное место пустует   Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует