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