Персональная страница Федора Езеева
Главная
Download
Ссылки
MS SQL
Обмен данными
Новости
Статьи
О себе
Крупные разделы...
Коллективная разработка
1С++, OOP, XP
FuncTest
FAQ
Структура 1cv7.md
Опенконф и Телепат 2 (пререлиз) (продолжим 15?)
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'ы нормально работали. Ерунда получается, ибо папка {СистемныеФайлы} переименовывается в {'Ёбв_&#9488;-л_"_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
афигеть!!! отлично!

Rambler's Top100 1C:TOP-100

© 1998-2004 Fedor Ezeev.

Last updated: 2005-09-05