|
v8: ТЗ как свернуть таблицу с колонками из переменных? | ☑ | ||
---|---|---|---|---|
0
poet
14.03.12
✎
15:33
|
есть ТЗ названия двух колонок, которые потом должны ссумироватся, создаются как переменные:
НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); НазваниеКолонкиЦена = Строка("ц"+СокрЛП(Выборка.Номенклатура.Код)); но бывает так что в одной накладной может быть 2 одинаковых номенклатуры с одной ценой - поэтому необходимо это дело Свернуть - НО КАК? ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент", "[НазваниеКолонки], [НазваниеКолонкиЦена]"); |
|||
1
butterbean
14.03.12
✎
15:34
|
нда
ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент", НазваниеКолонки+", "+НазваниеКолонкиЦена); |
|||
2
Шапокляк
14.03.12
✎
15:35
|
А вообще цены суммировать как-то странно.
|
|||
3
aka AMIGO
14.03.12
✎
15:37
|
в "Свернуть" можно указывать и номера колонок
|
|||
4
aka AMIGO
14.03.12
✎
15:38
|
ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент", "5, 6");
попробуй так |
|||
5
aka AMIGO
14.03.12
✎
15:40
|
отбой!! это ведь 8-ка..
не пойдет! |
|||
6
poet
14.03.12
✎
15:44
|
(2) чуть не правильно назвал колонку - на скорость не влияет - там сумма
(1) а как быть со вторыми, а точнее с первыми кавычками? - так дает ошибку |
|||
7
ЧеловекДуши
14.03.12
✎
15:45
|
(5)Все там пойдет, только на сервере, или на толстом клиенте.
|
|||
8
ЧеловекДуши
14.03.12
✎
15:46
|
+Доступность:
Сервер, толстый клиент, внешнее соединение. ТаблицаЗначений (ValueTable) Свернуть (GroupBy) Синтаксис: Свернуть(<КолонкиГруппировок>, <КолонкиСуммирования>) Параметры: <КолонкиГруппировок> (обязательный) Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений. <КолонкиСуммирования> (необязательный) Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений. Описание: Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются. Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число. Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться. Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться. Если в колонке несколько типов и среди них нет типа Число, то результат суммирования будет 0, который будет присвоен в соответствующую колонку, где будет преобразован к значению по умолчанию для типа, установленного в колонке. Пример: ТаблицаЦен.Свернуть("Товар, Валюта", "Цена"); |
|||
9
poet
14.03.12
✎
15:47
|
во втором параметре нет начальных ковычек - на них я так понимаю и ругается
|
|||
10
poet
14.03.12
✎
15:48
|
есть токо кавычки которые запятую отделяют
|
|||
11
ЧеловекДуши
14.03.12
✎
15:48
|
+ Делать так
ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент", ""+НазваниеКолонки+", "+НазваниеКолонкиЦена+""); // :) Но суммировать по цене, это перебор :) |
|||
12
poet
14.03.12
✎
15:49
|
кстати обидно - параметр ссумирования не обязательный, а если его не указать - колонки теряются
|
|||
13
ЧеловекДуши
14.03.12
✎
15:49
|
(10)Ты кто, Программист или нет, тебе что мешает прикрутить "Если" и понеслось т.д. :)
|
|||
14
ЧеловекДуши
14.03.12
✎
15:49
|
(12)Все там не обидно, а куда ты предлагаешь их деть программе?
|
|||
15
poet
14.03.12
✎
15:53
|
(11) по поводу суммы в (6) посте
(14) ссумировать мовчкы шаз погляжу в отладчике - ругается на неверные названия колонок |
|||
16
poet
14.03.12
✎
16:00
|
что-то не то - везде все одинаковое - правильное, а 1Сина ругается - взгляните гуру на "это":
Пока Выборка.Следующий() Цикл Если Выборка.Номер <> Номер Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Дата = Формат(Дата(СокрЛП(Выборка.Дата)), "ДЛФ=Д"); НоваяСтрока.Номер = СокрЛП(Выборка.Номер); НоваяСтрока.ДатаВходящая = Формат(Дата(СокрЛП(Выборка.ДатаВходящегоДокумента)), "ДЛФ=Д"); НоваяСтрока.НомерВходящий = СокрЛП(Выборка.НомерВходящегоДокумента); НоваяСтрока.Контрагент = СокрЛП(Выборка.Контрагент); Если ОтображатьСклад = Истина Тогда НоваяСтрока.Склад = СокрЛП(Выборка.СкладОрдер); КонецЕсли; КонецЕсли; НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); НазваниеКолонкиЦена = Строка("ц"+СокрЛП(Выборка.Номенклатура.Код)); ОтображениеНазванияКолонки = СокрЛП(Выборка.Номенклатура); ОтображениеНазванияКолонкиЦ = "Сумма"; Если ТЗ.Колонки.Найти(НазваниеКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонки,,ОтображениеНазванияКолонки, 15); НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Если ФлагСуммы = Истина Тогда Если ТЗ.Колонки.Найти(НазваниеКолонкиЦена) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонкиЦена,,ОтображениеНазванияКолонкиЦ, 15); НоваяСтрока[НазваниеКолонкиЦена] = Выборка.Сумма; КонецЕсли; КонецЕсли; Иначе НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Если ФлагСуммы = Истина Тогда НоваяСтрока[НазваниеКолонкиЦена] = Выборка.Сумма; КонецЕсли; КонецЕсли; Номер = Выборка.Номер; Если ОтображатьСклад = Истина Тогда ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент, Склад", ""+НазваниеКолонки+", "+НазваниеКолонкиЦена+""); Иначе ТЗ.Свернуть("Дата, Номер, ДатаВходящая, НомерВходящий, Контрагент", ""+НазваниеКолонки+", "+НазваниеКолонкиЦена+""); КонецЕсли; КонецЦикла; |
|||
17
zak555
14.03.12
✎
16:01
|
(16) сворачиваем в цикле зачем ?
|
|||
18
poet
14.03.12
✎
16:03
|
(17) сворачиваем каждую накладную, причина пост номер раз
|
|||
19
zak555
14.03.12
✎
16:04
|
(18) полный текст задачи озвучь
|
|||
20
aka AMIGO
14.03.12
✎
16:27
|
(18)""сворачиваем каждую накладную""
в каждой накладной, в ТЧ, номенклатура может повторяться? Если нет - то свертка не нужна, твой запрос уже выбирает товар по каждой накладной |
|||
21
poet
14.03.12
✎
16:40
|
в том то и дело - как написано в посте номер 1 - в накладной может быть 2 одинаковых номенклатуры по разной приходной цене
|
|||
22
poet
14.03.12
✎
17:33
|
разобрался - у меня сам запрос в разнобой давал значения, а именно не упорядочивал по порядку накладные - после того как я эту группировку сделал в самом запросе НЕ УКАЗАВ |УПОРЯДОЧИТЬ ПО
Но благодарю - ответ на вопрос в шапке я получил в посте (1) и (11) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |