Имя: Пароль:
1C
 
Передача КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора в JSON. СКД в JSON
0 Shecurok
 
25.02.25
11:27
Всем привет!

Задача в общем то не тривиальная - сделать во внешнем сервисе свой конструктор СКД...

Надо передавать доступные поля выбора, чтоб пользователь сам выбирал и т.д. Как все это реализовать пока не понятно. Про получение данных в 1С пока молчим, начнем с малого - как передать эти самые доступные поля в JSON? Тип "КоллекцияДоступныхПолейКомпоновкиДанных"

Обходить циклом для каждого из.. и т.д.?

Возможно уже есть какие-то статьи/темы форумов для этого, но я скорее всего не умею нормально искать.
1 Волшебник
 
25.02.25
11:36
ФабрикаXDTO.ПрочитатьJSON
2 Shecurok
 
25.02.25
11:44
(1) ознакомлюсь, но можно, пожалуйста, чуууть подробнее)
3 Волшебник
 
25.02.25
11:46
ФабрикаXDTO.ПрочитатьJSON(<ЧтениеJSON>, <Тип>, <ИмяФункцииВосстановления>, <МодульФункцииВосстановления>, <ДополнительныеПараметрыФункцииВосстановления>, <ТипыДляОбработкиВосстановления>, <ИменаСвойствДляВосстановления>)
4 Мультук
 
гуру
25.02.25
11:49
(0)

1) Что такое "внешний сервис" ?

2) Вы хотите редактировать настройки СКД какого-то готового отчета ? или что-то совсем абстрактное ?

P.S.
JSON это сильное колдунство, но нужно получить LevelUP, возможно не один.
5 Shecurok
 
25.02.25
12:13
(4)
грубо говоря, очень грубо говоря - это web 1С, данные получаем/отправляем в json

готовый отчет, да
6 Shecurok
 
25.02.25
12:19
(3) не совсем то, что я имел в виду, но спасибо)
7 toypaul
 
гуру
25.02.25
12:33
Насчет json не скажу, но схему целиком можно сохранить в xml. Из конфигуратора и не только. Например, в консоли СКД от 1С есть программное сохранение. Или в ИТК тоже есть
8 Garykom
 
гуру
25.02.25
13:07
(0) Делал такое
Из ERPУХ в ДО через безшовку
Там сильное колдунство!

1. Самое сложное это рекурсивность при переборе элементов
Ибо в типовом ОтборКомпоновкиДанных есть группы (И/ИЛИ/НЕ)
2. Уже простейшее
	Тип = ТипЗнч(Значение);
	Если Тип = Тип("Массив") ИЛИ Тип = Тип("ОтборКомпоновкиДанных") Тогда
		Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(Значение);
	Иначе
		Результат = Значение;
	КонецЕсли;


На другой стороне просто парсишь и все
Если там тоже 1С - простейше
Если не 1С - ну изобретаешь свой конструктору аля СКД
9 Garykom
 
гуру
25.02.25
13:09
(8)+ А еще
3. Средняя сложность - замена ссылочных типов между базами
Т.е. вместо ссылок на справочники и документы одной базы 1С надо передавать нечто для замены их на объекты другой базы
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший