Персональная страница Федора Езеева
Главная
Download
Ссылки
MS SQL
Обмен данными
Новости
Статьи
О себе
Крупные разделы...
Коллективная разработка
1С++, OOP, XP
FuncTest
FAQ
Структура 1cv7.md
Телепат 2 (пререлиз) и Опенконф (продолжим 9?)
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),"&#234;&#238;&#237;&#244;&#232;&#227;&#243;&#240;&#224;&#246;&#232;&#255;")=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),"&#234;&#238;&#237;&#244;&#232;&#227;&#243;&#240;&#224;&#246;&#232;&#255;")=0 Then
надо заменить на
If InStr(lcase(w.Caption),"&#234;&#238;&#237;&#244;&#232;&#227;&#243;&#240;&#224;&#246;&#232;&#255;")=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а?

Rambler's Top100 1C:TOP-100

© 1998-2004 Fedor Ezeev.

Last updated: 2005-09-05