Имя: Пароль:
1C
1C 7.7
v7: Свернуть с неизвестным количеством колонок
0 koteyka-2
 
21.11.11
00:07
Необходимо свернуть ТЗ, в которой количество колонок может быть разным, но во всех них нужно суммировать значения. Как это сделать?
Спасибо.
1 Guk
 
21.11.11
00:09
сделать динамическую строку свертки...
2 Лефмихалыч
 
21.11.11
00:09
(0) строку свертки формировать кодом в обходом по колонкам
3 koteyka-2
 
21.11.11
00:11
сделать динамическую строку свертки...

Это как?
4 Sserj
 
21.11.11
00:15
(3)

СтрСуммирования = "";
Для Сч = 1 По Таб.КоличествоКолонок() Цикл
  СтрСуммирования = СтрСуммирования + "," + СокрЛП(Сч);
КонецЦикла;

Таб.Свернуть("ИменаКолонок", СтрСуммирования);

Ну понятно что "Сч" наверно не 1 будет вначале, а что-то другое.
5 Злопчинский
 
21.11.11
00:16
в такой постановке задачи достаточно по каждой колонке
ТЗ.Итог(ИмяКолонки)
6 koteyka-2
 
21.11.11
00:19
Да, но колонки добавляются в цикле, имена - это наименования контрагентов (да без разницы какие), Сколько их будет не известно.
Способ от Sserj думаю сгодится.
7 koteyka-2
 
21.11.11
00:24
И параллельно вопрос, если получаются дубли колонок, их свернуть нельзя?
8 Ёпрст
 
21.11.11
00:27
(6) выкинуть цикл, из запроса получать готовую свернутую ТЗ
9 Lexxxxx
 
21.11.11
00:27
Вроде при сворачивании можно вместо имен номера использовать. Может быть немного меньше головняка с построением строки свертки и строки суммирования чем при использовании имен.
10 koteyka-2
 
21.11.11
00:31
Запросом, я бы уже и забыл за этот отчет, но клиент уперся, что хочу, чтобы таблица отчета выглядела вот так, а не иначе. А там построение строк и столбцов получается через задницу. Вот и долблюсь через кучу Тз-шек.
11 Ёпрст
 
21.11.11
00:33
(10) и ? Не нужна там куча ТЗ.
Нужен 1 запрос и вывод его.
12 Злопчинский
 
21.11.11
00:38
судя по тому, что автор написал в (0) и в (6) - сделает так же криво как и говорит
13 koteyka-2
 
21.11.11
00:43
Не знаю, мож голова уже не варит к концу дня, но с запросом у меня не вышло.
Жаль нельзя рисунок вставить. Попробую пояснить вид таблицы.
Товар     Контрагент1     Контрагент2    .....     КонтрагентN   Итого  Остаток   Дозаказать
Яблоко        5                4         .....         10          120     100        20
Груша         10               10  и т.д

Есть документы с товаром и количеством. Остаток и остальное рассчитывается отдельно. Из дока берется только контрагент, товар и количество.
Не выходит у меня запросом построить таблицу именно так (без ТЗ).
14 koteyka-2
 
21.11.11
00:45
Нарисовал красиво, а при отправке всё сбилось.
15 koteyka-2
 
21.11.11
00:46
Когда-то подобное я уже делал, но не могу найти этот отчет. Не помню кому делал.
16 sapphire
 
21.11.11
00:49
Ну первое, что приходит в голову, все колонки загнать в СЗ
СЗ умеет в строку с разделителями, далее через попытку свертки.
17 sapphire
 
21.11.11
00:50
Не помню клюшки, но вроде как суммируемыми полями могут быть только числа
18 koteyka-2
 
21.11.11
00:53
Собственно ТЗ по совету Sserja формируется и суммируется нормально. Остался только вопрос в случае, если у одного контрагента несколько доков. Соответственно и колонок будет столько же. А их нужно свести в одну. Можно перебором колонок и проверкой, но это куча кода, времени обработки и т.д.
19 mdocs
 
21.11.11
00:54
УжасЪ. Три ТЗ с известным количеством колонок. Свернуть каждую по разным группировкам. Дальше выводить и присоединять секции последовательно. Так лень расписывать :(
20 sapphire
 
21.11.11
00:54
(18) какая куча кода?
21 sapphire
 
21.11.11
00:55
(18) ты про (4), так я бы выгнал нафиг за такой код.
22 Холст
 
21.11.11
00:55
СтрКолонкиГруп = "";
Для СчКол = 2 По ТЗ.КоличествоКолонок() Цикл
   СтрКолонкиГруп = СтрКолонкиГруп + Строка(СчКол)+",";
КонецЦикла;
СтрКолонкиГруп = Лев(СтрКолонкиГруп,СтрДлина(СтрКолонкиГруп)-1); //убираем запятую в конце
ТЗ.Свернуть(СтрКолонкиГруп,1);
23 Холст
 
21.11.11
00:56
как то так
24 mdocs
 
21.11.11
00:56
(18) В ТЗ должно быть три колонки Товар,Контрагент и Количество. И это все.
25 Ёпрст
 
21.11.11
00:56
(13) если черный запрос, то 2 группировки, одна из них Все ВошедшиеВЗапрос

если прямой, то либо индексированная тз + группировать или бегать по индексам
либо класс.ИтогиПоГруппировкам
26 sapphire
 
21.11.11
00:56
(22) Восьмерочный подход
27 Холст
 
21.11.11
00:57
забыл паро 3 колонки в конце - тогда вместо ТЗ.КоличествоКолонок() надо ТЗ.КоличествоКолонок()-3
28 sapphire
 
21.11.11
00:57
(25) Ты с ума сошел?
29 Холст
 
21.11.11
00:58
(26) почему восьмерочный ?
30 koteyka-2
 
21.11.11
00:58
Дык и я о чем. Простым запросом не получается, как советовали. Нужно только через ТЗ-шки работать.
31 Ёпрст
 
21.11.11
00:59
(30) читай (25) .
Учи мат часть.
ТЗ там не нужна
32 sapphire
 
21.11.11
01:00
(28) там список значений надо использовать, вернее, 2 списка - список группировок и список суммируемых полей.
33 viktor_vv
 
21.11.11
01:00
(30) в (25) Все ВошедшиеВЗапрос для группировки контрагент.

|Группировка Товар;
|Группировка Контрагент Все ВошедшиеВЗапрос;
34 sapphire
 
21.11.11
01:00
(31) ИВХ, умник. Еще и прямой доступ к данным приплел.
35 Холст
 
21.11.11
01:00
вообще конечно у автора зверский велосипед получится... представил как будешь ползти ТЗ с 1000 колонками-контрагентами ))
36 Ёпрст
 
21.11.11
01:02
(34) читаешь между строк ?
37 sapphire
 
21.11.11
01:02
(35) Ползти и клюшки несовместимы, ИМХО.
38 sapphire
 
21.11.11
01:03
(36) Я читаю (0) и исхожу из той постановки задачи, что в сабже.
39 koteyka-2
 
21.11.11
01:03
Процедура Тест()
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Тест)
   |Период с ДатаН по ДатаК;
   |ОбрабатыватьДокументы все;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Контрагент = Документ.Заказ.Контрагент;
   |Товар = Документ.Заказ.Товар;
   |Количество = Документ.Заказ.Количество;
   |Функция КоличествоСумма = Сумма(Количество);
   |Группировка Контрагент без групп;
   |Группировка Товар без групп все ВошедшиеВЗапрос;
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   Пока Запрос.Группировка(1) = 1 Цикл

       Пока Запрос.Группировка(2) = 1 Цикл

       КонецЦикла;
   КонецЦикла;
   
КонецПроцедуры
Как его поправить, чтоб сформировать таблицу (13)? У меня без ТЗ не выходит.
40 viktor_vv
 
21.11.11
01:04
|Группировка Товар без групп;
   |Группировка Контрагент без групп все ВошедшиеВЗапрос;
41 Ёпрст
 
21.11.11
01:05
(38) И чего за бред в (32) + нелепые наезды за (4) + нелепый наезд за (31) ???
Чего, в черном запросе Все ВошедшиеВЗапрос ни разу не делал ?
42 Холст
 
21.11.11
01:05
(37) ответь на (29), с чего вдруг обозван восьмерошником ))
43 sapphire
 
21.11.11
01:05
(39) Ужас...
44 Ёпрст
 
21.11.11
01:05
(39) ВывестиСекцию + ПрисоединиьСекцию
45 sapphire
 
21.11.11
01:06
(42) Потому, что в клюшках проще использовать список колонок.
46 viktor_vv
 
21.11.11
01:06
Пока Запрос.Группировка(1) = 1 Цикл

       Пока Запрос.Группировка(2) = 1 Цикл
              // Вывод шапки по контрагентам
       КонецЦикла;
       Прервать ;
   КонецЦикла;
Запрос.вНачаловыборки();
Пока Запрос.Группировка(1) = 1 Цикл
// Выводим секцию товар
       Пока Запрос.Группировка(2) = 1 Цикл
              // Присоединяем секцию контрагент
       КонецЦикла;
       Прервать ;
   КонецЦикла;
47 viktor_vv
 
21.11.11
01:07
Сорри

Пока Запрос.Группировка(1) = 1 Цикл
// Выводим секцию товар

       Пока Запрос.Группировка(2) = 1 Цикл
              // Присоединяем секцию контрагент

       КонецЦикла;
//        Прервать ;
   КонецЦикла;
48 koteyka-2
 
21.11.11
01:07
Ладно, спасибо всем. Буду пробовать запросом, а то переругаются все из-за того, что я запутался.
49 Ёпрст
 
21.11.11
01:07
(45) Чем список нумеров колонок ?????
:))))))))))))))))))))))))))))))))))))))))))))))
50 sapphire
 
21.11.11
01:08
(46)(47) Совсем плохо, да? Не можете посмотреть универсальные отчеты??
51 sapphire
 
21.11.11
01:08
(39) Посмотри DOCPRINT.ert
52 Ёпрст
 
21.11.11
01:09
(50) универсальные отчеты чего ?
Там нет списка СВОРАЧИВАЕМЫХ колонок НИГДЕ, там СТРОКА свёртки в лучшем случае, в торговой шахматке.
53 sapphire
 
21.11.11
01:09
(39) Зачем всё это? Это умеет универсальная печать документов!
54 koteyka-2
 
21.11.11
01:10
Нету у меня универсальных. Конфа самописная.
55 sapphire
 
21.11.11
01:10
(52) Совсем 2.57бнулся?
56 Ёпрст
 
21.11.11
01:10
(55) Утомил.
57 sapphire
 
21.11.11
01:10
(54) Не зависит от конфы, потому и назвали универсальными
58 sapphire
 
21.11.11
01:11
(56) Ерунду пишешь, там в DOCPRINT.ert есть вкладка итоги и отборы есть.
59 Ёпрст
 
21.11.11
01:11
(58) докпринт никогда не выведет шахматку, не 3.14ди
60 sapphire
 
21.11.11
01:12
UNIREPS еще никто не отменял
61 viktor_vv
 
21.11.11
01:12
Я тока не поймому нахрена для такой простой структуры отчета че-то там сворачивать в ТЗ, когда все есть в запросе.
62 sapphire
 
21.11.11
01:13
(59) Группировку никто не отменял. Не умеешь пользоваться - не берись
63 Ёпрст
 
21.11.11
01:13
(61) они до этого никак не дойдут..
64 koteyka-2
 
21.11.11
01:13
(61) Я сначала не запросом делал. Запросом не получалось.
65 viktor_vv
 
21.11.11
01:14
(64) Это я не тебе.
66 Ёпрст
 
21.11.11
01:15
(62) болеешь ? Ни один универсальный отчет не выведет тебе клиентосов направо, а товары вниз
67 koteyka-2
 
21.11.11
01:15
Киньте DOCPRINT.ert или UNIREPS на мыло [email protected] кто нить.
68 sapphire
 
21.11.11
01:16
(64) Найди UNIREPS для клюшек и будет тебе счастье.
69 sapphire
 
21.11.11
01:16
(67) please wait
70 Ёпрст
 
21.11.11
01:16
(68) Слив засчитан.
71 sapphire
 
21.11.11
01:17
72 sapphire
 
21.11.11
01:18
(70) Ступай спать уже, знаток.
73 koteyka-2
 
21.11.11
01:19
(71) Спасибо.
74 sapphire
 
21.11.11
01:21
(73) Спасибо скажешь, когда это решит проблему.
75 Ёпрст
 
21.11.11
01:21
(72) прежде чем х..ню постить, скрин типового универсального отчета покажи, который выведет клиентосов направо, а товар вниз из любого документа, умник.
76 sapphire
 
21.11.11
01:23
в (0) не корректно поставлена задача, т.к. поля типа Проведен и ПометкаУдаления имеют числовой тип и могут быть свернуты, ИМХО. Так что общее решение вроде как есть, только что за результаты даст неизвестно.
77 sapphire
 
21.11.11
01:25
(75) типовой отчет даст возможность посмотреть КАК это реализовано, и не тебе меня учить
78 viktor_vv
 
21.11.11
01:25
Пля, автор уже давно бы написал и забыл, если бы ему мозг не парили. А так еще полночи будет втыкать в unireps и в итога нихрена там не поймет.
79 sapphire
 
21.11.11
01:26
(75) Я шахматки писал неоднократно и на 7.7 и на tSQL
80 Ёпрст
 
21.11.11
01:26
(77) Не понял, к чему тогда весь этот выебон был ?
81 sapphire
 
21.11.11
01:27
(78)За ночь можно написать тонну полезного кода, важно понимать, что именно нужно
82 Лефмихалыч
 
21.11.11
01:27
внимание, вброс: семерка - хуита
83 sapphire
 
21.11.11
01:28
(80) Ух ты у Стаса слово выебон перестало быть матерным?!
84 sapphire
 
21.11.11
01:28
(82) ИВХ, семерка с прямым доступом к данным сделает восьмерку всегда.
85 Лефмихалыч
 
модератор
21.11.11
01:29
(84) это как жигули, которые поедут. если их уметь настроить :)
86 viktor_vv
 
21.11.11
01:29
Ну понеслась по тристапятидесятому кругу :).
87 Лефмихалыч
 
21.11.11
01:29
погоны нечаянно нацепил. Без умысла, сорри
88 koteyka-2
 
21.11.11
01:30
Да проблема собственно была не в получении данных, а как их закинуть в таблицу (13) именно такого вида, а не другого.
89 sapphire
 
21.11.11
01:31
(85) Не совсем так, семерка всё-таки раздолбана и имеем всю модель данных, как на ладони. К чему угодно можно её прикрутить, с восьмеркой же беда, та же структура cf-ника чего стоит.
90 sapphire
 
21.11.11
01:32
(87) Погоны - не беда, беда не умение ими пользоваться. Я не боюсь погон.
91 viktor_vv
 
21.11.11
01:32
(88) Ты не отвлекайся, втыкай в unireps :)).
92 sapphire
 
21.11.11
01:32
(88) ПрисоединитьСекцию кури.
93 koteyka-2
 
21.11.11
01:33
Там таблица не так строится тоже.
94 koteyka-2
 
21.11.11
01:34
(92) Дык с этим я и застрял. Кучу лесниц формирует, а как нужно не получается (пока).
95 sapphire
 
21.11.11
01:34
(91) У меня был переделанный unireps, который выводил шахматки, в полях группировок в списке была галка - группировка по горизонтали.
96 Лефмихалыч
 
21.11.11
01:35
(89) это да... а еще хренилище пофигурации... Отас же полный - роде и инструмент, а вроде и куита на палке, которая в коллективной работе только гемор создает.
но семерка всё равно - гогно :) в ней и такого хренилища нет
97 sapphire
 
21.11.11
01:35
+(95) Сам писал
98 koteyka-2
 
21.11.11
01:35
А есть еще?
99 Ekaterina
 
21.11.11
01:35
Явот не пойму. Автор хочет, чтоб за него все сделали? Тут не клуб анонимных помогальщиков.
100 Лефмихалыч
 
21.11.11
01:36
(95) вооот, а в v8 таких адовых велокатов фиксина строить не надо. Есть СКД или на худой конец построитель. Или даже чорт с ним - просто итоги
101 sapphire
 
21.11.11
01:36
(96) Погоди, они сейчас в 16 релизе шину свою обещают, может и до CVS дело дойдет
102 koteyka-2
 
21.11.11
01:36
(99) не нужно, разберусь. Я упертый.
103 sapphire
 
21.11.11
01:37
(100) Ты только Сергею об этом не говори, ладно?
104 viktor_vv
 
21.11.11
01:38
(94) Код покажи, как выводишь.
105 Лефмихалыч
 
21.11.11
01:38
(99) ДА?!?!11 о_0 ёмаё! А кому я членские взносы тогда платил?!11одинодин
:)
106 sapphire
 
21.11.11
01:41
(104) Оно надо?
107 koteyka-2
 
21.11.11
01:41
(94) стер уже. Начал с нуля опять писать. Попробую как в конструкторе отчетов (через процедуру СформироватьКолонки()).
108 koteyka-2
 
21.11.11
01:42
Сорри (104)
109 sapphire
 
21.11.11
01:43
(107).. ну и недума
110 sapphire
 
21.11.11
01:43
unireps тем и хорош, крыжишь его один раз, а работает всегда :)
111 koteyka-2
 
21.11.11
01:45
(110)если клиент понятливый, а бывает упрется, как у меня, хочу вот так и всё.
112 sapphire
 
21.11.11
01:45
Конечно, это требует ума и сообразительности, но без оных, ИМХО, нечего заниматься 1С
113 koteyka-2
 
21.11.11
01:47
(112)Да я уже писал подобное, правда давненько. Говорю же к концу дня голова не варит. Запутался совсем. Куча кода в голове уже перемешалась. Наверное с утра буду лучше писать.
114 sapphire
 
21.11.11
01:48
(113) Нет, с утра будет хуже. Надо именно прямо сейчас.
115 sapphire
 
21.11.11
01:48
(113) В нашем ремесле важно уметь концентрироваться.
116 koteyka-2
 
21.11.11
01:49
(115)Ага, боксер сильно концентрируется к концу боя? :-)
117 koteyka-2
 
21.11.11
01:51
Сейчас накидаю основной код, а завтра буду долбить шахматку.
120 koteyka-2
 
21.11.11
01:56
Да у меня уже мозг думать отказывается, а завтра еще подруге с похоронами матери помогать. Куча мыслей в голове. Хрень получится, если сейчас делать. Потом все равно переделывать или доделывать прийдется.
123 koteyka-2
 
21.11.11
01:57
ОК. Всем спасибо.
126 Ekaterina
 
21.11.11
01:58
(120) Два дела одновременно делать не получиться. Истерику прикрати. Вот завтра и вылезешь, не звери тут кто нибудь поможет.
127 koteyka-2
 
21.11.11
01:59
(126) ;-)
132 koteyka-2
 
21.11.11
02:47
Всё, разобрался. Проще пареной репы оказалось. Еще раз всем спасибо.