|   |   | 
| 
 | Переформатирование ТЗ на форме | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Кстати знает кто как отключить итоги в сводной таблице? И те которые отдельной колонкой идут и те которые снизу?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |