запуск функции общего модуля из скрипта

  1. 9 г. назад
    22.04.2014 15:18:25 отредактировано andrewks

    есть скрипт на vbs, который открывает базу 1С:

    'Запуск 1С:Предприятия в пользовательском режиме
    
    		if Base = BaseName then
    			'sql
    			ConnectString = """C:\Program Files\1cv82\8.2.19.80\bin\1CV8.EXE"" ENTERPRISE /S "& ServerName & ":1641" &"\"& BaseName  &" /DisableStartupMessages"
    		else
    			'dbf
    			ConnectString = """C:\Program Files\1cv82\8.2.19.80\bin\1CV8.EXE"" ENTERPRISE /F "& BaseName  &" /DisableStartupMessages"
    		end if
    		WshShell.Run ConnectString,1,false

    как его переделать, чтобы вместо запуска в режиме предприятия запускать функцию общего модуля?

    что-то типа ConnectString.МойМодуль.мояФункция()

  2. это тебе com-коннектор нужно, имхо

    Ответы: (2)
  3. (1) ага. как его в vbs вызвать?

    Ответы: (14)
  4. Не порть конфу... "C:\Program Files\1cv82\8.2.17.235\bin\1cv8s.exe" ENTERPRISE /F "D:\1C\HRM" /N user /P password /Execute "D:\1C\Внешние_обработки_1С\РаботающиеОбработки\РабочийСтол.epf"
    http://help1c.com/faq/view/474.html

  5. На хрена пихать в общий модуль то, что можно внешним файлом замутить...

    Ответы: (5)
  6. (4) может, ему привилегированный режим нужен

    Ответы: (6)
  7. (5) Это вряд ли...

    Ответы: (7)
  8. (6) медиум?

    Ответы: (8)
  9. (7) Практика... Он редко нужен.

  10. да [...].
    одинесники самые умные, цуко. просишь красное, дают черное

    Ответы: (11)
  11. + знаю я про ваш запуск внешней обработки из параметров запуска. половину утра на него потратил.
    не то это

    Ответы: (12)
  12. (9) А ты посмотри на задачу под другим углом, может тебе черное-то подойдет не хуже чем красное..

  13. (10) Озвучь свою мегазадачу, которую нельзя решить внешним отчетом.

    Ответы: (17)
  14. + ща еще полдня потрачу на то, чтобы объяснить что мне нужно, и почему 3 не пойдет, потом дядя вася почешет в затылке и скажет "ну хз тогда"

    Ответы: (16)
  15. (2) http://help1c.com/faq/view/596.html

    Ответы: (15)
  16. (14) вот тема, пасиб

  17. (13) Последний раз я тебе отвечал по интерфейсам. Проблема оказалась надумана. По каждому пункту меню процедура в одну строчку и все. Подозреваю что текущая задача тоже решается просто, но ты как обычно надеваешь штаны через голову.

    Ответы: (18)
  18. (12) охх. ты знаешь, хотя бы, когда вызывается обработка параметров запуска в типовых?
    что от
    ПриНачалеРаботыСистемы()
    и до
    ОбработатьПараметрыЗапуска

    есть хренова куча кода, который я и хочу обойти.
    поэтому - еще раз - запуск внешней обработки не пойдет

    Ответы: (19)
  19. (16) в твоем случае простота обеспечивается не слишком большими знаниями.

    Ответы: (20)
  20. (17) Ну если бы ты не поленился сказать нахрена ты это делаешь, тебя было бы гораздо проще понять.

    Ответы: (21) (25)
  21. (18) Да все нормально со знаниями, в крайнем случае гуглить умею. Просто я всегда ищу наиболее простое решение. За сложное никто не доплатит.

  22. (19) блеать.. см 13

    Ответы: (22)
  23. 22.04.2014 15:33:45 отредактировано andrewks

    (21) ну тогда гугли и не [...]. А то совет ему дай, а объяснить задачу ему лень...

    Ответы: (24) (26)
  24. вот пример конкретно для VB

    Set Con = CreateObject("v8.ComConnector")
    Set ConHandle = Con.Connect("File=C:\MyBase; Usr=Stim")
    
    Set Query = ConHandle.NewObject("Запрос")
    Query.Text = "ВЫБРАТЬ * ИЗ Справочник.Номенклатура"
    
    Set Result = Query.Execute()
    Set DataSet = Result.Choose()
    Do While DataSet.Next()
     'что то делаем в цикле
    Loop
    
  25. (22) хорош материться в тематике

    Ответы: (28)
  26. (19) я задал более чем простой вопрос. в моем случае это - "как вставить клизму?" на сцену выходит дядя вася и начинает убеждать, что принимать лекарства нужно через рот. оно конешн можно объяснить, что пациенту болен и ему нельзя пользоваться ртом, но.. тогда это получится не разговор двух врачей

    Ответы: (28)
  27. (22) не зли меня

  28. + и внимательно читай вопрос. полезные советы они полезны, но когда они по существу вопроса

    Ответы: (30)
  29. (24) какая разница где. Если до него так лучше доходит... Хотя судя по (25) не помогло...

  30. парни, хорош уже спорить. давайте лучше по делу.

    вот, например:

    в случае вызова ком-коннектора не будет выполняться модуль приложения, зато будет выполняться модуль внешнего соединения.
    также, чтобы вызвать функцию из общего модуля, должно быть объявлено с ключевым словом Экспорт

  31. 22.04.2014 15:38:59 отредактировано Дядя Васька

    (27) Вопрос на форуме: Господа, я хочу надеть штаны через голову, ничего не выходит, ваши варианты?
    - Дядя Вася: - Попробуй одеть их на ноги, вероятно получится...
    - Автор сабжа: - Я не просил менять условия задачи - мне нужно надеть штаны через голову, а Дядю Васю попрошу не флудить!

    Ответы: (31)
  32. (30) да, все так. и еще мне нельзя одевать штаны через ноги, см 17
    причин тому может быть масса, тебе вовсе не обязательно об этом знать. вопрос ведь простой - как одеть штаны через голову? зачем отвечать не в тему?

  33. + а хотя мы продолжим разыгрывать денежные призы.
    Вася, напиши внешнюю обработку к типовой БП, которая запускала бы свой обработчик минуя, у примеру, установку заголовка и параметров сеанса

    Ответы: (33)
  34. (32) А если напишу? )

    Ответы: (34)
  35. (33) В восьмерке вообще до хрена чего можно через стандартные подсистемы провернуть, регаешь свою внешнюю как обработку заполнения и она считай часть конфы. Вот только нужно ли это... Для начала не мешало бы узнать, что хотел клиент...

  36. ну пиши, епты!

    Ответы: (37)
  37. + дядя вася, ну что за детский сад! ты меня за новичка чтоле считаешь?
    когда я туплю и спрашиваю простые вопросы, я так и пишу в сабже - простой вопрос, туплю.
    а когда я задаю конкретные вопросы, это значит, что все простые решения я уже перебрал и отверг

    Ответы: (38)
  38. (35) Для самоутверждения я этого делать не буду. Работа денег стоит. Не тыщу, и не на мобилу, с нее дорого выводить...

  39. (36) Просто возможно ты не в ту степь попер, и можно было сделать проще. Поэтому всяко лучше начинать с того, что хотел клиент.

    Ответы: (39)
  40. (38)всяко лучше писать ответы по теме. и не настаивать на своем, когда говорят, что ответы не подходят

    Ответы: (40)
  41. (39) да всем насрать...

  42. Андре, выручай

    Set v8 = CreateObject("V82.COMConnector")		
    
    Set  Connect = V8.Connect(ConnectString)
    
    Set Connect1= Connect.ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()

    при запуске скрипта, он ругается на последнюю строчку

    Ответы: (42)
  43. (41) Полный путь и кодировка

  44. + Set для объектов

  45. сделал так:

    Set v8 = CreateObject("V82.COMConnector")		
    
    V8.Connect(ConnectString)
    
    
    
     Connect1= V8.ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()

    все равно ругаетсо на посл строку

  46. Важно! В связи с отсутствием пользовательского интерфейса не все объекты, а также свойства и методы можно использовать во внешнем соединении.
    Внешнее соединение предоставляет полный доступ к своему глобальному контексту. Поэтому внешнее соединение в качестве своих методов может иметь: системные константы, значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

  47. хм. пишу:

    Set v8 = CreateObject("V82.COMConnector")
    
    
    ConnectString2 =  "srvr='" + ServerName + "'; ref='" + BaseName +  "';"		
    
    V8.Connect(ConnectString2)
    

    пишет - несоответствение версий клиента и серв(8.1 - 8.2)

    пишу:

    Set v8 = CreateObject("V82.COMConnector")
    
    
    ConnectString2 =  "srvr='" + ServerName + "':1640; ref='" + BaseName +  "';"		
    
    V8.Connect(ConnectString2)

    пишет - неверные или отсутствующие параметры соединия с иб

    Ответы: (47)
  48. (46) у тебя на серваке несколько агентов 1С?

    Ответы: (48)
  49. (47) один должен быть.. 8.2

    Ответы: (49) (52)
  50. (48) а скрипт ты где запускаешь?

    Ответы: (50)
  51. (49) там же, где агент серв запущен.

  52. тьфу.
    вместо "srvr='" + ServerName + "':1640;
    надо написать "srvr='" + ServerName + ":'1640;

    не проснулся еще)

  53. (48) тогда кто откликается на 1540-м порту?

    Ответы: (53)
  54. (52) ну 8.1 скорее всего

    Ответы: (54)
  55. (53) во-о-от

  56. ага..
    а вот еще:

    Set v8 = CreateObject("V82.COMConnector")
    ConnectString2 =  "srvr='" + ServerName + ":1641'; ref='" + BaseName +  "';"		
    Set  Connect1 = V8.Connect(ConnectString2)
    
    Set res= Connect1.ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()

    соединяется без проблем, но на последнюю строчку ругается, типа ошибка компиляции. что делать?

  57. + у модуля ОбновлениеИнформационнойБазы - включен признак внешнего соединения

  58. попробуй для начала какой-нить запрос выполнить

  59. res= Connect1.ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()

    тоже ругаетсо. хотя все - сервер и внешн соединение

  60. не работает даже

    Set res= Connect1.Константы.НомерВерсииКонфигурации.Получить()

  61. Разобралсо

    Ответы: (61)
  62. (60) рассказывай

    Ответы: (62)
  63. (61) скрипт ругаетсо на кириллицу. поэтому все слова на кириллице нужно заключать в [ ]
    и 59 будет:

    Set res= Connect1.[Константы].[НомерВерсииКонфигурации].[Получить]()

    Ответы: (63)
  64. (62) а в какой кодировке файл скрипта был?

    Ответы: (64)
  65. (63) а хз

или зарегистрируйтесь чтобы ответить!