Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите какие-нить функции по парсингу модулей. Может есть коллекции =)

Подскажите какие-нить функции по парсингу модулей. Может есть коллекции =)
Я
   SeiOkami
 
04.01.13 - 18:03
Могу, конечно, и самому писать, но это безсмысленное занятие, если они есть уже готовые. К примеру, сейчас нужна функция, получающая из текста модуля вызов определенной функции и её параметры.
 
 
   zak555
 
1 - 04.01.13 - 18:04
для какой цели ?
   Сергей Д
 
2 - 04.01.13 - 18:06
Есть конфигурация "Автоматизированная проверка конфигураций". Из нее можно выдрать работу с модулями. Если вкратце, то там все модули выгружаются в текстовый файлы (1 модуль - 1 файл), а потом эти файлы обрабатываются. В частности есть там поиск неиспользуемых функций и процедур.
   SeiOkami
 
3 - 04.01.13 - 18:08
(1), Обработку пишу. Для реализации задачи необходимо, чтобы обработка находила вызов процедуры в предоставленном коде, определяла параметры и заполняла всё в ТЧ
(2), Спасибо, сейчас поищу. А есть что-нить ещё?
   Сергей Д
 
4 - 04.01.13 - 18:09
(3) Не слышал
   SeiOkami
 
5 - 04.01.13 - 18:40
Полазил и понял, что легче уж самому написать...
   ПТР
 
6 - 04.01.13 - 19:25
Может кто ответит на следующий вопрос:
1.Можно ли и если можно, то как,  процедурой открытого приложения выгрузить или загрузить тексты модулей собственной или любой другой конфигурации.
Вариант "выгрузки - загрузки" командой из конфигуратора не предлагать.
   SeiOkami
 
7 - 04.01.13 - 19:37
(6), сам ооочень долго мучился.

Смотря что тебя интересует. Если именно "конфигурации", т.е. файла-конфигурации, то смотри: http://infostart.ru/public/106310/
(я на чисто для себя сделал простую обработочку для распаковки\упаковки обработок: http://infostart.ru/public/155950/ )
   acsent
 
8 - 04.01.13 - 19:37
goldparser
   SeiOkami
 
9 - 04.01.13 - 19:38
Вот функция, которую искал. Только что написал, может кому пригодится:


//Возвращает массив с параметрами, передаваемыми в функцию\процедуру
 
//
 //ПРИМЕР:
 
//    МассивПараметров = ПолучитьМассивПараметров("Печать(Ссылка, "Счет", КоличествоЭкземпляров, ПолучитьЗаголовокДокумента(Ссылка));
 //
 
//В результате получим МассивПараметров с содержимым:
 //                                                        Ссылка
 
//                                                        "Счет"
 //                                                        КоличествоЭкземпляров
 
//                                                        ПолучитьЗаголовокДокумента(Ссылка)
 //
 
//SeiOkami    01_04_2012
 //
 
Функция ПолучитьМассивПараметров(ТекстВызоваФункции) Экспорт
    
    Текст = СокрЛП(ТекстВызоваФункции);
    
    МассивПараметров = Новый Массив;
    
    Если ПустаяСтрока(Текст) тогда
        Возврат МассивПараметров ;
    КонецЕсли;
    
   //кр - координата
 
    
    крТочкиСЗапятой = Найти(Текст, ";");
    Текст = Лев(Текст, крТочкиСЗапятой - 1);
    
    крОткрСкобки = Найти(Текст, "(");
    Текст = Прав(Текст, СтрДлина(Текст) - крОткрСкобки);
    
        
    Пока НЕ ПустаяСтрока(Текст) цикл
        
        крЗапятой = Найти(Текст, ",");
        крОткрСкобки = Найти(Текст, "(");
        крЗакрСкобки = Найти(Текст, ")");
        
        Если крЗапятой = 0 и  крОткрСкобки = 0 и крЗакрСкобки = 0 тогда
            Прервать;
        КонецЕсли;        
        
        Если крОткрСкобки = 0 тогда
            Если крЗапятой = 0 тогда
                Если крЗакрСкобки = 0 тогда
                    Прервать;
                Иначе
                    Параметр = Лев(Текст, крЗакрСкобки - 1);
                    Текст =  Прав(Текст, СтрДлина(Текст) - крЗакрСкобки);
                КонецЕсли;
            Иначе
                Параметр = Лев(Текст, крЗапятой - 1);        
                Текст = Прав(Текст, СтрДлина(Текст) - крЗапятой);
            КонецЕсли;
        Иначе
            Если крОткрСкобки < крЗапятой ИЛИ крЗапятой = 0 тогда
                Параметр = Лев(Текст, крЗакрСкобки);
                Текст = Прав(Текст, СтрДлина(Текст) - крЗакрСкобки);
            Иначе
                Параметр = Лев(Текст, крЗапятой - 1);        
                Текст = Прав(Текст, СтрДлина(Текст) - крЗапятой); 
            КонецЕсли;            
        КонецЕсли;
        
        Параметр = СокрЛП(Параметр);
        
        Если Не ПустаяСтрока(Параметр) тогда
            МассивПараметров.Добавить(Параметр);         
        КонецЕсли;
        
        Текст = СокрЛП(Текст);
        
    КонецЦикла; 
    
    Возврат МассивПараметров;
    
КонецФункции
   SeiOkami
 
10 - 04.01.13 - 19:40
Вот правильное описание:


//Возвращает массив с параметрами, передаваемыми в функцию\процедуру
 
//
 //ПРИМЕР:
 
//    ТекстВызоваФункции = "Печать(Ссылка, "Счет", КоличествоЭкземпляров, ПолучитьЗаголовокДокумента(Ссылка)";
 //    МассивПараметров = ПолучитьМассивПараметров(ТекстВызоваФункции);
 
//
 //В результате получим МассивПараметров с содержимым:
 
//                                                        Ссылка
 //                                                        "Счет"
 
//                                                        КоличествоЭкземпляров
 //                                                        ПолучитьЗаголовокДокумента(Ссылка)
 
//
 //SeiOkami    01_04_2012
 
//
 
 Рекламное место пустует
   SeiOkami
 
11 - 04.01.13 - 19:43
Может что-то не верно. Тыкните =)
   acsent
 
12 - 04.01.13 - 19:47
перенос строк норм отрабатывает?
   acsent
 
13 - 04.01.13 - 19:47
а строковые литералы с запятыми?
   SeiOkami
 
14 - 04.01.13 - 19:48
(12), должна, так как постоянно СокрЛП делает.
Я тестил на таком вызове

        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм,
            "АвансовыйОтчет",
            "Авансовый отчет",
            СформироватьПечатнуюФормуАвансовогоОтчета(МассивОбъектов, ОбъектыПечати)
        );
   SeiOkami
 
15 - 04.01.13 - 19:49
(13), не совсем понял, что есть  "строковые литералы с запятыми" =)
   hhhh
 
16 - 04.01.13 - 23:14
"Авансовый,, отчет"
   stal76
 
17 - 04.01.13 - 23:28
   SeiOkami
 
18 - 05.01.13 - 00:46
(17), Спасибо, сейчас поковыряю !)
(16), не понял что это значит
   Конфигуратор1с
 
19 - 05.01.13 - 00:47
(18) Если в модуле написано допустим УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм,
            "АвансовыйОтчет",
            "Авансовый . , отчет",
            СформироватьПечатнуюФормуАвансовогоОтчета(МассивОбъектов, ОбъектыПечати)
        );
   SeiOkami
 
20 - 05.01.13 - 00:50
(19), хм... об этом не подумал. Надо исправить. Спасибо)
   SeiOkami
 
21 - 05.01.13 - 17:36
(8), нашел я goldparser (в инструментах разработчика) и нашел грамматику восьмерки ( http://itland.ru/forum//index.php?showtopic=16752 ).

Может кто подсказать как с ним теперь оперировать? Киньте ссылку где можно почитать, пожалуйста =)
   HeroShima
 
22 - 05.01.13 - 18:05
(21) ссенкс за ссыль
   SeiOkami
 
23 - 05.01.13 - 18:14
(22), теперь бы понять как эта dll работает...
   HeroShima
 
24 - 05.01.13 - 18:26
+(22) при регистрации спрашивает: "Это контрольный вопрос против ботов. Введите названия фирмы, продуктам которой посвящен данный форум. Вводите на русском"
- вводил тонну вариантов 1c и ITLand - ничего не берёт. Кто может подсказать чего им нужно?
   SeiOkami
 
25 - 05.01.13 - 18:29
(24), я вводил 1с и зарегало.
   HeroShima
 
26 - 05.01.13 - 18:41
(25) никак...
   acsent
 
27 - 05.01.13 - 18:46
(26) по русски/английски?
   HeroShima
 
28 - 05.01.13 - 18:47
   acsent
 
29 - 05.01.13 - 18:48
(28) да ты робот просто ))
   HeroShima
 
30 - 05.01.13 - 18:56
(29) спасибо на добром слове)
(23) насколько я помню, их движку скармливается скомпилированная их же инструментом грамматика и исходник. На выходе получаем дерево структуры, или около того.
   SeiOkami
 
31 - 05.01.13 - 18:58
Если есть у кого код с примером использования, скиньте пожалуйста.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует