Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Получить список всех процедур/функций 1С (число прочтений - 10743 )
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Получить список всех процедур/функций 1С
30. Июля 2013 :: 11:55
Печать  
Для произвольного объекта могу получить список его свойств/методов
при помощи "Информатор" так

Код
Выбрать все
Объект = СоздатьОбъект(<НекоторыйАгрегатныйТип>)
Инфо = СоздатьОбъект("Информатор");
тз = Инфо.ПолучитьТаблицуМетодов(Объект);
тз = Инфо.ПолучитьТаблицуСвойств(Объект);
 



Скажите, Гуру!

Как получить список ВСЕХ процедур / функций / атрибутов 1С (и их параметры)
которые являются в 1С системными
(те что в синтаксис-помошнике "Встроенный язык"->"Системные")
т.е. таких как
РазделительСтрок = задукоментировано
ТипЗначенияСтр(...) = задукоментировано
ОткрытьФорму(...) = задукоментировано
_GetPerformanceCounter() = недокументированная
и т.д.


а также список всех (нативных) типов объектов, которые можно создать как
Об = СоздатьОбъект(<НативныйТип1С>)

т.е. нечто вроде:

Код
Выбрать все
Инфо = СоздатьОбъект("Информатор");
тз = Инфо.ПолучитьТаблицуМетодов(Собственно_Сам_1С);
тз = Инфо.ПолучитьТаблицуСвойств(Собственно_Сам_1С);

мик = СоздатьОбъект("MetaInfoClasses");
мик.ЗагрузитьОписаниеКлассов(Собственно_Сам_1С);
СписокНативныхТипов1С = мик.ПолучитьВсеИменаКлассов();

 



P.S. Данный вопрос задан в продолжение двух тем
Перехват ТипЗначенияСтр / ОткрытьФорму   (http://www.1cpp.ru/forum/YaBB.pl?num=1375173463)
Подмена объектов метаданных (Документ,Справочник)  (http://www.1cpp.ru/forum/YaBB.pl?num=1175586636/32)

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить список всех процедур/функций 1С
Ответ #1 - 30. Июля 2013 :: 12:26
Печать  
всё это в 1crcrus.dll валяется
  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #2 - 30. Июля 2013 :: 12:36
Печать  
Eprst писал(а) 30. Июля 2013 :: 12:26:
всё это в 1crcrus.dll валяется


Chieftain писал(а) 03. Апреля 2007 :: 08:26:
Хотя можно в 1crcrus.dll можно заменить в ресурсе "106" "ТипЗначенияСтр" на "ТипЗначенияСтрокой" и определить глобальную функцию "ТипЗначенияСтр", которая и будет разбирать типы.
Тока хочется нормльного решения


Я не специалист по С/С++ ......

Каким редактором можно посмотреть этот DLL чтобы
+ увидеть всё это адекватно
+ чтобы поправить "ресурс 106" как указано в сообщении
+ что именно нужно поправить: просто название метода
+ на что-то еще нужно обратить внимание?

Очень был бы благодарен за методику корректной правки этой самой DLL.

Думаю, другим тоже пригодится....
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить список всех процедур/функций 1С
Ответ #3 - 30. Июля 2013 :: 13:18
Печать  
да любым просмоторщиком ресурсов, например, ресторатором.
  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #4 - 30. Июля 2013 :: 13:59
Печать  
Eprst писал(а) 30. Июля 2013 :: 13:18:
да любым просмоторщиком ресурсов, например, ресторатором.


Посмотрел содержимое редактором.
Вопрос первого поста - НЕ снят.

В DLL-ке идет просто перечисление синонимов: англ=рус
без указания того - что это (т.е. просто "свалка" слов):
* текст сообщения
* свойство (атрибут) 1С: ФС, РазделителСтрок
* тип агрегатного объекта: Запрос, Справочник
* системная процедура / функция: ТипЗначенияСтр, ОткрытьФорму

Интересует не просто название.
Хочется получить списки:
- глобальных свойств (ссылок?) 1С: ФС, РазделительСтрок, Регистр
- нативных агрегатных типов (вдруг есть незадокументированные?)
- глобальных процедур/функций (с ПАРАМЕТРАМИ): ТипЗначенияСтр, ОткрытьФорму и т.д.

ДОГАДЫВАЮСЬ:
ответа на это вопрос не существует (на сегодняшний день, средствами 1С++).

ПРЕДЛОЖЕНИЕ:
Возможно ли реализовать такой функционал (см.первый пост)
Это будет первый шаг на пути к перехвату нативных свойств/методов "Самой 1С".

После чего уже будет не трудно реализовать собственно сам перехват,
как предложено в теме
Перехват ТипЗначенияСтр / ОткрытьФорму   (http://www.1cpp.ru/forum/YaBB.pl?num=1375173463)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить список всех процедур/функций 1С
Ответ #5 - 30. Июля 2013 :: 14:08
Печать  
да всё это есть, например в телепате.
Тупо усё перечислено ручонками и привет.

Ну и в любой поделке, тупо перечисляешь ключевые слова и усё.
Один раз. Получать их откуда либо кодом... лишнее.
Язык то не меняется, годами ужо.
  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #6 - 30. Июля 2013 :: 14:34
Печать  
artbear писал(а) 04. Апреля 2007 :: 05:49:
Тут все очень не просто Улыбка


Может уважаемый artbear всё же посмотрит
- это тему
- и смежные 2 темы (что указаны в первом посте в P.S.)
дабы добавить в 1С++ функционал:

* Информатор.ПолучитьТаблицуМетодов(Собственно_Сам_1С)
* Информатор.ПолучитьТаблицуСвойств(Собственно_Сам_1С)
* MetaInfoClasses.ПолучитьВсеИменаКлассов(Собственно_Сам_1С)
* УправлениеНастройками.Включить("ПерехватНативныхПроцедурФункций")
* Перехватчик.ВызватьОригинальноеСобытиеСистемы("ОткрытьФорму",.....)

Было бы просто великолепно и очень круто  Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить список всех процедур/функций 1С
Ответ #7 - 30. Июля 2013 :: 14:37
Печать  
Он уже давно на снеговике, врят ли будет под клюшки что-либо писать
  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #8 - 30. Июля 2013 :: 14:58
Печать  
Eprst писал(а) 30. Июля 2013 :: 14:37:
Он уже давно на снеговике, врят ли будет под клюшки что-либо писать


Я готов выступить в качестве
+ формализатора
+ документо-писателя
+ бета-тестера
+ готов поправить устаревшую документацию по адресу http://1cpp.ru/docum/icpp/
(которая УЖЕ устарела по сравнению с 1С++ 3.2.4.1)

Здесь найдутся программисты С/С++
чтобы "за-программить" эти новые "фичи",
поднятые в темах?

С кем и как взаимодействовать по данному вопросу?
Уж не знаю, наверное нужно открывать новую тему в ДРУГОЙ(?) ветке?
Где бы можно было формализовано поставить задачу
и отслеживать ее?
Как это делается здесь на форуме?
Стоит ли заниматься этим?
Есть еще энтузиасты, как я?

Хотя, Объект "Перехватчик" - детище уважаемого artbear
и было бы очень и очень, если бы он вернулся ..... Плачущий

Пы.Сы. Интересует
1) Получить список всех процедур/функций 1С (эта тема)
   при этом: не важно как они называются (рус/англ), важен сам механизм,
   который позволит перейти дальше к решению задач по темам
2)  Перехват ТипЗначенияСтр / ОткрытьФорму и других
   отсюда http://www.1cpp.ru/forum/YaBB.pl?num=1375173463
3) Подмена объектов метаданных (Документ,Справочник)
   отсюда http://www.1cpp.ru/forum/YaBB.pl?num=1175586636
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Получить список всех процедур/функций 1С
Ответ #9 - 30. Июля 2013 :: 16:46
Печать  
По первому пункту есть рабочий код, только он на связке DWX+VBS.
Можно было бы и перехват организовать для ТипЗначенияСтр, но думаю уже не судьба. Я с недавних пор тоже на 8-ку переполз.

  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 426
Зарегистрирован: 18. Мая 2011
Re: Получить список всех процедур/функций 1С
Ответ #10 - 30. Июля 2013 :: 17:14
Печать  
.
« Последняя редакция: 13. Сентября 2018 :: 05:53 - vladimirmir2012 »  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить список всех процедур/функций 1С
Ответ #11 - 31. Июля 2013 :: 11:54
Печать  
kos писал(а) 30. Июля 2013 :: 11:55:
Как получить список ВСЕХ процедур / функций / атрибутов 1С (и их параметры) которые являются в 1С системными 

Распарсить 1cv7Lang.als ? Улыбка))
  
Наверх
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 426
Зарегистрирован: 18. Мая 2011
Re: Получить список всех процедур/функций 1С
Ответ #12 - 31. Июля 2013 :: 12:19
Печать  
.
« Последняя редакция: 13. Сентября 2018 :: 05:53 - vladimirmir2012 »  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #13 - 31. Июля 2013 :: 12:30
Печать  
trdm писал(а) 31. Июля 2013 :: 11:54:
kos писал(а) 30. Июля 2013 :: 11:55:
Как получить список ВСЕХ процедур / функций / атрибутов 1С (и их параметры) которые являются в 1С системными  

Распарсить 1cv7Lang.als ? Улыбка))


Да нет же! Ребята!

Цель ведь не в том чтобы
- продублировать документацию
- распарсить ресурсы 1crcrus.DLL
- распарсить ALS
- ....

Идея очень простая: понять КАК 1С отличает
- локальные переменные внутри процедуры\функции
- переменные в контексте формы, реквизиты формы
- глобальные переменные
- системные атрибуты 1С: ФС, Регистр,....
- процедуры\функции контекста формы (объекта)
- глобальные процедуры функции
- встроенные (системные) процедуры \ функции

Т.Е. в зависимости от КОНТЕКСТА (СоздатьОбъект \ КонтекстФормы \ ГлобальныйМодуль \ СобственноСистема1С )
не меняя сигнатуры УЖЕ имеющихся методов \ набора объектов самой 1С++
получать
- список перемнных ЭТОГО контекста
- список процедур\функций (с параметрами) ЭТОГО контекста.

В 1С++ реализована работа (Перехватчик, Информатор, Система, ...)
только с контекстами: СоздатьОбъект \ КонтекстФормы \ ГлобальныйМодуль


А вот контекст "Собственно 1С (системные вызовы и свойства)"
не перехватывается и анализ не реализован.


Если реализовать такой анализ (список системных процедур и т.д.)
то после этого реализовать их же перехват будет дело техники.....

Уж очень хочется иметь такое:

Перехватчик.ВызватьОригинальноеСобытиеСистемы("ОткрытьФорму",ОткрываемОбъект,Парам2,Парам3,.....);

Возможно кто-то уже знает как такой анализ выполнить:
- где хранятся точки входа в СИСТЕМНЫЕ процедуры\функции 1С
- где хранятся СИСТЕМНЫЕ атрибуты самой 1С
- как эти static\const точки входа \ атрибуты сопоставлены с объявлениями имен в 1crcrus.dll
- ....

После того как "поимеем" такие списки 1С,
Код
Выбрать все
Инфо = СоздатьОбъект("Информатор");
тз = Инфо.ПолучитьТаблицуМетодов(Собственно_Сам_1С);
тз = Инфо.ПолучитьТаблицуСвойств(Собственно_Сам_1С);

мик = СоздатьОбъект("MetaInfoClasses");
мик.ЗагрузитьОписаниеКлассов(Собственно_Сам_1С);
СписокНативныхТипов1С = мик.ПолучитьВсеИменаКлассов();
 


тогда уже можно будет организовать их перехват...
Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()
       ......
       УправлениеНастройками.Включить("ПерехватГлобальныхПроцедурФункций");
       ......
КонецПроцедуры

Процедура глОткрытьФорму(......) Экспорт
       //сейчас перехват включен и отрабатывают наши переопределенные процедуры/функии
       ..............
       Если ТипЗначения(ОткрываемОбъект)=100 Тогда
              //сейчас это всё-равно что "глТипЗначенияСтр(...)" .....
              Если ТипЗначенияСтр(ОткрываемОбъект)="Справочник"  Тогда
                     глОткрытьФорму(ОткрываемОбъект.ТекущийЭлемент()......);
                     Возврат;
              КонецЕсли;
       КонецЕсли;
       .............. ....
       ам2,Парам3,.....);
       ......
КонецПроцедуры
 



Возможно я не прав (не пишу на уровне С\С++),
но концепцию понимаю именно так.

Поправьте меня если я не смотрю в корень....

« Последняя редакция: 18. Августа 2013 :: 07:44 - kos »  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Получить список всех процедур/функций 1С
Ответ #14 - 31. Июля 2013 :: 12:50
Печать  
kos писал(а) 31. Июля 2013 :: 12:30:
В 1С++ реализована работа (Перехватчик, Информатор, Система, ...)
только с контекстами: СоздатьОбъект \ КонтекстФормы \ ГлобальныйМодуль

А вот контекст "Собственно 1С (системные вызовы и свойства)"
не перехватывается и анализ не реализован.



или еще проще:

в дополнение к методам объектов
* вирт()
* я()
сделать еще и ссылку-атрибут на "Система_1С"
которая являлась бы объектом
в смысле (по своей сути) таким же как любой другой  
созданный при помощи СоздатьОбъект()
и при этом является  static / constant / singleton .....

Тогда с этим объектом можно будет что-то делать...
В частности, полагаю, перехватывать....
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать