Запуск внешнего отчета (обработки) из командной строки.

Запуск внешнего отчета (обработки) из командной строки.

Столкнулся с необходимостью запустить внешнюю обработку без открытия 1С из командной строки. Изучение пакетного режима запуска 1С (77) закончилось безрезультатно. Разработал .exe файлик для запуска внешнего отчета 1С из командной строки.

Принцип действия OpenForm.exe:

  1. Открываем в фоновом процессе базу через OLE.
  2. Запускаем из базы ОткрытьФорму().

Описание параметров можно получить набрав в командной строке c:OpenForm.exe ?

P.S. Для работы необходим Microsoft .NET Framework 1.0 и 2.0

39 Comments

  1. andrewalexk

    🙂

    «1.0 и 2.0»

    жжош!

    Reply ↓
  2. CheBurator

    (1) жжожь нереально…

    предлагаю на номинанта «гланды через ЗПС»

    Reply ↓
  3. avhrst

    Не понимаю критики, если вызывает проблему фраймворк который свободно распространяется Microsoft , плюс во всем мире програмеры переходят на .NET платформу которая требует NF2 а уже и 3,5 — тогда присылайте свое мыло, я вам бедненьким скину 🙂

    Reply ↓
  4. avhrst

    А решить проблему запуска 1С с командной строки … других способов я не знаю..

    Reply ↓
  5. CheBurator

    Что значит «без открытия 1С из командной строки»…?

    почему нельзя запустить 1С из командной строки с параметрами?

    Reply ↓
  6. Abadonna

    Все вопросы решаются добавлением в процедуру ПриНачалеРаботыСистемы()

    единственной строчки

    ОткрытьФорму(«Отчет»,,КаталогИБ()+»Старт.ert»);

    А уж в нем запущай что хошь и как хошь

    Reply ↓
  7. avhrst

    Abadonna — очень грамотное решение, особенно если речь идет о 100 типовых конфигурациях, а когда обновление выйдет — стрелятся ! Плюс не забывайте что процедура ПриНачалеРаботыСистемы() срабатывает и тогда когда в базу входит юзер, а в данном случае обработку запускать не надо .

    Reply ↓
  8. avhrst

    Сhe Burashka — а не могли бы Вы привести в коментариях пример запуска внешней обработки из 1С с помощью командной строки ?

    Reply ↓
  9. Abadonna

    >Плюс не забывайте что процедура ПриНачалеРаботыСистемы() срабатывает и тогда

    Ну, блин, разжевываю. В Старт.ert

    Код
    Процедура ПриОткрытии()
       Если ИмяПользователя()<>"Автопилот" Тогда
          СтатусВозврата(0);
          Возврат;
       КонецЕсли;
       // а тут ля-ля тополя запускаем, что хотим, хоть 100 обработок
    КонецПроцедуры
    

    Показать полностью

    Reply ↓
  10. Abadonna

    А 100 ьтповых — это, конечно, круто!!!

    А в 3-5 вставить одну строчку — никаких проблем не вижу

    Reply ↓
  11. avhrst

    Abadonna — модуль красивый, но мне надо чтобы все действия которые выполняет внешняя обработка имели автора (имя пользователя указывается в командной строке), плюс для глухих КОНФИГУРАЦИЙ 100 И ВСЕ ТИПОВЫЕ И МЕНЯТЬ ИХ НЕЛЬЗЯ

    Reply ↓
  12. avhrst

    Abadonna — и еще вопрос, например тебе надо в типовую конфигурацию из MS Excel затащить данные, и чтобы автор документа был, и чтобы юзер в Excel выставлял период, нажимал в екселе кнопку и в 1С появлялся документ (например) с его именем ? (а конфигураций у меня не 100 , а 160 и все типовые :))

    Reply ↓
  13. avhrst

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

    Reply ↓
  14. avhrst

    Abadonna — А с заставкой 1С что будеш делать ? (если не корявить библиотеки, то заставка не отображается только в режиме запуска через OLE)

    Reply ↓
  15. Abadonna

    А тебе говорил про запуск обработок, которые у меня по ночам работают: синхронизации всякие и т.д.

    Там мне по барабану заставки и прочее. А так… я просто не могу себе представить ситуёвину, когда конкретному юзверю надо «втихую» запустить внешний отчет.

    Reply ↓
  16. avhrst

    Вот тебе ситуация — двухсторонний обмен с Oracle, в 1С бухгалтера сидят, в oracle остальные отделы, а документами менятся надо и автор документа должен быть. Сидит себе человек работает в 1С, а тут заставка появляется , круто ?!!

    Reply ↓
  17. avhrst

    Я бы ввобще все через OLE делал (документы создавал, справочники) но 1С с OLE мягко выражаясь работает плохо..

    Reply ↓
  18. Abadonna

    А насчет запуска 1С командной строкой с передачей параметра внешнего отчета Чебурашка, мягко говоря, загнул.

    Не предусмотрено

    Reply ↓
  19. avhrst

    Если б было предусмотрено, я бы с экзешником не возился..

    Reply ↓
  20. Abadonna

    Ну я ж и не утверждал, что твой вариант плохой 😉

    Просто мне, например, он САВСЭМ без надобности. Для твоих конкретных условий — наверное самый правильный.

    Reply ↓
  21. avhrst

    Выставил, может кому надо, а то я 2 дня с пакетным режимом т..ся 🙂

    Reply ↓
  22. Abadonna

    Ха! Мой предок под Винницей родился :))) почти земляки

    Reply ↓
  23. CheBurator

    АвторУ: посмотри внимательно на Абадонновский Автопилот.

    Запусти под АВТОПИЛОТОМ отдельный экземпляр 1Сины — и пусть ОН НАРУЖУ ВЫДАЕТ ДАННЫЕ КАК ХОЧЕТ.

    А запуск любого внешнего отчета не изменяя код конфигурации — НИ ОДНОЙ СТРОКИ и ни разу — я думаю, что можно извратиться.. мысль есть но) 1.моих познаний пока недостаточно 2. ЭТО БУДЕТ ЕЩЕ ОДНА ОФИГЕННАЯ ДЫРКА!!!

    как пример запуска любой внешней обработки из командной строки

    1. разобрать конфигурацию, извне подправить текст, собрать конфигурацию и запустить, после выхода из проги — снова разобрать, удалить следы внедренного кода и собрать…

    .. это будет намного дешевле чем вставить в конфигурацию старт.ert?

    если старт.ert надо вставить в 100 конфиг единовременно один раз чтобы использовать потом — решается выше аналогично…

    2. запустить через командную строку 1Сину обычным образом и сэмуоировать в ее окно команды меню-файл-открыть…

    Reply ↓
  24. CheBurator

    а чего, по ОЛЕ нельзя ОткрытьФорму() штатную сделать? — очень сомневаюсь…евал попробовать Шаблон попробовать

    Reply ↓
  25. avhrst

    Сhe Burashka — так я и открываю через OLE ОткрытьФорму() штатными средствами, и вообще стоит четкая задача — запуск внешнего отчета с передачей параметров из командной строки Windows — тоесть из любого приложения.

    Reply ↓
  26. avhrst

    OpenForm.exe занимает 28Kb, так как кроме консольного приложения в нем больше ничего не используется, то скорей всего он будет работать и без 2.0 фраймворка (попробовать негде).

    Reply ↓
  27. aikosyapr

    Большое спасибо автору, именно то, что нужно и нигде ничего похожего кроме кривой ert2exe не нашёл

    Reply ↓
  28. VladAlex

    Автору, конечно, спасибо, но я не пока не осилил. Буду благодарен, если кто-то добрый ткнет меня носом в ошибку.

    Во внешней обработке пишу такой код:

    Процедура ПриОткрытии()

    ЛогДок=СоздатьОбъект(«Текст»);

    ЛогДок.ДобавитьСтроку(«ПриОткрытии().Start»);

    Если ТипЗначенияСтр(Форма.Параметр) = «Строка» Тогда

    Сформировать(2,Форма.Параметр);

    СтатусВозврата(0);

    КонецЕсли;

    ЛогДок.ДобавитьСтроку(«ПриОткрытии().End»);

    ЛогДок.Записать(«c:log.txt»);

    КонецПроцедуры

    При ручном запуске данный код создает лог файл, а через openForm.exe — нет.

    Листинг запуска openForm:

    ============================================================­===

    C:БухгалтерияExtForms>openForm.exe c:Бухгалтерия Автопилот

    123 C:БухгалтерияExtFormsExport_20090308_155054.xml transfer.ert

    Получены параметры: 16.03.2009 21:01:02

    Путь к базе: c:Бухгалтерия\r

    Поьлзователь: Автопилот

    Пароль: 123

    Параметр: C:БухгалтерияExtFormsExport_20090308_155054.xml

    Путь к внешнему отчету: transfer.ert

    Подключение к 1С … 16.03.2009 21:01:02

    Подключено. 16.03.2009 21:01:05

    Запуск обработки….16.03.2009 21:01:05

    Обработка завершена.16.03.2009 21:01:05

    ============================================================­===

    Reply ↓
  29. VladAlex

    (28) Примерно понимаю где главная ошибка — поведение не изменяется, если указывать несуществующие файлы обработки. Т.е. openForm не находит мою обработку. Попробовал указывать полный путь к обработке, перемещал ее в корень диска, но безуспешно. Остальные параметры воспринимаются правильно, т.к. если, например, не указать пароль пользователя, то появляется диалог ввода пароля.

    Reply ↓
  30. irisha

    А как открыть эту обработку, чтобы подправить под свои нужды?

    Reply ↓
  31. PavelTLT

    Прекрасная вещица!

    У меня тоже не сразу заработала.

    Оказывается, я забыл из базы выйти (сидел под тем же юзером, под которым пытался запустить).

    Автору спасибо!

    Reply ↓
  32. maxchaos

    Спасибо! +1!

    Если не сложно, просьба создать второй вариант файла для запуска 1С в монопольном режиме. Тогда, если название второго exe-файла задать типа «openFormMono.exe», то можно будет использовать оба варианта сабжа, при необходимости, динамически моделируя имя запускаемого файла.

    Reply ↓
  33. CheBurator
  34. luns

    Параметры командной строки для указания параметров запуска

    /Execute <имя файла внешней обработки> — предназначен для запуска внешней обработки в режиме 1С:Предприятие непосредственно после старта системы.

    Reply ↓
  35. luns

    ой. не заметил. тут семерошники тусят.

    как у них все сложно 😀

    Reply ↓
  36. cool.vlad4

    (32) reflector в руки и вперед. Можно было вообще скриптом сделать. Хоть на том же c#. Хотя необходимости в net-е здесь не вижу- консольную программку можно сделать на чем угодно.

    Reply ↓
  37. CheBurator

    (35) не всем же деревням в 10 двров нужны камазы съездить в сельпо… 😉

    Reply ↓
  38. TBAPb23

    Спасибо, очень пригодилось. Отличное решение для тех у кого типовая конфигурация.

    Reply ↓
  39. Олег1С

    Разобрался. Супер!! Спасибо!!!!

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *