artbear 10.02.2005 - 09:14 |
Шоу продолжается :) Начнем 16 ветку о Телепате и Опенконфе - программирование для Конфигуратора, облегчение работы разработчиков 1С! Для тех, кто только что присоединился. -------------------------------------------------------------------- Автор всего этого набора чудес - Александр Орефков aka orefkov -------------------------------------------------------------------- Сабж + скрипты для Опенконф (сайт автора) http://openconf.itland.ru/beta Последние версии (на 10.02.05) OpenConf 1.0.1.18 - http://openconf.itland.ru/beta/ocb1018.zip Телепат 2.0.0.0r (beta) - http://openconf.itland.ru/beta/telepatr.zip -------------------------------------------------------------------- FAQ http://1c.alterplast.ru/faq/telepat.html http://1c.alterplast.ru/faq/openconf.html Предыдущие ветки о Телепате/Опенконфе можно взять на страничке http://1c.alterplast.ru/faq/telepat.html -------------------------------------------------------------------- Другие плагины/скрипты для Опенконфа можно взять в Клубе Профессионалов http://1c.proclub.ru/modules/mydownloads/viewcat.php?op=&cid=1002 ---------------------------------------------------- На сайте Федора Езеева (fez) организован репозитарий скриптов для Опенконф. Как правило, последние версии большинства скриптов будут находиться именно там. По адресу http://1c.alterplast.ru/files/ocs/ocs_last.zip всегда будет лежать самый последний снимок скриптов из репозитария. А в папке http://1c.alterplast.ru/files/ocs/ будут лежать архивы с ежедневными снимками репозитория (по датам) -------------------------------------------------------------------- На itland.ru есть специальный форум для обсуждения именно Опенконфа и его плагинов (в т.ч. и Телепата) http://itland.ru/forum/index.php?showforum=37 Если у кого есть что-то интересное для Опенконфа - плагины, скрипты, присылайте мне, я размещу на http://openconf.itland.ru ---------------------------------------------------- Также для разработчиков скриптов существует толк-лист http://groups-beta.google.com/group/OpenConf-Devel/ Открытый на чтение для всех. Для того, чтобы принять в нем участие не только в качестве читателя, имеет смысл зарегистрироваться на Гугле и подписаться на нашу группу (ссылка Join this group). Почтовый адрес листа рассылки - OpenConf-Devel@googlegroups.com
|
artbear 1 - 10.02.2005 - 09:17 |
(ALL) ВНИМАНИЕ -------------------------------------------------- Появилась возможность автоматического получения скриптов из репозитария через Веб. Всегда актуальный (самый последний) снимок скриптов из репозитария http://1c.alterplast.ru/files/ocs/ocs_last.zip. |
artbear 2 - 10.02.2005 - 09:51 |
(MetaEditor) Очень понравился скрипт открытия свойств/окна редактирования для метаданного! ЗЫ Так держать!! ЗЗЫ Еще бы узнать, как с закладками конфигурации работать, было бы вообще супер! |
skafandr 3 - 10.02.2005 - 10:31 |
(1)Ребята, по поводу http://1c.alterplast.ru/files/ocs/ocs_last.zip внутри вместо русских названий - кракозябры можно как-то порешать |
MetaEditor 4 - 10.02.2005 - 10:38 |
2)странный там TabControl... непосылаются ему сообщения... 3)открывай 7zip'ом... там нормально |
trdm 5 - 10.02.2005 - 10:42 |
(4-2) Попробуй {ctrl}+{PgUp/PgDown}? У меня вылетает.. :( |
skafandr 6 - 10.02.2005 - 10:47 |
(4) Ставить 7zip только для одного случая ? (1)Наверно все-таки логичнее в Windows кодировке,если это не сильно напряжно ... |
fez 7 - 10.02.2005 - 14:05 |
(6) А чем ты открываешь? Ну и вообще - 7zip поддерживает большинство известных форматов, так что можно его поставить не для одного случая, а просто поменять на него свой любимый архиватор :) |
gemx 8 - 10.02.2005 - 14:25 |
есть кучка вопросов, может кто-нибудь поможет? скачал ocs-2005-02-10.zip попробовал установить навигацию, ругается следующим образом: ----- Не могу создать объект OpenConf.CommonServices Скрипт Навигация не загружен Не могу создать объект OpenConf.CommonServices Скрипт Открыть файл из директивы ЗагрузитьИзФайла не загружен Не могу создать объект OpenConf.CommonServices Скрипт Переходы по модулю не загружен ---- что нужно сделать, чтобы этот скрипт заработал? Скрипты можно в отдельные папки записывать в папке \scripts ? |
artbear 9 - 10.02.2005 - 14:32 |
(8) А папка "СистемныеФайлы" в дистрибутиве тебе ни о чем не говорит? ЗЫ Зайди туда и почитай ридми |
a13x 10 - 10.02.2005 - 14:36 |
(9) я же кажется говорил, что это только прибавит вопросов |
gemx 11 - 10.02.2005 - 14:39 |
читал и до того как 8 написал, все полностью из Системных файлов скопировал в папку Scripts. |
a13x 12 - 10.02.2005 - 14:43 |
(11) там врядли такое написано файлы из этой папки надо скопировать в какую нибудь другую папку, только ни в коем случае не в папку scripts более того, все *.wsc и *.dll файлы после копирования надо зарегимстрировать с помощью утилиты regsvr32 |
gemx 13 - 10.02.2005 - 14:47 |
(11) прошу прощения, копировал не в scripts, а в config и регистрировал dll (10) Imho, было бы лучше делать архив полностью работоспособный таким каким он должен лежать в Config. Чтобы можно было бы полностью переписать у себя и не париться |
a13x 14 - 10.02.2005 - 15:01 |
(13) ААААААААААА!!!!!!!!!!! Где тут те, кто говорил, "дайте нам как есть, а мы разберемся"??????? Вот и разбирайтесь между собой, блин. . Уффф... . Пожалуйста, будте внимательны. В исходном посте каждой ветки дано кучу ссылок, в том числе и на предыдущие ветки. Если есть вопросы, начните с них. Скажете - там много мусора и флуда? Да. Но флуд в большинстве случаев там появляется только потому, что его авторы не читали предыдущих веток. . Кстати, вы тоже можете внести свой вклад. Сохраните себе эти ветки и прополите в них флуд, сгруппируйте похожие и одинаковые вопросы, отредактуруйте и пришлите artbear'у, fez'у или мне, на худой конец. И сами разберетесь и вам спасибо скажут |
Палыч 15 - 10.02.2005 - 15:17 |
a13x Да и с дистрибутивом будет та-же беда. Только пакеты! |
a13x 16 - 10.02.2005 - 15:32 |
(15) почему? запустил - все установилось, зарегилось и настроилось? давай, ты реализуешь такой вариант - я просто в принципе не вижу его отличия от того, что есть сейчас |
a13x 17 - 10.02.2005 - 15:36 |
(+16) под "таким" я имел в виду "пакеты" |
fez 18 - 10.02.2005 - 15:42 |
Предыдущую ветку положил куда обычно. |
Палыч 19 - 10.02.2005 - 15:52 |
(16) А почему обновление измененной типовой конфигурации не сводится просто к загрузке измененной конфигурации? Так же и здесь: чем меньше зависимость между отдельными скриптами, тем меньше гемора при обновлении. зы: ну я уже писал на гугле, что это - исключительно имхо, расценивай, просто как здоровый скептицизм ;-) |
trdm 20 - 10.02.2005 - 15:53 |
(14) Поддерживаю: ААААААААААААААААААААААА!!!!!!!!!!!!!!!! ))))))))))))))) А вообще статус сборника надо обозначить как ресурс для разработчиков, а не готовое решение...... и greenov in the FAQ |
gemx 21 - 10.02.2005 - 16:07 |
разобрался (не зарегил *.wsc), заработало, спасибо Но, почему-то перестал работать скрипт Меню всех макросов, т.е. нет меню скриптов по Ctrl-2 |
a13x 22 - 10.02.2005 - 16:36 |
никто не сталкивался с траблой: при создании объекта OpenConf.CommonServices ругается на то, что не может создать объект и бла-бла (уже внутри КоммонСервиса) опытным путем определил, что это из за создания объекта Scripting.FileSystem, создается он там с помощью <object ...> следом за ним такой же <object для WScript.Shell меняю местами эти строчки - все работает меняю обратно - опять ругается Win2k Server, все последнее, включая scripting engine и его компоненты точно знаю, что под хп таких проблем нет и небыло в чем может быть причина? |
Oblomov 23 - 10.02.2005 - 17:32 |
http://1c.alterplast.ru/files/ocs/ocs_last.zip не скачиваеться. |
trdm 24 - 10.02.2005 - 18:15 |
(23) скачивается... (22) не сталкивался... но это уже не первый трабл "порядка строк".... |
Oblomov 25 - 10.02.2005 - 18:23 |
Скачалось. Теперь другой вопрос, чем зажимали, пошто так названия каталогов испоганили? |
fez 26 - 10.02.2005 - 18:24 |
Пробую перед запаковкой переименовывать файлы в cp866, чтобы досовые pkunzip'ы нормально работали. Ерунда получается, ибо папка {СистемныеФайлы} переименовывается в {'Ёбв_┐-л_"_c<л}. Взял в скобки, поскольку кавычки оказываются значимыми. То есть. После перекодировки получается невозможное имя файла. P.S. Встречу Билли - убью. |
fez 27 - 10.02.2005 - 18:26 |
(25) Чукча не читатель, чукча писатель? |
Oblomov 28 - 10.02.2005 - 18:35 |
2(27) Чукча аднака не дурак. Чем разжимать в ветке есть, а чем зажимали, в ветке нету аднака. Так шта не нада балона катить аднака. |
MetaEditor 29 - 10.02.2005 - 19:06 |
=============================================== GoToMDTreeItem.vbs http://1c.proclub.ru/modules/mydownloads/personal.php?lid=4826&cid=1001 теперь работает с любой закладки =============================================== Описание: Скрипт позволяет осуществить быстрый переход к элементу дерева метаданных и открыть окно свойств элемента, окно редактирования элемента, окно описания элемента или диалог "Сохранить как внешний отчёт(обработку)...(для отчётов и обработок) Установка: 1) Зарегистрировать файл dynwrap.dll (Пуск - Выполнить - "regsvr32 dynwrap.dll") 2) Скопировать файл GoToMDTreeItem.vbs в <КаталогПрограммы>\Config\Scripts 3) из других скриптов макрос GoToMDTreeItem вызывается,например, следующим образом: Set GotoTreeScript = scripts("gotomdtreeitem") ObjDescr = "Документ.ПриходныйКассовый" GotoTreeScript.GoToMDTreeItem ObjDescr,1 где второй параметр - это: 1 - открыть окно редактирования элемента 2 - открыть окно свойств элемента 3 - открыть окно описания элемента 4 - сохранить как внешний(для отчётов и обработок) Доп. комментарий и примеры вызова находятся внутри скрипта. =============================================== |
fez 30 - 10.02.2005 - 19:10 |
(28) Линуксовым zip'ом. Легче стало? Просто проблема не в нем, а в том, что линь хранит русские имена файлов в кодировке локали (у меня - win-1251). А винда - в cp866. |
Oblomov 31 - 10.02.2005 - 19:18 |
2(30) Может ну её нафих эту кирилицу в именах файлов и каталогов? |
fez 32 - 10.02.2005 - 19:21 |
(31) Это не ко мне. |
Oblomov 33 - 10.02.2005 - 19:28 |
2(31) Скажи к кому, я ему скажу. |
Тертый 34 - 10.02.2005 - 19:30 |
29) Прикольно, но кроме как повесить на хоткей и открывать в дереве ветки метаданных, не приходит в голову, как его применить... Т.е. он вроде промежуточного звена для разработчиков скриптов создан? |
fez 35 - 10.02.2005 - 19:31 |
Кто-нибудь попробуйте качнуть http://1c.alterplast.ru/files/ocs/new_ocs-2005-02-10.zip - посмотрите, как там с русскими именами? |
Oblomov 36 - 10.02.2005 - 19:33 |
2(35) Нормалды :-) маладэц. |
MetaEditor 37 - 10.02.2005 - 19:36 |
34)я так думаю, что место ему определят в "Навигации"... а пока можешь повесить на хоткей свой лбимый документ или справочник ;) |
fez 38 - 10.02.2005 - 19:37 |
(36) Зашибца. Все же добрый гений Торвальдса побеждает злой гений Билли. А все проблемы - как всегда - из-за кривых ручек (при переименовании файлов зачем-то в каждое имя докладывал в конце перевод строки). |
Тертый 39 - 10.02.2005 - 19:38 |
Федор,смотрел в ТоталКМНД, усе читается нормально. Все по-российски... |
Тертый 40 - 10.02.2005 - 19:40 |
37) ясно. Жаль, что я не скриптописатель. |
slavka 41 - 10.02.2005 - 19:43 |
(26) killbill 3 типа будет? ;) |
fez 42 - 10.02.2005 - 19:45 |
(38+) Тогда я сегодня оставлю все как есть, а уже завтрашний архив сформируется нормально. |
fez 43 - 10.02.2005 - 19:47 |
(41) Не, шоу отменяется. Бобро как всегда победило зло. |
fez 44 - 10.02.2005 - 19:49 |
Тля!!! Теперь в 7-zip'е лажа!!! |
Oblomov 45 - 10.02.2005 - 19:52 |
2(44) Ты, ета, думай чо пишешь! Я чуть кофием не поперхнулся. |
fez 46 - 10.02.2005 - 19:53 |
(45) Меньше кофа надо пить. Блин, похоже придется два архива собирать. |
Тертый 47 - 10.02.2005 - 19:55 |
46) а винраром паковать слабо? |
Тертый 48 - 10.02.2005 - 19:58 |
Млин, ну сделайте кто-нить панель инструментов для всех скриптов и приблуд.... голова болит , когда хоткей придумываешь новый! |
Oblomov 49 - 10.02.2005 - 19:59 |
+47 Под маздаем. |
slavka 50 - 10.02.2005 - 20:15 |
(43) Федь, ты это ... уточняй про шоу. многие подумали про которое artbear пишет в начале каждой ветки. (46) Надо, Федя, надо. :) (с) "джентельмены удачи" |
fez 51 - 10.02.2005 - 20:44 |
Короче так. Для тех клевых парней, кто пользуется 7-zip и прочими продвинутыми архиваторами - будет формироваться архив с именем типа http://1c.alterplast.ru/files/ocs/ocs-2005-02-10.win.zip А для тех несчастных, кто все еще сидит на досовом наследии - будет формироваться файл с именем типа http://1c.alterplast.ru/files/ocs/ocs-2005-02-10.dos.zip Аналогичным образом раздвоится и ссылка на последний (сегодняшний) архив. . Посмотреть можно уже сейчас. . (47, 49) А зачем? |
Phoenix 52 - 10.02.2005 - 20:51 |
(29) стукнись плиз в асю 127428542 есть вопрос по скрипту. |
Oblomov 53 - 10.02.2005 - 21:10 |
2(51) Чё не ведёшься на "Слабо"? ;-) Да ладно, два архива, так два. |
slavka 54 - 11.02.2005 - 01:30 |
подскажите плиз как можно узнать число вхождений одной строки в другой. напр есть строка "Территория 1С" нужно узнать сколько раз встречается буква "р" например. ЗЫ. без цикла. в скрипте на vb. |
MetaEditor 55 - 11.02.2005 - 05:15 |
54) можно так UBound(Split("Территория 1С","р")) |
Палыч 56 - 11.02.2005 - 07:56 |
(54) set re = New RegExp re.Pattern = "(р)" re.IgnoreCase = True re.Global = True WScript.Echo(re.Execute("Территория 1С").Count) |
slavka 57 - 11.02.2005 - 10:15 |
(55,56) сенкс попробую |
Тертый 58 - 11.02.2005 - 10:19 |
57)Это ты скрипт для переноса настроек делаешь? |
slavka 59 - 11.02.2005 - 10:23 |
(58) ага. седня artbear'у и a13x отправил потестить. |
MetaEditor 60 - 11.02.2005 - 10:25 |
59) и мне и мне тоже... если можно |
Тертый 61 - 11.02.2005 - 10:28 |
60) В Попрошайку! :)))) 59) Когда выложишь? Примерно хоть? |
slavka 62 - 11.02.2005 - 12:24 |
(60) ушло. (61) тесты покажут :) |
ShootNICK 63 - 11.02.2005 - 17:00 |
хрень какая то... открываю скрипты в конфигураторе - тексты функций обрезаются.. видать там вместо перевода строки другие какие символы понапиханы...1с этого не люит и вылетает... |
trdm 64 - 12.02.2005 - 13:27 |
А что нужно сделать, для того что-бы можно было к плагину обратиться из скриптов? Плагин на VC++ 6.0. И почему у меня Рихтеровские примеры ругаются на неактуальность SDK и как её обновить? |
trdm 65 - 12.02.2005 - 13:48 |
Есть мысли по оптимизации сего кода: 'Задача - ГЛОБАЛЬНО Получить список процедур/функций модуля, + научиться позиционироваться на них ' научиться распознавать вызовы процедуры/функции, определять её "рабочие" переменные ' и соот-но отпарсить ' ЛОКАЛЬНО - получить список процедур/функций модуля с координатами - строка начала/конца ' и определить является ли конструкция ТаблСтрок = глСформироватьТаблицуДокумента(Контекст) ' вызовом функци из конкретного модуля Class TheModuleItem ' Содержит процедуру/функцию модуля и её параметры.... Public TypeItem ' Тип итема: 0 - описание переменных и предописание процедур и функций.. ' 1 - процедра ' 2 - функция ' -1 - не распознан Public Name ' Имя процедуры / функции. Public NameFull ' Имя полное процедуры / функции. Public LineStart ' Строка, где начинается функция/процедура Public LineEnd ' Строка, где заканчивается Public LenthText ' Длинна текста Public Parameters ' Строка переменных с именами параметров ч/з запятую Public Text ' Полный текст функции Public TextBezKommet ' Полный текст функции, но без комментариев.. Public RetValueStr ' Имя переменной возвращаемой функцией... Private Sub Class_Initialize TypeItem = -1 Name = "" LineStart = 0 LineEnd = 0 Parameters = "" Text = "" TextBezKommet="" RetValueStr = "" End Sub Function GetParamNumber(NumberP) tNumberP = Int(NumberP) tNumberP = tNumberP - 1 GetParamNumber = "" if Len(Parameters)>0 And tNumberP>0 Then ArrParameters = Split(Parameters,",") If UBound(ArrParameters)<>-1 Then If UBound(ArrParameters)<=tNumberP Then GetParamNumber = ArrParameters(tNumberP) End If End If End If End Function End Class |
trdm 66 - 12.02.2005 - 13:51 |
Class TheModule Public ModuleName ' Имя модуля Public CounItem 'Количество процедур/функций Public CounLine 'Количество строк в модуле когда он отсканирован... Public ArrItem 'Массив процедур/функций модуля класс "TheModuleItem" Public ModuleDoc 'Документ модуля (типа "Text") Public NamesAllProcFunk ' Все процедуры функции модуля в формате /ИмяПроц/ИмяПроц2/.../и т.д. Private Sub Class_Initialize ModuleName = "" ' Имя модуля CounItem = "" 'Количество процедур/функций ArrItem = Array("") NamesAllProcFunk = "/" End Sub Function IsProcedure(NameProc, LineS, LineE, TypePF, TextProcFunk,TheProc) IsProcedure = False if IsArray(ArrItem) Then If Len(NameProc)>0 Then If InStr(1,LCase(NamesAllProcFunk),LCase("/" & TRim(NameProc) & "/"))>0 Then For qqq = 0 To UBound(ArrItem) IF LCase(ArrItem(qqq).Name) = LCase(TRim(NameProc)) Then 'Проверим не сбился ли у нас нумератор строк в итеме... If InStr(1, LCase(ModuleDoc.Range(ArrItem(qqq).LineStart-1)), LCase(TRim(NameProc)))>0 Then IsProcedure = True LineS = ArrItem(qqq).LineStart LineE = ArrItem(qqq).LineEnd TextProcFunk = ArrItem(qqq).Text Set TheProc = ArrItem(qqq) Else Message "Модуль откорректировали, нужна переинициализация!" End IF End IF Next End IF End IF else Message "Модуль не инициализирован!" End IF 'ArrItem = Array("") End Function Sub SetDoc(Doc) Set ModuleDoc = Doc ModuleName = Doc.Name End Sub |
trdm 67 - 12.02.2005 - 13:55 |
Sub InitializeModule(ExtractAll) GetAllProcFunc(ModuleDoc.Text) if (ExtractAll=1) Then ExtractNameAndOther() End IF End Sub Sub ReDimModule (cnt) ReDim ArrItem(cnt) End Sub Sub Listing () For ee = 0 To UBound(ArrItem) If Not IsEmpty(ArrItem(ee)) Then Message ArrItem(ee).LineStart & " " & ArrItem(ee).LineEnd & " " & ArrItem(ee).Parameters & " " End If Next End Sub Sub VerifyPosition(FuncProcName, Position) MinPos = 0 MaxPos = ModuleDoc.LineCount SkipPosition = Position 'Position = -1 'Проверка окончилась пшиком For qq = 0 To 50 If qq = 0 Then ElseIf qq/2 = qq\2 Then 'Кратно двум проверяем сверху SkipPosition = Position - qq Else SkipPosition = Position + qq End IF If (SkipPosition>=MinPos) And (SkipPosition<=MaxPos) Then ttext = ModuleDoc.Range(SkipPosition) If InStr(1,LCase(ttext),LCase(FuncProcName))=1 Then Position = SkipPosition Exit For End IF End IF Next End Sub '========================================== 'Попытка выровнять смещения процерур и функций... актульно для глобального модуля.. Sub VerifyAndRecalcPosition() MinPos = 0 MaxPos = ModuleDoc.LineCount AddDeleteLines = ModuleDoc.LineCount - MaxPos If CounLine <> ModuleDoc.LineCount And False Then ' Пока отложим.. 'Прямой проход... для "Правильных сначала" For ee = 0 To UBound(ArrItem) If Not IsEmpty(ArrItem(ee)) Then 'ArrItem(ee).NameFull End IF Next End IF CounLine = ModuleDoc.LineCount End Sub Sub ExtractNameAndOther() For ee = 0 To UBound(ArrItem) If Not IsEmpty(ArrItem(ee)) Then ' Выделяем имя и тип процедура или функция ArrItem(ee).NameFull = ArrItem(ee).Name tName = FindInStrEx("(Функция|Function|Процедура|Procedure)+[\s]+[" & cnstRExWORD &"]+[\s]*[\(]+",ArrItem(ee).Name) tType = FindInStrEx("(Функция|Function|Процедура|Procedure)+[\s]+",tName) tName = ReplaceEx(tName, Array(tType,"", "(","")) tName = Trim(tName) tType = UCAse(Trim(tType)) ArrItem(ee).Name = tName NamesAllProcFunk = NamesAllProcFunk & lCase(tName) & "/" Select case tType case "ФУНКЦИЯ": ArrItem(ee).TypeItem = 2 case "FUNCTION": ArrItem(ee).TypeItem = 2 case "ПРОЦЕДУРА" ArrItem(ee).TypeItem = 1 case "PROCEDURE" ArrItem(ee).TypeItem = 1 end select ' Выделяем параметры... tName = FindInStrEx("(Функция|Function|Процедура|Procedure)+[\s]+[" & cnstRExWORD &"]+[\s]*[\(]+",ArrItem(ee).NameFull) 'Легкий путь tName = "(" &Replace(ArrItem(ee).NameFull,tName,"") tName = ReplaceEx(tName, Array("(","", ")","")) ' Находим присвоения ТраЛяЛя = "что-то" tStr = FindInStrEx("\=+\s*("")+\s*[" & cnstRExWORD &",\.\\\/\s]*\s*("")+",tName) If Len(tStr)>0 Then tArr = Split(tStr,vbCrLf) tName = ClearInSring(tName, tArr) End If tStr = FindInStrEx("\=+\s*[""""]+",tName) If Len(tStr)>0 Then tArr = Split(tStr,vbCrLf) tName = ClearInSring(tName, tArr) End If tStr = FindInStrEx("\=+\s*[0-9\.]+",tName) If Len(tStr)>0 Then tArr = Split(tStr,vbCrLf) tName = ClearInSring(tName, tArr) End If tName = LCase(tName) tArr = Split(tName,",") If UBound(tArr)<>-1 Then For qq = 0 To UBound(tArr) tArr(qq) = Trim(tArr(qq)) If Len(tArr(qq))>0 Then tArr(qq) = Replace(tArr(qq), "знач ","") End If Next ArrItem(ee).Parameters = Join(tArr,",") End If End If Next End Sub |
trdm 68 - 12.02.2005 - 13:59 |
Private Sub GetAllProcFunc(textModule) ',ArrNameProcFunc, ArrTextProcFunc) CounLine = ModuleDoc.LineCount Patern = "(Функция|Function|Процедура|Procedure)+[\s]+[" & cnstRExWORD &"]+[\s]*[\(]+[" & cnstRExWORD &"=, \t""]*[\)]*" '\s*(Экспорт|Expotr)*\s*(Далее|Forward)*" '-плоховато выходит ttextPF = FindInStrEx(Patern,textModule) ArrNameProcFunc = Array("") ArrForLocText = "" PosithionInModule = 0 ttextPFCurent = "" 'ttextPF = Replace(ttextPF,"(","") If Len(ttextPF)>0 Then ArrNameProcFunc = Split(ttextPF, vbCrLf) If UBound(ArrNameProcFunc)>0 Then ReDimModule UBound(ArrNameProcFunc) CounItem = UBound(ArrNameProcFunc) For ee = 0 To UBound(ArrNameProcFunc)-1 : Status "Поиск фукц/проц.... " & GetProcent(ee, UBound(ArrNameProcFunc)) 'Идея такая берем итем N из массива и итем N+1 и Выгрызаем текст между ними. 'итем представляет собой заголовок процедуры ' отключим пока... 'Message ArrNameProcFunc(ee) Set ItemModule = New TheModuleItem Pos1 = InStr(1, textModule,ArrNameProcFunc(ee)) if ee = 0 Then 'Первое вхождение в процедуру - Вычислим смещение строки ttextPFCurent = Mid(textModule,1,pos1) ArrForLocText = Split(ttextPFCurent,vbCrLf) PosithionInModule = UBound(ArrForLocText) if (PosithionInModule = -1) Then PosithionInModule = 1 Else PosithionInModule = PosithionInModule + 1 End IF End IF VerifyPosition ArrNameProcFunc(ee), PosithionInModule Pos2 = InStr(1, textModule,ArrNameProcFunc(ee+1)) ttextPFCurent = Mid(textModule,pos1,Pos2-pos1) ItemModule.LenthText = Pos2-pos1 ItemModule.Text = ttextPFCurent ArrForLocText = Split(ttextPFCurent,vbCrLf) ItemModule.LineStart = PosithionInModule PosithionInModule = PosithionInModule + UBound(ArrForLocText) ItemModule.LineEnd = PosithionInModule-1 ItemModule.Name = ArrNameProcFunc(ee) Set ArrItem(ee) = ItemModule textModule = Mid(textModule,Pos2) Next End IF End if Set ItemModule = New TheModuleItem ItemModule.Text = textModule ArrForLocText = Split(textModule,vbCrLf) ItemModule.LineStart = PosithionInModule PosithionInModule = PosithionInModule + UBound(ArrForLocText) ItemModule.LineEnd = PosithionInModule ItemModule.Name = ArrNameProcFunc( UBound(ArrNameProcFunc)) Set ArrItem(ee) = ItemModule Status "" End Sub End Class Sub NewInicializeModule() 'Демонстрация инициализации модуля.. Set LocalModule = New TheModule doc = "" if Not CheckWindow(doc) then Exit Sub LocalModule.SetDoc(doc) LocalModule.InitializeModule(1) LocalModule.Listing End Sub |
MetaEditor 69 - 12.02.2005 - 14:01 |
63)у меня ковсему прочему ещё и сжирает весь процессор и файл подкачки и если не завершить процесс, то конец... такое со всеми снимками из репозитария... Ворд видит текст скриптов в японской кодировке... приходится опятьже через ворд сохранять как текст - тогда работет... 64) в скрипте telepat, например смотри процедуру Init Set t = Plugins("Телепат") SelfScript.AddNamedItem "Telepat", t, False Telepat.Components = 1 + 2 + 4 итд, если ты про это... |
trdm 70 - 12.02.2005 - 14:08 |
(69) Я про то, что нужно сделать в плагине, чтобы использовать его из скриптов... (65-68) блин... пока выкладывал, нашел ошибку... ((( |
artbear 71 - 12.02.2005 - 15:30 |
(trdm) ИМХО тебе нужно этот код выложить куда-нибудь в виде плагина на ВБ для Опенконф. ЧТобы мы могли сразу сверить работу |
trdm 72 - 12.02.2005 - 16:02 |
Вообщето (65-68) было к вопросу: Как ускорить выполнение этого кода.. |
artbear 73 - 13.02.2005 - 18:06 |
Кто-нибудь знает число для SendCommand - переход к определенной строке текста модуля? |
artbear 74 - 13.02.2005 - 18:25 |
(73+) function ПерейтиКСтроке() { SendCommand(33283) } // Переход к строке по номеру ЗЫ хотя можно было и скриптец наваять за пару минут, конечно :) |
slavka 75 - 13.02.2005 - 22:32 |
Господа плагинописатели! Было бы очень хорошо если бы кто-нибудь написал универсальный плагин, который будет показывать форму подобную той которая у плагина "Телепат". Тогда можно бы было из скриптов передавать в него значения, плагин их обрабатывает и показывает форму, пользователь ставит нужные значения и затем можно их сохранить в реестре/ини-файлах для дальнейшего использования при работе скрипта. |
trdm 76 - 14.02.2005 - 00:01 |
(75) Для данной цели можно использовать 2 варианта (как я понял тебе нужны галочки?) 1 - SelectValue из Svcsvc.dll SelectValue(ByVal Values As String,ByVal Caption As String,ByVal Mark As boolean=False) As String Обрати внимание на Mark As boolean Mark true для пометки нескольких значений, false для выбора одного значения. Необязательный параметр. По умолчанию False. 2 - плагин iexplorer, куда в web интерфейс столько галочек можно насовать сколько и в природе не существует.. да еще ко всему и с пояснениями... ... какой вариант выберешь? |
artbear 77 - 14.02.2005 - 08:57 |
(75) А еще у Димы в SelectValue.dll есть спец. метод для подобного конструирования окон/диалогов на лету. ЗЫ Правда, забыл, как этот метод называется :( |
slavka 78 - 14.02.2005 - 09:23 |
(76,77) да нужны галочки. (думаю их хватит). Испробую все варианты. |
snif 79 - 14.02.2005 - 10:46 |
Добрый день! Пишу уже пару месяцев "Конструктор отчетов" и еще пару месяцев буду писать, видимо. Но уже что-то симпатичное получилось, пока как игрушка. Не буду (чтобы не позориться) выкладывать продукт на всеобщее обозрение, но если кому-то интересно, пришлю на почту. Сотоит из : маленький скриптик, буквально 4 строки и dll-ка. dll-ку можно положить куда угодно и зарегестрировать. Скриптик запускает dll-ку. Принцип работы: ставим курсор мышки в процедуру, в которой находится запрос, сделанный, например, конструктором запросов. Вызываеам скриптик. Появляется окошко (ActiveX документ). Там по шагам выбираем название отчета, что из условий писать в шапку отчета, используемые колонки, колонки по которым считать итоги. Прямо из конфигуратора можно нажать кнопку и посмотреть эскиз будущего отчета в Excel. Если понравилось, жмем кнопку "Готово" и в обработке (отчете) появляется новая процедура. Алгоритм такой: из запроса создается DBF, который открывается в Excel с указанным оформлением. Работает быстро. Запрос на 50.000 строк создает DBF и открывает его в Excel секунд за 20-30. Кому интересно, вышлю на мыло. Когда всё доделаю, выложу на всеобщее обозрение :) |
orefkov 80 - 14.02.2005 - 10:59 |
(79) Вышли на orefkov [] ezmail.ru плиз. (Мечтательно) Еще бы из внешней dbf процессить OLAP кубик, и в екселе его родимого. |
snif 81 - 14.02.2005 - 11:08 |
2(80) отправил, что такое OLAP кубик - не знаю, дикий наверное |
snif 82 - 14.02.2005 - 11:11 |
Там единственное что важно - это я ворчалку еще не успел написать - чтобы в каждой группировке было слово "упорядочить по", иначе Ёксель некорректно итоги считает. |
snif 83 - 14.02.2005 - 11:15 |
++ а чтобы голову не ломать, попробуй его на этой процедуре протестироваить: Процедура Проба() Перем Запрос, ТекстЗапроса; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Проба) |Период с ДатаНач по ДатаКон; |Фирма = Регистр.ОстаткиТМЦ.Фирма; |Склад = Регистр.ОстаткиТМЦ.Склад; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Количество = Регистр.ОстаткиТМЦ.Количество; |Функция НачОст = НачОст(Количество); |Функция КонОст = КонОст(Количество); |Группировка Склад упорядочить по Склад.Наименование; |Группировка Номенклатура упорядочить по Номенклатура.Наименование; |"//}}ЗАПРОС ; Если ПустоеЗначение(ВыбФирма)=0 Тогда // ТекстЗапроса=ТекстЗапроса+ "Условие(Фирма = ВыбФирма);"; КонецЕсли; КонецПроцедуры |
snif 84 - 14.02.2005 - 11:50 |
Интресно, получил ли кто-нибудь? дело в том, что я не стал загонять в архив, а просто прицепил скрипт .vbs к письму. Только теперь понял, что это не есть хорошо, так как у кого-то настройки безопастности могут такое письмо и завернуть. |
snif 85 - 14.02.2005 - 12:25 |
На всякий случай всем, выразившим желание побыть бетта-тестерами, отправил вариант письма с архивированными файликами. |
fez 86 - 14.02.2005 - 13:10 |
(63, 69) Поправил. Сегодняшние архивы переформированы, прошлые оставлю как было. |
dva1c 87 - 14.02.2005 - 15:33 |
Вопрос. OpenConf 1.0.1.8 Телепат 2.0.0.0к Также EFExplorer, History 1.05 Не работает 1С-ый отладчик. Проскакивает точку останова и нормально всё выполняется. Не подскажите, почему? |
dva1c 88 - 14.02.2005 - 15:48 |
Проверил. Это не опенконф. Сама 1С не работает с отладчиком. Попробую создать ветку с подробностями. |
ShootNICK 89 - 14.02.2005 - 17:23 |
86 good |
trdm 90 - 15.02.2005 - 15:03 |
^ |
Salimbek 91 - 16.02.2005 - 10:00 |
Чего-то на (85) никто не отзывается, а интересно услышать мнения |
Matiс 92 - 16.02.2005 - 10:11 |
(artbear) Вчера решил воспользоваться скриптом "Замена кода". Стал ругаться на OpenConf.CommonServices. Подскажи пожалуйста что надо сделать? . Пробовал подкинуть скрипт common.vbs, так 1С вообще вылетать стала. Openconf 1.0.1.8 Telepat 2r. 1C 23 DBF Из скриптов только Intell |
slavka 93 - 16.02.2005 - 10:13 |
CommonServices.wsc зарегена? |
Matic 94 - 16.02.2005 - 10:15 |
(93) Нет. Не стал распаковывать, т.к. не знал куда лучше ее выложить. |
slavka 95 - 16.02.2005 - 10:22 |
положи куда хочешь и зарегистрируй. и будет тебе счастье :) |
Matic 96 - 16.02.2005 - 10:29 |
(95) Спасибо |
slavka 97 - 16.02.2005 - 10:33 |
(96) не за что. Описание лень почитать? Ведь специально пишу |
Тертый 98 - 16.02.2005 - 12:52 |
97) Как успехи со скриптом настроек? ALL(Мечтательно)А вот кто-нить что-нить смастерил-бы для анализа изменений диалога на форме? А то стандартное 1С-овское сравнение - объект изменен - открыть - и все... И сиди, анализируй все кнопки, формулы и т.д. |
корум 99 - 16.02.2005 - 12:56 |
(98) На Проклабе видел примочку... как раз для такого анализа. Точной ссылки дать не могу |
slavka 100 - 16.02.2005 - 13:02 |
(98) тестирую. вылавливаю баги. ЗЫ. СТО!!! |
Тертый 101 - 16.02.2005 - 13:30 |
+99) Может, кто знает адрес примочки??? |
ADirks 102 - 16.02.2005 - 13:37 |
(99, 101) http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3329 |
gemx 103 - 16.02.2005 - 14:08 |
В репозитарии в последних сборках файлы в системной папке отличаются от ранее выложенных и dll не регистрируются. |
Тертый 104 - 16.02.2005 - 22:23 |
102) - спасибо! IAm, а к телепату это нельзя прикрутить? Чтоб все в одном месте было? |
a13x 105 - 18.02.2005 - 08:52 |
(103, 2fez) для проверки скачал последний win-архив, подтверждаю - у бинарников размер отличается от оригинального и все они битые; почему - гадать не буду, fez'у виднее, но суть в том, что по сравнению с исходными бинарниками в снапшоте в бинарниках символы 0x0A (ака \n) заменены последовательностью 0x0D 0x0A (aka \r\n). То есть имеет место конвертация никсового признака конца строки в виндовый. |
fez 106 - 18.02.2005 - 16:16 |
(105) fixed. Понадеялся на то, что архиватор сам разберет, кто текстовый файл, а кто бинарный. Обломался, пришлось самому разбираться, и архиватору подсказывать. Сегодняшний архив обновлен, прошлые, как обычно, трогать не буду. |
тля 107 - 18.02.2005 - 16:46 |
а вот у меня вопрос есть по турбо мд: выгружаю модулю, а работает по старому мдшнику. Вышел из 1с, зашел - подцепила выгруженный модуль. Почему не хватает сразу? из-за 25 релиза? |
zzz 108 - 18.02.2005 - 16:50 |
Млин, и не надоело вам ещё ветки тянуть .. . 2(107) Возьми ТурбоМД постарее, tmd1011. |
тля 109 - 18.02.2005 - 16:55 |
(108) спасибо. попробую. у меня сейчас 1012. Казалось бы на 1 больше, а какой эффект! :( |
a13x 110 - 18.02.2005 - 16:59 |
(108) кому-то это мешает? |
zzz 111 - 18.02.2005 - 17:06 |
2(110) неа, просто уже не антиресно перемалывание одного и того же. |
fez 112 - 18.02.2005 - 17:17 |
(111) Не интересно - не читай. Кто-то заставляет что ли? |
a13x 113 - 18.02.2005 - 17:29 |
Ладно, ребята, хватит, я зря в (110) зацепился, совсем не хочется здесь лишний флуд разводить. . 2(zzz) эту ветку держим на плаву для того, чтобы другим пользователям, преимущественно новичкам не пришлось собирать инфу по крупицам, всего-то самое интересное, что здесь минимум флуда, что так не типично для Т1С . я надеюсь, что в итоге на основе этих веток соберем отличный FAQ по ОпенКонфу и Телепату |
IAm 114 - 18.02.2005 - 17:35 |
а давайте срач здесь устроим, а то и вправду скучно: опенконф, телепат... Так и жизнь пройдет. Надо подговорить железяку снести эту ветку. Это круто изменит ход истории. |
alkov 115 - 19.02.2005 - 18:18 |
Забиндил вызов Intellisense на точку При нажатии на точку, если открыто окно списка выбора телепата, конфигуратор вешается. Что я делаю не так: Intell 1.1.3 OpenConf 1.0.1.8 Telepat r 1C 23 |
IAm 116 - 19.02.2005 - 18:27 |
У меня вешается только если открыто окно подсказки по текущему методу. Пользуюсь стандартным окном телепата для работы после точки. |
alkov 117 - 19.02.2005 - 18:42 |
И с окном подсказки тоже вешается :( А поподробнее с работой после точки можно? А то у меня только шаблоны (если включены).. |
IAm 118 - 19.02.2005 - 18:44 |
intell последний скачать если (1.1.8) и поставить последний телепат(кажется именно r) то после точки интеллисенс будет заполнять и показывать телепатовский список. Он без иконок, но зато без глюков с зависанием. |
alkov 119 - 19.02.2005 - 19:07 |
В репозитарии такого не нашел :( И в Клубе профессионалов не состою :( Если можно - мыло в (115) |
IAm 120 - 19.02.2005 - 19:09 |
Для всех должна действовать http://1c.proclub.ru/modules/mydownloads/personal.php?cid=1004&lid=4229 |
alkov 121 - 19.02.2005 - 19:22 |
(120) Огромное спасибо! |
trdm 122 - 21.02.2005 - 13:42 |
А как добраться до панели с результатами "Поиска во всех текстах"? ЗАмучался уже с Paint-ом возиться. Многоуважаемый All, полскажите? |
a13x 123 - 21.02.2005 - 13:46 |
(122) я не понял сути вопроса, проясни для особо одуренных :-) |
trdm 124 - 21.02.2005 - 21:13 |
Когда запускаешь поиск во всех текстах вываливается панель с результатами. вобщем там лист-box с результатами поиска..... иногда сразуже надо сделать следующий поиск, потом еще один и т.д. а потом вернуться к первому поиску. т.к. не очень шустро поиск работает, лучше бы его результапты куда-нить в текстовый файл вывалить, а не получается.... Вопрос кто нить это проделывал из плагина какого-нить? |
trdm 125 - 22.02.2005 - 14:21 |
(orefkov), Саша, помнится ты как то упоминул про собственную прогу для синтаксис - проверки. На каком принципе она постоена? Можно пообщаться на эту тему? |
trdm 126 - 22.02.2005 - 14:23 |
+(125) как дела продвигаются? |
Bot 127 - 22.02.2005 - 14:33 |
(118) пользую 1.1.9, рел. движка 25, SQL. Вылетает Конфигуратор с ошибкой. Момент отловить не могу... Помница вылетал, если открыто вложенностей более ~хз штук. (штук 20 или что-то вроде) - это стабильно. А есть вылеты совсем нестабильные, отследить не могу, но после точки! |
orefkov 128 - 22.02.2005 - 14:42 |
(125) Не, нет такой проги. Собственно, в телепате используется синтаксический анализ текста модуля. Но там семантического анализа не делается (как-то: существует ли вызываемый метод или нет, есть ли переменная с таким именем и тп) Для анализа же использется алгоритм LALR анализа, на основе программы YACC. На itland я как-то выкладывал составленное мною описание синтаксиса 1С-языка в формате YACC. |
a13x 129 - 23.02.2005 - 18:38 |
============================================================= "Авторские комментарии" aka author.js (переписанный с нуля) ============================================================= качать на проклабе (подробное описание смотрите там же) http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=4915 или брать в репозитарии . Скрипт гибко настраивается, но для этого не надо править сам скрипт! . Я пересилил свое нежелание делать два файла - html для диалога и скрипт и объединил все в один. . Для разработчиков: Скрипт может служить примером работы с OpenConf.Registry (Registry.wsc). . з.ы. если у кого есть готовая css'ка, делающая html-страницу и контролы на ней похожими на виндовую форму, киньте мне плиз kuntashov - собака! - РУ/яндекс хотелось бы, чтобы задизабленные (недоступные) контролы тоже имели соответствующий дизайн |
trdm 130 - 23.02.2005 - 18:49 |
(129) Глянь, может пригодится... http://small.h12.ru/HTA.html |
a13x 131 - 23.02.2005 - 18:51 |
(130) класс! спасибо! |
a13x 132 - 23.02.2005 - 19:15 |
(130) Дим, а ты сам делал что-нибудь для OpenConf'а, используя HTA? |
Тертый 133 - 23.02.2005 - 19:26 |
129) Класс. Только хотелось бы, когда выделяешь блок, добавил или изменил, чтобы в конце вставляло что-то типа "конец изменения(добавления)", чтобы при обновлении легче было искать блок. ИМХО. |
a13x 134 - 23.02.2005 - 19:47 |
(133) В настройках - "Закрывающий маркер блока", я обычно использую "/", как в хтмл. Ессно, все настройки по умолчанию (кроме имени пользователя и названия организации :-) - сделаны под меня, уж извените, для остальных скрипт настраивается только вручную с помощью макроса "настройка" :-) |
trdm 135 - 23.02.2005 - 20:00 |
(132) Неа, я его только сегодня нарыл. И наверное надолго "уйду в отгул" по openConfu - разбираюсь с COM и ALT - а это надолго.... |
IAm 136 - 23.02.2005 - 21:16 |
127 А что используешь для выбора? Если пользоваться списком выбора телепата, то есть скрипт на точку не вешать - вылетать не должно. |
Тертый 137 - 24.02.2005 - 00:00 |
134) ОК, понял, спасибо. |
a13x 138 - 24.02.2005 - 08:20 |
(135) я кажется тоже кстати :-( у меня на работе большой проект да и за дипломник давно пора браться |
artbear 139 - 24.02.2005 - 12:40 |
(ВНИМАНИЕ) В репозитарии скриптов изменения: -------- 1) скрипт Интеллисенс.вбс. В нем восстановлена возможность работы с классами 1С++, у которых в названии более одной точки (например, Общие.ТаблицаЗначений или Общие.Форма.Дерево) 2) скрипт Навигация.вбс добавлен переход к методам классов 1С++ 3) также там же есть author.js (анонсированный автором чуть выше) 4) также исправления системных скриптлетов (СистемныеФайлы\*.wsc) не забудьте их переписать и перерегистрировать в реестре. -------- ЗЫ кто подключен к репозитарию напрямую, можете обновиться сейчас. Остальные - жди утра, и скачайте архив репозитария по ссылке из (0). |
Валдемар 140 - 24.02.2005 - 12:57 |
artbear Вот у меня такой вопрос: Я прицепил Интеллисенс и повесил на него хоткей так вот когода нажимаю точку то свойства и методы вываливаються все однотипно а когда жму хоткей тогда появляется тоже самое но уже раскрашеноее.Как можно сделать чтоб методы через точку появлялись такиеже как и при хоткее |
trdm 141 - 24.02.2005 - 17:22 |
Сигареты сегодня покупал: - Пачку Windows-лайт, пожалуйста... ... а началось все с опенконфа.... |
trdm 142 - 24.02.2005 - 17:31 |
(140) Две разные процедуры работают. Хоткей по одной, точка по другой. |
Valera 143 - 25.02.2005 - 10:40 |
Пожалуй следует заменить скрипт RTrimModule.vbs в репозитарии '$ENGINE {B54F3741-5B07-11CF-A4B0-00AA004A55E8} 'Версия от 16.07.04 без создания внешних файлов 'Добавлено переформатирование текущего открытого модуля 'Author: Valera e-mail: wash_ai@mail333.com 'Скрипт для удаления пробелов в концах строк программных модулей 'Кроме того из нескольких идущих подряд пустых строк остается только одна 'Позволяет несколько облегчить MD-шник и внешние обработки Dim NumOfStrings 'Обрезание лишних пробелов в строках выбранного документа Function TrimThisDoc(doc, mode) Dim TextStrings TextStrings = Split(doc.Text, Chr(13) & Chr(10)) s1 = 0 s2 = 0 x = UBound(TextStrings, 1) For i = 0 To x NumOfStrings = NumOfStrings + 1 T = TextStrings(i) s1 = s1 + Len(T) 'If mode = "All" Then ' по идее здесь должен быть код удаляющий повторяющиеся пробелы+табуляции ' т.е. типа этого: ' 'prevLen = Len(T) + 2 'Do While prevLen <> Len(T) ' prevLen = Len(T) ' T = Replace(T, Chr(32) & Chr(32), Chr(32)) ' T = Replace(T, Chr(9) & Chr(9), Chr(9)) ' T = Replace(T, Chr(32) & Chr(9), Chr(9)) ' T = Replace(T, Chr(9) & Chr(32), Chr(9)) 'Loop ' ' Это срабатывает неплохо, НО!!!! если у вас используется где-нибудь в коде присвоение переменной ' строки из нескольких пробелов, то, увы, теперь будет присваиваться только один ' Так что здесь нужен другой код, который бы отслеживал появление кавычек и исключал всё, что м/у ними ' Пока мне это писать влом - может позже, а может и кто другой сообразит... 'End If If (mode = "Right") Or (mode = "All") Then flag = 0 Do While (Len(T) > 0) And (flag = 0) If flag = 0 Then If (Right(T, 1) = Chr(9)) Or (Right(T, 1) = Chr(32)) Then T = Left(T, Len(T) - 1) Else flag = 1 End If End If |
Valera 144 - 25.02.2005 - 10:42 |
Loop T = RTrim(T) End If If (mode = "Left") Or (mode = "All") Then flag = 0 Do While (Len(T) > 0) And (flag = 0) If flag = 0 Then If (Left(T, 1) = Chr(9)) Or (Left(T, 1) = Chr(32)) Then T = Right(T, Len(T) - 1) Else flag = 1 End If End If Loop T = LTrim(T) End If s2 = s2 + Len(T) TextStrings(i) = T Next doc.Text = Join(TextStrings, Chr(13) & Chr(10)) prevLen = Len(doc.Text) + 2 Do While prevLen <> Len(doc.Text) prevLen = Len(doc.Text) doc.Text = Replace(doc.Text, Chr(13) & Chr(10) & Chr(13) & Chr(10), Chr(13) & Chr(10)) Loop TrimThisDoc = s1 - s2 End Function 'Переформатирование открытого модуля Sub ReFormatCurrentWnd() NumOfStrings = 0 Set w = Windows.ActiveWnd If w Is Nothing Then MsgBox "Нет активного окна", vbOKOnly, "RTrimModule" Exit Sub End If Set d = w.Document If (d.ID <> -1) And (d.ID < 1) Then MsgBox "Окно ни форма, ни модуль", vbOKOnly, "RTrimModules" Exit Sub End If s0 = 0 If d = docText Then s0 = TrimThisDoc(d, "All") docName = d.Name Else If d = docWorkBook Then Set d = d.Page(1) s0 = TrimThisDoc(d, "All") docName = d.Name End If End If d.MoveCaret 0, 0, d.LineCount d.FormatSel 'Message "Обработано строк: " & NumOfStrings, mInformation End Sub 'Удаление пробелов в текущем открытом модуле Sub RTrimCurrentWnd() NumOfStrings = 0 Set w = Windows.ActiveWnd If w Is Nothing Then MsgBox "Нет активного окна", vbOKOnly, "RTrimModule" Exit Sub End If Set d = w.Document If (d.ID <> -1) And (d.ID < 1) Then MsgBox "Окно ни форма, ни модуль", vbOKOnly, "RTrimModules" Exit Sub End If s0 = 0 If d = docText Then s0 = TrimThisDoc(d, "Right") docName = d.Name Else If d = docWorkBook Then s0 = TrimThisDoc(d.Page(1), "Right") docName = d.Page(1).Name End If End If Message "Обработано строк: " & NumOfStrings, mInformation If s0 = 0 Then Message "Не найдено лишних пробелов в " & docName, mInformation Else Message "В модуле '" & docName & "' удалены лишние пробелы размер уменьшился на " & s0, mInformation End If End Sub 'Удаление пробелов в Глобальном модуле, в Документах, а также во встроенных Отчетах и Обработках Sub RTrimGlobalModuleDocReportsAndCalcVars() NumOfStrings = 0 s0 = 0 Set doc = Documents("ГлобальныйМодуль.Модуль") s0 = s0 + TrimThisDoc(doc, "Right") Set refs = MetaData.TaskDef.Childs("Документ") For i = 0 To refs.Count - 1 Message refs(i).Name, mInformation Set doc = Documents("Документ." & refs(i).Name & ".Форма.Модуль") s0 = s0 + TrimThisDoc(doc, "Right") Set doc = Documents("Документ." & refs(i).Name & ".Модуль Документа.Модуль") s0 = s0 + TrimThisDoc(doc, "Right") Next Set refs = MetaData.TaskDef.Childs("Отчет") For i = 0 To refs.Count - 1 Set doc = Documents("Отчет." & refs(i).Name & ".Форма.Модуль") s0 = s0 + TrimThisDoc(doc, "Right") Next Set refs = MetaData.TaskDef.Childs("Обработка") For i = 0 To refs.Count - 1 Set doc = Documents("Обработка." & refs(i).Name & ".Форма.Модуль") s0 = s0 + TrimThisDoc(doc, "Right") Next Message "Обработано строк: " & NumOfStrings, mInformation Message "Всего удалено " & s0 & " символов", mInformation End Sub |
IAm 145 - 25.02.2005 - 10:48 |
Объявление: отдам(точнее отдал) скрипт интеллисенс в хорошие, добрые руки ADirks-а, я так понимаю он будет выложен в репозитарий. Все предложения и пожелания адресуйте к нему. Я этим заниматься больше не буду. |
trdm 146 - 25.02.2005 - 11:34 |
Есть у кого мысли по расширенной проверке правописания в модуле? Начал потихонечку для себя. Что проверяет: * Форма.<Атрибут> * Константа.<НазваниеКонстанты> * "(Документ|Справочник|Отчет|Обработка|Журнал|Регистр).Идентификатор" Что еще можно "побыстрому" проверить? |
a13x 147 - 25.02.2005 - 11:44 |
(144) пришли мне, пожалуйста, на kuntashov-собака!-ру/яндекс, я как раз собирался по мелочи твой скрипт поправить; заодно и в репозитарий закину ну или стукнись в аську (338758861), скажу, что хотел сделать . (146) подкину идею - прикрутить вордовские спеллчекер: макрос, который бы проверял орфографию в комментариях модуля как сделать пока не знаю, но то что можно, уверен |
GrayT 148 - 25.02.2005 - 11:59 |
(145)Будут ли обновления на проклубе и где (если да)? ЗЫ: Разобраться как работать с репозитарием времени нет :( |
a13x 149 - 25.02.2005 - 12:07 |
(148) на всякий случай повторю http://1c.alterplast.ru/files/ocs/ слепок репозитария, деалется ежедневно, там самые актуальные копии на конец дня |
ADirks 150 - 25.02.2005 - 12:21 |
(148) +149 На проклубе тоже надо бы выкладываться, и не только Intellisence. Всё-таки это место популярное. Люди первым делом туда пойдут и за обновлениями, и новенького поискать. |
GrayT 151 - 25.02.2005 - 12:25 |
(149) Вот пока носом не ткнут.... ;) Спасибо |
artbear 152 - 25.02.2005 - 12:48 |
(a13x) По поводу Интеллисенса ты, наверное, не заметил, что мы с Алексеем Дирксом уже поместили последнюю версию ИАма в репозитарий со своими добавлениями по поводу классов 1С++ :) |
snif 153 - 25.02.2005 - 12:59 |
Пробная версия "Конструктора отчетов". Берет запрос и создает отчет в Excel. Ссылка: http://www.snif.ru/pages/archiv/Friend1C.rar I.Установка: 1.разместить Friend1C.vbs (там одна маленькая процедурка) в папке Scripts; 2.разместить Friend1C.dll где-угодно и зарегестрировать; II.Порядок работы: 1.Установить курсор внутри процедуры, содержащей запрос. 2.Вызвать из скрипта единственную процедуру CreateDBFfromZapros() 3.И, далее, ходя по окошкам выбрать: название отчета, порядок колонок, колонки с итогами и т.д. Прямо из конфигуратора по кнопке "Посмотреть эскиз отчета в Excel" пожно оценить результат. Если результат устраивает, то жмем кнопку "Готово" и в модуле появляется новая процедура. |
a13x 154 - 25.02.2005 - 13:53 |
(152) заметил я именно сей факт и подразумевал, отсылая GrayT к слепкам репозитария |
snif 155 - 25.02.2005 - 17:06 |
разработку в (153) я посвятил своему любимому менеджеру, который постоянно просит от меня отчетов, которые, я знаю, он использует 1-3 раза и забывает про них. А так, может, я его и самого научу делать отчеты :)) Если кто рискнул попробовать и что-то не понял, то спрашивайте. |
Bot 156 - 25.02.2005 - 17:40 |
(152) А версию кто за вас менять будет? А то так как-то непонятно, изменилось что или нет... |
trdm 157 - 28.02.2005 - 11:05 |
(orefkov) Саша, что - то вылеты зачастили. Сегодня с утра уже 2 раза вылетел в непонятных местах. Др. Ватсон ничего не показывает конфиг просто застывает и исчезает. Работал с внешним отчетом. Буду наблюдать далее.. |
Bot 158 - 28.02.2005 - 11:15 |
"Не могу создать объект OpenConf.CommonServices" - как лечить? (при загрузке скриптов) |
trdm 159 - 28.02.2005 - 11:22 |
(157) Регистрацией "CommonServices.wsc". |
MetaEditor 160 - 28.02.2005 - 12:05 |
при закрытии конфигуратора, если в скрипте испульзуется CommonServices.wsc, процесс 1сv7 остаётся в памяти... у когонибудь было такое? |
Oblomov 161 - 28.02.2005 - 19:15 |
Обновил на свою голову Опен конфиг, телепат, и Intellisense на последние версии. Intellisense перестал работать. матюкаеться: Ошибка выполнения скрипта. Скрипт: Intelhsence Файл: С: \Program Files\1С v77\BIN\conf ig\scripts\Intelhsence. vbs Строка: 2012 Позиция: 3 Код: О Источник: Ошибка выполнения Microsoft VBScript Описание: Невозможно создание объекта контейнером ActiveX: 'SelectDialog.Selection' SelectValue.dll перерегистрировал, чего ему ещё надо? OpenConfig v.1018, Telepat v.2.0.0.0r, Intell v.1.1.9 |
Oblomov 162 - 28.02.2005 - 19:44 |
Отбой. Ещё раз всё поверху переписал, перерегистрировал, заработало. Хотя почему не заработало с 1раза непонятно. |
trdm 163 - 01.03.2005 - 01:32 |
(163) угу, SelectDialog.dll надо было зарегистрировать... (orefkov) Саша, а что строки в 1С - модуле могут и не иметь в конце '\n' или '\r'? Какие там еще подводные камни при разборе модуля? |
MetaEditor 164 - 01.03.2005 - 07:27 |
============== SaveToERT.vbs ============== Скрипт для автоматического группового сохранения всех отчетов/обработок во соответствующий внешний файл. ======== http://1c.proclub.ru/modules/mydownloads/personal.php?cid=1001&lid=4940 ======== |
MetaEditor 165 - 01.03.2005 - 07:35 |
поправочка... http://1c.proclub.ru/modules/mydownloads/personal.php?cid=1004&lid=4940 |
orefkov 166 - 01.03.2005 - 08:30 |
(163) Да вроде только в последней строке нет \r\n. Длина строки возвращается всегда включая их. |
vS 167 - 01.03.2005 - 13:57 |
вопрос такой, WHS под 98 не работает? у меня скрипты не работают, час назад все работало на 2000, скопировал на 98, н еработают... вот пока не придумал, почему? |
a13x 168 - 01.03.2005 - 14:08 |
(167) работает, Window Scripting Engine 5.6 установить надо и естественно, все dll и wsc файлы должны быть зарегистрированы при помощи regsvr32, но это, думается, само собой разумеющиеся вещи? . никто не поверит, но у меня на win2k Scripting.FileSystemObject "пропал" :-) а поскольку сейчас разбираться некогда, то пришлось все скрипты вырубать нафиг :-( я, собственно, к тому, что как же мы раньше без них жили и работали ? |
trdm 169 - 01.03.2005 - 14:12 |
(166) У меня макрос "lpsLineModule = W2A(curLine);" в данном тексте выдавал ошибку доступа. Пока не задействовал конструкцию "wcscat(curLine,L"\n");" макрос на VBS, вызывающий данный не выполнлся а объект спотыкался на строке 13050 ГМ. wchar_t LineTook[] = L"\n\r"; // Раскладываем текст модуля на строки.... wchar_t *curLine = wcstok(bstr2Stri, LineTook); lpsLineModule = W2A(curLine); parseLine(lpsLineModule); while (curLine != NULL) { wcscat(curLine,L"\n"); lpsLineModule = W2A(curLine); parseLine(lpsLineModule); curLine = wcstok(NULL, LineTook); } |
vS 170 - 01.03.2005 - 14:57 |
(168) где взять, на MSDNе? |
a13x 171 - 01.03.2005 - 17:58 |
(170) да |
trdm 172 - 01.03.2005 - 21:26 |
Господа, а что за файл: "SyntaxAnalysis.wsc" в респозитарии. Чего там есть? |
vS 173 - 02.03.2005 - 05:41 |
Не могу создать объект OpenConf.CommonServices 98SE, WHS 5.6, почему такая штука выскакивает? |
ADirks 174 - 02.03.2005 - 05:55 |
(172) Из путного там пока что разбор хедеров 1С++ и модулей классов. Для каждого класс определяется его базовые классы, модуль, экспортируемые методы и переменные. Используется это доборо в интеллисенсе для генерации файлов *.ints и в Навигация.vbs для codejump'ов к методам классов. Ещё есть разбор модуля на функции. Для каждой ф-ции определяется начало, конец, список параметров, объявленых переменных, автоматических переменных, вызываемых ф-ций. Но эта часть пока не доделана. Самое главное - регэкспами всё равно не распарсишь всё. Да и работает медленно. |
artbear 175 - 02.03.2005 - 07:09 |
(174+) Кстати, скорость не такая уж маленькая. У меня в конфе загружается 140 классов (ну типа чтобы все было), т.е. файлов заголовков - штук 20-30 и файлов классов 140, их анализ занимает буквально несколько секунд. Неудобно только небольшое мелькание экрана, но это уже особенность Опенконфа. ЗЫ Так что всем, кто пользуется 1С++, очень рекомендую. |
artbear 176 - 02.03.2005 - 07:12 |
(vS) ты бы хоть чуть-чуть ветку бы почитал наверху. Цитирую: >> Bot (пост 158) "Не могу создать объект OpenConf.CommonServices" - как лечить? (при загрузке скриптов) >> trdm (пост 159) (158) Регистрацией "CommonServices.wsc". ЗЫ описание хотя бы открой, почитай. |
vS 177 - 02.03.2005 - 11:03 |
а я только последнюю страницу открываю, у меня сто 163го... сейчас гляну... все ведь работало... :( У меня есть другой вопрос, как добавить в телепата свои причуды? Допустим, мне нужно в СоздатьОбъект(" добавить чтобы он кроме спр и док, видел СЗ и ТЗ, как минимум :) |
vS 178 - 02.03.2005 - 11:08 |
вот я перец... точно мой вопрос... почему поломалось только... да ладно, главное что работает... как быть с СЗ, ТЗ |
ADirks 179 - 02.03.2005 - 11:11 |
(177) В настоящий момент для этого можно воспользоваться интеллисенсом. Вызываешь его метод MethodsList() - и он вывалит тебе список. |
trdm 180 - 02.03.2005 - 11:16 |
(174)+(175) На счет медленной работы - уменя та же проблема в классе TheModule, если раскладываешь глобальник. Обошелся запоминанием результатов. т.е. глобальник парсится один раз если еще не парсился. Потом контролится вход в окно с текстом ч.з. Configurator_OnActivateWindow и сбрасывается флаг, следящий что ГМ распарсен, если активировалось окно ГМ. Но все равно медленно. Воюю с COM/ATL, что-бы получить более менее приемлемую скорость, но движение идет с черапашей скоростью (( |
vS 181 - 02.03.2005 - 11:32 |
(179) нафига мне список, мне туда добавить надо! |
trdm 182 - 02.03.2005 - 11:35 |
(181) Попробуй разыскать файл СоздатьОбъект.ints и добавить туда что тебе нужно. У меня его содержимое: 0000 ТаблицаЗначений 0000 СписокЗначений 0000 Текст 0000 Svcsvc.Service 0000 Справочник 0000 Документ 0000 Регистр 0000 Регистры 0000 Сервис 0000 АтрибутФормы 0000 РасширениеФормы 0000 GRID 0000 TREE 0000 AddIn.Thread 0000 Поток 0000 Shell.Application 0000 WScript.Shell 0000 VBScript.RegExp 0000 MSScriptControl.ScriptControl 0000 Scripting.FileSystemObject |
trdm 183 - 02.03.2005 - 11:43 |
Маленькая примочка, может уже есть, но я не в курсе.... '============================================================ ' ОБРАМЛЕНИЕ выделенного фрагмента текста{ 'Обрамляет выделенный фрагмент текста кавычками, скобками, определенной функцией.. ' trdm 2005 г. Dim glBrasket glBrasket = """.""" 'Обрамляет выделенный текст символами. Sub AddBrasket() Doc = "" IF Not CheckWindow(Doc) Then Exit Sub ArrOfBrasket = Split(glBrasket,".") tText = Doc.Range(Doc.SelStartLine , Doc.SelStartCol , Doc.SelEndLine , Doc.SelEndCol) tText = ArrOfBrasket(0) & tText & ArrOfBrasket(1) Doc.Range(Doc.SelStartLine , Doc.SelStartCol , Doc.SelEndLine , Doc.SelEndCol) = tText Doc.MoveCaret Doc.SelStartLine , Doc.SelStartCol , Doc.SelEndLine , Doc.SelEndCol+2+Len(ArrOfBrasket(0))-1 PositionMoveKaret = InStr(1,Doc.Range(Doc.SelStartLine),"<?>") IF PositionMoveKaret>1 Then Doc.MoveCaret Doc.SelStartLine , PositionMoveKaret-1 , Doc.SelEndLine , PositionMoveKaret+2 End IF End Sub Sub ChoiseTypeBrasket() ArrOfTypeBrasket = Array(""".""", "(.)", "СтрДлина(.)", "ПустаяСтрока(.)", "ПустоеЗначение(.) = 1", "?(.,<?>,)",_ "СокрЛ(.)", "СокрП(.)", "СокрЛП(.)", "Лев(.,<?>)", "Прав(.,<?>)", "Сред(,<?>)", "Найти(.,<?>)", "СтрЗаменить(.,<?>,)",_ "СтрЧислоВхождений(.,<?>)", "СтрКоличествоСтрок(.)", "Врег(.)", "Нрег(.)", "OemToAnsi(.)", "AnsiToOem(.)", "Симв(.)",_ "КодСимв(.)", "ТипЗначенияСтр(.)") ttext = SelectFrom(Join(ArrOfTypeBrasket,vbCrLf),vbCrLf) IF Len(ttext) <> 0 Then glBrasket = ttext AddBrasket End If End Sub ' ОБРАМЛЕНИЕ выделенного фрагмента текста} '============================================================ |
ADirks 184 - 02.03.2005 - 11:55 |
(181) а попробовать? (180) Я так понимаю, ты делаешь плугин для парсинга модулей? Может тогда попробовать объединить усилия? Буду нескромен, но в парсинге я силён :) Да и грамматические правила у меня есть - Саша Орефков как-то дал. И есть, куда эти рулесы запихнуть (yacc, bison). (182) В текущей версии интеллисенса такой фичи нет. Она раньше что-ли была? Сейчас список типов задаётся в самом скрипте, константой. А мысль-то правильная, надо будет прикрутить. |
trdm 185 - 02.03.2005 - 12:37 |
(184)->(180) Не плагин а примочку для дотса, меня давно убивала мысля о том что текущий модуль худо бедно я ногу разобрать с его помощью, я вот если значение формируется в ГМ процедуре/функции я до него "недопрягиваю". Поэтому сделал класс на VBS с помощью которого я могу: - определить что конструкция ТаблДокумента = глПодготовитьТаблицуДокумента(Контекст); в данном модуле является взовом Процедуры/Функции из ГМ, RezultStr = FindInStrEx("(\s|^|;)+[" & cnstRExWORD & "]+\s*\(+.*("&ResultWord&")+.*\)+",ttext) 'Переменная находится в параметре tRezultStr = FindInStrEx("(\s|^|;)+("&ResultWord&")+\s*\=+\s*[" & cnstRExWORD & "]+\(+.*\)+",ttext) ' для "ТаблДокумента" из -> "ТаблДокумента = глПодготовитьТаблицуДокумента(Контекст);" - получить текст "глПодготовитьТаблицуДокумента"; - понять (при типизации переменной ТаблДокумента) что она значение, которую возвращает функция и следовательно нужно найти все "(Возврат|return) имяПеременной;" в теле "глПодготовитьТаблицуДокумента" и если найдена, тогда распарсить. на счет попробовать объединить усилия, не знаю, я конкретный чайник и скорее буду тормозить работу, чем продвигать. >>(182) В текущей версии интеллисенса такой фичи нет. Она раньше что-ли была? >>Сейчас список типов задаётся в самом скрипте, константой. >>А мысль-то правильная, надо будет прикрутить. При парсинге "Первоначального" слова, куда "подбираем" методы атрибуты я стараюсь проанализировать еще и метод/функцию с объектом. Если он находится в списке "*.ints" и позиция вызова скрипта находится внутри скобок, в нужном номере параметра, выдается список из этого *.ints. Посмотри dots там много хороших мыслей но реализация запутана, т.к. взялся я за него с "невызревшей идеей" (((((((((((((((((((((((((((((((((((((((((((( Поэтому в RunAllIntellisence.vbs я первым (у себя) вызываю Intellisence.vbs а потом dots.vbs |
vS 186 - 02.03.2005 - 12:46 |
(182) Поиск закончен, найдено объектов (0) *.ints |
artbear 187 - 02.03.2005 - 12:51 |
(trdm) А ты можешь всю историю дотса (или ChangeLog, если ты ведешь его в ЦВС) закинуть? и последнюю версию дотса мне выслать? ЗЫ хочу посмотреть, какие идеи, недостающие в интеллисенс.вбс, ты реализовал ? |
artbear 188 - 02.03.2005 - 12:53 |
(trdm) Еще закинь скриптик показа констант/перечислений по их типу? Как-то ты его показывал в одной из веток телепата ЗЫ поиск что-то мне ничего не нашел! |
artbear 189 - 02.03.2005 - 13:24 |
(188+) скриптик уже нашел, не посылай. Остальное жду :) |
trdm 190 - 02.03.2005 - 13:29 |
(188) Перекачай dots с проклуба. Только что обновил. на счет констант посмотри там-же GetConstantEx(). К сожалению документировать его мне уже становится в тягость, всего и не припомню. Из последнего - индексирование ГМ на предмет доставания его процедур и функций (медленная работа). - усиление работы в конструкциях: Переменная = "] (Intell\ТипЗначенияСтр.ints) - Добавлена возможность синтаксической проверки конструкций "Форма.АтрибутФормы", если "АтрибутФормы" на форме не лежит, модуль выдает ошибки. Процедура называется SyntaxCheckModule(). - Исправлен баг когда выгруженную из регистра (ВыгрузитьИтоги) и документа (выгрузитьТабличнуюЧасть) (переменную, содержащую)таблицу значений скрипт принимал за соответственно документ или регистр. |
trdm 191 - 02.03.2005 - 13:32 |
(186) Установи новый dots и используй его в СоздатьОбъект(""). |
artbear 192 - 02.03.2005 - 13:37 |
(190) А ты разве не ведешь репозитарий своего дотса в ЦВС? Если правда не ведешь, зря, очень удобно. И историю крайне легко получать! |
trdm 193 - 02.03.2005 - 13:50 |
(192) Артур, dots надо перелинковывать, т.е. разбить на маленькие, легко управляемые куски и собрать заново. С этим я уже смирился. Он мне служит скорее полигоном для оттачивания идей и помощником в кодинге. |
artbear 194 - 02.03.2005 - 14:05 |
(192) Кстати, я в интеллисенс кое-что поправил. Теперь не нужно для имен объектов, у которых в имени есть точка (VBScript.RegExp) генерить интс типа VBScript_RegExp.ints Можно просто использовать файл VBScript.RegExp.ints PS в дотсе можешь сделать то же самое. |
artbear 195 - 02.03.2005 - 14:24 |
(trdm) Да, уж 5300 строк из дотса так просто не разберешь и не разложишь :) |
trdm 196 - 02.03.2005 - 14:41 |
(195) (?) у меня 5659 строк, почему у тебя 5300? Блин, не пугай я думал не тот скрипт в архив засунул... (ADirks) Есть просьба сделать вызов Intellisence.vbs с пом. внещнего скрипта типа RunIntellisence.vbs, по принципу: отработал, хорошо, нет, скажи об этом. Смысл в чем: можно подключать множество обработок для function Telepat_OnShowMemberList(Line, Col) в одном скрипте и вызывать последовательно.... |
ADirks 197 - 03.03.2005 - 10:39 |
(196) "Я думал-думал, я всё понял". Чтобы подключить множество обработок надо либо как-то изменить систему обработки событий (эту тему Артур уже поднимал). Либо в "исполняющих" скриптах отключить обработку событий, а в "объединяющем" скрипте просто вызывать обработчики событий, и смотреть что они там возвращают. В данном случае, если Telepat_OnShowMemberList() вернёт пустую строку - значит он не сделал своё дело. Только надо ещё не забыть про связанное событие Telepat_OnInsert(). |
trdm 198 - 03.03.2005 - 11:14 |
(197) второе, убрать обработчики из скриптов, переместить во другой скрипт. у меня это реализовано(локатьно), только проблема в том, что если вы обновляете Intellisence.vbs мне приходится его объединять у себя (каждый раз). |
ADirks 199 - 03.03.2005 - 11:26 |
(198) Так ведь, если закомментировать строчку SelfScript.AddNamedItem "Telepat", t, False то скрипт перестанет обрабатывать событий, и метод Telepat_OnShowMemberList(Line, Col) можно просто вызывать из внешнего скрипта. Или я чего-то не понимаю? |
trdm 200 - 03.03.2005 - 11:29 |
Чего я еще "натворил" в локальном Intellisence.vbs: при подстановке функции (в конце "(f)") (f) заменяется на (<?>), ,f) => ,<?>) (f, => (<?>, анализируется если есть между вставляемым текстом и концом строки другой текст, и если его нету ставится ";" в конце функции/метода. А то парит каждый раз добавлять ";" и курсор перемещается на <?> тут сразу набираешь что надо. |
trdm 201 - 03.03.2005 - 11:34 |
(198) Правильно понимаешь, но я пускаю Intellisence.vbs первым и мне нужно знать статус его отработки. И меня не устраивает результат, когда ксрипт приосто ставит точку - это тоже есть отрицательный результат. А впрочем это все на твое усмотрение. Мне раз в недельку объединить не трудно. |
trdm 202 - 03.03.2005 - 11:37 |
+(198) Могу выслать локальный вариант скриптов: dots.vbs, RunAllIntellisence.vbs и Intellisence.vbs посмотреть как это работает. |
ADirks 203 - 03.03.2005 - 12:03 |
(202) Я написал тебе на mail333, чтоб на форуме не светиться |
artbear 204 - 03.03.2005 - 12:11 |
(trdm, ADirks) Предлагаю это обсуждение перенести на гуглевскую подписку! И другие смогут что-нибудь. Например, я :) |
Mikeware 205 - 03.03.2005 - 12:13 |
Киньте ссылку, плз, как корректно все снести и заново установить... Было уже, а найти не могу... :-( |
artbear 206 - 03.03.2005 - 12:13 |
(trdm) Кстати, ты так и не поправил баг дотса, если если переданное окно уже не существует,например, при закрытии всех окон (через меню). Можешь взять поправленный мной вариант в репозитарии. |
artbear 207 - 03.03.2005 - 12:18 |
(205) Читай (0) и ищи волшебное слово FAQ |
trdm 208 - 03.03.2005 - 12:20 |
(206) Поправил из 1-го варианта который ты здесь публиковал. Но потом удивился, почему не работает ) Теперь поправил и из респозитария.. |
Mikeware 209 - 03.03.2005 - 12:37 |
2(207) Да так и делал... Уже в глазах рябит... Может, гуру перепишут ЧАВО - выделят отдельными пунктами? А то не я один такой... |
trdm 210 - 03.03.2005 - 18:41 |
(orefkov), Саша и господа, подскажите, где у меня лажа: Как должны быть инициализированы ВАРИАНТЫ здесь: hr = TextDoc->get_Range((long)i,StartCol,EndLine,EndCol,&LineText); TextDoc - это ITextDoc *TextDoc = NULL; Количества строк получил, а перебрать не могу (( |
fez 211 - 03.03.2005 - 22:37 |
(209) Вставил разделители. Нормально? Или может быть еще и номера вопросов добавить? |
orefkov 212 - 04.03.2005 - 08:49 |
(210) StartCol.vt=VT_I4; StartCol.lVal=число; |
trdm 213 - 04.03.2005 - 12:13 |
(212) Спасибо. Пошло... но почему-то так медленно, как и в скрипте (( |
artbear 214 - 04.03.2005 - 12:39 |
(213) Так ты же также пользуешься интерфейсами COM, а это скорости не прибавляет! Александр говорил об убыстрении, если пользоваться прямым доступом к внутренним структурам 1С. А для этого нужно очень много. Хотя один товарищ мне прислал пример плагина на Делфи, который работает как инспектор объектов для Делфи. Мне понравилось, пусть пока этот плагин умеет работать только с полем формы Edit |
trdm 215 - 04.03.2005 - 12:53 |
(214) Тогда, это у меня тренировочный заезд )) Рабочий заезд - это получнение текста в BSTR целиком, конвертация его в LPSTR и разборка LPSTR. РАботает правктически махом... По крайней мере рубится на строки очень быстро. |
trdm 216 - 04.03.2005 - 12:59 |
На комплексной меньше секунды... |
artbear 217 - 04.03.2005 - 13:01 |
(216) Не понял насчет "тренировочный"? так тормозит или нет? есть что-то готовое, что можно посмотреть и проверить? |
trdm 218 - 04.03.2005 - 13:11 |
Готового нету ( Я ж говорил, что чайник в ATL. Set AddDts = CreateObject("AddDots.AddDts") Set DocGM = Documents("Глобальный модуль") Сделал 2 метода у объекта, в первом передаю сам текстовый документ и с пом. интерфейсов выбираю строки: AddDts.SetDoc(DocGM) - медленный перебор и + Ошибка доступа в lpsLineModule = W2A(LineText); на строка 13402 второй (передаю текст): AddDts.SetText(DocGM.text) /* попробуем здесь распарсить текст*/ STDMETHODIMP CAddDts::SetText (BSTR str) { CComBSTR comStr = str; int LengthLine = 0; BSTR bstr2Stri = ::SysAllocString (str); LPSTR lpsLineModule; // ANSI - строка для парсинга LengthLine = BSTR2Ansi(bstr2Stri,&lpsLineModule); if (LengthLine > 0 ) { int cntLines = -1; char LineTook[] = "\n"; // Раскладываем текст модуля на строки.... char *curLine = strtok(lpsLineModule, LineTook); while (curLine != NULL) { ++cntLines; curLine = strtok(NULL, LineTook); } ++cntLines; MessageBox(NULL, "OK!", "AddDts",0); } return S_OK; } И тут все происходит махом. Только работаю без MFC и прочих удобностей, хочу слелать побыстрее. Ищу куда бы мне засунуть накопленную информацию: Нужет массаив со структурой, подобной классу TheModuleItem. Изучаю пока работу со стороками. |
trdm 219 - 04.03.2005 - 13:14 |
Короче ползу с черепашьей скоростью, напоминает то врем когда первы раз за 1С взялся ) |
orefkov 220 - 04.03.2005 - 13:16 |
(215) Если подключишь к проекту 1С хедеры и либы, то могу выслать код, как получить текст активного окна. У меня на больших ГМ правда быстродействие уже упирается в само получение текста: получение текста примерно 30 мсек, разбор на процедуры примерно столько же. |
artbear 221 - 04.03.2005 - 13:24 |
(trdm) Переходи на Делфи/С++ Билдер, и твои станут густыми и шелковистыми :) А если серьезно, если ты все равно не пользуешь внутренние структуры МФС, 1С, OpenConf, а работаешь через КОМ и делаешь КОМ-плагин впервые, на Делфи/С++ Билдере у тебя может получиться проще, быстрее, удобнее. И в быстродействии не проиграешь! |
trdm 222 - 04.03.2005 - 13:31 |
(220) Попробую, спасибо! Хотя я с трудом и config.tlh и config.tli к проекту подключил. Либы и хейдеры подключу, хотя ведь это и не плагин совсем. скорее это будет очередной первый блин комом, который потом всетаки даст свои результаты, но далеко в будующем.... |
trdm 223 - 04.03.2005 - 13:36 |
Артур, смена среды программирования на другую черевата.... Спасибо всем! Однако это не "промышленное решение" а лишь попытка с пользой расширить кругозор и решить некоторые проблемы. |
trdm 224 - 04.03.2005 - 14:11 |
(220) Саша, ты бы проинформировал народ, в каком ты направлении движешся, а то лично у меня руки чешутся сделать пару вещей, но возвможно мы просто дадублируем функционал и ничего из этого хорошего не будет. Все понимают что ТЫ ДЕЛАЩЬ ВЕЩЬ, но какие области ты затрагиваешь, я например не знаю (( |
Michael 225 - 04.03.2005 - 14:23 |
to orefkov Давно использую телепат... Еще с версии 1... И все же немогу понять, почему если можна писать такие макросы как Intell этого всего нельзя сразу встроить в telepa 2 В этой ветке собираются профи, говорят умные слова... Делфи/С++ Билдер... пишут сумашедшие коды из макросов типа ... LPSTR lpsLineModule; // ANSI - строка для парсинга LengthLine = BSTR2Ansi(bstr2Stri,&lpsLineModule); ... А хочется простого... нажать в 1С "." и получить перечень атрибутов и методов... |
trdm 226 - 04.03.2005 - 14:29 |
(225) Не смеши народ, пожалуйста. Сначала сам напиши что-нить подобное хотябы на VBS или JSc, и ответ придет сам по себе. |
ADirks 227 - 04.03.2005 - 14:33 |
(226) Не, ну вот и мне того же хочется. Правда правда :) Саш, и в самом деле, скажи стоит ли заморачиваться с парсингом, или подождать, пока телепат созреет? |
Michael 228 - 04.03.2005 - 14:34 |
(226) Я пишу не на VBS или JSc, а на 1С 7.7. Из твоего высказывания я делаю вывод, что в в сам telepat.dll именно работу после точки тяжело дописать. Хотя работа ДО точки в нем реализованиа великолепно! |
a13x 229 - 04.03.2005 - 14:39 |
(228) не важно на чем Вы пишете, важно то, что сложность реализации того или иного функционала зависит от сложности самого функционала совсем не линейно... |
trdm 230 - 04.03.2005 - 14:46 |
(228) Не моного не так. Дело в том сто в 1С сама является языком высокого уровня. Скриптовые языки - приблизительно того же уровня. То на чем пишет Александр, язык низкого уровня, где: тысяци функций, стоькоже нюансов и западней, + объем кода которые надо написать в 1С для решения подобной задачи в несколько крат меньше (10 строк на 1С = 500 строк на C++? утрировано, правда), чем на С++ и т.п. кроме того Александр имеет постоянную работу, а openconf и telepat - это вроди хобби (может быть) и этим он занимается в свободное (может быть) от основной работы время. А то что тебе хочется, м.м.м. всем хочется... и не только тебе. |
trdm 231 - 04.03.2005 - 14:50 |
(229) в "."-ку. (221) -> "и твои станут густыми и шелковистыми" -> Жена? Тещя? Обе? )))) |
orefkov 232 - 04.03.2005 - 14:55 |
Внесу ясность: Опенконф и Телепат - хобби. Хотя иногда и в рабочее время. В данное время уделить им много внимания не могу, тк меняю основное место работы, и загружен "дембельским аккордом". Ухожу работать в контору dmitro. Как там будет со временем еще не знаю. Планируемые работы по опенконфу: 1. Приведение сорцов в нормальный вид и их публикование. 2. Организация пользовательского GUI для скриптов (те использование форм как в oc2vba, только без VBA, используя fm20.dll) По телепату: 1. Рефакторинг текущего кода, тк уже сложно добавлять функционал. 2. Работа после точки. 3. Организация работы с метаязыком разметки модуля, для встраивания автодокументации модулей 1С. и телепату |
trdm 233 - 04.03.2005 - 15:17 |
Если dmitro работает в 1С или в мелкософте, то наконец-то стара нашла своего героя )))) ADirks - мой выбор писать (как и говорил), но писать модульно, и сорцы к Александру в копилку, пока не лопнет копилочка, или не придет пришествие 3-го Телепата. Не дадим потерять актуальность проекту! |
a13x 234 - 05.03.2005 - 09:54 |
Уважаемые пользователи ОпенКонфа и скриптов! В настоящий момент идет работа по укомплектации уже готового инсталлятора скриптами, и посему ко всем вопрос: какие скрипты туда включить? в сборку точно будут включены скрипты: ============================================================== Редактирование\author.js MD_Tasks\ExtractAllReporstIntoExternalFiles.vbs Навигация\FindText.vbs Навигация\GoToFormula.vbs Навигация\GoToMDTreeItem.vbs Intellisence\Intellisence.vbs Навигация\jumper.vbs Навигация\navigator.js Редактирование\RTrimModulevbs Редактирование\subprops.js Intellisence\VimComplete.js Общие\Клавиатура.js Конструкторы\Конструкторы бухитогов.vbs Конструкторы\Конструкторы документов.vbs Конструкторы\Конструкторы операций.vbs Конструкторы\Конструкторы предопределенных процедур.vbs Конструкторы\Конструкторы справочников.vbs Конструкторы\Конструкторы ТЗ.vbs РаботаСФормами\Конструкторы Элементов диалога.vbs Редактирование\Копировать модуль в буфер обмена.vbs Навигация\Навигация.vbs авигация\Открыть файл из директивы ЗагрузитьИзФайла.vbs Навигация\Переходы по модулю.vbs РаботаСФормами\Создать кнопку на форме.vbs РаботаСФормами\Создать процедуру и кнопку на форме.vbs РаботаСФормами\СоздатьФормуВводаВремени.js Общие\Шорткаты.vbs ============================================================== остальные скрипты из репозитария тоже попадут в сборку, но будут установлены в папку config\ПрочиеСкрипты . Вторым пунктом на собрании :-) будет вопрос о том, какие хоткеи вы предпочитаете вешать на те или иные макросы? . Есть предложение при установке автоматически установить и соотвествующий кеймап. . В общем, присылайте списки скриптов и кеймапы! можно сюда, а можно мне на почту kuntashov -собака! - яндекс/ру |
artbear 235 - 05.03.2005 - 10:14 |
(234) Доп. набор скриптов от меня: Intellisence\VimComplete.js Intellisence\dots.vbs Intellisence\Intellisence.vbs (последний из репозитария) Intellisence\RunAllIntellisence.vbs MD_Tasks\autoload.vbs MD_Tasks\MD to Archiv.vbs ВерсионныйКонтроль\extforms.vbs ВерсионныйКонтроль\Сравнить модуль.vbs ВерсионныйКонтроль\СравнитьОбъект.vbs Общие\Закрыть окно сообщений.vbs Разное\1C++.vbs Разное\ParseCmdLineInConfig.vbs Разное\SetWinCaption.vbs Разное\Меню всех макросов.vbs Разное\Меню макросов из файла.vbs Разное\Разработка скриптов.vbs Разное\Сохранение открытых окон.vbs Редактирование\Замена кода.vbs Редактирование\Форматирование текста.vbs |
a13x 236 - 05.03.2005 - 10:25 |
Мой кеймап ======================================= Ctrl + N - VimComplete::NextWord Ctrl + P - VimComplete::PrevWord Ctrl + Up - jumper::GoUp Ctrl + Down - jumper::GoDown Ctrl + Shift + Up - jumper::GoUp2 Ctrl + Shift + Down - jumper::GoDown2 Ctrl + Shift + G - GoToFormula::GoToFormula Ctrl + M - Навигатор::ОткрытьМодульДляОбъектаПодКурсором Ctrl + F - Навигатор::ОткрытьФормуДляОбъектаПодКурсором Ctrl + Shift + M - Навигатор::ОткрытьДругойМодульДляОбъектаПодКурсором Ctrl + Shift + F - Навигатор::ОткрытьДругуюФормуДляОбъектаПодКурсором F10 - Навигация::ToggleWorkbookPage F9 - Клавиатура::ОпенКонфВыполнитьМакрос Ctrl + I - Intellisence::MethodList ======================================= |
ADirks 237 - 05.03.2005 - 10:46 |
Ctrl+R - Разработка скриптов::ReloadScript Ctrl+F - Запускатель Перловых скриптов::CodeBeautifyer Alt+F - Форматирование текста::FormatLines Ctrl+Alt+F - Форматирование текста::FormatBlock Ctrl+A - Шорткаты::CtrlA Ctrl+Shift+A - Шорткаты::ReplaceTextFromClipBoard Ctrl+G - Навигация::GoToObject Ctrl+Up - jumper::GoUp Ctrl+Down - jumper::GoDown Ctrl+Althift+Up - jumper::GoUp2 Ctrl+Alt+Down - jumper::GoDown2 Ctrl+Shift+Up - jumper::GoUp3 Ctrl+Shift+Down - jumper::GoDown3 Ctrl+Tab - Навигация::ToggleWorkbookPage F12 - Навигация::GoToPage Ctrl+L - Клавиатура::ПерейтиКСтрокеПоНомеру Ctrl+I - Intellisence::MethodsList Ctrl+N - VimComplete::NextWord Ctrl+P - VimComplete::PrevWord Ctrl+D - Сравнить объект с предыдущей версией::DiffCurrentObject Ctrl+Shift+F4 - Шорткаты::CloseMessageWindow Shift+F1 - Шорткаты::SynaxHelperClose F9 - Шорткаты::OpenInDebugger Ctrl+F11 - Разбор командной строки Конфигуратора::RunInSharedMode |
Тертый 238 - 05.03.2005 - 10:52 |
F9 - ОткрытьВОтладчике CTRL + A - Выделить все Ctrl + F - форматировать текст Ctrl + Z - синтаксисконтроль Ctrl + G - открыть глобальный модуль Alt + B - авторские комментарии(изменил) Alt + L - ---------------------(добавил) Alt + E - ---------------------(удалил) ADirks, а ты не скрестишь последний Интелл с Дотсом? А то IAm c trdm'ом не договорились... Еще просьба ко всем скрипто-плагинописателям: выкладываете полные ссылки на ваши творения, вроде этой http://1c.alterplast.ru/files/ocs/ocs_last.zip |
Тертый 239 - 05.03.2005 - 11:03 |
остальное совпадает с выше названным |
ADirks 240 - 05.03.2005 - 11:05 |
(238) В полной мере объединить функционал это слишком сложно. Trdm сделал на мой взгляд лучше, а именно объединяющий скрипт, который запускает сначала intellisence, а в случае неуспеха dots. Эта связка уже выложена в репозитарий. |
a13x 241 - 05.03.2005 - 11:10 |
(238) в сборке будет intell + dots |
Michael 242 - 05.03.2005 - 11:11 |
(240)Что-то я в этой жизни пропустил... Где репозитарий? |
a13x 243 - 05.03.2005 - 11:12 |
(240) никак не могу на Ctrl+Tab макрос подцепить :-( вроде должно быть 0x01000000|0x00000009 = 0x01000009 нифига не работает :-( в каком месте у меня руки кривые? |
a13x 244 - 05.03.2005 - 11:18 |
(242) см. пост за номером 0 |
artbear 245 - 05.03.2005 - 12:37 |
(ALL) Пока не начали праздновать, открыл новую ветку. ЗЫ Лично я уехал праздновать. |
Тертый 246 - 05.03.2005 - 13:07 |
240) Это я имел ввиду, но он делал со старой версией Интелла, а сейчас в репозитарии уже с новым Интеллом??? Если так, то вопрос снят. |
a13x 247 - 05.03.2005 - 13:08 |
(246) новый и улучшенный |
Тертый 248 - 05.03.2005 - 13:15 |
афигеть!!! отлично! |