1с запустить приложение не работает
Многие пользователи сталкивались с ошибками при работе в программе: появлялось уведомление с описанием сути и местом возникновения. Но что делать, когда во время работы зависает база или не запускается 1С конфигурация? Прежде всего — не теряться и не паниковать: хотя причины сбоев различны, в большинстве случаев разобраться по силам рядовому сотруднику с минимальными знаниями в администрировании.
Проблемы с запуском конфигураций
Сложности с открытием конфигураций условно можно разделить на две категории:
- Выдано информационное окно с описанием ошибки, например:
- «Отсутствует файл базы данных»;
- «Информационная база не обнаружена»;
- «Файл базы данных поврежден»;
- «Неверное имя пользователя или пароль»;
- «Нет прав на запуск требуемого вида клиента» и т. д.
- 1С зависает, загрузка не проходит дальше заставки конфигурации, база не открывается.
В статье рассмотрены несколько ошибок запуска конфигураций на платформе 1С:Предприятие 8.3.17.1549.
Ошибки при старте конфигурации
Недостаточно прав на запуск программы
Может возникнуть у новых пользователей или после изменения учетной записи.
Для устранения следует поменять пользователю настройки прав и ограничений. Это доступно под учетной записью администратора 1С. Пункт Настройка пользователей и прав в типовых конфигурациях размешен в разделе Администрирование .
Не найдена база данных
- перемещена;
- удалена;
- переименован каталог хранения;
- для пользователя закрыт доступ к папке с базой.
Чтобы устранить ошибку:
- Попробуйте пройти по указанному пути до файла 1Cv8.1CD.
- Убедитесь, что имена компьютера/диска и всех папок совпадают с указанными в уведомлении. Если обнаружили отличия, исправьте параметры запуска базы: по кнопке Изменить пропишите новый каталог расположения ИБ.
- Проверьте права на изменение файлов для текущего пользователя. В окне Свойств каталога базы на вкладке Безопасность должны стоять отметки Разрешить .
- При отсутствии каталога или файла 1Cv8.1CD посмотрите Корзину : возможно, база случайна удалена.
Ярлык запуска 1С не действителен
Для быстрого запуска программы администраторы выносят ярлык (ссылочный файл) на рабочий стол пользователя. При перемещении или установке новой платформы ярлык обновляют. Иногда специалисты забывают это сделать, и сотрудники сталкиваются с ошибкой неработающего ярлыка 1С.
Для создания нового ярлыка:
После выполнения команды на рабочем столе появится новый значок 1С. Можете его переименовать на свое усмотрение. Старый ярлык удалите.
Ошибки запуска, связанные с форматом потока или хранилищем данных, решаются очисткой кэша 1С. Вообще удаление временных файлов 1С помогает решить многие проблемы. Поэтому когда все варианты уже перепробованы, почистите кэш.
Программа 1С зависает при запуске
Когда 1С не отвечает при запуске после выбора конфигурации, а на экране долгое время висит заставка, то:
- база перегружена или повреждена;
- производительности компьютера недостаточно для работы с программой.
Предпосылками этих проблем могут быть и частые зависания 1С при выполнении каких-либо действий в программе.
Проверка и восстановление целостности БД
Если база 1С не запускается ни в пользовательском режиме, ни в режиме конфигуратора, следует проверить ее на ошибки утилитой chdbfl.exe. Она устанавливается вместе с конфигурацией, находится в папке bin и имеет тип Приложение.
Если в директории 1cv8 несколько папок с разными релизами платформы, откройте последнюю установленную.
Перед использованием утилиты рекомендуется сделать копию каталога с файлами базы.
В открывшемся окне Проверка физической целостности файла БД в поле Имя файла БД укажите путь до файла 1Cv8.1CD, находящегося в каталоге базы. При затруднении путь можно посмотреть в нижней части окна запуска 1С.
Отметьте флаг Исправлять обнаруженные ошибки , чтобы утилита chdbfl.exe сразу делала исправления в базе. После завершения процедуры ознакомьтесь с результатом в окне приложения.
Далее, независимо от итога проверки, сделайте диагностику ИБ через конфигуратор:
- Запустите 1С в режиме конфигуратора.
- Перед началом действий с базой создайте резервную копию Конфигурация — Выгрузить информационную базу .
- Перейдите в меню Администрирование — Тестирование и исправление .
- В открывшемся окне отметьте все режимы проверки, поставьте флаг Тестирование и исправление и нажмите Выполнить . Результат отобразится в служебном окне.Еще эту функцию используют, когда зависает 1С при формировании отчетов, проведении документов и т. д. После пересчета итогов, реиндексации, реструктуризации таблиц ИБ повышается быстродействие программы 1С.
- Проверьте работу конфигурации в пользовательском режиме.
Изменение параметров компьютера
Приведенные ниже действия следует применять только после согласования с системным администратором, т. к. изменение настроек компьютера может повлиять на другие программы и работу операционной системы.
При повторных зависаниях программы 1С, появлениях ошибок «Недостаточно памяти» обратитесь к системному администратору, чтобы он увеличил физический объем ОЗУ на компьютере. В качестве временной меры при нехватке оперативной памяти можно рассмотреть вариант с увеличением файла подкачки — это выделенная на жестком диске область под нужды приложений.
Для увеличения файла подкачки:
- Откройте окно свойств компьютера и выберите пункт Дополнительные параметры системы .
- В окне Свойства системы на вкладке Дополнительно нажмите кнопку Параметры .
- В Параметрах быстродействия перейдите на вкладку Дополнительно . В разделе Оптимизировать работу выставьте флажок у программ. Нажмите Изменить .
- В окне Виртуальная память выберите диск, на котором будет выделено пространство для файла подкачки. После установки флажка Указать размер задайте величину области в Мб. Исходный и Максимальный размер опытные сисадмины рекомендуют ставить одинаковые, т. к. это снижает разброс данных в виртуальной памяти. Чем меньше на компьютере ОЗУ, тем больше выделяют места для файла подкачки:
- для 1 Гб ОЗУ — до 4096 Мб;
- 2 Гб — 3584 Мб;
- 4 Гб — 3048 Мб;
- 6 Гб — 2560 Мб.
- Кнопкой Задать новые параметры сохраняются в системе. Чтобы они вступили в силу, перезагрузите компьютер.
Для выбора оптимального размера поэкспериментируйте с пошаговым увеличением файла до максимального значения.
Используйте файл подкачки только при недостатке оперативной памяти, иначе система начнет часто обращаться к этой области для сохранения временных файлов, а из-за низкой скорости (по сравнению с ОЗУ) стабильно работающий компьютер станет дольше обрабатывать запросы.
Принудительное закрытие 1С
Если зависла 1С 8.3 — что делать пользователю? Вот несколько вариантов:
- нажмите комбинацию клавиш Alt+F4 и немного подождите, программа прервет выполнение текущего процесса и выдаст диалоговое окно с вопросом «Завершить работу с программой?»;
- в панели задач вызовите контекстное меню значка 1С и выберите Закрыть окно ;
- откройте диспетчер задач Ctrl+Shift+Esc. Выделите неотвечающее приложение и нажмите Снять задачу .
Если зависла 1С — как закрыть программу без последствий для базы данных?
- Не пользоваться кнопкой RESET на системном блоке;
- Не отключать подачу электричества.
При небольшой производительности компьютера не забивайте базу 1С лишней информацией: чаще удаляйте помеченные объекты. Чем меньше объем БД, тем быстрее обрабатываются запросы. Если устранить проблему зависания 1С не помог ни один из способов, выход только один: увеличить ОЗУ и повысить разрядность ОС — обратитесь к системному администратору.
См. также:
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Добрый вечер! Нужно открыть любой файл из 1С. Кто может дать пример НачатьЗапускПриложения()? НЕ могу понять как использовать. Раньше было все просто - ЗапуститьПриложение("С:\\1.txt") и запускался блокнот. Включать режим совместимости синхронных вызовов не хочу.
ЛюбойФайл = "С:\\1.txt";
Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение. Истина);
А что дальше?
Что нужно писать в процедуре ЗапускПриложения(), какие параметры?
Не понятно, как только дождаться завершения приложения? Нужно что бы после закрытия файла, он удалился.
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами:
Тип: Строка.
Задает текущий каталог запускаемого приложения.
Истина - дожидаться завершения запущенного приложения перед продолжением работы.
Значение по умолчанию: Ложь.
Описание:
Начинает запуск внешнего приложения либо открытие файла с использованием ассоциированного с ним приложения.
Тонкий клиент, веб-клиент, толстый клиент.
(3) Да, я в коде выставляю его в "Истину", он 4 и в коде выше, видно, что я его выставил в "Истину", Но! Что получается по факту. Открываю свой файл, а программа отрабатывает дальше. Что я ожидаю получить. Открыть файл, программа пусть дальше работает. Или останавливается. Но важно, после отработки внешнего приложения, удалить файл.
(5) Хотя, это я ошибся. Попробовал сейчас - всё работает корректно и без явного указания экзешника. Вы просто неправильно понимаете смысл процедуры в описании оповещения - она вызывается не при запуске, а при завершении. Вот там и удаляйте свой файл.
(5) А для чего тогда служит параметр, дождать завершения? Вроде раньше, процедура ЗапуститьПриложение(), отрабатывала как я описал выше (вспомнил пример, где я запускал mp3 файл.). На самом деле я запуская картинку, могу запустить пдф файл.
(6)Как я понимаю смысл - открылась картинка. я ее посмотрел. Закрыл. и вот тут я должен удалить файл. Но отчкаостанова в отладчике не отрабатывает. У меня как "НачатьЗапускПриложения(ЗапускПриложения, ЛюбойФайл,, Истина);", отработала. Файл открылся и тут же переходим в Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт
(8) После закрытия файла, я в эту процедуру не попадаю. У меня в вызываемой процедуре
Первый параметр пустой. Может по этому я не попадаю в нее после закрытия файла?
(10) я просто не пойму, почему он пустой. В синтаксисе написано что он равен 1 или неопределенно, если не задан, но у меня он заданю
На самом деле, это способ помочь финансированию здравоохранению за счет автомобилистов. Каждая справка - платная, очевидно, что объем работы врача при приеме такого "пациента" на порядок меньше чем с реальным больным, а денежки идут.
(12) Вот пример
Первый параметр у меня пустой. Не могу понять почему. И как только открылся файл. Я разу попал в нижнюю процедуру. Может платформа баговая
(16) :D это уже смешно. У меня все тоже. У меня в коде нет ошибок? :D. Может параметры конфигурации не такие? Я в чистой базе это пишу.
(17) Аналогично. В чистой базе все работает.
Сделайте в процедуре ЗапускПриложения Сообщить("Закрылось").
Я так понимаю, если первый параметр истина, то будет отрабатывать после закрытия. Но у меня первый параметр = неопределено.
Платформа 1С великолепна, замечательна и просто мощная. Обширный функционал доступен из коробки, а технология внешних компонент делает ее практически безграничной в части расширения возможностей. Но иногда.
Иногда все это не помогает и для достижения результатов, решения задачи - приходиться использовать сторонний софт. И ладно, если бы это были COM-объекты, которые хоть и являются устаревшей технологией, но до сих пор часто используются и даже получили некоторую вторую жизнь с последними событиями. Но есть и другой путь - запуск приложений напрямую из кода встроенного языка.
Сегодня мы поговорим о запуске приложений программным способом. А также о некоторых проблемах и способах их решений под Windows и Linux.
Часть подходов, которые будут описаны ниже, применяются в разработке "Командный интерпретатор для 1С", но скачивать ее для изучения не обязательно. Все есть здесь. Там лишь все это организовано в удобном виде для использования.
Исполни это
Причин, когда такое может понадобиться - много, очень много. Все их рассматривать точно не будем. Остановимся на одном простейшем примере - запуск команды ping, чтобы узнать доступность какого-либо ресурса в сети средствами 1С. Иногда еще ping запускают для эмулирования ожидания (метода Sleep), но мы такое извращение делать не будем :)
Наша задача - запустить какое-либо приложение с параметрами и получить результат его работы. И сделать мы это должны безопасным способом!
Последнее означает, что если запускаемое приложение зависнет, запросит интерактивных действий от пользователя (а на сервере мы ничем ему в этом случае помочь не сможем) или просто будет выполняться дольше выделенного для него времени, то мы должны завершить его работу и продолжить выполнение кода в обычном режиме и обработать исключение. Никому ведь не нужны зависшие сеансы 1С?
Мы рассмотрим несколько решений как для Windows, так и для Linux. И так, поехали.
My Little Windows
По классике, сначала мы сделаем плохо, а потом сделаем хорошо. Прежде чем начать дам несколько служебных функций, которые будут использоваться в примерах ниже.
Решения не идеальные, но простые. Например, там можно найти как сохранить файл в кодировке UTF-8 без BOM, получить путь к файлу PowerShell.exe и др. Решения всегда можно улучшать.
Плохой пример
И так, как обычно выполняется запуск приложений из кода встроенного языка? Правильно - с помощью процедуры "ЗапуститьПриложение()":
Первым параметром передаем строку команды запуска и параметры по необходимости. Во втором устанавливаем каталог, что не обязательно. Третий параметр позволяет дождаться завершения приложения, а четвертый получить код возврата. Обычно если код возврата не равен 0, значит что-то пошло не так.
Вернемся к нашей задаче. Выполним команду "ping infostart.ru".
Вариант рабочий и позволяет запускать большую часть команд и целых скриптов. Комментарии даны исчерпывающие. Используются только штатные возможности платформы 1С для выполнения команд. И это плюс. Но у этого подхода есть и большой минус - низкая надежность и непредсказуемость результата в тех случаях, когда точно не известно, как долго будет команда выполняться и не потребует ли приложение интерактивных действий пользователя. Если интерактивные действия потребуются на стороне сервера, где мы об этом даже и не узнаем, то сеанс 1С может подвиснуть на всегда.
В качестве решения может быть реализация таймаута выполнения команды, но для процедуры "ЗапуститьПриложение" такое реализовать практически невозможно. Можно, конечно, попробовать запустить приложение и ожидать файла-результата какое-то время, но это решит проблему частично. Зависания не будет, но приложение будет запущено и дальше, ожидая внешней команды.
WScript.Shell нас спасет
Мы же в среде Windows. Давайте используем ее средства в виде COM-Объекта "WScript.Shell":
Вот такая портянка для безопасного запуска приложений.
Если кратко, то для выполнения команды добавили таймаут. По истечении времени выполнения, приложение завершается и вызывается исключение.
Теперь приложение не зависнет и в случае чего мы сможем завершить его работу принудительно.
Мое имя Power, PowerShell
Пойдем дальше и сделаем наше решение более интересным. Что, если нам нужно запустить не простую команду CMD или BAT'ник, а команду или скрипт PowerShell, но на тех же условиях! Для примера опять же оставим запуск бесконечного пинга :)
Еще одна портянка кода, но куда без них.
Принцип тот же самый, что и в примере выше. Отличие находится в области "ПодготовкаСкриптаPowerShell", где выполняется подготовка скрипта PowerShell для запуска и установка необходимых параметров для приложения PowerShell.exe. Иначе параметры безопасности не дадут нормально запустить скрипт. Подробнее об этом читайте на MSDN.
Фактически, теперь можно запускать любые скрипты хоть CMD, хоть PowerShell. А если сильно хочется, то можно и GIT Bash под Windows использовать или даже подсистему WSL под Windows 10. Но все это уже другая история. Осталось поговорить про Linux.
*.nix is my own
Под *.nix привычнее всего использовать bash для выполнения команд. Можно ли использовать bash из встроенного языка платформы 1С? Да, можно. Можно запускать как отдельные команды, так и целые скрипты. При этом получать результат и, что самое главное, делать это безопасно как в примерах выше.
В далеком 2015 году на Mista была поднята тема "Запуск файлов *.sh в самой 1с". Возможно, информация ниже будет ответом на вопрос, т.к. точного ответа так там и нет. Но может быть я не прав :)
Запускаем bash-скрипты
Первое, что нужно понять - в Linux нет COM-объектов. Значит придется обойтись штатными средствами платформы 1С. Выглядеть это будет так:
Здесь мы устанавливаем произвольный текст команды для Bash и выполняем его. В чем то прием аналогичен тому, что мы делали для Windows. Комментарии даны полные, но на паре моментов остановимся подробнее.
Некоторые нюансы
Первое, что может показаться интересным - это вызов "dos2unix" для сформированного ранее файла скрипта. Зачем это нужно? В операционной системе Windows по умолчанию для переноса строк в файлах используется последовательность символов "\r\n" (перевод каретки + перенос строки). В Unix-подобных системах используется только символ переноса строки "\n". Для Windows символ перевода каретки был добавлен для того, чтобы в древние времена можно было отправлять на печать текст без каких-либо особых драйверов. Телетайп навсегда! Этот легаси остался и по сей день и никому не мешает, ну почти.
Нам же он может сильно помешать по двум причинам:
- Несмотря на то, что сервер 1С установлен под Linux - все равно стандартный перенос строки платформа формирует как "\r\n". Даже если для таких классов как "ЗаписьТекста" или "ТекстовыйДокумент" устанавливать символ переноса строки другой (например, Симполв.ПС или по коду символа переноса строки равному 10), то платформа все равно использует символ перевода каретки.
- Еще может быть ситуация, когда текст команды для выполнения передается с клиента под управлением Windows на сервер под Linux и символы перевода каретки будут там присутствовать.
Мешать они будут потому что Bash не понимает что с ними делать. Если в файле скрипта будет содержаться символ "\r", то мы получим ошибку:
Вот, например, обсуждение подобной проблемы. Так вот, с помощью команды "dos2unix" можно убрать все символы, несовместимые содержимым скрипта Bash и сделать его корректным. На скриншоте ниже показан пример преобразования содержимого скрипта. (Да, я использую Notepad++ даже в Linux, если Вы его узнали).
Конечно, тут есть минус - пакет "dos2unix" должен быть установлен на сервер. Сделать это проще простого. Вот так это, например, выглядит для Ubuntu:
Но это не единственная особенность. Для того, чтобы ограничить время выполнения команды мы используем штатные возможности - команду timeout. С ее помощью мы можем указать сколько времени выделяется для выполнения команды / скрипта.
В примере выше мы выполняем некоторый скрипт с таймаутом 10 секунд. Подробнее смотрите мануал :)
Теперь Вы можете запускать приложения, скрипты или команды с помощью Bash из Linux безопасным способом.
Скрытая угроза
Частным случаем запуска процессов небезопасным образом является использование COM-объектов. Не все COM-объекты порождают процессы, которые нужно контролировать. Но, например, всеми любимые Word и Excel, которые часто до сих пор ставят на сервера, делают именно так. Они запускают соответствующий процесс "word.exe" или "excel.exe" и дальше управляют им. Не говоря уже про чистоту использования лицензий (эта тема касалась здесь), это еще и не всегда безопасно с точки зрения работы этих приложений.
Тут все просто - в момент создания объекта документа для его обработки как-раз и создается процесс "word.exe". После завершения всех необходимых действий, метод "Quit" закрывает приложение и все работает как надо. Но что, если в момент выполнения алгоритма заполнения произойдет ошибка? Правильно, метод "Quit" не будет выполнен и процесс Word'а останется "висеть". Конечно, можно попытаться обезопасить себя как это рекомендует стандарт разработки 1С и добавить "попытку":
Тут мы пытаемся закрыть приложение и освободить все связанные ресурсы. Часть кейсов это решит, но, к сожалению, не все. Если, например, в момент работы с COM-объектом возникнет не исключение, а падение рабочего процесса, то никакие действия по освобождению ресурсов выполнены не будут и процесс останется висеть в памяти до перезагрузки сервера / компьютера. Ну или пока не будет "убит" принудительно.
К сожалению, при непредвиденном завершении рабочего процесса мы особо ничего не можем сделать для контроля завершения всех запущенных процессов из кода встроенного языка. Все-таки это нештатная ситуация и решать ее можно только нештатными средствами. Почти все "костыли" по этой теме дают сбои в той или иной степени.
А у Вас на сервере бывают ситуации с десятком запущенный процессов "excel.exe"? :)
Альтернативные подходы
В качестве многоточия для этой темы хотел бы упомянуть и альтернативные способы решения проблем с освобождением ресурсов запущенных из 1С процессов:
- Организовать bat/ps/bash скрипт, который будет ночью "убивать" определенные процессы. Например, те же "excel.exe". Костыль? Да. Работает? Да.
- Сохранять в базе 1С (например, в регистре сведений) информацию о запущенных процессах (идентификатор процесса, имя и др.). Ночью или в другое время запускать регл. задание, которое будет проверять завершение этих процессов. Костыль? Да. Работает? Да.
- Перезагружать сервер с периодичностью в несколько дней. О сколько проблем можно решить! :) Костыль? Да. Работает? Да :)))
Список можно продолжать и дальше. Но возможно правильным вариантом будет - поиск решения задач иным способом, а не запуском сторонних процессов. Если такое, конечно, возможно.
Удачи, друзья!
Всем чистого кода, хороших решений и меньше "костылей"! До следующих встреч!
А как Вы работаете со сторонними процессами из 1С?
Другие ссылки
-
- инструмент для выполнения команд CMD / PowerShell из 1С
Авторские разработки
Транслятор запросов 1С в SQL - инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.
Просмотр и анализ структуры базы данных (отчет на СКД) - отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
История работы пользователей (отчет на СКД) - отчет для просмотра истории работы пользователей (СКД, просмотр для любого пользователя).
Экспорт журнала регистрации. Набор инструментов (приложения + исходный код) - набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux. Готовые приложения и исходный код.
Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.
-
Помощник работы с идентификаторами объектов - инструмент для расширенного анализа идентификаторов объектов.
Анализ производительности APDEX (бесплатный) - отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
Пакетная выгрузка / загрузка внешних отчетов и обработок - пакетная выгрузка / загрузка внешних отчетов и обработок для массовый манипуляций с ними.
Мастер полнотекстового поиска - набор инструментов для работы с полнотекстовым индексом платформы 1С. Стандартные и расширенные возможности.
Командный интерпретатор для 1С - инструмент для выполнения команд CMD / PowerShell из 1С
Область применения: управляемое приложение, обычное приложение.
1. При запуске внешней программы из кода требуется составлять строку запуска таким образом, чтобы она собиралась только из проверенных частей.
Если одна из частей, из которых собирается строка запуска, содержит данные, полученные из базы данных, из поля ввода на форме или прочитаны из хранилища настроек, то перед запуском программы требуется проверить, являются ли запуск безопасным. Безопасными считаются такие строковые данные, которые не содержат в себе следующие символы: "$", "`", "|", "||" ";", "&", "&&".
Данное требование распространяется на все способы запуска программы, в том числе:
- КомандаСистемы ( , )
- ЗапуститьПриложение ( , , , ) ;
- НачатьЗапускПриложения ( , , , );
- ПерейтиПоНавигационнойСсылке ( );
- Использование COM объектов " Wscript.Shell " и " Shell.Application ".
2. При использовании Библиотеки стандартных подсистем для запуска внешних программ требуется использовать следующий программный интерфейс:
2.1. Для того чтобы открыть проводник с фокусировкой на указанном файле, использовать процедуру ФайловаяСистемаКлиент.ОткрытьПроводник .
Например:
2.2. Для того чтобы открыть файл в программе просмотра, ассоциированной с расширением файла, использовать процедуру ФайловаяСистемаКлиент.ОткрытьФайл . Она исключает запуск исполняемых файлов (например, *.exe, *.bin, *.apk).
Например:
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://1c.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("e1cib/navigationpoint/startpage"); // начальная страница.
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("mailto:help@1c.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("skype:echo123?call");
В то же время, для открытия проводника или файла в программе просмотра не следует формировать ссылку по протоколу file://, для этого следует использовать одну из процедур: ОткрытьПроводник (см. п. 2.1) или ОткрытьФайл (см. п. 2.2).
2.4. Для того чтобы:
- запускать файлы на исполнение (например, *.exe, *bat),
- использовать системные команды (например, ping, tracert или traceroute, обращаться к rac-клиенту),
- выполнять команды на сервере,
- а также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr)
следует использовать ФайловаяСистемаКлиент.ЗапуститьПрограмму (в клиентском коде) и ФайловаяСистема.ЗапуститьПрограмму (в серверном коде).
Например:
Пример запуска с ожиданием завершения и получения кода возврата:
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
Результат = ФайловаяСистема.ЗапуститьПрограмму(
"ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
КодВозврата = Результат.КодВозврата;
ПотокВывода = Результат.ПотокВывода;
ПотокОшибок = Результат.ПотокОшибок;
3. Для выполнения команды, требующей запуск внешней программы в режиме наивысших прав (например, в ОС Windows – с отображением запроса повышения прав UAC), необходимо:
- реализовывать ее на управляемой форме в виде кнопки или пункта меню;
- а на самой кнопке, начинающей выполнение действия, отобразить значок щита (общая картинка ЗначокЩита из Библиотеки стандартных подсистем ).
Выполняет запуск приложения Windows
Синтаксис
Процедура ЗапуститьПриложение() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров процедуры ЗапуститьПриложение() :
Имя параметра | Тип | Описание |
---|---|---|
СтрокаКоманды | Тип | строковое выражение, содержащее путь к запускаемой программе или имя файла для запуска ассоциированного внешнего приложения |
Жирным шрифтом выделены обязательные параметры |
Описание
Процедура ЗапуститьПриложение() выполняет запуск внешнего приложения ОС Windows минуя командный интерпретатор MS DOS. После запуска приложения управление возвращается в программу 1С, не дожидаясь завершения работы внешнего приложения.
В отличие от процедуры КомандаСистемы() может открыть файл с помощью ассоциированного для данного вида файлов приложения (при условии, что оно установлено на компьютере пользователя).
Если в параметре СтрокаКоманды не указан полный путь к вызываемой программе, ОС Windows самостоятельно выполняет поиск в следующем порядке:
- Текущий каталог программы
- Каталог Windows
- Системный каталог Windows
- Каталоги, перечисленные в переменной среды исполнения PATH
Пример использования
Пример кода с использованием процедуры ЗапуститьПриложение() :
Платформа 1С:Предприятие 8.x позволяет выполнять запуск сторонних приложений встроенными средствами. Например, если нужно запустить браузер для открытия ссылки, то достаточно написать следующий программный код:
Таким же способом можно выполнять запуск любого другого приложения, явно указав путь к исполняемому EXE-файлу.
После выполнения этой строчки кода будет запущено стандартное приложение Windows – "Блокнот".
Использовать этот метод глобального контекста больше имеет смысл на стороне клиента (тонкого или толстого), так как в абсолютном большинстве случаев после запуска приложения работать с ним из 1С:Предприятия не представляется возможным. Т.е. после открытия браузера обрабатывать его события или получать из него данные платформа не сможет.
Но выполнять взаимодейтсвие с запущенным таким способом приложением все же можно! Например, выполнив запуск ожидаем когда запущенное приложение сформирует ответный файл и затем читаем его. Если использовать метод "ЗапуститьПриложение()", то нам придется проверять наличие ответного файла в цикле и в случае появления доступа к этому файлу – обработать его.
Рациональней было бы запустить приложение, дождаться завершения его выполнения и затем выполнить все необходимые действия. А если запуск выполняется на клиентской машине, то показывать окно приложения вообще может оказаться не обязательно.
Для этих целей можно использовать COM-объект "WScript.Shell":
А) – команда системы (путь к исполняемому файлу или любая другая команда в формате DOS).
Б) – вариант показа окна приложения. Указывать не обязательно. Возможные значения:
1 – Активизирует и показывает окно. Если окно минимизировано или максимизировано, система восстанавливает его к оригинальному размеру и положению. Используется при первом открытии окна программы.
2 – Активизирует окно в свернутом режиме.
3 – Активизирует окно и разворачивает на весь экран.
4 – Показывает окно в его новом размере и положении. Активным остается текущее окно.
5 – Активизирует окно и показывает его в текущем размере.
6 – Минимизирует окно и активизирует следующее на панеле задач.
7 – Показывает окно как минимизированное. Активное окно остается активным.
8 – Показывает окно в его текущем состоянии. Активное окно остается активным.
9 – Активизирует и показывает окно. Если окно минимизировано или максимизировано, система восстанавливает его к оригинальному размеру и положению. Используется для восстановления минимизированного окна.
10 – показывает окно в том-же состоянии, что и окно вызывающей программы.
В) – нужно ли ожидать завершения команды: 0 – не нужно ждать завершения выполнения команды, 1 – ждать окончания выполнения команды.
Вот так выглядит запуск приложения "Блокнот" этим способом:
Но опять же, ожидания завершения работы приложения не будет. Для этого третий параметр нужно выставить в значение 1.
Пример использования COM-объекта "WScript.Shell" можно посмотреть в обработке "Yandex.Wordstat", где с его помощью запускается утилита отправки JSON-запроса через Yandex.API.
Минусом второго способа является его не универсальность, ведь работа COM-объекта возможна только для случаев, когда платформа (или сервер 1С:Предприятия) запущены под управлением операционной системы Windows.
Начало сеанса с информационной базой запрещено 1С
Откройте папку с информационной базой. Путь, где она расположена, виден в окне запуска программы, в нижней части окна. В папке вы увидите много файлов.
Файл 1Cv8.1CD — это файл самой информационной базы, он самый объемный. Его трогать нельзя!
Остальные файлы — это временные файлы и файлы блокировок, которые формируются при запуске программы и при ее закрытии автоматически исчезают. Файл 1Cv8.cdn отвечает за блокировку ИБ. Удалив его, блокировка будет снята, и наша база вновь запустится.
Можно удалить все временные файлы, кроме файла информационной базы.
Код разрешения запуска 1С
Еще один способ снятия блокировки — запустить программу с параметром \UC, указав код разрешения запуска 1С. Этот параметр позволяет запустить ИБ, на которую установлена блокировка.
- ENTERPRISE — запуск 1С в пользовательском режиме 1С: Предприятие.
- /F”C:\Users\Acer\Documents\InfoBase” — путь к нашей ИБ (/F — ИБ файловая, /S — ИБ серверная).
- /СРазрешитьРаботуПользователей — снимает блокировку, убирая файл блокировки:
- если указан, то база становится доступной для всех пользователей;
- если не указан, то в программу входит только один пользователь, которому нужно дополнительно разблокировать базу в разделе Администрирование – Поддержка и обслуживание .
Чтобы задать параметры, запустите 1С и нажмите кнопку Изменить , для выбранной информационной базы.
Во втором окне редактирования информационной базы задайте дополнительные параметры запуска, указав код разрешения запуска 1С — ENTERPRISE /F»C:\Users\Acer\Documents\InfoBase» /CРазрешитьРаботуПользователей /UCРезервноекопирование . Текст можно скопировать отсюда, изменив на свой путь к информационной базе.
Запустите 1С снова. Программа начнет открываться и сама сбросится. После этого зайдите снова в окно редактирования ИБ и уберите введенные параметры. Иначе при следующем запуске она может зависнуть.
Если вы укажете только параметры /CРазрешитьРаботуПользователей /UCРезервноеКопирование, то получите тот же результат.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
Одним из самых страшных сценариев для пользователя при работе в..До 31.12.2018 работодатели обязаны провести специальную оценку условий труда (СОУТ).Начало отпуска по беременности и родам сдвигать нельзя ─ он.
(24 оценок, среднее: 4,83 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинетеВы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>Читайте также: