Чем разобрать форму из текста Сервис.ПолучитьФормуОбъекта(ИмяФормы)?

Автор item, 17 июня 2025, 10:39

« назад - далее »

item

Друзья, есть человеческий способ разобрать форму из этого текста,
чтобы получить свойства атрибутов формы, не открывая саму форму?

{"Dialogs",
{"Frame",
{"-11","0","0","0","400","0","0","0","204","1","2","1","34","MS Sans Serif","545","264","Счет","","","256","","1","1","6","28","-1","0","256",....

Arbuz

Где-то я видел, кажется, заголовочный файл с неполным описанием полей... вроде по разбору компаунда. Может на альтерпласте...

item

Хотел сам разобрать текст в списки значений аки json, но споткнулся на формулах атрибутов. Если формула содержит всякую хрень типа ?("""","""",""""), то ломается весь формат, и даже на глаз хрен определишь, на каком месте какой параметр.

item

Задача - немного упростить оформление ТабличныхПолей, положение колонки, быстрый выбор и т.д.

vk_barnaul

Я брал информацию здесь "Исходники GComp\Documentation\txt\DlgForms.txt"
Или нужен был код 1С, который разберет эту "шляпу" в другую "шляпу" ? :)

item

Вот это клад, большущее спасибо!
Осталось только разобрать эту шляпу в другую шлчяпу.)

item

Обидно.
Написал доморощенный парсерок для DialogStream, als, lst, spl и прочего,
а сегодня нашел охрененную штуку parser.dll.
//Кто знает автора сей замечательной кувалды?


Автор Тельнов Виктор.
Вопрос снят.

item



item

Страница автора

Пример я не рассматривал, там регулярные выражения, только узнал, что есть такая вк.
По сабжу достаночно методов ParserRecursiveList и ParserRecursiveListFromFile,  работает быстро, разбирает все что можно, даже гиговые cfg.

item

У меня в процессе класс "МетаФорма", на базе Структуры,
метод пока один:
"УстановитьФорму(<ИмяФормы>)",
свойства:
"<ИмяСвойства>" - свойство формы, напр. "МетаФорма.РежимСохраненияНастройки"
"Атрибуты" - коллекция контролов-атрибутов формы, АссоциативныйВектор,
"Колонки" - коллекция колонок многострочной части, АссоциативныйВектор,
"Слои" - коллекция слоёв формы, АссоциативныйВектор,
Атрибут, Колонка, Слой - элементы коллекций, тип Структура, содержат собственные свойства,
в случае, если элемент идентифицирован, ессесно можно обращаться к нему в модуле по идентификатору, напр. "МетаФорма.Атрибуты.МногострочнаяЧасть.ПорядокОбхода" или "МетаФорма.Колонки.НомерСтроки.Ширина".

пока всё сыро, не обработаны размеры шрифтов, не продуманы наименования и типы свойств элементов.

файлы прикреплены

Харлампий Дымба

На некоторых формах parser.dll спотыкается - вот это бы в попытку наверное обернуть
Узлы = Парсер.ParserRecursiveList(Стрим);

Пример проблемы:
Ошибка синтаксиса рекурсивного списка
_ИмяФормы:
СПРАВОЧНИК.МЕСТАХРАНЕНИЯ.ФОРМА
ОписаниеОшибки():
Ошибка при выполнении метода объекта компоненты C:\Users\User\Desktop\Новая папка\parser.dll
Стрим:
Dialogs",
{"Frame",
{"-11","0","0","0","400","0","0","0","204","1","2","1","34","MS Sans Serif","260","142"," ","","","0","","1","1","6","29","-1","0","0",
{"0",
{"Основной","1"}},"1","1"}},
{"Controls"},
{"Cnt_Ver","10001"}}



item

Цитата: Харлампий Дымба от 09 июля 2025, 14:37На некоторых формах parser.dll спотыкается - вот это бы в попытку наверное обернуть...

Уже обернул , и добавил простую проверку на первый символ "{" в стриме.
Похоже, что из-за ошибки разбора строки parser.dll подвешивает процесс 1сv7...

item

Утечка памяти сумачечшая, не помогает обнуление коллекций, и с системой после выполнения хрень творится, формы и меню отображаются наполовину, хз что такое.

Харлампий Дымба

Цитата: item от 09 июля 2025, 14:58Утечка памяти сумачечшая, не помогает обнуление коллекций, и с системой после выполнения хрень творится, формы и меню отображаются наполовину, хз что такое.
Это про класс или про parser.dll?
Если про класс - то штука офгинно интересная. Собирать формы мне не нужно, а вот разбор очень пригодится для инспекции.
Если про parser.dll то
Цитата: item от 09 июля 2025, 14:55Похоже, что из-за ошибки разбора строки parser.dll подвешивает процесс 1сv7...
с этим согласен. Сейчас отпишусь MWWRuza в (соседнюю тему)