|   |   | 
| 
 | Получить программный код СКД из хмл файла настроек СКД | ☑ | ||
|---|---|---|---|---|
| 0
    
        trialex3 27.11.22✎ 21:11 | 
        Всем привет. Есть файл хмл с простейшей настройкой СКД. Нужно узнать как программа формирует отборы в группировке кодом. Есть какой нибудь способ преобразовать такой файл в код 1С?
 Собственно содержимое файла: <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <selection> <item xsi:type="SelectedItemField"> <field>Наименование</field> </item> <item xsi:type="SelectedItemField"> <field>Ссылка</field> </item> <item xsi:type="SelectedItemField"> <field>ФИО</field> </item> </selection> <outputParameters/> <item xsi:type="StructureItemGroup"> <filter> <item xsi:type="FilterItemComparison"> <left xsi:type="dcscor:Field">ФИО</left> <comparisonType>Contains</comparisonType> <right xsi:type="xs:string">Иванов</right> </item> </filter> <order> <item xsi:type="OrderItemAuto"/> </order> <selection> <item xsi:type="SelectedItemAuto"/> </selection> <outputParameters/> </item> <item xsi:type="StructureItemGroup"> <filter> <item xsi:type="FilterItemComparison"> <left xsi:type="dcscor:Field">ФИО</left> <comparisonType>Contains</comparisonType> <right xsi:type="xs:string">Петров</right> </item> </filter> <order> <item xsi:type="OrderItemAuto"/> </order> <selection> <item xsi:type="SelectedItemAuto"/> </selection> <outputParameters/> </item> </Settings> | |||
| 1
    
        kittystark 27.11.22✎ 21:25 | 
        (0) 3 поля, 2 группировки с отборами ФИО содержит Иванов / Петров
 не пойму суть вопроса - зачем ? если просто подглядеть - загрузи схему по кнопке снизу слева на самой первой вкладке СКД, там где наборы данных если что-то другое - поясни | |||
| 2
    
        trialex3 27.11.22✎ 21:28 | 
        (1) Да у меня такая задача. Нужно вывести 2 таблицы (2 группировки) из одной ТЗ через программное СКД. То есть сначала таблица с отбором  = петров, а после нее таблица с отбором  = иванов. То есть общие отборы здесь не помогут. Вот я и хотел посмотреть как система формирует отборы к каждой группировке, что бы в коде это повторить. Если я пишу :
 //Поля группировки Группировки = НастройкиКомпоновки.Структура; Группировки.Очистить(); //ДОБАВЛЯЕМ АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ Таблица = НастройкиКомпоновки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); //Добавляем отбор в первую группировку ЭлементОтбора = Таблица.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РежимТестирования"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = "AUTOMATIC"; ЭлементОтбора.Использование = Истина; То система ругается на синтаксис. | |||
| 3
    
        trialex3 27.11.22✎ 21:40 | 
        Ребят если бы тут можно было награду установить за ответ - с удовольствием бы подкинул на пиво, но тут нельзя а этот треклятый вопрос меня мучает уже несколько дней(     | |||
| 4
    
        kittystark 27.11.22✎ 22:13 | 
        (2) почти...
 копни чуть глубже - тот код у тебя стучится до "Структура.Таблица", но даже руками в конструкторе именно на таблицу не получится сделать отбор отбор сможешь добавить на подчиненные "строки", см. что-то типа КомпоновщикНастроек.Настройки.Структура[0].Строки[0] КомпоновщикНастроек.Настройки.Структура[0].Строки[1] возможно еще далее вложенные Структура[0].Строки[1].Структура.Строки | |||
| 5
    
        trialex3 27.11.22✎ 22:48 | 
        (4) Но руками у меня получается добавить отбор. То есть я выводу группировку детальные записи и еще раз детальные записи. В каждую прописываю отбор и все спокойно работает.
 Спасибо по поводу подсказки. Буду экспериментировать. | |||
| 6
    
        trialex3 27.11.22✎ 22:51 | 
        (4) Вот так например https://yadi.sk/d/vDwWzLuZzkORCg     | |||
| 7
    
        kittystark 27.11.22✎ 23:31 | 
        не-е-е-е
 Таблица = НастройкиКомпоновки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); тебе добавляет не детальные записи а именно таблицу, у которой в конструкторе есть два подчиненных подпункта "строки" и чуть ниже "колонки", в которые потом можно добавить группировки или детальные записи поэтому ковыряй КомпоновщикНастроек.Настройки.Структура[0] КомпоновщикНастроек.Настройки.Структура[1] | |||
| 8
    
        trialex3 28.11.22✎ 00:27 | 
        (7) Да вы правы по пути НастройкиКомпоновки.Структура[0].Строки[0].Отбор.Элементы можно добавить отбор. И вроде бы он даже работает хоть и странно пока.
 Он мне в первой строке отчета создал описание отбора, цифры которые я хотел убрать исчезли, но столбцы все-равно остались. Но это уже прогресс. Спасибо вам. Буду копать дальше) | |||
| 9
    
        trialex3 28.11.22✎ 00:31 | 
        (7) Да без отбора цифры появляются а с отбором нет, но столбцы пустые остаются. Странненько.     | |||
| 10
    
        kittystark 28.11.22✎ 11:23 | 
        нужно ручками сделать вариант настройки отчета, с цифрами как надо, 
 а потом в отладчике в ПриКомпоновкеРезультата лазишь по всем вложенным веткам КомпоновщикНастроек.Настройки.Структура и ищешь всякие Отбор.Элементы смотришь на них повторять до просветления, пока не познаешь дзен | |||
| 11
    
        trialex3 28.11.22✎ 16:53 | 
        (10) Если я не ошибаюсь то ПриКомпоновкеРезультата доступно лишь в отчете. А у меня обычная форма. Или я ошибаюсь?     | |||
| 12
    
        kittystark 28.11.22✎ 17:29 | 
        (11) трудно сказать, что там у тебя...
 но что мешает "для посмотреть" создать новый файл внешнего отчета, в нем подгрузить схему, выставить отборы как надо, подсмотреть как в (10) и забыть про него ? | |||
| 13
    
        trialex3 28.11.22✎ 18:54 | 
        (12) Трудно перевести язык из хмл в код 1С. Завтра куплю с инфостарта генератор года скд по хмл и все сделаю     | |||
| 14
    
        kittystark 28.11.22✎ 19:40 | 
        (13) в первом посте про кнопку     | |||
| 15
    
        Pprog151713 29.11.22✎ 08:05 | 
        Вот так настройки сбросить в файл можно.
 //ЗаписьXML = Новый ЗаписьXML; //ЗаписьXML.ОткрытьФайл("d:\123.xml"); //СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Настройки); //ЗаписьXML.Закрыть(); | |||
| 16
    
        trialex3 29.11.22✎ 14:07 | 
        (12) Короче разобрался в Условном оформлении. Код такой
 //Условное оформление для всего отчета ЭлементУсловногоОформления = НастройкиКомпоновки.УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Количество"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; ЗначениеПараметра = 0.1; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("МаксимальнаяШирина", ЗначениеПараметра); ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Показатель"); ОформляемоеПоле.Использование = Истина; ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Количество"); Теперь проблема - если хоть в одном поле есть 0, то колонка исчезает. А там на колонку только в одной строке есть число. А в остальных строках 0. Можно наложить условие что бы условие накладывалось только если по всей колонке 0? Получается таблица: фрукт Кол ОбщийИтог Яблоко 1 1 Банан 0 0 Она исчезает полностью , так как в банане 0 | |||
| 17
    
        trialex3 29.11.22✎ 14:10 | 
        (16) А  так как столбиков КОЛ много и среди них есть такие, где везде 0 - только их и надо убрать)     | |||
| 18
    
        kittystark 29.11.22✎ 14:22 | 
        условное оформление - это покрасить в основном, трюк с шириной столбца 0.1 хорош, но не всегда
 и на сколько я понимаю, в твоем случае надо ковырять не отборы условного оформления, а "чистые" отборы или на отчете / или на группировке я вот еще раз упомяну: сначала руками сделай нужный тебе вариант настроек, так чтоб отчет формировался руками и показывал то что нужно, а уже потом пытайся кодом повторить настройки | |||
| 19
    
        trialex3 29.11.22✎ 14:29 | 
        (18) Так я все сделал - вариант настроек у меня есть. Я даже его уже в код перевел обработкой. НО. СКД автоматически скрывает пустые ресурсы, когда я делаю это через консоль. А когда я все тоже самое делаю в коде - пустые ресурсы присутствуют. То есть СКД сама как то это делает. Значит надо чтото придумать)     | |||
| 20
    
        trialex3 29.11.22✎ 14:30 | 
        А отборы у меня на группировке стоят. Они убирают все цифры. Там пусто. Вопрос в визуальном отображении.     | |||
| 21
    
        kittystark 29.11.22✎ 14:36 | 
        (20) "Вопрос в визуальном отображении"
 ну нет | |||
| 22
    
        trialex3 29.11.22✎ 14:36 | ||||
| 23
    
        kittystark 29.11.22✎ 14:37 | 
        для начала отдельно поковыряй ТОЛЬКО детальные записи и руками и кодом     | |||
| 24
    
        kittystark 29.11.22✎ 14:47 | 
        в программном условном оформлении ты говоришь "ЛЮБОЕ (!!!) ноль" -> ширину в 0.1
 создай вычисляемое поле и в нем пропиши выражение ресурса ВСЕ(твое поле = 0), и далее отбор по этому новому полю | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |