artbear 10.11.2004 - 13:39 |
Итак, начнем 10 ветку о Телепате и Опенконфе - программирование для Конфигуратора, облегчение работы разработчиков 1С! Теперь уже точно свыше 2500 постов :) (в предыдущей ветке был неверный подсчет) Для тех, кто только что присоединился. --------------------------------------------------------- Автор всего этого набора чудес - Александр Орефков --------------------------------------------------------- Сабж + скрипты для Опенконф (сайт автора) http://openconf.itland.ru/beta FAQ http://1c.alterplast.ru/faq/telepat.html http://1c.alterplast.ru/faq/openconf.html Другие плагины/скрипты для Опенконфа можно взять (а также самому положить !!) в Клубе Профессионалов http://1c.proclub.ru/modules/mydownloads/viewcat.php?op=&cid=1002 Предыдущие ветки о Телепате/Опенконфе можно взять на страничке http://1c.alterplast.ru/faq/telepat.html На итланде.ру есть специальный форум для обсуждения именно Опенконфа и его плагинов (в т.ч. и Телепата) http://itland.ru/forum/index.php?showforum=37 Если у кого есть что-то интересное для Опенконфа - плагины, скрипты, присылайте мне, я размещу на http://openconf.itland.ru Или, что еще лучше, сами выкладывайте свои творения в Клуб Профессионалов в раздел Опенконф http://1c.proclub.ru/modules/mydownloads/submit.php так будет наиболее удобно для всех :) ----------------------------------- Качать и пользовать всем, кто хочет реально облегчить и обустроить свою работу в Конфигураторе :)
|
artbear 1 - 10.11.2004 - 13:41 |
В продолжение предыдущей ветки: (I love 1C) И что написано в этом скрипте (Переходы по модулю.вбс) в строке 37 ? |
Тертый 2 - 10.11.2004 - 13:47 |
Данила хМастер, про скрипт FildHint Все по инструкции. Юзаю: Спр=СоздатьОбъект("Справочник.Номенклатура"); Наименование=Спр...тут жму хоткей, предлагает перечень справочников, потом элементов. "Наименования" нет в перечне элементов. Что-то не так делаю? Раз 5 попробовал. |
fez 3 - 10.11.2004 - 13:53 |
Предыдущая ветка о телепате сохранена на http://1c.alterplast.ru/faq/telepat.html Сама ветка: http://1c.alterplast.ru/faq/tlpt_t1c_9.html |
slavka 4 - 10.11.2004 - 14:09 |
(1) артур, ты чего из аськи пропал? |
Oblomov 5 - 10.11.2004 - 14:13 |
Почему не выходит релиз? Вроде основные баги пофиксены, ну и чудненько. А то так можно до бесконечности бетту вылизывать. А новый функционал, можно и в новые релизы добавлять. имхо. |
I love 1C 6 - 10.11.2004 - 14:34 |
1. Sub Init(param) Set CommonScripts = Scripts("common") End Sub |
Kraft 7 - 10.11.2004 - 14:37 |
А как повесить хоткей не на комбинацию Alt+что-то а просто на что-то? Чтобы было как в дельфях - нажал на точку и получил все методы. Не на Alt+., а просто на . |
orefkov 8 - 10.11.2004 - 15:19 |
(5) Релиз будет когда хотябы вчерне сделаю работу после точки. (7) А ты повесь на Ctrl+Точка, потом зайди в реестр в HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\OpenConf\HotKeys, найди папочку с максимальным номером, и измени параметр code, так, что бы оканчивалось на 0000. Там структура такая: два байта virtual key code, и 2 байта - модификаторы. Если не ошибаюсь, должно получится 0xbf0000 |
MetaEditor 9 - 10.11.2004 - 17:46 |
6) а если Set CommonScripts = Scripts(CStr("common")) |
artbear 10 - 10.11.2004 - 18:06 |
(9) Нет, будет тоже самое. ИМХО Причин может быть две (сталкивался сам): 1) скрипт коммон.вбс не загрузился по какой-то причине 2) не выходя из Конфигуратора в скрипт коммон.вбс были внесены изменения, он был перезагружен, а скрипт "Переходы по модулю" не перезагружался. 3) если п.1, то возможно в скрипт коммон.вбс были внесены неверные изменения с точки зрения синтаксиса, и скрипт не загрузился. МОжно попробовать его перезагрузить вручную, посмотреть, что напишет Конфигуратор, затем перезагрузить скрипт "Переходы по модулю" и посмотреть, что получится. |
oldhunter 11 - 10.11.2004 - 22:00 |
Хочу выразить огромную благодарность автору сего творения. |
GrayT 12 - 10.11.2004 - 22:26 |
Пара вопросов: 1. Тут навеяли - можно ли при помощи OpenConf извернуться и поработать с прямоугольными блоками? 2. Так и не нашелся способ открывать редактор самого объекта, а не его модули и диалоги? |
orefkov 13 - 11.11.2004 - 00:07 |
(12) 1. Нет 2. Пока нет |
MetaEditor 14 - 11.11.2004 - 04:34 |
10) в общем выяснилось, что common.vbs должен стоять первым в дереве скриптов в конфигураторе (или перед скриптами его использующими) для чего удалил все скрипты и по очереди открывал конфигуратор сначала с коммон.вбс потом с "перходыПоМодулю" а потом остальными... так заработало... |
artbear 15 - 11.11.2004 - 06:22 |
(14) Понятное дело, что коммон.вбс должен загружаться первым. Непонятно, почему так не происходило. Видимо, дело в том, что порядок загрузки скриптов не определен, и похоже, что не по алфавиту, скорее всего, в порядке создания файлов в папке. |
a13x 16 - 11.11.2004 - 08:26 |
(14),(15) совсем недавно же обсуждали, что скрипты-библиотеки можно подгружать явно из других скриптов, проверив предварительно, не загружен ли он... теперь все работает красиво, пример такого подхода можно посмотреть здесь http://kuntashov.narod.ru/files/TestDependensies.zip из хистори ОпенКонф'a: ----------------------------------------------- [...sk...] * При первоначальной загрузке скриптов пропускаются скрипты, уже загруженные програмно [...sk...] ----------------------------------------------- |
IAm 17 - 11.11.2004 - 08:55 |
12 Почему нельзя? Первым макросом метишь левый верхний угол блока каким-нибудь знаком и правый нижний, вторым - делаешь с этой областью что хочешь. |
GrayT 18 - 11.11.2004 - 08:59 |
(17)извиняюсь за наглость. Подскажите любой скрипт, где в качестве примера можно было бы посмотреть как работать с текстом. Что б не сильно навороченный был |
slavka 19 - 11.11.2004 - 09:08 |
(ALL) потесьтите плиз. не могу понять где собака порылась. на маленьких конфигах работает, а на больших вылетает: Sub hh Set AllObjects = Documents.EnumAllTypedObj() ' Перебираем группы объектов первого уровня For i = 0 To AllObjects.ChildsCount("") - 1 Name = AllObjects.ChildName("", i) 'тип объекта 'Перебираем объекты и количество форм(модулей) у каждого cc = AllObjects.ChildsCount(Name) - 1 If cc < 0 Then Message Name,mNone Else For j=0 To cc-1 Parent = Name&"."&AllObjects.ChildName(Name, j) kl = AllObjects.ChildsCount(Parent) - 1 if kl = 0 Then Message Parent, mNone Else For k = 0 To kl Name3 = Parent&"."&AllObjects.ChildName(Parent, k) kl2 = AllObjects.ChildsCount(Name3)-1 If kl2 >= 0 Then for l = 0 To kl2 Name4 = Name3&"."& AllObjects.ChildName(Name3, l) Message Name4, mNone 'ЕСЛИ СЛЕДУЮЩУЮ СТРОЧКУ РАСКОММЕНТИРОВАТЬ ТО ВЫЛЕТАЕТ 'Set doc = Documents(Name4) Next Else Set doc = Documents(Name3)'.text if doc.type=1 then 'форма AllLines = doc.page(1).text k_str = doc.page(1).LineCount elseif doc.type=2 then 'модуль AllLines = doc.text k_str = doc.LineCount end if modul = split(AllLines, vbCrLf) Message Name3&" - "&k_str, mbNone 'Message Name3, mbNone End If Next Set doc = Nothing End If Next End If Next End sub |
slavka 20 - 11.11.2004 - 09:10 |
(18) посмотри например скрипт "форматировать знаки =.vbs" |
IAm 21 - 11.11.2004 - 09:19 |
Обновил Intellisence for openconf http://1c.proclub.ru/modules/mydownloads/personal.php?lid=4229&cid=1001 18 На проклабе в разделе опенконф Artbear выкладывал скрипты которыми он пользуется, там есть ерия скриптов Конструктор ... vbs они все очень простые. |
artbear 22 - 11.11.2004 - 09:45 |
(18) Или можешь посмотреть мой скрипт "Замена кода" в клубе Профессионалов, вот он ну очень простой :) |
Phoenix 23 - 11.11.2004 - 09:46 |
(8) Саш, как там с моим вопросом по oc2vba? |
artbear 24 - 11.11.2004 - 09:49 |
(16) Для подобных исправлений надо ведь код переделывать во всех скриптах, где есть использование коммон.вбс, а лично у меня пока времени нету. В следующем релизе своего набора исправлю. И в принципе даже без программной загрузки все отлично работает. А у чела, видимо, Вин98, потому и какие-то глюки :( |
artbear 25 - 11.11.2004 - 10:51 |
Времени выложить нету, поэтому пока сюда. Вот код моего варианта макроса "копировать строку", работает именно для строк, положение курсора неважно, может быть выделено несколько строк или ничего не выделено, выделение может быть неполным (т.е. не вся строка), после дублирования строки в новой строке курсор встает в ту же колонку, в которой стоял до запуска макроса ЗЫ используется скрипт коммон.вбс Sub CopyLine() Set doc = CommonScripts.GetTextDoc(0) If doc Is Nothing Then Exit Sub Line1 = doc.SelStartLine Line2 = doc.SelStartLine Col1 = 0 Col2 = doc.LineLen(doc.SelStartLine) ColOfCursor = doc.SelStartCol If (doc.SelStartLine <> doc.SelEndLine) Then ' есть выделение на нескольких строках If (doc.SelStartCol = 0) And (doc.SelEndCol = 0) Then ' выделено ровно одна или несколько строк Line2 = doc.SelEndLine - 1 Col2 = doc.LineLen(doc.SelEndLine - 1) Else Line2 = doc.SelEndLine Col2 = doc.LineLen(doc.SelEndLine) End If End If CurrentText = doc.Range(Line1, Col1, Line2, Col2) sArray = Split(CurrentText, vbCrLf) CurrentText = "" For Each s In sArray CurrentText = CurrentText & s & vbCrLf Next For Each s In sArray CurrentText = CurrentText & s & vbCrLf Next doc.Range(Line1, Col1, Line2, doc.LineLen(Line2)) = CurrentText ' верну курсор в ту же позицию с учетом добавленных строк iNewLine = Line1 + UBound(sArray) + 1 doc.MoveCaret iNewLine, ColOfCursor, iNewLine, ColOfCursor End Sub ' CopyLine |
artbear 26 - 11.11.2004 - 10:53 |
(+25) Можно просто добавить этот код в мой скрипт "Замена кода" и он сразу же заработает. |
Номер 6 27 - 11.11.2004 - 11:07 |
(25) А вот так проще: function CopyString() { var d = getActiveTextDoc() ; if (d == null) return; if (d.SelStartLine == d.SelEndLine) { d.Range(d.SelStartLine) += '\r\n' + d.Range(d.SelStartLine); } else { d.Range(d.SelStartLine, 0, d.SelEndLine + 1, 0) += d.Range(d.SelStartLine, 0, d.SelEndLine + 1, 0); } } |
Тертый 28 - 11.11.2004 - 11:19 |
21) А так и должно быть: в начале пустой строки жму хоткей, потом Esc //============================================================ Процедура () КонецПроцедуры я же вроде отменил действие... баг или фича? |
IAm 29 - 11.11.2004 - 11:29 |
28 Баг, фенькс |
artbear 30 - 11.11.2004 - 11:34 |
(27) Да, проще. Еще бы курсор передвинулся в новую строку :) |
Тертый 31 - 11.11.2004 - 11:34 |
29) Да не за что, ишшо найдем... :-) |
orefkov 32 - 11.11.2004 - 11:47 |
(19) К сожалению, пока не знаю, как это побороть. Ресурсы, выделяемые 1С под данные, полученные по Documents(Name) не высвобождаются, пока не будет открыто и закрыто окно, связанное с полученным документом. Соответственно, при большом количестве таких документов, 1С валится. (All) Что возвращает метод Регистр::ВыбратьДвижения(НачДата,КонДата) ? В документации ничего не написано, однако проверил, это не процедура. Какие бы даты не ставил, всегда возвращает 1. |
artbear 33 - 11.11.2004 - 11:48 |
(27) Большое спасибо, код выглядит намного симпатичнее :)) С учетом (27) код "Копировать строку" (на ВБСкрипт) работает именно для строк, положение курсора неважно, может быть выделено несколько строк или ничего не выделено, выделение может быть неполным (т.е. не вся строка), после дублирования строки в новой строке курсор встает в ту же колонку, в которой стоял до запуска макроса ЗЫ используется скрипт коммон.вбс Sub CopyLine() Set doc = CommonScripts.GetTextDoc(0) If doc Is Nothing Then Exit Sub if (doc.SelStartLine = doc.SelEndLine) then doc.Range(doc.SelStartLine) = doc.Range(doc.SelStartLine) & vbCrLf & doc.Range(doc.SelStartLine) else doc.Range(doc.SelStartLine, 0, doc.SelEndLine + 1, 0) = doc.Range(doc.SelStartLine, 0, doc.SelEndLine + 1, 0) & doc.Range(doc.SelStartLine, 0, doc.SelEndLine + 1, 0) end if ' верну курсор в ту же позицию на новой строке с учетом добавленных строк doc.MoveCaret doc.SelEndLine + 1, doc.SelStartCol, doc.SelEndLine + 1, doc.SelStartCol End Sub ' CopyLine |
artbear 34 - 11.11.2004 - 11:50 |
(32) Ага, я также на днях нарвался на такое поведение. Помогает только анализ ПолучитьДвижение :( |
orefkov 35 - 11.11.2004 - 11:56 |
(23) Если честно, пока не смотрел. Занят на основной работе. Но проверю обязательно. |
slavka 36 - 11.11.2004 - 13:28 |
(32) т.е. допустим я перебрал сотню объектов, а затем открою и закрою окно последнего объекта то память высвободится? |
slavka 37 - 11.11.2004 - 13:35 |
+36 или надо открывать каждый объект чтобы память высвободить? |
IAm 38 - 11.11.2004 - 14:55 |
есть строка "Справочник.Договоры.Форма" Как прочитать а потом записать стрим диалога? |
Бертыш 39 - 11.11.2004 - 15:01 |
(orefkov)Было бы не плохо если бы имелся файл синтаксис-помошника с описанием объектной модели OpenConfig. Удобнее было бы править скрипты в 1С :) |
IAm 40 - 11.11.2004 - 15:16 |
+38 можно ObjName = "Справочник.Договоры.Форма.Диалог" Stream = Documents.Item(ObjName).Stream ================================= Но это можно из скрипта, из плагина нельзя, Vb Не компилит, говоря что не найден метод Stream 39 В любом ObjectBrowser-е |
ob36 41 - 11.11.2004 - 15:19 |
Я полный ламер в плане написания скриптов под Openconf, поэтому обращаюсь к Великим: не могли бы Вы реализовать алгоритм (скрипт) очистки текста 1cv7-кода от комментариев, а то при разработке достаточно больших модулей имею нехорошую привычку оставлять кучу комментариев для использования их при отладке, а также в случаях коллективной правки. На этапе, когда все заработало, куча времени тратится на то, чтобы поудалять все то, что "подсвечено зеленым цветом", однако, и это понятно, комментируются не всегда строки целиком, но зачастую и их "хвосты", что необходимо учесть... Если Вам это не очень сложно, то плз... |
orefkov 42 - 11.11.2004 - 15:28 |
(37) Да (38) Documents("Справочник.Договоры.Форма.Диалог").Stream Но также см. 32. ТЕ желательно ограничиваться диалогом текущей формы. Я стараюсь это исправить. Может получится. (39) Описание я пока даже в текстовом виде не успеваю сделать :( |
IAm 43 - 11.11.2004 - 15:31 |
42 Саш, 40 читал? "Но это можно из скрипта, из плагина нельзя, Vb Не компилит, говоря что не найден метод Stream" |
orefkov 44 - 11.11.2004 - 15:34 |
(40) В VB надо так: Dim dialog as DialogDoc Set doc=Documents("Справочник.Договоры.Форма.Диалог") Set dialog=doc text=doc.Stream |
slavka 45 - 11.11.2004 - 15:35 |
(39)в VBA офисном можно посмотреть описание объектной модели. вытащи и сделай алс-ник. (42) спасибо. будем експерементировать. а можно ли открыть форму дока и сделать ее невидимой? |
orefkov 46 - 11.11.2004 - 15:37 |
(45) Что сделать то хочешь? Может подскажу, как лучше сделать? |
IAm 47 - 11.11.2004 - 15:37 |
44 фнкс |
artbear 48 - 11.11.2004 - 15:53 |
(44) Ага, я также делал в своем плагине "История" (47) Правда, давно это было + первый опыт (и похоже, последний) на ВБ, потому и не помнил :( |
slavka 49 - 11.11.2004 - 15:54 |
делаю скрипт для поиска ссылок на объект по такой схеме: узнаю какое выражение находится у меня под курсором (напр. "Справочник.Контрагенты"), затем Set doc = Documents("Справочник.Контрагенты") TestRefers(doc) потом перебираю модули и ищу в них искомое выражение. |
orefkov 50 - 11.11.2004 - 16:57 |
(49) А TestRefers зачем? . Пользуясь случаем, хочу анонсировать еще одну свою ВК для 1С-Предприятия, TurboRights. ВК будет позволять: 1. "на лету" править права пользователей, не трогая мдшник. 2. Задавать более гибкое управление правами, подобно юзерам в домене, те. приписывать юзера к нескольким группам пользователей, управлять не только "Разрешить", но и "Запретить" тп. Расширение набора встроенных в 1С прав не планируется. Ориентировочный срок выхода - месяц. (тк это не приоритетная задача) Хочется услышать мнения, а надо ли это? |
slavka 51 - 11.11.2004 - 17:09 |
(50) это чтобы не пользоваться 1С-ким поиском, чтобы одним макросом искать везде. если еще и пароль можно будет менять то ДА!!!! |
slavka 52 - 11.11.2004 - 17:12 |
+ распечатать содержимое набора прав |
KRIHA 53 - 11.11.2004 - 17:40 |
(50) 1. "на лету" править права пользователей, не трогая мдшник. - конечно надо 2. ... - скорей всего надо "Расширение набора встроенных в 1С прав не планируется." - жаль :-) |
GrayT 54 - 11.11.2004 - 21:29 |
(50)Гуд. Надо. В условиях постоянно развивающихся конфигураций постоянно наталкиваюсь на то что "надо бы права поменять" |
trdm 55 - 12.11.2004 - 10:26 |
Скриптовая функция, позволяющая немного подругому выбрать имя константы, вобщем не так как в шаблонах "Константа.<?Константа>" Function GetConstantEx() Dim TypeConstArr GetConstantEx = "" TypeConstStr = "" tree = "" Set Childs = MetaData.TaskDef.Childs(CStr("Константа")) For i = 0 To Childs.Count - 1 Set mdo = Childs(i) if Len(TypeConstStr) = 0 Then TypeConstStr = mdo.Type.FullName & "##" elseIf InStr(1,TypeConstStr,mdo.Type.FullName&"##")=0 Then TypeConstStr = TypeConstStr & mdo.Type.FullName & "##" End if next TypeConstArr = split(TypeConstStr,"##") if UBound(TypeConstArr)<>-1 Then For i = 0 To UBound(TypeConstArr)-1 tree = tree & TypeConstArr(i)& vbCrLf For tt = 0 To Childs.Count - 1 Set mdo = Childs(tt) if (mdo.Type.FullName = TypeConstArr(i)) Then tree = tree & vbTab & mdo.Name& vbCrLf End if next next End if Set srv=CreateObject("Svcsvc.Service") Cmd = srv.SelectInTree(tree,"Открыть....",false) ln = Len(Cmd) If Ln = 0 Then Exit Function else rrrr = split(Cmd,"\") if UBound(rrrr)<> -1 Then GetConstantEx = rrrr(UBound(rrrr)) End if End if End Function |
trdm 56 - 12.11.2004 - 10:35 |
попробуйте, понравится :) |
artbear 57 - 12.11.2004 - 11:10 |
(56) А мне больше всего нравятся варианты через FilterValue (как МетодыМодуля) с фильтрацией содержимого, ИМХО наиболее быстро и удобно. |
Тертый 58 - 12.11.2004 - 11:32 |
50) Конечно, надо! Я недавно начал TurboMD пользоваться, а это отличное дополнение. А то подходит какой-нить начальник: "Надо тому-то запретить то-то..." В ответ: или всех выгоняем, или жди до вечера. А вечером после всех тоже неохота оставаться! |
Тертый 59 - 12.11.2004 - 11:41 |
Попробовал, создал скрипт, туда запихнул 55), повесил на хоткей, вызвал, красиво, но надо пользоваться мышью. Щелкнул мышкой по выбранному, нажал ОК - ни фига не произошло. Я что-то не понял? |
Oblomov 60 - 12.11.2004 - 11:47 |
По Intellisence.vbs замечания. (Версия 1.0.8) 1. Нельзя ли в выпадающем списке макроса использовать тот же шрифт, что использует телепат? 2. В описании обработки попытался поставить точку, получил ошибку выполнения макроса. Как то неаккуратьненько, доктор. |
IAm 61 - 12.11.2004 - 12:00 |
60 Что такое описание обработки? какую ошибку Вы получили? |
trdm 62 - 12.11.2004 - 12:05 |
(57) на вкус и цвет :) (59) это всего лишь примочка, для вставки в текст нужно использовать нечто на подобие: ******************************* textTo = GetConstantEx() Pos = len(textTo) doc.range(doc.SelStartLine,doc.SelStartCol, doc.SelStartLine,doc.SelStartCol) = textTo doc.MoveCaret doc.SelStartLine, doc.SelStartCol+Pos-1 **************************** с проверкой того, что doc - активное окно типа docText Обнови с проклуба "Эмулятор работы с точкой", там эта беда вызывается таким образом "константа[.|](положение курсора)". Однако если у тебя в стандартных шаблонах есть такой "константа." его следует переименовать, если хочешь использовать. |
IAm 63 - 12.11.2004 - 12:05 |
"данная операция допустима только при открытом документе?" никогда ничего не писал на закладке описания, буду разбираться |
Oblomov 64 - 12.11.2004 - 12:21 |
2(61) Intellisence вызывается по "." Вкладка "Описание" во внешней обработке, отчете. Такая же ошибка возникает, если в обычном тексте (меню файл->новый->текст)попытаться поставить точку. Ошибка выполнения скрипта. Скрипт Intellisence Файл ... Intellisence.vbs Строка: 1074 Позиция: 1 Код: 0 иточник Ошибка выполнения Microsoft VVBScript Описание Индекс выходит за пределы допустимого диапазона 'doc.SelStartLine' |
artbear 65 - 12.11.2004 - 12:51 |
Кто-нибудь делал скрипт по перезагрузке Конфигуратора? Например, чтобы загрузить хоткеи или еще для чего-нибудь такой скрипт может пригодиться. |
orefkov 66 - 12.11.2004 - 13:09 |
2IAm: По поводу работы в описаниях. Получение текущего окна измени: вместо Set doc=doc.Page(1) сделай Set doc=doc.Page(doc.ActivePage) |
a13x 67 - 12.11.2004 - 13:10 |
(65) "перезагрузка конфигуратора" - это как? перезагрузка всех скриптов опенконфа и бла-бла-бла или полный перезапуск конфигуратора или еще что-то? |
artbear 68 - 12.11.2004 - 13:21 |
(67) Именно полный перезапуск Конфигуратора. |
trdm 69 - 12.11.2004 - 14:45 |
(All) А подскажите как получить для данного документа например ThisDoc список документов на основании которых он вводится? где сия премудрость сидит? |
Matiс 70 - 12.11.2004 - 15:11 |
ВОТ ТАКАЯ ПРОБЛЕМА. Помогите. Написал скриптик из хелпа Function ShowFileAccessInfo(filespec) Dim fso, f, s msgbox 2 Set fso = CreateObject("Scripting.FileSystemObject") msgbox 3 Set f = fso.GetFile(filespec) msgbox 4 s = f.Path & "<br>" s = s & "Created: " & f.DateCreated & "<br>" s = s & "Last Accessed: " & f.DateLastAccessed & "<br>" s = s & "Last Modified: " & f.DateLastModified ShowFileAccessInfo = s End Function msgbox 1 FileName = "D:\1.txt" msgbox ShowFileAccessInfo(filename) Соответственно создал файл "D:\1.txt" Запустил. Выдает 1,2,3 и ... все. В дебагере fso.FileExists(filename) выдает True , а на GetFile ругается. Может надо переустановить VB? Если да, то откуда. |
IAm 71 - 12.11.2004 - 15:12 |
64, 65 спасибо, поправлю |
orefkov 72 - 12.11.2004 - 15:14 |
Sub GetOsn() Set mdDoc = MetaData.FindObject(ThisDoc.ID) docName = mdDoc.Name Set alldocs = MetaData.TaskDef.Childs("Документ") For i = 0 To alldocs.Count - 1 Set mdDoc = alldocs(i) osn = mdDoc.Props("ВводимыеНаОснованииДокументы") If InStr(osn, docName) > 0 Then Message mdDoc.Name Next End Sub |
artbear 73 - 12.11.2004 - 15:36 |
(ALL) Пара макросов для комментирования/разкомментирования текста в отличие от типового способоа ставит комментарий, даже если ничего не выделено или выделен текст на одной строке Удобно посадить вместо типового CTRL + / и CTRL + Shift + / ЗЫ Используют коммон.вбс из моего набора. Текст скрипта: ' комментировать текст ' в отличие от типового ставит комментарий, ' даже если ничего не выделено или выделен текст на одной строке ' Sub CommentSelection() set doc = CommonScripts.GetTextDocIfOpened(0) if doc is Nothing then Exit Sub ' если ничего не выделено или выделен текст на одной строке if (doc.SelStartLine = doc.SelEndLine) then doc.Range(doc.SelStartLine) = "//" & doc.Range(doc.SelStartLine) doc.MoveCaret doc.SelStartLine, doc.SelStartCol +2, doc.SelStartLine, doc.SelEndCol+2 else doc.CommentSel() end if End Sub Sub UnCommentSelection() set doc = CommonScripts.GetTextDocIfOpened(0) if doc is Nothing then Exit Sub ' если ничего не выделено или выделен текст на одной строке if (doc.SelStartLine = doc.SelEndLine) then sText = doc.Range(doc.SelStartLine) pos = InStr(sText, "//") if pos <> 0 then doc.Range(doc.SelStartLine) = Left(sText, pos-1) & Mid(sText, pos+2) end if doc.MoveCaret doc.SelStartLine, doc.SelStartCol-2, doc.SelStartLine, doc.SelEndCol-2 else doc.UnCommentSel() end if End Sub |
Matiс 74 - 12.11.2004 - 15:44 |
+(70) ЧТО ДЕЛАТЬ? ПОМОГИТЕ. FSO.FileExists(FileName) = True FSO.GetFile(FileName)....... при расчете вылетает Проверил на трех разных машинах. |
slavka 75 - 12.11.2004 - 15:54 |
(72) насчет 19 ничего не посоветуешь? |
IAm 76 - 12.11.2004 - 16:01 |
74 Отправил по почте возможное решение |
trdm 77 - 12.11.2004 - 16:23 |
(74) попробуй закоментировать строку "Dim fso, f, s" (72) спасибо, сделал приблизительно тоже самое :) + На счет вылетов (предыдущая ветка) на следующий день все заработало и работает (... по дереву). |
Тертый 78 - 12.11.2004 - 16:27 |
72) Артур, вылетает макрос в 100% случаев. "Не удалось выполнить макрос "UnCommentSelection"." |
Matiс 79 - 12.11.2004 - 16:31 |
(77) Не помогло. Текст функции взят из хелпа по GetFile(), за исключением msgbox i :) (76) пока ничего нет :( Ждем |
Matiс 80 - 12.11.2004 - 16:33 |
(76) Если что, мой адрес veld21(Гав)pochta.ru |
artbear 81 - 12.11.2004 - 16:37 |
А текст какой пытаешься раскомментировать? А КомментСелекшен работает? И как этот макрос запускаешь? через Цтрл + М или еще как? |
trdm 82 - 12.11.2004 - 16:37 |
(79) попробовал у себя твой скрипт - работает, видимо я что-то не то делаю :) |
a13x 83 - 12.11.2004 - 16:41 |
(80) если это может помочь... у меня ваш скрипт работает норамльно без всяких преобразований - банальный копипейст.... за исключением того, что поскольку в корень диска мне сохранять нельзя, я поменял путь на "D:\share\1.txt" ... |
IAm 84 - 12.11.2004 - 16:42 |
80 Туда и послал, отпишись мне ещё раз - отвечу |
orefkov 85 - 12.11.2004 - 16:56 |
http://openconf.itland.ru/beta Телепат 2.0.0.0o * Добавлены описания методов всех объектов, кроме БИ * Расширена обработка строк в кавычках Снято ограничение на 2 "точки" в строке Добавлены ключевые слова языка запросов * В списке выбора Ctrl+Left/Right направляются в текстовый редактор * Список выбора сделан "бесконечным", то есть Up/Down вверху/внизу списка перемещают текущий выбор вниз/вверх * Исправлена ошибка при Ctrl+Enter при открытом списке выбора * Исправлена ошибка при обработке команды меню шаблонов * В диалоге "Методы модуля" сделана возможность быстрого переключения настроек "Сортировать" (Ctrl+S) и "Фильтровать" (Ctrl+F) * Диалог методы модуля: при фильтрации методов не устанавливался выделенный метод |
trdm 86 - 12.11.2004 - 17:37 |
(85) ООО супер! теперь о наболевшем выслал письмо на tornado.msx, глянь пожалуйста. |
корум 87 - 12.11.2004 - 18:57 |
(85) в новой версии попали автозавершения ключевых слов / предопределённых процедур в русском варианте. Верни, пожалуйста Если_КонецЕсли и им подобные... |
Номер 6 88 - 13.11.2004 - 09:50 |
(87) У меня остались на месте. |
Номер 6 89 - 13.11.2004 - 09:53 |
А как перехватить вставку блоков типа "Если_КонецЕсли"? |
trdm 90 - 13.11.2004 - 12:19 |
(89) Sub Telepat_OnInsert(InsertType, InsertName, Text) Select Case InsertType Case 14 ' <<<<<<<<<<<< Предопределенные блоки End Sub |
Номер 6 91 - 13.11.2004 - 13:10 |
(90) Точно. Спасибо! |
trdm 92 - 13.11.2004 - 14:36 |
Кто-нибудь делал скриптик или отчетик или обработочку показывающую дерево ввода на основании для документов? |
artbear 93 - 13.11.2004 - 15:11 |
Обновление скрипта "Замена кода" на проклабе Также в набор поместил общий скрипт коммон.вбс История: * Замена кода.vbs 1.2: [+] макрос "Копировать строку (или несколько выделенных строк"; [+] макрос "обменять местами левую и правую часть присвоения (=) с сохранением возможных комментариев"; [-] работает только с активным окном текстового модуля; * common.vbs 1.6: [+] новый метод " FormatDate" для расширенного форматирования даты (ADirks); [+] новый метод "TogglePanel" переключает видимость различных панелей (Orefkov); [*] RunCommandAndWait: выдача сообщения об ошибке в случае неудачи запуска приложения из командной строки. [-] при выборе файла используется переданный фильтр файлов; Брать здесь - http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=1001&lid=4200 |
artbear 94 - 14.11.2004 - 09:40 |
(ALL) Есть ли в природе какая-нибудь прога по работе с файлом данных о пользователях (users.usr)? Чтобы работала или через командную строку, или как КОМ-объект для возможного использования в Конфигураторе! Видел Userdef.dll - но эта ВК работает только в среде 1С-Предприятия, к сожалению. |
trdm 95 - 14.11.2004 - 14:34 |
(All) А есть ли в природе внешняя компонента которая может предоставить 1С-у мощь регулярных выражений? |
a13x 96 - 14.11.2004 - 16:37 |
2(95) а так не устроит? -------------------------------------------- Функция ЭтоЦелоеЧисло(Стр) re = СоздатьОбъект("VBScript.RegExp"); re.Pattern = "^\d+$"; Возврат ?(re.Test(Стр)=0, 0, 1); КонецФункции Процедура Сформировать() Стр = "1111"; Если ЭтоЦелоеЧисло(Стр)=1 Тогда Сообщить("Это целое число!"); Иначе Сообщить("Это не целое число!"); КонецЕсли; КонецПроцедуры ------------------------------------------------------- если таких регекспов не хватает, можно поискать в инете по фразе PerlCtrl+regexp.dll |
Синхронизатор 97 - 14.11.2004 - 18:12 |
(93): Артур, а нафига "форматирование", если не секрет?.. Просто... Ну, вот, к примеру, если в файл шаблонов 1С добавить: {"Формат(...)","4","фрмт","Формат(<?""Чего форматнём?"">,""<?"""",Формат>"")","0","1","0"} - и набрать в коде: "фрмт" + Enter или Space... Угадай, ЧТО произойдет?.. |
artbear 98 - 14.11.2004 - 18:36 |
(97) Думаю, пригодится для: 1) Для использования в скриптах. 2) честно говоря, сам не знаю :) просто Алексей Диркс написал этот код, я просто добавил к себе в библиотечный скрипт, вдруг пригодится когда-нибудь |
Синхронизатор 99 - 14.11.2004 - 18:57 |
2(98): Артур, в Телепате есть замечательная фича для отработки "штатных" шаблонов 1С "штатным" способом с получением результата такого выполнения в виде строки. И почему в скриптах не пользоваться этой фичей для выполнения вот такого шаблона 1С: ""<?"""",Формат>"" --- ??? |
trdm 100 - 14.11.2004 - 19:26 |
Set Matches = regEx.Execute(strng) - тут облм наверное будет 1С ведь коллекции не поддерживает :( А я этим пользуюсь |
Синхронизатор 101 - 14.11.2004 - 19:39 |
2(100): '=============================================================================== ' Позаимствовано из Telepat.vbs комплекта поставки telepat2n (автор - А.Орефков) ' ------------------------------------------------------------------------------ ' 1. Функция выбора средствами 1С различных видов метаданных ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Function SelectMetaObj(objName, objType, Title) ' Для выбора используется метод телепата ConvertTemplate (обработка переданного ' текста шаблона стандартным 1С-методом и возврат получившегося текста). ' В данном случае формируется текст одной из управляющих функций шаблонов ' для выбора объекта метаданных, например <?"Укажите документ",Документ> objName = Telepat.ConvertTemplate("<?""" & Title & """," & objType & ">") If Len(objName) = 0 Then Set SelectMetaObj = Nothing: Exit Function 'Message objName + " , " + objType + " , " + Title , mNone ''ОТЛАДКА Set SelectMetaObj = MetaData.TaskDef.Childs(CStr(objType))(CStr(objName)) ' Возврат описания метаданных для выбр.объекта. End Function 'SelectMetaObj '=============================================================================== |
trdm 102 - 14.11.2004 - 19:56 |
-(100) Как приятно иногда ошибаться :) Работает!!!!!!!!!!!!!!! (96) Большой сенкс за раскрытые глаза :) Процедура Сформировать() re = СоздатьОбъект("VBScript.RegExp"); re.Pattern = "(\s)*\d+(\s)+"; re.IgnoreCase = 1; re.Global = 1; Matches = re.Execute("120 ;;;;;;;;;; 4444 666666 ааааааааааааааа 4 ууууууууууу рп333нл"); Если Matches.Count()<> -1 Тогда СчетчикЦикла = 0; Для СчетчикЦикла = 0 По Matches.Count()-1 Цикл Match = Matches.Item(СчетчикЦикла); Сообщить(Match.Value); КонецЦикла; КонецЕсли; КонецПроцедуры |
trdm 103 - 14.11.2004 - 20:07 |
Еще один вопрос, на счет вероятности наличия VBScript-а на компах пользователей. Верно ли утверждение что VBScript есть на всех компах? Соответственно сработает ли везде сей текст? |
pit 104 - 14.11.2004 - 20:28 |
(103) лично я 100% гарантии наличия VBScript-a не дам... кто там знает, чего админ накрутил... . (101) Шаблоны - великая сила... Шаблоны, скрещенные с телепатом... - ажно жуть... |
ADirks 105 - 15.11.2004 - 08:06 |
(97, 99) Чего-то я не могу врубиться, как это сделать. Если я в шаблон запихиваю конструкцию типа <?Дата,ДДДММГГГГ> то 1С ругается "неизвестная конструкция ДДДММГГГГ". Если запихиваю Формат(<?"Чего форматнём?">,"<?"",Формат>") в итоге получаю Формат(15.11.2004,"ДДДММГГГГ") а мне надо получить просто 15.11.2004. Суть всех этих манипуляций очень проста: мне нужен шаблон, который вставляет комментарий с текущей датой, такого примерно вида: //01.10.2004: Диркс А.И. Можно ли это сделать стандартными средствами? Сейчас у меня скриптом это делается. |
a13x 106 - 15.11.2004 - 08:15 |
(103) да, админы отрубают... но, как я уже говорил, с помощью PerlCtrl можно собрать regexp.dll или найти уже готовую, зарегить ее и будет вам CreateObject("Perl.RegExp");-) а еще есть TRegExpr (http://regexpstudio.com/RU/TRegExpr/TRegExpr.html) или Colorer - можно и ВК написать... |
IAm 107 - 15.11.2004 - 09:11 |
Intellisence for openConf ver. 1.0.9 Версия, пригодная для работы непосредственно через точку. Размер и имя шрифта выпадающего списка определяется в ини-файле. http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=1002&lid=4229 |
orefkov 108 - 15.11.2004 - 10:20 |
(105) Посмотри telepat.vbs и файл шаблонов, идущий с ним. Там как-раз есть такая мулька, ддд заменяется на текущую дату-время. |
IAm 109 - 15.11.2004 - 10:27 |
Интересный глюк в скрипте intellisence.vbs Внутри цикла есть строка ObjType = GetAttrType(CInt(DefInfoParts(1)), ObjParts(1), ExprParts(i), CInt(DefInfoParts(2))) Перед этой строкой значение i равно 1, сразу после неё 18. Переменная i не объявлена как глобальная ExprParts - Массив |
Matiс 110 - 15.11.2004 - 10:38 |
Предпринятые действия: Обновил папку Intell Перезарегистрировал selectValue (FileStream осталась в этой же папке). Скинул скрипт в папку scripts. Пошел другим путем Удалил скрипт Запустил конфигуратор (без скрипта он загрузился) При попытке загрузить скрипт вручную также молча вылетает. ВОТ. |
Matiс 111 - 15.11.2004 - 10:40 |
(110) Пропустил предложение. (109) Стал устанавливать новую версию. Результат: конфигуратор вылетает на стадии загрузки скрипта. Предпринятые действия: Обновил папку Intell Перезарегистрировал selectValue (FileStream осталась в этой же папке). Скинул скрипт в папку scripts. Пошел другим путем Удалил скрипт Запустил конфигуратор (без скрипта он загрузился) При попытке загрузить скрипт вручную также молча вылетает. |
IAm 112 - 15.11.2004 - 10:40 |
110 По почте ответил, всё из-за того, что глючит FileSystemObject у тебя видимо. Запоиминай изменения, которые делались специально для тебя и вноси их в новые релизы. |
Matiс 113 - 15.11.2004 - 10:45 |
(112) Да. Стал смотреть текст. Это из-за чтения ини файла при загрузке. А как можно починить FileSystemObject? |
IAm 114 - 15.11.2004 - 10:48 |
Я присылал тебе длл с альтернативным объектом для чтения файла. Как в прошлый раз чинил - так и в этот. |
IAm 115 - 15.11.2004 - 10:50 |
Есть мыло - зачем сюда постишь свою частную проблему? |
Matiс 116 - 15.11.2004 - 10:51 |
(114) Этот путь ясен. Но хотелось бы исправить ситуацию именно с FileSystemObject, ан заменять ее вручную каждый раз. |
artbear 117 - 15.11.2004 - 10:54 |
(103) (104) По поводу наличия VBScript и регулярных выражений. Для полноценной работы с регулярными выражениями (в т.ч. Matches) нужен VBScript 5.6 Код для проверки: Function IsLastVersionOfWSH() IsLastVersionOfWSH = false ' проверить версию Windows Script Host if CDbl(replace(WScript.Version,".",","))<5.6 then Echo "Для работы сценария требуется Windows Script Host версии 5.6 и выше !" Exit Function end if IsLastVersionOfWSH = true End Function |
Данила хМастер 118 - 15.11.2004 - 10:54 |
(Orefkov, ArtBear, IAm и остальные) А можно ли из Telepat_OnInsert узнать: пользователь выбрал (по enterу или отменил выбор из списка по escпу)? Если 3-й параметр (text)="", то esc, да? |
GrayT 119 - 15.11.2004 - 10:55 |
(103)У меня дома одно время под ХР скрипты не запускались совсем. Выкачивал с мелкомягких установщик |
artbear 120 - 15.11.2004 - 10:59 |
I. (ALL) Есть ли в природе какая-нибудь прога по работе с файлом данных о пользователях (users.usr)? Чтобы работала или через командную строку, или как КОМ-объект для возможного использования в Конфигураторе! Видел Userdef.dll - но эта ВК работает только в среде 1С-Предприятия, к сожалению. ================================================================ II. (ALL) Обновление скрипта "Замена кода" на проклабе Также в набор поместил общий скрипт коммон.вбс История: * Замена кода.vbs 1.2: [+] макрос "Копировать строку (или несколько выделенных строк"; [+] макрос "обменять местами левую и правую часть присвоения (=) с сохранением возможных комментариев"; [-] работает только с активным окном текстового модуля; * common.vbs 1.6: [+] новый метод " FormatDate" для расширенного форматирования даты (ADirks); [+] новый метод "TogglePanel" переключает видимость различных панелей (Orefkov); [*] RunCommandAndWait: выдача сообщения об ошибке в случае неудачи запуска приложения из командной строки. [-] при выборе файла используется переданный фильтр файлов; Брать здесь - http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=1001&lid=4200 artbear |
Matiс 121 - 15.11.2004 - 10:59 |
(103) А у меня VBScript есть, НО проблемы с чтением файла через FileSystemObject. Может знаешь, как помочь? |
artbear 122 - 15.11.2004 - 11:02 |
(Matic) Попробуй все-таки переустановить Windows Script Host. Закачай с сайта Майкрософта. |
ADirks 123 - 15.11.2004 - 11:09 |
(108) Дык, я в telepat.vbs и добавил отработку своего шаблона. Но фишка в том, что в VBS нет (или я не нашёл) средств для красивого форматирования даты. А записи типа 1.5.04 мне лично глаза режут. Потому-то и пришлось самому сделать форматирование даты. В шаблоне пишу //{ДАТА#dd.mm.yyyy}: Диркс А.И. <?> и в скрипте примерно так Function DatePatternReplace(Text) Set Common = Scripts("common") Set RE = New RegExp ReplaceString = "{ДАТА}" format = "dd.mm.yyyy" RE.Pattern = ".*({ДАТА(#.*)*})" Set Matches = RE.Execute(Text) If Matches.Count > 0 Then ReplaceString = Matches(0).SubMatches(0) If Matches(0).SubMatches.Count > 1 Then format = Mid(Matches(0).SubMatches(1), 2) End If DatePatternReplace = Replace(Text, ReplaceString, Common.FormatDate(Now(), format)) End Function Sub Telepat_OnTemplate(Name, Text, Cancel) Select Case Name Case "Комментарий изменений" Text = DatePatternReplace(Text) Case "Изменения" Text = DatePatternReplace(Text) End Select End Sub |
Matiс 124 - 15.11.2004 - 11:43 |
(122) Спасибо, заработало. (IAm) После второй точки работает некорректно Пример Контрагент.ОсновнойДоговор -> Предлагает методы контрагента, а не договора |
Matiс 125 - 15.11.2004 - 11:47 |
(IAm) Предложение при нажатии на esc писало .то_что_уже_ввели_в_строку_поиска |
IAm 126 - 15.11.2004 - 11:48 |
(124) Это из-за странного глюка в (109), исправлю к следующему релизу если не терпится то в процедуре GetExprKind в начале цикла поставь SaveI = i в конце цикла i = SaveI |
Тертый 127 - 15.11.2004 - 12:17 |
126) Млин... Скачиваю, копирую, скрипт - на место, правлю реестр. Запускаю конфигуратор, пишу: Спр=СоздатьОбъект("Справочник"); ставлю точку, думаю, что сейчас Телепат выдаст список справочников, а подключается твой скрипт и выдает список методов справочника, и таким здоровым шрифтом... Кривые руки мои или фича? Как написать Спр=СоздатьОбъект("Справочник.Номенклатура")? Не дает... |
orefkov 128 - 15.11.2004 - 12:22 |
(127) Точку ставь в аглицкой раскладке :) |
IAm 129 - 15.11.2004 - 12:28 |
Размер шрифта в ини поменяй |
IAm 130 - 15.11.2004 - 12:30 |
(127) А где ты ставишь точку? после "справочник." выдает список видов а не методы. |
Тертый 131 - 15.11.2004 - 12:32 |
В любой раскладке!!! Шрифт - второстепенное, с точкой видать ничего не выйдет? |
Тертый 132 - 15.11.2004 - 12:35 |
130) Оговорился, список видов, но надо-то список справочников?! Даже если раскладку все время менять, то тогда удобнее хоткей. |
IAm 133 - 15.11.2004 - 12:36 |
131 У меня вышло. Во-первых после Справочник. выдает список видов, кроме случая, когда в модуле у тиебя объявлена переменная с именем Справочник. Во-вторых при английской раскладке срабатывает именно телепат. |
Тертый 134 - 15.11.2004 - 12:38 |
И чего? Так надо, в смысле - фича? |
IAm 135 - 15.11.2004 - 12:39 |
132 Чем список видов отличается от списка справочников? Пример приведи пожалуйста. У меня выдает ровно то же что и телепат. |
Номер 6 136 - 15.11.2004 - 12:42 |
А есть ли возможность обработать событие "Перед записью"? |
Тертый 137 - 15.11.2004 - 12:44 |
Как - чем отличается? Как мне в СоздатьОбъект() написать "Справочник.Номенклатура"? Не пишет ни при какой раскладке. |
IAm 138 - 15.11.2004 - 12:47 |
(137) При нажатии на точку после Справочник показывается Банки БанковскиеСчета ... Номенклатура ... ===================== Данный список дает возможность выбрать в том числе и номенклатуру. Что содержит Ваш список? |
Тертый 139 - 15.11.2004 - 12:49 |
Я ща тебе в аську постучусь... |
IAm 140 - 15.11.2004 - 13:01 |
139 Не отправляются к теюе сообщения. Это может быть только если в модуле определена переменная с типом Справочник |
Данила хМастер 141 - 15.11.2004 - 13:43 |
(ArtBear) Поставил "Скрипты в меню шаблонов", а почему-то при открытии конфигуратора меню "с красивым названием скриптов" пусто, пока не обновишь по RefreshScripts. :( |
artbear 142 - 15.11.2004 - 13:50 |
(141) Этот баг уже исправил, только пока не выложил. Скоро обновлю свой набор на проклабе, там все будет. |
cathode 143 - 15.11.2004 - 13:51 |
(artbear) Можно прямо в ветку кандидата в common.vbs положить? Функция представляет собой только реализацию идеи. Обработка ошибок отсутствует. ' Выполнить приложение и вывести его stdout и stderr в окно сообщений ' sCommandLine as String: Командная строка вызова ' sMsgPrefix as String: Префикс сообщений, чтобы удобно было отличать Sub AppExecAndLog(sCommandLine, sMsgPrefix) Set objShell = CreateObject("WScript.Shell") Set objSvc = CreateObject("Svcsvc.Service") Set objExec = objShell.Exec(sCommandLine) Do While True Do While Not objExec.StdOut.AtEndOfStream sOut = objSvc.OEMToAnsi(objExec.StdOut.ReadLine) Message sMsgPrefix & "> " & sOut, mBlueTriangle Loop Do While Not objExec.StdErr.AtEndOfStream sErr = objSvc.OEMToAnsi(objExec.StdErr.ReadLine) Message sMsgPrefix & "> " & sErr, mRedErr Loop ' Здесь надо бы задержку поставить If objExec.Status = 1 Then Exit Do End If Loop End Sub |
artbear 144 - 15.11.2004 - 14:23 |
(cathode) Идея хорошая, только 1) если вывод проги длинный, будет тормозить. 2) Да и какой-то sleep надо придумать. 3) Не у всех прог вывод обязательно в OEM, очень много консольных, которые выдают в ANSI Я подобную вещь делал через запуск еще одного скрипта через cscript, т.к. там можно использовать sleep |
artbear 145 - 15.11.2004 - 14:26 |
(144+) Хороший пример у Александра Орефкова в его скрипте cvs.vbs Function RunGComp(WorkDir, CmdLine) If fso.FileExists(outFName) Then fso.DeleteFile outFName ' Для начала сформируем командный файл для запуска Set CmdFile = fso.CreateTextFile(cmdFName, True) CmdFile.WriteLine "@Echo off" WorkDir=svc.AnsiToOEM(WorkDir) CmdFile.WriteLine Left(WorkDir, 2) ' Сменим диск CmdFile.WriteLine "cd """ & WorkDir & """" ' Перейдем в каталог if errToOut Then CmdFile.WriteLine "cd | fecho >> """ & outFName & """" ' Выведем текущий каталог CmdLines = Split(CmdLine, vbCrLf) For i = 0 To UBound(CmdLines) ' Для каждой строки сформируем строку запуска gcomp Line=svc.AnsiToOEM(CmdLines(i)) if len(Line)>0 Then if ErrToOut Then CmdFile.WriteLine "echo " & Line & " | fecho >> """ & outFName & """" end if Line = GCompPath & Line If ErrToOut Then Line = Line & " 2>&1" ' Перенаправим stderr в stdout ' Вывод будем отображать на экран и в файл. Line = Line & " | fecho >> """ & outFName & """" CmdFile.WriteLine Line end if Next CmdFile.Close ' Сформируем строку запуска strrun = "cmd.exe /c """ & cmdFName & """" ' Запустим сформированный файл shell.Run strrun, 1, True ' Запускаем видимым, что бы если что, можно было прибить. RunGComp = LastOutPut End Function |
artbear 146 - 15.11.2004 - 14:29 |
(Orefkov) Кстати, может быть выложить твой скрипт cvs.vbs в общий доступ на опенконф.итланд.ру? Или сам выложи на проклаб |
orefkov 147 - 15.11.2004 - 15:19 |
(145,146) Пример не будет работать без утилитки fecho. Это моя маленькая прожка, просто дублирует stdin на stdout и экран консоли, чтобы можно было видеть все и на экране, и выводить в файл. В данное время сам скрипт в "бардачном" состоянии, служит для "обкатки" решений по работе с CVS, заточен под мою структуру и для общего пользования мало пригоден. ЗЫ если есть штатный способ сделать перенаправление вывода консольной проги и на консоль, и в файл, с удовольствием бы узнал о нем. |
a13x 148 - 15.11.2004 - 16:54 |
(Александру Орефкову и всем заинтересованным) балуюсь с диалог стримом, наткнуся на такую багофичу.... Если у формы заголовок меньше 4х символов, то свойство Windows.ActiveWnd.Document.Page(0).Stream возвращает --------------------------------------------------------- Dialogs", {"Frame", [...поскипано....] --------------------------------------------------------- в противном случае все ок, то есть --------------------------------------------------------- {"Dialogs", {"Frame", [...поскипано....] --------------------------------------------------------- вот... 1С 21 релиз, SQL, патчена Соароном.... хотя, кажется здесь не важно... |
orefkov 149 - 15.11.2004 - 17:05 |
OK, проверю |
a13x 150 - 15.11.2004 - 17:26 |
+(148) на опытной форме было 2 слоя, контролов не было после удаления слоя, неспотря на наличие заголовка в 4 символа после удаления одного из слоев заголовок пришлось увеличить на 20 символов, чтобы работало "как надо"... |
trdm 151 - 16.11.2004 - 00:04 |
(149) Саш а по мои "баранам" не смортрел? |
orefkov 152 - 16.11.2004 - 08:47 |
(151) Продублируй письмо, что-то не дошло оно. |
trdm 153 - 16.11.2004 - 10:54 |
(152) Ушло на *tornado.msx.ru. |
artbear 154 - 16.11.2004 - 10:58 |
(trdm, 153) Отправил бы лучше на ezmail, на указанный тобой у меня получается отправить очень редко. |
Брызговик 155 - 16.11.2004 - 11:03 |
блин, ну и ветка можно сказать надоело |
MetaEditor 156 - 16.11.2004 - 11:04 |
IAm: небольшие просьбы по интеллисенсу 1 - при выборе из списка или нажатии Esc чтобы не было стандартного звука. 2 - фон у списка чтобы был как у телепата или настраиваемый, как шрифт. 3 - и ещё, при появлении списка он моргает... видимо он сначала появляется гденибудь по центру, а потом перемещается к курсору..... пока всё... ) |
IAm 157 - 16.11.2004 - 11:17 |
Во как, стандартно звучит и моргает, сволочь :)) Насчет стандартного звука не знаю, у меня честно говоря даже колонок нету проверить, моргание попробую убрать, фон...фон-фон...хорошо, сделаю. |
MetaEditor 158 - 16.11.2004 - 11:27 |
157) было бы замечательно.... а звук - это виндовый Default Beep (ну или как там, в русской..) мож он на модальные окна так ругается... |
Phoenix 159 - 16.11.2004 - 17:50 |
up |
a13x 160 - 16.11.2004 - 18:18 |
2(fez|IAm) в DlgForms.txt переодически упоминается некая обработка, по коду которой можно уточнить параметры и флаги элементов диалога... что это за обработка и где ее можно достать? или, если соответствующая информация есть в другом виде, не будете ли так любезны ей поделиться? akuntashov-собака!-ru/yandex |
IAm 161 - 16.11.2004 - 19:50 |
160 http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=116&lid=3329 |
ОбезьянаСГранатой 162 - 16.11.2004 - 19:59 |
(161)я попыталась отправить тебе файлы *.ints по метаданным, но письмо почему-то вернулось |
a13x 163 - 16.11.2004 - 20:09 |
(161) спасибо |
a13x 164 - 17.11.2004 - 08:39 |
Доброе утро/день |
artbear 165 - 17.11.2004 - 08:56 |
(ALL) Обновил скрипт "Замена кода" на проклабе 17.11.04 Версия 1.3 [+] код для облегчения работы с Телепатом. Принцип работы: когда в конструкции типа << Перем1 = |Перем2; >> где | - положение курсора, начинаем набирать первые буквы какой-нибудь функции, например, "Сокр", Телепата выводит список возможных вариантов (СокрЛ, СокрЛП, СокрП), после выбора, например, СокрЛП, исходный код преобразуется в << Перем1 = СокрЛП()Перем2; >> // смотрится коряво, и требуется вручную расставлять скобки что выглядит не очень красиво. Так вот следующий код позволяет при тех же самых действиях из строки << Перем1 = |Перем2; >> получить строку << Перем1 = СокрЛП(Перем2); >> // выглядит намного лучше, не правда ли т.е. то, что в большинстве случае мы и хотим получить --------------------- (Orefkov) Помнишь мою просьбу по поводу подобного поведения Телепата. Поняв, что у тебя есть более масштабные задачи, эту "мелочь" решил сделать сам. |
artbear 166 - 17.11.2004 - 08:59 |
(165+) В следующей версии попытаюсь получить код, который будет позволять отмену т.е. после получения << Перем1 = СокрЛП(Перем2); >>, нажав Ctrl-Z (или Действия - Отменить), можно будет получить строку << Перем1 = СокрЛП()Перем2); >> и таким образом, пользователю легко выбирать нужное ему поведение при вставке функции. PS Пока не могу до конца разобраться с этой частью (Отмена), и в выложенном скрипте ее нет. |
Данила хМастер 167 - 17.11.2004 - 09:21 |
(166) У меня с отменой все получилось в скриптике FieldHint (не в том, кот. я тебе высылал, а в нормальном на h++p://www.danilaexch01.nm.ru/). Там после выбора поля дока, если нажать "зеленую стрелку влево", то слева от имени поля появится путь "Док.Выписка.ДатаДок", как он был до выполнения OnTimer(). Кстати, почему-то этот мой скриптик, ни на Проклабе не приняли, ни ты не выложил никуда в общеизвестные места. Да, 1-я версия была глючновата, но ИМХО текущая хор. работает, сам ей пользуюсь...;) |
ob36 168 - 17.11.2004 - 09:33 |
(IAm) - при вызове Intellisence по нажатии просто <.> (без <Alt>) возникает следующая проблемка при работе с объектами формы: в поле "Формула" на закладке "Дополнительно" окна "Свойства Поля Ввода" невозможно поставить <.> с клавиатуры (только через <Copy-Paste>), т.к. выдается окно предупреждения VBScript "Окно не текстовое", и <.> соответственно не ставится... |
Данила хМастер 169 - 17.11.2004 - 09:49 |
Может кому надо... ' Закрытие открытых окон, кроме окна конфигурации. Sub CloseAllExceptConfig() Set w = Windows.FirstWnd While Not w Is Nothing If w.Caption<>"Конфигурация" Then w.Close() Set w = Windows.FirstWnd Else Set w = Windows.NextWnd(w) End If Wend End Sub |
IAm 170 - 17.11.2004 - 09:55 |
168 На латинскую раскладку переключай |
MetaEditor 171 - 17.11.2004 - 10:07 |
169) "Конфигурация *" - тоже закрывается - понимаешь о чем я ... плюс к этому сам конфигуратор закрывается.... |
artbear 172 - 17.11.2004 - 10:17 |
(169) Лучше сравнение делай через InStr и UCase |
artbear 173 - 17.11.2004 - 10:22 |
(169) Я знаю, как работать с отменой :) У меня почему-то не получается точно совместить то, что должно остаться и то, что должно получиться. Где-то с длиной строк проблемы, разберусь. |
Данила хМастер 174 - 17.11.2004 - 10:26 |
(172)Ок: ' Закрытие открытых окон, кроме окна конфигурации. Sub CloseAllExceptConfig() Set w = Windows.FirstWnd While Not w Is Nothing If InStr(lcase(w.Caption),"êîíôèãóðàöèÿ")=0 Then w.Close() Set w = Windows.FirstWnd Else Set w = Windows.NextWnd(w) End If Wend End Sub . (166)!!! А чего сриптик-то не выложил...? ;( |
Данила хМастер 175 - 17.11.2004 - 10:28 |
+174 Правильно читать: If InStr(lcase(w.Caption),"конфигурация")=0 Then |
AntMash 176 - 17.11.2004 - 10:49 |
to (artbear) в "Замена кода"(165) есть такая беда, если например в строке пер1=[курсор][пробел]пер2 - начинаем набирать СокрЛ и т.д. то получаем пер1=СокрЛ(пер2)2 - т.е. еще добавляется последний лишний символ |
MetaEditor 177 - 17.11.2004 - 12:06 |
174) напиши ещё чтоб не закрывалось активное окно.... знаю, просто... сам не могу... не умею... стыдно.... |
IAm 178 - 17.11.2004 - 12:15 |
177 Видимо строчку If InStr(lcase(w.Caption),"êîíôèãóðàöèÿ")=0 Then надо заменить на If InStr(lcase(w.Caption),"êîíôèãóðàöèÿ")=0 and not w is Windows.ActiveWnd Then хотя пробовать лень |
IAm 179 - 17.11.2004 - 12:21 |
Вообще разумнее сделать так Sub CloseAllExceptConfig() WndHandle = Windows.ActiveWnd.hWnd Set w = Windows.FirstWnd While Not w Is Nothing If w.hwnd <> WndHandle Then w.Close() Set w = Windows.FirstWnd Else Set w = Windows.NextWnd(w) End If Wend End Sub Закрывает все кроме активного |
artbear 180 - 17.11.2004 - 12:32 |
(174) Счас попробую принять его в клуб. (176) Вообще не должен брать слово, которое идет через пробел :( Именно вариант пер1 = [курсор]пер2; Без всяких пробелов. Проверю и исправлю. Если есть пробел, я считаю, что цель уже другая и функция не применяется к слову, которое стоит через пробел. |
artbear 181 - 17.11.2004 - 12:37 |
(Данила хМастер) А какой из скриптов? На проклабе на рассмотрении лежит два: 1) Скрипт FieldHint (подсказчик полей) (05/11/2004 2:00:00) 2) Скрипт FieldHint (подсказчик полей) вер. 1.1 от 11_11_2004 (11/11/2004 2:00:00) ЗЫ Давай первый, тем более что там и комменты уже есть. Тогда сразу и обнови его, выложив последнюю свою версию. После этого я приму. |
MetaEditor 182 - 17.11.2004 - 12:56 |
в общем вот так: Sub CloseAllExceptConfig() Set w = Windows.FirstWnd While Not w Is Nothing If (InStr(lcase(w.Caption),"конфигурация")=0) and (w<>Windows.ActiveWnd) Then w.Close() Set w = Windows.FirstWnd Else Set w = Windows.NextWnd(w) End If Wend End Sub |
Данила хМастер 183 - 17.11.2004 - 14:59 |
(181, ArtBear) Давай лучше всего "2)", вер 1.1. Он вообще намного меньше глючит, чем первый, да и комменты там тоже есть... PS: Первый можно навсегда удалить... |
Данила хМастер 184 - 17.11.2004 - 15:12 |
+183. Если нужны комментарии получше, чем в "2)" - пиши... |
ob36 185 - 17.11.2004 - 15:41 |
170 - логично :) |
Данила хМастер 186 - 17.11.2004 - 16:08 |
(ArtBear) Слушай, а как сделать, чтоб при запуске макроса из "Макросы с красивым названием" Messege "Меню макросов из файлаScripts("Форматирование текста").FormatBlockWithTabs" не появлялся, а? Я уж обыскался... |
artbear 187 - 18.11.2004 - 06:12 |
(186) 1) Есть такой скрипт телепат.вбс от Александра. Там есть следующий код: Sub Telepat_OnCustomMenu(Cmd) Message Cmd, mNone End Sub Так вот, его надо закомментировать (можно полностью, а можно только строчку Message) 2) Если не помог п.1, -> а ты каким вариантом моего набора пользуешься? ИМХО старым :) Закачай последний с проклаба, там такого быть не должно. |
Phoenix 188 - 18.11.2004 - 09:45 |
Саш, сорьки за назойливость, по возможности глянь что с oc2vb, почему после 1 сохранения, не сохраняются последующие? проверено с *60.dll и *63.dll, проверяли не тока на моем компе. у меня Вин ХР. 15 релиз 1С. Офис 2003, оболочку ВБ ставил отдельно. |
Phoenix 189 - 18.11.2004 - 11:24 |
up |
trdm 190 - 18.11.2004 - 11:40 |
Пара вопросов по VBScript: 1. Есть возможность вызвать процедуру/функцию из другого скрипта? 2. Как сохраняются переменные в VBScript, в том плане если я между вызовами функции скрипта хочу сохранить массив некоторых переменных, для того, чтобы не вычислять из заново? Объявить переменные глобальными (в смысле поставить в начало модуля)? |
Данила хМастер 191 - 18.11.2004 - 13:37 |
(190) 1. П / Ф др скрипта: Scripts("Меню макросов из файла").RefreshMacros 2. У меня получалось переменные модуля объявлять в начале, до описания процедур / ф-ций с пом. Dim., напр. Dim A Set A="AAA!" PS: Я ВБ почти не знаю... |
IAm 192 - 18.11.2004 - 14:15 |
190 Да, поставленные в начало модуля сохраняют свои значения между сеансами. |
trdm 193 - 18.11.2004 - 15:41 |
(192) Спасибо, еще вопрос к тебе и к А. Орефкову. Не задумывались над своими ActivX-ами в плане возможности устанавливать строку фильтрации в вызываемом выборе? И сложно ли это сделать? пример: Форма.СЗКомп<Вызов скрипта (dots или intellisence)> (на форме есть список значения "СЗКомплектации") соответственно, можно было-бы передать в список только слово "СЗКомплектации" для выбора пользователя, но думаю разумнее было бы передать весь список реквизитов и методов формы и установить строку предварительной фильтрации. Если пользователю захочется выбрать другой атрибут, обработать данный возврат возможно и вместо "Форма.СЗКомплектации" получится допустим "Форма.СтрокаПредстДокумента". Возможно такое? (191) А запустить? и получить возвращаемое значение? |
artbear 194 - 18.11.2004 - 16:33 |
(193) В чем отличие "запустить" от "вызвать, выполнить" ? Получить возвращаемое значение не получится, методы из других скриптов вызывается только как процедуры, но можно передать какое-то значение в метод, и таким образом получить результат или даже набор результатов. |
Yurchik 195 - 18.11.2004 - 16:38 |
Ребята! Поставьте себе соло на клавиатуре... |
Yurchik 196 - 18.11.2004 - 16:40 |
И не парьтесь! |
Данила хМастер 198 - 18.11.2004 - 17:10 |
(195-6) Чтобы не париться, нужно тогда придумать способ как заставить 1Ску одним нажатием кнопки закрывать предприятие, сохранять изменения в конфигураторе и отркывать предприятие опять и делать все это за 1 секунду!!! :) |
Данила хМастер 199 - 18.11.2004 - 17:13 |
Прошу прощения, пока писал - посты стерли... :) |
IAm 200 - 18.11.2004 - 17:30 |
200 |
artbear 201 - 18.11.2004 - 17:43 |
(ALL) я до вторника ухожу в оффлайн. так что, когда будете заводить новую ветку, пожалуйста, шапочку ветки оформите по моему образу и подобию. Чтобы новичкам было чуть-чуть проще :) |
a13x 202 - 18.11.2004 - 17:52 |
(201)а есть ли жизнь в оффлайне ? (с) ALL :^) оформим :-) |
trdm 203 - 18.11.2004 - 17:57 |
(191)П / Ф др скрипта: Scripts("Меню макросов из файла").RefreshMacros Судя по названию возвращает список Функций / процедур, а как выполнить? Я ведь VB тоже практически не знаю :( Так, пишу с пом. того, что у других подглядел. Для объясните для не выспавшегося на пальцах, плз. |
trdm 204 - 18.11.2004 - 18:05 |
(195) Пробовал запомнить все переменные запроса, колонок ТЗ, атрибутов формы или реквизитов объекта? А как на счет контроля при вводе? Это тоже не нужно? Пипл знает в чем преимущество, а суперменам в другую ветку, или ... |
a13x 205 - 18.11.2004 - 18:30 |
(204) верно, но не всегда... на самом деле, для тех, кто действительно по-настоящему владеет 10пальцевым набором в слепую (правда, таких очень мало) высплывающие окошки под курсором - большой тормоз, по большей части психологический... но само собой, еще больше потенциальных потерь времени на наборе уже повторяющихся слов... те, кто пользовался (и пользуется) небезызвестным текстовым редактором Vim, знает, как эта проблема решена там - никаких окошек там не выпадает... есть просто Ctrl+N и Ctrl+P, которые набирающий код/текст пользователь нажимает, когда знает, что он уже набирал это слово в предыдущих строках (Previous) или в следующих (Next) по тексту.... на первый взгляд тупо и неэффективно, но после того, как попробуешь на практике, понимаешь, что все гениальное просто... KEEP IT SIMPLE and STUPID! |
orefkov 206 - 19.11.2004 - 08:30 |
Печатаю 1000 знаков в минуту, правда фигня получается. (анекдот) Какая связь между телепатом и скоростью набора, не пойму. Мне он нужен, чтобы не помнить наизусть имена функций и переменных, параметры методов. Чтобы сосредоточится на алгоритме,а не на копипасте. Чтобы быстро перескочить в нужный метод. Чтобы не ждать по 5 сек список процедур в ГМ. Кому мешает окошко, отключите его в настройках, вызывайте когда надо по Ctrl+Space. |
a13x 207 - 19.11.2004 - 08:52 |
оно не мешает, оно останавливает, чисто психологически... и не спорю, что телепат очень помогает - пассивные методы автоподстановки a la Vim не работают в случаях, когда набираемое слово в текущем файле отсутствует и мало эффективны в небольших по объему текстах а во-вторых, я никому ничего не навязываю.... и копипейст никогда не использовал, кстати, поскольку в редакторе 1С, даже если помнить номера строк, а не серфить стрелками или мышей в поисках уже однажды набранного слова, такой подход работает медленее, чем банальный набор этого слова... |
Данила хМастер 208 - 19.11.2004 - 09:41 |
(203, trdm) Запустить П / Ф другого (любого) скрипта: Scripts("<Имя скрипта>").<ИмяП_Ф>(<Параметры_П_Ф>) Пример: Надо вызвать процедуру Sub RefreshMacros() из макроса "Меню макросов из файла.vbs". Это так: Scripts("Меню макросов из файла").RefreshMacros Просто пишешь это в любой П / Ф любого макроса - в результате вызывается указанная процедура скрипта "Меню ма...". Кстати пример можно глянуть в этом же скрипте, напр. Function GetDataFromIniFile(ByVal IniFileName, ByRef ResDict), строка 126. |
trdm 209 - 19.11.2004 - 10:53 |
Переписал Эмулятор точки практически с нуля. Скрипт работает теперь и в Глобальном модуле. http://1c.proclub.ru/modules/mydownloads/personal.php?lid=4225&cid=1001 |
Тертый 210 - 19.11.2004 - 11:05 |
209) а где взять svcsvc.dll? а то не работает... |
Michael 211 - 19.11.2004 - 11:40 |
Посмотрел (209) На первый взгляд то что надо. Новсе равно мне не понятно почему если это так просто (dts зарегистрирована на 1c.proclub.ru 30/10/2004, т.е практически 20 дней) сам Орефков не может это встроить в Телепат 2? Ну как ни крути, а нажимать лишний hotkey нужно, красивых пиктограмм, как в Телепате нет... Попробуем применять dts. Спасибо, trdm! |
Тертый 212 - 19.11.2004 - 11:42 |
trdm, или кто-нить, подскажите, где взять svcsvc.dll! Хочу попробовать, а скрипт вылетает с ошибкой! |
Тертый 213 - 19.11.2004 - 11:52 |
Пишет: Объект не поддерживает свойство или метод srv.FilterValue |
slavka 214 - 19.11.2004 - 11:52 |
http://openconf.itland.ru/beta/svcsvc.zip |
Тертый 215 - 19.11.2004 - 11:59 |
214) Спасибо, теперь работает! |
trdm 216 - 19.11.2004 - 12:10 |
Ребята не все так просто, для того чтобы добиться нормальных скоростных показателей и точности обработки мне пришлось много раз переписывать/дописывать парсинг. И то я не уверен, что сделал нормально. Есть мысль хранить типизированные переменные, а не парсить текст заново, скоро сделаю. |
Данила хМастер 217 - 19.11.2004 - 12:36 |
(216...) Я тоже люблю скрипты писать, но скажите, где ж вы время-то на работе берёте, а? Его ж так всегда не хватает... :( |
sherus 218 - 19.11.2004 - 12:49 |
Извините пожалуста но может я не в попад? Скачал я скрипт, попробовал. Че то он у меня нифига не понимает. Вываливает только атрибуты и методы тегущего диалога. Не понимает он создать объект. В создать объект не в курсе что после Справочник точка надо бы список справочников выдать. Ну да повесил я его на горячую клавишу "." чтобы не гемороится. А потом вообще вывалился. Грустно как то :( |
Тертый 219 - 19.11.2004 - 13:02 |
218) СоздатьОбъект() пишет вообще Телепат. |
sherus 220 - 19.11.2004 - 14:04 |
2(219) Пишет то телепат, только от этого не тепло ни холодно. Что дальше то. Скрипт то не работает как хотелось бы. :( |
trdm 221 - 19.11.2004 - 18:06 |
(220) А как хотелось бы? Пришли текст, посмотрю. Возможно я это уже исправил. Я его пишу в процессе работы. Если что-то нужно сделать или не работает так как надо, дописываю походу. |
RVV 222 - 19.11.2004 - 19:53 |
Добрый день! А VBA 6.4 SDK нашел? |
RVV 223 - 19.11.2004 - 19:56 |
кто нибудь? :) |
trdm 224 - 19.11.2004 - 20:03 |
Прошу не стесняться и писылать ситуации, в которых скрипт не страбатывает, пожелания и предложения. |
trdm 225 - 19.11.2004 - 23:55 |
убрал баг, если у таблицы значений не находились колонки, список методов не выводился. |
trdm 226 - 20.11.2004 - 23:57 |
Обновил, учу распознавать параметры методов и процедур. Пока понимает КонтекстФормы, полученный из ОткрытьФорму("справочник.такойто","Формасписка",КонтекстФормы,...); Вызвая скрипт в конструкциях: "Объект.Метод(",x); И секци таблицы для Таб.ВывестиСекцию("|"); |
trdm 227 - 20.11.2004 - 23:59 |
Обновил, учу распознавать параметры методов и процедур. Пока понимает КонтекстФормы, полученный из ОткрытьФорму("справочник.такойто","Формасписка",КонтекстФормы,...); Вызвая скрипт в конструкциях: "Объект.Метод(<>,,,);" получите реквизиты текущего объекта, пока без фильтрации, что туда надо подставлять. Хочу попробовать вытащить слои для: Форма.ИспользоватьСлой("<>",x); И секци таблицы для Таб.ВывестиСекцию("|"); Что то выкосило половину текста... |
trdm 228 - 21.11.2004 - 00:09 |
(218) вызывай скрипт сразу после слова которое хочешь "оформить" "спр = СоздатьОбъект("Справочник.Номенклатура");" "Спр." << здесь скрипт не сработает, так как пробел является разделителем слов языка. |
Бодун 229 - 21.11.2004 - 01:05 |
(227): Неплохо было бы кроме скрипта в архив помещать способ его использования. А то как-то даже смешно немного: скачать - скачал, да толку - ровно ноль. В отличие от Intel-ла, который решает сходные задачи, в комплекте содержит хоть минимум информации по использованию. Это так, попытка откликнуться на твою просьбу о пожеланиях и обнаруженных ошибках - точнее, встречный вопрос о СПОСОБАХ обнаружения столь интересующих тебя ошибок. |
IAm 230 - 21.11.2004 - 13:39 |
Обновил Intellisence for OpenConf http://1c.proclub.ru/modules/mydownloads/personal.php?lid=4229&cid=1001 |
Тундра 231 - 21.11.2004 - 14:30 |
Давненько сюда не заглядывала. Заботы заели, далекие от 1С! Отстала от жииизни, совсееем! ... (230). ...Файлы Ints По метаданным составлены Викторией Шушуновой (царство ей земное)... это что-то!!! :) ... Монстры! Cтолько всего уже сделали, что опасаюсь не разобраться. :) Заранее благодарю всех за все благое, сделанное в этой области! ... Но сначала расслабиться надо в последние часы выходных, КВН через полчаса! :)) |
a13x 232 - 21.11.2004 - 14:37 |
Обновлен скрипт Навигатор (navigator.js) для быстрого перехода к объекту под курсором. http://1c.proclub.ru/modules/mydownloads/personal.php?cid=1001&lid=4184 |
a13x 233 - 21.11.2004 - 16:05 |
---------------------------------------------------- http://kuntashov.narod.ru/files/DialogStreamWSC.zip ---------------------------------------------------- . еще две недели назад написал парсер диалог-стрима, а потом - по инерции - и DialogStream.wsc - скриплет, позволяющий работать с диалог-стримом как с объектом, например, на JScript это будет выглядеть так: . --------------------------------------------------- // размещает на текущем диалоге кнопку с заголовком "Hello!" function addButton() { var frm = new ActiveXObject("OpenConf.DialogObject"); var stream = Windows.ActiveWnd.Document.Page(0).Stream; if (!stream) return; frm.Stream = stream; var btn = frm.CreateControl("BUTTON"); btn.Caption = "Hello!"; frm.Controls.Add(btn); Windows.ActiveWnd.Document.Page(0).Stream = frm.Stream; } --------------------------------------------------- . Естественно, также можно и на бейсик-скрипте. . Но, в общем-то, радоваться такой красотище особо не приходится - даже при добавлении новой кнопки на пустой диалог задержка заметна. На навороченных же диалогах... лучше не пробовать. . Поскольку затея именно в такой реализации оказалась абсолютно бесперспективной, работу с браузером диалог-стрима делать не стал. Может быть пока... А скорее всего, вообще не буду (попробуйте отговорить). . Возможно, кому-нибудь что-либо из кода покажется полезным, посему выкладываю в общий доступ. . Может быть, кто-то предложит, как все это дело ускорить, сохранив реализацию на скриптах. Правда, большую часть узких мест я и сам вижу, хотя специально не профилировал... . з.ы. если сделать все чисто на JScript, то должно получиться быстрее, но я надеялся, что и скриплеты будут достаточно шустрыми... изрядно ошибся... |
trdm 234 - 21.11.2004 - 18:00 |
А парсер mxl есть у кого-нибудь? Нужны имена вертикальных и горизонтальных секций. А то приходится обманками пользоваться :( "Таб = СоздатьОбъект("Таблица"); // Таб.ВС = Заголовок, Итого, Агент, Клиент, Литраж, Категория // Таб.ГС = Общий, Сумма // Для Таб.Вывестисекцию("") |
IAm 235 - 21.11.2004 - 18:49 |
a13x А в чем причина задержки, я делал скрипт Конструктор элементов диалога.vbs вроде особых тормозов нет, хотя в некоторых скриптах создается по нескольку контролов. |
a13x 236 - 21.11.2004 - 19:01 |
да нет... конструктор я конечно же смотрел... у меня подход другой несколько... тем более, я хотел написать универсальную библиотеку для работы со стримом как из jscript'a, так и из VBScript'a... собственно, так сейчас и есть.... . проблема не в 1С, OpenConfe или еще чем-то... проблема в парсере и всем остальном.... дело в том, что у меня, перед тем, как начать работу с диалог-стримом я провожу его полный парсинг - и весь стрим рекурсивно разбирается на объекты - с объектами-то работать удобнее, чем со строками... а перед тем, как вновь записать стрим в соответствующее свойство документа 1С дерево, построенное в результате парсинга рекурсивно собирается (компилируется, если хотите) в строковое представление... . парсер читает стрим посимвольно - хотя не это проблема - реализация на чистом js не тормозная... а вот после того, как я "обернул" ее, оформив виде WSC, тормоза стали заметными... . вобщем, придется для успокоения совести - идея-то, вроде хорошая - профилировать код... . кстати, можнет гоянете опытным глазом? WSC можно вперемешку на разных языках писать ;-) |
IAm 237 - 21.11.2004 - 19:04 |
236 1)Парси не посимвольно, а через RegExp(Рег. выр-ния) 2)Для добавления контрола парсинг смысла не имеет, а именно добавление контрола - наиболее частая процедура, что ни говори. Поэтому я думаю не самый оптимальный путь - читать посимвольно. Идея замечательная, у самого были мысли это сделать. Если не получается быстро сделать с такой реализацией - пробуй другую. |
a13x 238 - 21.11.2004 - 19:16 |
(237) я пока не уверен, что в парсинге дело, буду замерять время выполнения методов... с регекспами я просто не вижу как добиться того, что я делаю с помощью рекурсивного разбора... |
trdm 239 - 21.11.2004 - 23:08 |
(238) Вот так добираешся, например 'Нам нужны слои 'Вот такие тут слои, создаем Patern '{""Основной"",""1""}, '{""Просмотр"",""0""}, '{""Общий"",""1""}},""1"",""1""}}, Patern = "[^]+[{]+[" & cnstRExWORD & """]+[,]+[0-9""]+[}]{1,2}[,]+" ttext = FindInStrEx(Patern,DlgText)'IsBetweenToken If Len(ttext)>0 Then IDDimRekv = "" Sloi = split(ttext,vbCrLf) If UBound(Sloi)<> -1 Then For ee = 0 To UBound(Sloi) OneSloy = Sloi(ee) OneSloy = Replace(OneSloy,"""","") OneSloyArr = Split(OneSloy,",") 'Первый элемент масива, название слоя if Len(IDDimRekv)>0 Then IDDimRekv = IDDimRekv & vbCrLf & OneSloyArr(0) else IDDimRekv = OneSloyArr(0) End if Next End if GetTableRecvForms = IDDimRekv Exit Function End if |
trdm 240 - 21.11.2004 - 23:11 |
Просто вытаскиваешь текст по шаблону. Функция FindInStrEx просто отрабатывает поиск. (взята из справки) Function FindInStrEx (patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. RetStr = "" For Each Match in Matches ' Iterate Matches collection. if Len(RetStr)>0 Then RetStr = RetStr & vbCrLf & Match.Value else RetStr = Match.Value End if if (FindFirstInFindInStrEx = True) Then Exit For End if Next FindInStrEx = RetStr End Function |
trdm 241 - 21.11.2004 - 23:15 |
(+) cnstRExWORD: const cnstRExWORD = "a-zA-Zа-яА-Я0-9_" |
a13x 242 - 22.11.2004 - 08:30 |
(239-241) спасибо, я знаю что такое регэкспы :-) и даже как их применять... полтора года на перл писал до того как 1С-м занялся. . я строю ОБЪЕКТНУЮ модель стрима, причем произвольного, а не конкретно - диалог стрима; как известно, стрим представляет собой иерархическую структуру, так вот, на основе его сырцов я строю дерево, зато потом могу обращаться с любому элементу стрима по его индексу... |
Тертый 243 - 22.11.2004 - 11:23 |
Ни фига не понял! Запускаю конфигуратор, идет зангрузка, потом натыкается на кокой-то скрипт: - появляется выпадающий список, в нем значение1, значение2, знаяение3 и т.д - esc, появляется обзор диска С, с заголовком "Выберете что-либо" - потом предлагается открыть файл какой-то что это и откуда? |
Тертый 244 - 22.11.2004 - 11:26 |
Еле загрузился... куча диалогов, выбирал все подряд наугад, только потом прошла загрузка куонфигуратора. Что это? |
slavka 245 - 22.11.2004 - 11:27 |
(243,244) это скрипты |
IAm 246 - 22.11.2004 - 11:27 |
- Доктор, что это у меня? - Ой, что это у Вас??? |
Тертый 247 - 22.11.2004 - 11:31 |
245) Понятно, а какой? Я думал, автор скрипта подскажет... |
slavka 248 - 22.11.2004 - 11:33 |
(247) похоже sample.vbs. поищи svcsvc.dll там рядом и скрипт этот лежит. |
Тертый 249 - 22.11.2004 - 11:44 |
Убрал dots.vbs, sample.vbs, svcsvc.dll. Загружается нормально. А если sample.vbs еще где-то используется? |
IAm 250 - 22.11.2004 - 11:47 |
sample.vbs - вряд ли :)) |
Тертый 251 - 22.11.2004 - 11:49 |
Пора делать новую ветку. Кто правопреемник artbearа? |