Имя: Пароль:
 
1C
 
Телепат 2 (пререлиз) и Опенконф (продолжим 9?)
Ø
0 artbear
 
10.11.04
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
так будет наиболее удобно для всех :)
-----------------------------------
Качать и пользовать всем, кто хочет реально облегчить и обустроить свою работу в Конфигураторе :)
1 artbear
 
10.11.04
13:41
В продолжение предыдущей ветки:
(I love 1C) И что написано в этом скрипте (Переходы по модулю.вбс) в строке 37 ?
2 Тертый
 
10.11.04
13:47
Данила хМастер, про скрипт FildHint
Все по инструкции. Юзаю:
Спр=СоздатьОбъект("Справочник.Номенклатура");
Наименование=Спр...тут жму хоткей, предлагает перечень справочников, потом элементов. "Наименования" нет в перечне элементов. Что-то не так делаю? Раз 5 попробовал.
3 fez
 
10.11.04
13:53
Предыдущая ветка о телепате сохранена на http://1c.alterplast.ru/faq/telepat.html
Сама ветка: http://1c.alterplast.ru/faq/tlpt_t1c_9.html
4 slavka
 
10.11.04
14:09
(1) артур, ты чего из аськи пропал?
5 Oblomov
 
10.11.04
14:13
Почему не выходит релиз? Вроде основные баги пофиксены, ну и чудненько. А то так можно до бесконечности бетту вылизывать. А новый функционал, можно и в новые релизы добавлять. имхо.
6 I love 1C
 
10.11.04
14:34
1. Sub Init(param)
  Set CommonScripts = Scripts("common")
End Sub
7 Kraft
 
10.11.04
14:37
А как повесить хоткей не на комбинацию Alt+что-то а просто на что-то?
Чтобы было как в дельфях - нажал на точку и получил все методы. Не на Alt+., а просто на .
8 orefkov
 
10.11.04
15:19
(5)
Релиз будет когда хотябы вчерне сделаю работу после точки.
(7)
А ты повесь на Ctrl+Точка, потом зайди в реестр в
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\OpenConf\HotKeys,
найди папочку с максимальным номером, и измени параметр code,
так, что бы оканчивалось на 0000. Там структура такая:
два байта virtual key code, и 2 байта - модификаторы.
Если не ошибаюсь, должно получится 0xbf0000
9 MetaEditor
 
10.11.04
17:46
6) а если
Set CommonScripts = Scripts(CStr("common"))
10 artbear
 
10.11.04
18:06
(9) Нет, будет тоже самое.
ИМХО Причин может быть две (сталкивался сам):
1) скрипт коммон.вбс не загрузился по какой-то причине
2) не выходя из Конфигуратора в скрипт коммон.вбс были внесены изменения, он был перезагружен, а скрипт "Переходы по модулю" не перезагружался.
3) если п.1, то возможно в скрипт коммон.вбс были внесены неверные изменения с точки зрения синтаксиса, и скрипт не загрузился.
МОжно попробовать его перезагрузить вручную, посмотреть, что напишет Конфигуратор, затем перезагрузить скрипт "Переходы по модулю" и посмотреть, что получится.
11 oldhunter
 
10.11.04
22:00
Хочу выразить огромную благодарность автору сего творения.
12 GrayT
 
10.11.04
22:26
Пара вопросов:
1. Тут навеяли - можно ли при помощи OpenConf извернуться и поработать с прямоугольными блоками?
2. Так и не нашелся способ открывать редактор самого объекта, а не его модули и диалоги?
13 orefkov
 
11.11.04
00:07
(12)
1. Нет
2. Пока нет
14 MetaEditor
 
11.11.04
04:34
10) в общем выяснилось, что common.vbs должен стоять первым в дереве скриптов в конфигураторе (или перед скриптами его использующими) для чего удалил все скрипты и по очереди открывал конфигуратор сначала с коммон.вбс потом с "перходыПоМодулю" а потом остальными...
так заработало...
15 artbear
 
11.11.04
06:22
(14) Понятное дело, что коммон.вбс должен загружаться первым.
Непонятно, почему так не происходило. Видимо, дело в том, что порядок загрузки скриптов не определен, и похоже, что не по алфавиту, скорее всего, в порядке создания файлов в папке.
16 a13x
 
11.11.04
08:26
(14),(15) совсем недавно же обсуждали, что скрипты-библиотеки можно подгружать явно из других скриптов, проверив предварительно, не загружен ли он... теперь все работает красиво, пример такого подхода можно посмотреть здесь
http://kuntashov.narod.ru/files/TestDependensies.zip
из хистори ОпенКонф'a:
-----------------------------------------------
[...sk...]
* При первоначальной загрузке скриптов пропускаются скрипты, уже загруженные програмно
[...sk...]
-----------------------------------------------
17 IAm
 
11.11.04
08:55
12 Почему нельзя? Первым макросом метишь левый верхний угол блока каким-нибудь знаком и правый нижний, вторым - делаешь с этой областью что хочешь.
18 GrayT
 
11.11.04
08:59
(17)извиняюсь за наглость. Подскажите любой скрипт, где в качестве примера можно было бы посмотреть как работать с текстом. Что б не сильно навороченный был
19 slavka
 
11.11.04
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
20 slavka
 
11.11.04
09:10
(18) посмотри например скрипт "форматировать знаки =.vbs"
21 IAm
 
11.11.04
09:19
Обновил
Intellisence for openconf
http://1c.proclub.ru/modules/mydownloads/personal.php?lid=4229&cid=1001
18 На проклабе в разделе опенконф Artbear выкладывал скрипты которыми он пользуется, там есть ерия скриптов Конструктор ... vbs
они все очень простые.
22 artbear
 
11.11.04
09:45
(18) Или можешь посмотреть мой скрипт "Замена кода" в клубе Профессионалов, вот он ну очень простой :)
23 Phoenix
 
11.11.04
09:46
(8) Саш, как там с моим вопросом по oc2vba?
24 artbear
 
11.11.04
09:49
(16) Для подобных исправлений надо ведь код переделывать во всех скриптах, где есть использование коммон.вбс, а лично у меня пока времени нету. В следующем релизе своего набора исправлю.
И в принципе даже без программной загрузки все отлично работает.
А у чела, видимо, Вин98, потому и какие-то глюки :(
25 artbear
 
11.11.04
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
26 artbear
 
11.11.04
10:53
(+25) Можно просто добавить этот код в мой скрипт "Замена кода" и он сразу же заработает.
27 Номер 6
 
11.11.04
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.04
11:19
21) А так и должно быть: в начале пустой строки жму хоткей, потом Esc
//============================================================
Процедура ()
  
КонецПроцедуры
я же вроде отменил действие... баг или фича?
29 IAm
 
11.11.04
11:29
28 Баг, фенькс
30 artbear
 
11.11.04
11:34
(27) Да, проще. Еще бы курсор передвинулся в новую строку :)
31 Тертый
 
11.11.04
11:34
29) Да не за что, ишшо найдем... :-)
32 orefkov
 
11.11.04
11:47
(19) К сожалению, пока не знаю, как это побороть.
Ресурсы, выделяемые 1С под данные, полученные по
Documents(Name) не высвобождаются, пока не будет
открыто и закрыто окно, связанное с полученным
документом. Соответственно, при большом количестве
таких документов, 1С валится.
(All)
Что возвращает метод Регистр::ВыбратьДвижения(НачДата,КонДата) ?
В документации ничего не написано, однако проверил, это не процедура.
Какие бы даты не ставил, всегда возвращает 1.
33 artbear
 
11.11.04
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
34 artbear
 
11.11.04
11:50
(32) Ага, я также на днях нарвался на такое поведение. Помогает только анализ ПолучитьДвижение :(
35 orefkov
 
11.11.04
11:56
(23) Если честно, пока не смотрел.
Занят на основной работе.
Но проверю обязательно.
36 slavka
 
11.11.04
13:28
(32) т.е. допустим я перебрал сотню объектов, а затем открою и закрою окно последнего объекта то память высвободится?
37 slavka
 
11.11.04
13:35
+36 или надо открывать каждый объект чтобы память высвободить?
38 IAm
 
11.11.04
14:55
есть строка "Справочник.Договоры.Форма"
Как прочитать а потом записать стрим диалога?
39 Бертыш
 
11.11.04
15:01
(orefkov)Было бы не плохо если бы имелся файл синтаксис-помошника с описанием объектной модели OpenConfig. Удобнее было бы править скрипты в 1С :)
40 IAm
 
11.11.04
15:16
+38
можно
ObjName = "Справочник.Договоры.Форма.Диалог"
Stream = Documents.Item(ObjName).Stream
=================================
Но это можно из скрипта, из плагина нельзя, Vb Не компилит, говоря что не найден метод Stream
39 В любом ObjectBrowser-е
41 ob36
 
11.11.04
15:19
Я полный ламер в плане написания скриптов под Openconf, поэтому обращаюсь к Великим: не могли бы Вы реализовать алгоритм (скрипт) очистки текста 1cv7-кода от комментариев, а то при разработке достаточно больших модулей имею нехорошую привычку оставлять кучу комментариев для использования их при отладке, а также в случаях коллективной правки. На этапе, когда все заработало, куча времени тратится на то, чтобы поудалять все то, что "подсвечено зеленым цветом", однако, и это понятно, комментируются не всегда строки целиком, но зачастую и их "хвосты", что необходимо учесть... Если Вам это не очень сложно, то плз...
42 orefkov
 
11.11.04
15:28
(37) Да
(38) Documents("Справочник.Договоры.Форма.Диалог").Stream
Но также см. 32. ТЕ желательно ограничиваться диалогом
текущей формы. Я стараюсь это исправить. Может получится.
(39)
Описание я пока даже в текстовом виде не успеваю сделать :(
43 IAm
 
11.11.04
15:31
42 Саш, 40 читал?
"Но это можно из скрипта, из плагина нельзя, Vb Не компилит, говоря что не найден метод Stream"
44 orefkov
 
11.11.04
15:34
(40)
В VB надо так:
Dim dialog as DialogDoc
Set doc=Documents("Справочник.Договоры.Форма.Диалог")
Set dialog=doc
text=doc.Stream
45 slavka
 
11.11.04
15:35
(39)в VBA офисном можно посмотреть описание объектной модели. вытащи и сделай алс-ник.
(42) спасибо. будем експерементировать. а можно ли открыть форму дока и сделать ее невидимой?
46 orefkov
 
11.11.04
15:37
(45)
Что сделать то хочешь?
Может подскажу, как лучше сделать?
47 IAm
 
11.11.04
15:37
44 фнкс
48 artbear
 
11.11.04
15:53
(44) Ага, я также делал в своем плагине "История"
(47) Правда, давно это было + первый опыт (и похоже, последний) на ВБ, потому и не помнил :(
49 slavka
 
11.11.04
15:54
делаю скрипт для поиска ссылок на объект по такой схеме: узнаю какое выражение находится у меня под курсором (напр. "Справочник.Контрагенты"), затем
   Set doc = Documents("Справочник.Контрагенты")
   TestRefers(doc)
потом перебираю модули и ищу в них искомое выражение.
50 orefkov
 
11.11.04
16:57
(49)
А TestRefers зачем?
.
Пользуясь случаем, хочу анонсировать еще одну
свою ВК для 1С-Предприятия, TurboRights.
ВК будет позволять:
1. "на лету" править права пользователей, не трогая мдшник.
2. Задавать более гибкое управление правами, подобно
юзерам в домене, те. приписывать юзера к нескольким
группам пользователей, управлять не только "Разрешить",
но и "Запретить" тп.
Расширение набора встроенных в 1С прав не планируется.
Ориентировочный срок выхода - месяц. (тк это не приоритетная задача)
Хочется услышать мнения, а надо ли это?
51 slavka
 
11.11.04
17:09
(50) это чтобы не пользоваться 1С-ким поиском, чтобы одним макросом искать везде.
если еще и пароль можно будет менять то ДА!!!!
52 slavka
 
11.11.04
17:12
+ распечатать содержимое набора прав
53 KRIHA
 
11.11.04
17:40
(50)
1. "на лету" править права пользователей, не трогая мдшник. - конечно надо
2. ... - скорей всего надо
"Расширение набора встроенных в 1С прав не планируется." - жаль :-)
54 GrayT
 
11.11.04
21:29
(50)Гуд. Надо. В условиях постоянно развивающихся конфигураций постоянно наталкиваюсь на то что "надо бы права поменять"
55 trdm
 
12.11.04
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
56 trdm
 
12.11.04
10:35
попробуйте, понравится :)
57 artbear
 
12.11.04
11:10
(56) А мне больше всего нравятся варианты через FilterValue (как МетодыМодуля) с фильтрацией содержимого, ИМХО наиболее быстро и удобно.
58 Тертый
 
12.11.04
11:32
50) Конечно, надо! Я недавно начал TurboMD пользоваться, а это отличное дополнение. А то подходит какой-нить начальник: "Надо тому-то запретить то-то..." В ответ: или всех выгоняем, или жди до вечера. А вечером после всех тоже неохота оставаться!
59 Тертый
 
12.11.04
11:41
Попробовал, создал скрипт, туда запихнул 55), повесил на хоткей, вызвал, красиво, но надо пользоваться мышью. Щелкнул мышкой по выбранному, нажал ОК - ни фига не произошло. Я что-то не понял?
60 Oblomov
 
12.11.04
11:47
По Intellisence.vbs замечания. (Версия 1.0.8)
1. Нельзя ли в выпадающем списке макроса использовать тот же шрифт, что использует телепат?
2. В описании обработки попытался поставить точку, получил ошибку выполнения макроса. Как то неаккуратьненько, доктор.
61 IAm
 
12.11.04
12:00
60 Что такое описание обработки? какую ошибку Вы получили?
62 trdm
 
12.11.04
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
Обнови с проклуба "Эмулятор работы с точкой", там эта беда вызывается таким образом "константа[.|](положение курсора)".
Однако если у тебя в стандартных шаблонах есть такой "константа." его следует переименовать, если хочешь использовать.
63 IAm
 
12.11.04
12:05
"данная операция допустима только при открытом документе?"
никогда ничего не писал на закладке описания, буду разбираться
64 Oblomov
 
12.11.04
12:21
2(61) Intellisence вызывается по "."
Вкладка "Описание" во внешней обработке, отчете. Такая же ошибка возникает, если в обычном тексте (меню файл->новый->текст)попытаться поставить точку.
Ошибка выполнения скрипта.
Скрипт Intellisence
Файл ... Intellisence.vbs
Строка: 1074
Позиция: 1
Код: 0
иточник Ошибка выполнения Microsoft VVBScript
Описание Индекс выходит за пределы допустимого диапазона 'doc.SelStartLine'
65 artbear
 
12.11.04
12:51
Кто-нибудь делал скрипт по перезагрузке Конфигуратора?
Например, чтобы загрузить хоткеи или еще для чего-нибудь такой скрипт может пригодиться.
66 orefkov
 
12.11.04
13:09
2IAm: По поводу работы в описаниях.
Получение текущего окна измени:
вместо
Set doc=doc.Page(1)
сделай
Set doc=doc.Page(doc.ActivePage)
67 a13x
 
12.11.04
13:10
(65) "перезагрузка конфигуратора" - это как?
перезагрузка всех скриптов опенконфа и бла-бла-бла или полный перезапуск конфигуратора или еще что-то?
68 artbear
 
12.11.04
13:21
(67) Именно полный перезапуск Конфигуратора.
69 trdm
 
12.11.04
14:45
(All) А подскажите как получить для данного документа например ThisDoc список документов на основании которых он вводится? где сия премудрость сидит?
70 Matiс
 
12.11.04
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? Если да, то откуда.
71 IAm
 
12.11.04
15:12
64, 65 спасибо, поправлю
72 orefkov
 
12.11.04
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
73 artbear
 
12.11.04
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
74 Matiс
 
12.11.04
15:44
+(70) ЧТО ДЕЛАТЬ? ПОМОГИТЕ.
FSO.FileExists(FileName) = True
FSO.GetFile(FileName)....... при расчете вылетает
Проверил на трех разных машинах.
75 slavka
 
12.11.04
15:54
(72) насчет 19 ничего не посоветуешь?
76 IAm
 
12.11.04
16:01
74 Отправил по почте возможное решение
77 trdm
 
12.11.04
16:23
(74) попробуй закоментировать строку "Dim fso, f, s"
(72) спасибо, сделал приблизительно тоже самое :)
+ На счет вылетов (предыдущая ветка) на следующий день все заработало и работает (... по дереву).
78 Тертый
 
12.11.04
16:27
72) Артур, вылетает макрос в 100% случаев.
"Не удалось выполнить макрос "UnCommentSelection"."
79 Matiс
 
12.11.04
16:31
(77) Не помогло. Текст функции взят из хелпа по GetFile(), за исключением msgbox i :)
(76) пока ничего нет :( Ждем
80 Matiс
 
12.11.04
16:33
(76) Если что, мой адрес veld21(Гав)pochta.ru
81 artbear
 
12.11.04
16:37
А текст какой пытаешься раскомментировать?
А КомментСелекшен работает?
И как этот макрос запускаешь? через Цтрл + М или еще как?
82 trdm
 
12.11.04
16:37
(79) попробовал у себя твой скрипт - работает, видимо я что-то не то делаю :)
83 a13x
 
12.11.04
16:41
(80) если это может помочь...
у меня ваш скрипт работает норамльно без всяких преобразований - банальный копипейст....
за исключением того, что поскольку в корень диска мне сохранять нельзя, я поменял путь на "D:\share\1.txt"
...
84 IAm
 
12.11.04
16:42
80 Туда и послал, отпишись мне ещё раз - отвечу
85 orefkov
 
12.11.04
16:56
http://openconf.itland.ru/beta
Телепат 2.0.0.0o
* Добавлены описания методов всех объектов, кроме БИ
* Расширена обработка строк в кавычках
    Снято ограничение на 2 "точки" в строке
    Добавлены ключевые слова языка запросов
* В списке выбора Ctrl+Left/Right направляются в текстовый редактор
* Список выбора сделан "бесконечным", то есть Up/Down вверху/внизу
   списка перемещают текущий выбор вниз/вверх
* Исправлена ошибка при Ctrl+Enter при открытом списке выбора
* Исправлена ошибка при обработке команды меню шаблонов
* В диалоге "Методы модуля" сделана возможность быстрого переключения
    настроек "Сортировать" (Ctrl+S) и "Фильтровать" (Ctrl+F)
* Диалог методы модуля: при фильтрации методов не устанавливался
    выделенный метод
86 trdm
 
12.11.04
17:37
(85) ООО супер!
теперь о наболевшем выслал письмо на tornado.msx, глянь пожалуйста.
87 корум
 
12.11.04
18:57
(85) в новой версии попали автозавершения ключевых слов / предопределённых процедур в русском варианте.
Верни, пожалуйста Если_КонецЕсли и им подобные...
88 Номер 6
 
13.11.04
09:50
(87)
У меня остались на месте.
89 Номер 6
 
13.11.04
09:53
А как перехватить вставку блоков типа "Если_КонецЕсли"?
90 trdm
 
13.11.04
12:19
(89)
Sub Telepat_OnInsert(InsertType, InsertName, Text)
    Select Case InsertType
        Case 14 ' <<<<<<<<<<<< Предопределенные блоки
End Sub
91 Номер 6
 
13.11.04
13:10
(90)
Точно. Спасибо!
92 trdm
 
13.11.04
14:36
Кто-нибудь делал скриптик или отчетик или обработочку показывающую дерево ввода на основании для документов?
93 artbear
 
13.11.04
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
94 artbear
 
14.11.04
09:40
(ALL) Есть ли в природе какая-нибудь прога по работе с файлом данных о пользователях (users.usr)?
Чтобы работала или через командную строку, или как КОМ-объект для возможного использования в Конфигураторе!
Видел Userdef.dll - но эта ВК работает только в среде 1С-Предприятия, к сожалению.
95 trdm
 
14.11.04
14:34
(All) А есть ли в природе внешняя компонента которая может предоставить 1С-у мощь регулярных выражений?
96 a13x
 
14.11.04
16:37
2(95) а так не устроит?
--------------------------------------------
Функция ЭтоЦелоеЧисло(Стр)
                           
  re = СоздатьОбъект("VBScript.RegExp");
  re.Pattern = "^\d+$";
  Возврат ?(re.Test(Стр)=0, 0, 1);
КонецФункции
Процедура Сформировать()
  Стр = "1111";
  Если ЭтоЦелоеЧисло(Стр)=1 Тогда
    Сообщить("Это целое число!");
  Иначе
    Сообщить("Это не целое число!");
  КонецЕсли;
КонецПроцедуры
-------------------------------------------------------
если таких регекспов не хватает, можно поискать в инете по фразе PerlCtrl+regexp.dll
97 Синхронизатор
 
14.11.04
18:12
(93): Артур, а нафига "форматирование", если не секрет?..
Просто... Ну, вот, к примеру, если в файл шаблонов 1С добавить:
{"Формат(...)","4","фрмт","Формат(<?""Чего форматнём?"">,""<?"""",Формат>"")","0","1","0"}
- и набрать в коде: "фрмт" + Enter или Space... Угадай, ЧТО произойдет?..
98 artbear
 
14.11.04
18:36
(97) Думаю, пригодится для:
1) Для использования в скриптах.
2) честно говоря, сам не знаю :)
просто Алексей Диркс написал этот код, я просто добавил к себе в библиотечный скрипт, вдруг пригодится когда-нибудь
99 Синхронизатор
 
14.11.04
18:57
2(98): Артур, в Телепате есть замечательная фича для отработки "штатных" шаблонов 1С "штатным" способом с получением результата такого выполнения в виде строки. И почему в скриптах не пользоваться этой фичей для выполнения вот такого шаблона 1С:
""<?"""",Формат>""
 --- ???
100 trdm
 
14.11.04
19:26
Set Matches = regEx.Execute(strng) - тут облм наверное будет 1С ведь коллекции не поддерживает :(
А я этим пользуюсь
101 Синхронизатор
 
14.11.04
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
'===============================================================================
102 trdm
 
14.11.04
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);
    КонецЦикла;
  КонецЕсли;
КонецПроцедуры
103 trdm
 
14.11.04
20:07
Еще один вопрос, на счет вероятности наличия VBScript-а на компах пользователей. Верно ли утверждение что VBScript есть на всех компах? Соответственно сработает ли везде сей текст?
104 pit
 
14.11.04
20:28
(103) лично я 100% гарантии наличия VBScript-a не дам...
кто там знает, чего админ накрутил...
.
(101) Шаблоны - великая сила...
Шаблоны, скрещенные с телепатом... - ажно жуть...
105 ADirks
 
15.11.04
08:06
(97, 99) Чего-то я не могу врубиться, как это сделать. Если я в шаблон запихиваю конструкцию типа
<?Дата,ДДДММГГГГ>
то 1С ругается "неизвестная конструкция ДДДММГГГГ". Если запихиваю
Формат(<?"Чего форматнём?">,"<?"",Формат>")
в итоге получаю
Формат(15.11.2004,"ДДДММГГГГ")
а мне надо получить просто 15.11.2004. Суть всех этих манипуляций очень проста: мне нужен шаблон, который вставляет комментарий с текущей датой, такого примерно вида:
//01.10.2004: Диркс А.И.
Можно ли это сделать стандартными средствами? Сейчас у меня скриптом это делается.
106 a13x
 
15.11.04
08:15
(103) да, админы отрубают...
но, как я уже говорил, с помощью PerlCtrl можно собрать regexp.dll или найти уже готовую, зарегить ее и будет вам CreateObject("Perl.RegExp");-)
а еще есть TRegExpr (http://regexpstudio.com/RU/TRegExpr/TRegExpr.html) или Colorer - можно и ВК написать...
107 IAm
 
15.11.04
09:11
Intellisence for openConf ver. 1.0.9
Версия, пригодная для работы непосредственно через точку.
Размер и имя шрифта выпадающего списка определяется в ини-файле.
http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=1002&lid=4229
108 orefkov
 
15.11.04
10:20
(105) Посмотри telepat.vbs и файл шаблонов, идущий с ним.
Там как-раз есть такая мулька, ддд заменяется на
текущую дату-время.
109 IAm
 
15.11.04
10:27
Интересный глюк в скрипте intellisence.vbs
Внутри цикла есть строка
ObjType = GetAttrType(CInt(DefInfoParts(1)), ObjParts(1), ExprParts(i), CInt(DefInfoParts(2)))
Перед этой строкой значение i равно 1, сразу после неё 18.
Переменная i не объявлена как глобальная
ExprParts - Массив
110 Matiс
 
15.11.04
10:38
Предпринятые действия:
Обновил папку Intell
Перезарегистрировал selectValue (FileStream осталась в этой же папке).
Скинул скрипт в папку scripts.
Пошел другим путем
Удалил скрипт
Запустил конфигуратор (без скрипта он загрузился)
При попытке загрузить скрипт вручную также молча вылетает.
ВОТ.
111 Matiс
 
15.11.04
10:40
(110) Пропустил предложение.
(109) Стал устанавливать новую версию. Результат: конфигуратор вылетает на
стадии загрузки скрипта.
Предпринятые действия:
Обновил папку Intell
Перезарегистрировал selectValue (FileStream осталась в этой же папке).
Скинул скрипт в папку scripts.
Пошел другим путем
Удалил скрипт
Запустил конфигуратор (без скрипта он загрузился)
При попытке загрузить скрипт вручную также молча вылетает.
112 IAm
 
15.11.04
10:40
110 По почте ответил, всё из-за того, что глючит FileSystemObject у тебя видимо. Запоиминай изменения, которые делались специально для тебя и вноси их в новые релизы.
113 Matiс
 
15.11.04
10:45
(112) Да. Стал смотреть текст. Это из-за чтения ини файла при загрузке.
А как можно починить FileSystemObject?
114 IAm
 
15.11.04
10:48
Я присылал тебе длл с альтернативным объектом для чтения файла.
Как в прошлый раз чинил - так и в этот.
115 IAm
 
15.11.04
10:50
Есть мыло - зачем сюда постишь свою частную проблему?
116 Matiс
 
15.11.04
10:51
(114) Этот путь ясен. Но хотелось бы исправить ситуацию именно с FileSystemObject, ан заменять ее вручную каждый раз.
117 artbear
 
15.11.04
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.04
10:54
(Orefkov, ArtBear, IAm и остальные)
А можно ли из Telepat_OnInsert узнать: пользователь выбрал (по enterу или отменил выбор из списка по escпу)?
Если 3-й параметр (text)="", то esc, да?
119 GrayT
 
15.11.04
10:55
(103)У меня дома одно время под ХР скрипты не запускались совсем. Выкачивал с мелкомягких установщик
120 artbear
 
15.11.04
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
121 Matiс
 
15.11.04
10:59
(103) А у меня VBScript есть, НО проблемы с чтением файла через FileSystemObject. Может знаешь, как помочь?
122 artbear
 
15.11.04
11:02
(Matic) Попробуй все-таки переустановить Windows Script Host.
Закачай с сайта Майкрософта.
123 ADirks
 
15.11.04
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
124 Matiс
 
15.11.04
11:43
(122) Спасибо, заработало.
(IAm) После второй точки работает некорректно
Пример
Контрагент.ОсновнойДоговор -> Предлагает методы контрагента, а не договора
125 Matiс
 
15.11.04
11:47
(IAm) Предложение при нажатии на esc писало .то_что_уже_ввели_в_строку_поиска
126 IAm
 
15.11.04
11:48
(124) Это из-за странного глюка в (109), исправлю к следующему релизу
если не терпится то в процедуре
GetExprKind
в начале цикла поставь
SaveI = i
в конце цикла
i = SaveI
127 Тертый
 
15.11.04
12:17
126) Млин... Скачиваю, копирую, скрипт - на место, правлю реестр. Запускаю конфигуратор, пишу:
Спр=СоздатьОбъект("Справочник");
ставлю точку, думаю, что сейчас Телепат выдаст список справочников, а подключается твой скрипт и выдает список методов справочника, и таким здоровым шрифтом... Кривые руки мои или фича? Как написать Спр=СоздатьОбъект("Справочник.Номенклатура")? Не дает...
128 orefkov
 
15.11.04
12:22
(127)
Точку ставь в аглицкой раскладке :)
129 IAm
 
15.11.04
12:28
Размер шрифта в ини поменяй
130 IAm
 
15.11.04
12:30
(127) А где ты ставишь точку? после "справочник." выдает список видов а не методы.
131 Тертый
 
15.11.04
12:32
В любой раскладке!!! Шрифт - второстепенное, с точкой видать ничего не выйдет?
132 Тертый
 
15.11.04
12:35
130) Оговорился, список видов, но надо-то список справочников?! Даже если раскладку все время менять, то тогда удобнее хоткей.
133 IAm
 
15.11.04
12:36
131 У меня вышло. Во-первых после Справочник. выдает список видов, кроме случая, когда в модуле у тиебя объявлена переменная с именем Справочник.
Во-вторых при английской раскладке срабатывает именно телепат.
134 Тертый
 
15.11.04
12:38
И чего? Так надо, в смысле - фича?
135 IAm
 
15.11.04
12:39
132 Чем список видов отличается от списка справочников? Пример приведи пожалуйста. У меня выдает ровно то же что и телепат.
136 Номер 6
 
15.11.04
12:42
А есть ли возможность обработать событие "Перед записью"?
137 Тертый
 
15.11.04
12:44
Как - чем отличается? Как мне в СоздатьОбъект() написать "Справочник.Номенклатура"? Не пишет ни при какой раскладке.
138 IAm
 
15.11.04
12:47
(137) При нажатии на точку после Справочник показывается
Банки
БанковскиеСчета
...
Номенклатура
...
=====================
Данный список дает возможность выбрать в том числе и номенклатуру.
Что содержит Ваш список?
139 Тертый
 
15.11.04
12:49
Я ща тебе в аську постучусь...
140 IAm
 
15.11.04
13:01
139 Не отправляются к теюе сообщения.
Это может быть только если в модуле определена переменная с типом Справочник
141 Данила хМастер
 
15.11.04
13:43
(ArtBear)
Поставил "Скрипты в меню шаблонов", а почему-то при открытии конфигуратора меню "с красивым названием скриптов" пусто, пока не обновишь по RefreshScripts. :(
142 artbear
 
15.11.04
13:50
(141) Этот баг уже исправил, только пока не выложил. Скоро обновлю свой набор на проклабе, там все будет.
143 cathode
 
15.11.04
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
144 artbear
 
15.11.04
14:23
(cathode) Идея хорошая, только
1) если вывод проги длинный, будет тормозить.
2) Да и какой-то sleep надо придумать.
3) Не у всех прог вывод обязательно в OEM, очень много консольных, которые выдают в ANSI
Я подобную вещь делал через запуск еще одного скрипта через cscript, т.к. там можно использовать sleep
145 artbear
 
15.11.04
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
146 artbear
 
15.11.04
14:29
(Orefkov) Кстати, может быть выложить твой скрипт cvs.vbs в общий доступ на опенконф.итланд.ру? Или сам выложи на проклаб
147 orefkov
 
15.11.04
15:19
(145,146)
Пример не будет работать без утилитки fecho.
Это моя маленькая прожка, просто дублирует stdin на stdout и
экран консоли, чтобы можно было видеть все и на экране, и
выводить в файл. В данное время сам скрипт в "бардачном"
состоянии, служит для "обкатки" решений по работе с CVS,
заточен под мою структуру и для общего пользования мало пригоден.
ЗЫ если есть штатный способ сделать перенаправление вывода
консольной проги и на консоль, и в файл, с удовольствием бы
узнал о нем.
148 a13x
 
15.11.04
16:54
(Александру Орефкову и всем заинтересованным)
балуюсь с диалог стримом, наткнуся на такую багофичу....
Если у формы заголовок меньше 4х символов, то свойство Windows.ActiveWnd.Document.Page(0).Stream возвращает
---------------------------------------------------------
Dialogs",
{"Frame",
[...поскипано....]
---------------------------------------------------------
в противном случае все ок, то есть
---------------------------------------------------------
{"Dialogs",
{"Frame",
[...поскипано....]
---------------------------------------------------------
вот... 1С 21 релиз, SQL, патчена Соароном.... хотя, кажется здесь не важно...
149 orefkov
 
15.11.04
17:05
OK, проверю
150 a13x
 
15.11.04
17:26
+(148) на опытной форме было 2 слоя, контролов не было
после удаления слоя, неспотря на наличие заголовка в 4 символа
после удаления одного из слоев заголовок пришлось увеличить на 20 символов, чтобы работало "как надо"...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.