|
Переформатирование ТЗ на форме | ☑ | ||
---|---|---|---|---|
0
trialex3
13.07.22
✎
16:20
|
Добрый день. Прошу помощи. Есть на управляемой форме таблица значений типа:
Наименование Характеристика Количество Яблоко Красное 1 Яблоко Зеленое 1 Как самый простой способ получить ТЗ но уже в виде: Наименование Красное Зеленое Яблоко 1 1 |
|||
1
Михаил Козлов
13.07.22
✎
16:22
|
Я если будет еще:
Груша Большая 1 Груша Маленькая 1 как Вы видите таблицу? |
|||
2
6awkup_true
13.07.22
✎
16:36
|
Что то типо того. (МММ, Извращения)
тз = новый ТаблицаЗначений; тз.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Справочник.Номенклатура"), "Номенклатура"); КолонкиХарактеристик = ТвояТаблица.Выгрузить().ВыгрузитьКолонку("Характеристика"); КолонкиХарактеристик.Свернуть("Характеристика"); Для каждого Колонка из КолонкиХарактеристик цикл ТЗ.Колонки.Добавить(Колонка.Наименование, Новый ОписаниеТипов("Справочник.Характеристики"), Колонка.Наименование); КонецЦикла; МассивОбработаннойНоменклатуры = Новый массив; Для Каждого Номенклатура из ТвояТаблица Цикл Если МассивОбработаннойНоменклатуры.Найти(Номенклатура.Номенклатура) = Неопределено тогда НовСтр = Тз.Добавить(); НовСтр.Номенклатура = Номенклатура.Номенклатура; Строки = ТвояТаблица.НайтиСтроки("Номенклатура", Номенклатура.Номенклатура); Для каждого Строка из Строки цикл НовСтр[Строка.Номенклатура.Наименование] = Строка.Количество; КонецЦикла; МассивОбработаннойНоменклатуры.Добавить(Номенклатура.Номенклатура); КонецЕсли; КонецЦикла; |
|||
3
trialex3
13.07.22
✎
16:37
|
(1) Характеристика будет только 1.
|
|||
4
6awkup_true
13.07.22
✎
16:38
|
(2) ошибка. тип колонки будет не Справочник.Характеристики, а строка(или число)
|
|||
5
Kassern
13.07.22
✎
16:41
|
(0) Создаете макет со схемой компоновки данных. Передаете в него таблицу с данными, и через структуру выводите так как вам надо, можно сразу на форму в виде таб дока, можно хоть в ТЗ.
|
|||
6
trialex3
13.07.22
✎
16:46
|
(4) Спасибо буду пробовать...
|
|||
7
vicof
13.07.22
✎
16:53
|
А я бы деревом сделал
|
|||
8
trialex3
13.07.22
✎
16:57
|
(7) А я бы сам деревом сделался - код ошибки выдает, а с СКД программно впервые сталкиваюсь. Пошел курить программное создание СКД...
|
|||
9
Kassern
13.07.22
✎
17:05
|
(8) там ничего сложного, вместо набора-запрос, выбираете набор-объект. Указываете Имя таблицы и создаете какие поля будут. Программно лишь передаете в параметр с именем таблицы саму ТЗ.
|
|||
10
trialex3
13.07.22
✎
17:16
|
(9) https://softonit.ru/articles/1c/skd-i-tablitsy-znacheniy/ ну я вроде нашел инструкцию - буду пробовать
|
|||
11
trialex3
27.07.22
✎
11:45
|
да блин чо ж так сложно то. Кто может помочь накидать алгоритм для переделки левой таблицы в правую?
Даже названия колонок не могу сделать - оказывается нельзя в названия пихать текст с цифрами. https://yadi.sk/d/u-CFGyn790V1aw |
|||
12
trialex3
27.07.22
✎
11:46
|
Выручите плиз. С меня пиво(
|
|||
13
trialex3
27.07.22
✎
11:47
|
колонки нагрузка Л, нагрузка П, с ошибками, без ошибок вообще в финальной тз не нужны.
|
|||
14
RomanYS
27.07.22
✎
11:48
|
(11) Тебе ТЗ нужно или ТабДок на форме?
|
|||
15
trialex3
27.07.22
✎
11:49
|
(14) У меня на форме лежит ТЗ (ну коллекция данных формы) и есть на форме другая тз - финал
|
|||
16
Кура-Цеце
27.07.22
✎
11:53
|
(12) > С меня пиво
От пива тупеют. |
|||
17
trialex3
27.07.22
✎
12:01
|
(16) В разумных количествах все хорошо
|
|||
18
Ёпрст
27.07.22
✎
12:08
|
(11) новые колонки создавай обезличенно, просто колонка1, колонка2,...колонкаN. А вот заголовок им давай из своих значений - красное, зеленое, $%#еще какое неподтребство, которое нельзя пихать в идентификатор колонки№;;
|
|||
19
RomanYS
27.07.22
✎
12:11
|
(15) Цель лежания на форме? Если просто показать, замени на ТД и используй СКД или построитель.
|
|||
20
trialex3
27.07.22
✎
12:30
|
(19) Показать и потом рассылкой всем разослать
|
|||
21
RomanYS
27.07.22
✎
12:34
|
(20) тем более ТД, не нужна тебе ТЗ с колонками
|
|||
22
trialex3
27.07.22
✎
13:45
|
Я хоть в верном направлении иду?
&НаКлиенте Процедура ВывестиВТабДок() НовыйСКД = Новый СхемаКомпоновкиДанных(); Источник = НовыйСКД.ИсточникиДанных.Добавить(); Источник.Имя = "ИсточникДанных1"; Источник.СтрокаСоединения = ""; Источник.ТипИсточникаДанных = "Local"; НаборДанных2 = НовыйСКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанных2.Имя = "НаборДанных2"; НаборДанных2.ИмяОбъекта = "ВнешняяТЗ"; НаборДанных2.ИсточникДанных = "ИсточникДанных1"; ДобавленноеПоле = НаборДанных2.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ДобавленноеПоле.Заголовок = "Характеристика"; ДобавленноеПоле.ПутьКДанным = "Характеристика"; ДобавленноеПоле.Поле = "Характеристика"; ДобавленноеПоле.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(20)); ДобавленноеПоле = НаборДанных2.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ДобавленноеПоле.Заголовок = "Нагрузка"; ДобавленноеПоле.ПутьКДанным = "Нагрузка"; ДобавленноеПоле.Поле = "Нагрузка"; ДобавленноеПоле.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(20)); ДобавленноеПоле = НаборДанных2.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ДобавленноеПоле.Заголовок = "Количество"; ДобавленноеПоле.ПутьКДанным = "Количество"; ДобавленноеПоле.Поле = "Количество"; ДобавленноеПоле.ТипЗначения = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(10,0)); ВыбранноеПоле = НовыйСКД.ВариантыНастроек[0].Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Характеристика"); ВыбранноеПоле = НовыйСКД.ВариантыНастроек[0].Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Нагрузка"); ВыбранноеПоле = НовыйСКД.ВариантыНастроек[0].Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Количество"); Структура = НовыйСКД.ВариантыНастроек[0].Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); Структура.Использование = Истина; Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); СтруктураСТЗ = Новый Структура; СтруктураСТЗ.Вставить("ВнешняяТЗ",ТестированиеПодробно); Настройки = НовыйСКД.НастройкиПоУмолчанию; ДанныеРасшифровкиСКД = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(НовыйСКД,Настройки, ДанныеРасшифровкиСКД); ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, СтруктураСТЗ ,ДанныеРасшифровкиСКД); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры |
|||
23
trialex3
27.07.22
✎
13:51
|
Еще не на клиента а на сервере сделал и коллекцию в ТЗ выгрузил.
СтруктураСТЗ = Новый Структура; СтруктураСТЗ.Вставить("ВнешняяТЗ",ДанныеФормыВЗначение(ТестированиеПодробно,Тип("ТаблицаЗначений"))); ругается Ошибка при вызове метода контекста (Инициализировать) ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, СтруктураСТЗ ,ДанныеРасшифровкиСКД); по причине: Ошибка компоновки данных по причине: Ошибка инициализации по причине: Не найдено поле замены "Нагрузка" |
|||
24
trialex3
10.08.22
✎
13:16
|
Нашел вариант через сводные таблицы решить, делаю по примеру из ИТС, но ругается что ИсточникДанных принимает неверное значение, хотя в справке ИТС ясно написано что РезультатЗапроса подходит.
Ошибка: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(34)}: Ошибка при установке значения атрибута контекста (ИсточникДанных) СводТаб.ИсточникДанных = РезультатЗапроса; по причине: Недопустимое значение Код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Характеристика КАК Характеристика, | ТЗ.Номенклатура КАК Номенклатура, | ТЗ.Показатель КАК Показатель, | ТЗ.Количество КАК Количество |ПОМЕСТИТЬ ДанныеТЗ |ИЗ | &ТабличнаяЧасть1 КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеТЗ.Характеристика КАК Характеристика, | ДанныеТЗ.Номенклатура КАК Номенклатура, | ДанныеТЗ.Показатель КАК Показатель, | ДанныеТЗ.Количество КАК Количество |ИЗ | ДанныеТЗ КАК ДанныеТЗ"; Запрос.Параметры.Вставить("ТабличнаяЧасть1",ТабличнаяЧасть1); РезультатЗапроса = Запрос.Выполнить(); ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1; ТабДок.ВстроенныеТаблицы.Добавить(Тип("СводнаяТаблица")); СводТаб = ТабДок.ВстроенныеТаблицы.СводнаяТаблица1; СводТаб.ИсточникДанных = РезультатЗапроса; СводТаб.ОтображатьПоля = Истина; СводТаб.Обновление = Ложь; СводТаб.Строки.Добавить(СводТаб.Поля.Характеристика); СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура); СводТаб.Колонки.Добавить(СводТаб.Поля.Показатель); СводТаб.Данные.Добавить(СводТаб.Поля.Количество); СводТаб.Обновление = Истина; |
|||
25
trialex3
10.08.22
✎
13:18
|
Тип реквизита РезультатЗапроса - РезультатЗапроса
|
|||
26
trialex3
10.08.22
✎
13:28
|
Пример из справки
РезультатЗапроса = Запрос.Выполнить(); ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1; СводТаб = ТабДок.ВстроенныеТаблицы.СводнаяТаблица1; СводТаб.ИсточникДанных = РезультатЗапроса; //самое важное! СводТаб.ОтображатьПоля = Истина; Что не так то?) |
|||
27
trialex3
10.08.22
✎
13:59
|
А если ТЗ сначала передать в посртоитель и потом уже в сводную таблицу то все ОК. Странно...
Код: Ист=Новый ОписаниеИсточникаДанных; Ист.ИсточникДанных=ТабличнаяЧасть1; Ист.Колонки.Характеристика.Измерение=Истина; Ист.Колонки.Номенклатура.Измерение=Истина; Ист.Колонки.Показатель.Измерение=Истина; Ист.Колонки.Количество.Итог="Сумма(Количество)"; Постр=Новый ПостроительОтчета; Постр.ИсточникДанных=Ист; Постр.Выполнить(); ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1; ТабДок.ВстроенныеТаблицы.Добавить(Тип("СводнаяТаблица")); СводТаб = ТабДок.ВстроенныеТаблицы.СводнаяТаблица1; СводТаб.ИсточникДанных = Постр; СводТаб.ОтображатьПоля = Истина; СводТаб.Обновление = Ложь; СводТаб.Строки.Добавить(СводТаб.Поля.Характеристика); СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура); СводТаб.Колонки.Добавить(СводТаб.Поля.Показатель); СводТаб.Данные.Добавить(СводТаб.Поля.Количество); СводТаб.Обновление = Истина; |
|||
28
trialex3
10.08.22
✎
14:20
|
Кстати знает кто как отключить итоги в сводной таблице? И те которые отдельной колонкой идут и те которые снизу?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |