Запуск 1с 7 из командной строки с параметрами
Многие ежедневно сталкиваются с рутинными процедурами администрирования баз данных 1С. К ним можно отнести выгрузку и сохранение данных, тестирование и исправление информационной базы, обмен данными между распределенными базами данных. Как раз в этом случае и можно воспользоваться пакетным режимом работы конфигуратора.
Работа в пакетном режиме подразумевает выполнение программой последовательных действий без участия пользователя. Причем сама последовательность действий должна быть описана пользователем по определенным правилам с использованием документированных ключевых параметров.
Инициализация работы конфигуратора в пакетном режиме производится командной строкой вида
Path1 config /dPath2 /nUser /pPwd /@Path3
где
Path1 - путь к файлу 1cv7*.exe;
Path2 - путь к каталогу базы данных;
Path3 - путь к файлу с инструкциями (пакетному файлу);
User, Pwd - имя и пароль пользователя, под которым будут выполняться действия. Не забудьте, что у указанного пользователя должны быть права на выполнение таких действий;
config - ключевое слово, указывающее, что запуск 1С нужно произвести в режиме "Конфигуратора";
/d - каталог базы данных, с которой будут производиться действия;
/n - имя пользователя, под которым будут выполняться действия
/p - пароль этого пользователя;
/@ - путь к файлу инструкций.
Например, командная строка может выглядеть так:
C:\Program Files\1Cv77\BIN\1cv7s.exe config /dC:\Bases_1C\v77\pr262 /nAdmin /p1qwsa2 /@C:\exchrbd.prm
Рассмотрим теперь, что же собой представляет файл инструкций. Данный файл имеет расширение по умолчанию *.prm, но если будет другое расширение, то в командной строке необходимо указывать данное расширение. Структура файла должна иметь следующий вид:
[Секция]
Параметр=Значение
Имя параметра | Значение | Описание |
---|---|---|
Секция [General] | Секция содержит общие параметры | |
Output | file_name | имя лог-файла для записа произведенных действий |
Quit | 1/0 | нужно ли закрывать программу после выполнения сценария |
CheckAndRepair | 1/0 | нужно ли производить тестирование-исправление ИБ |
UnloadData | 1/0 | нужно ли делать выгрузку данных |
SaveData | 1/0 | нужно ли делать сохранение данных (для формата БД *.dbf) |
AutoExchange | 1/0 | нужно ли выполнять автообмен с РБД |
Секция [CheckAndRepair] | Секция содержит параметры о тестировании-исправлении ИБ | |
Repair | 1/0 | делать исправление или только тестирование |
PhysicalIntegrity | 1/0 | проверять физическую целостность таблиц ИБ |
LogicalIntegrity | 1/0 | проверять логическую целостность таблиц ИБ |
Reindex | 1/0 | производить переиндексацию ИБ |
RecalcSecondaries | 1/0 | производить обносление вторичных (служебных) данных ИБ |
RecalcTotals | 1/0 | пересчитывать бухгалтерские и оперативные итоги |
Pack | 1/0 | упаковывать таблицы ИБ (сжимать, убрав удаленные записи) |
SkipUnresolved | 1/0 | пропускать неразрешенные ссылки или удалять их |
CreateForUnresolved | 1/0 | способ разрешения неразрешенных ссылок: создавать объекты (1) или очищать такие ссылки (0) |
Reconstruct | 1/0 | способ восстановления частично потерянных данных объектов: создавать объекты (1) или удалять их (0) |
Секция [UnloadData] | Секция содержит параметры о выгрузке данных | |
UnloadToFile | file_name | имя файла переноса данных |
IncludeUserDef | 1/0 | включать список пользователей |
Password | password | пароль на zip-архив |
Секция [SaveData] | Секция содержит параметры о сохранении данных | |
SaveToFile | file_name | имя файла архива |
FileList | mask1,mask2. | список масок архивируемых файлов через запятую или пробел |
Секция [AutoExchange] | Секция содержит параметры об автообмене между РБД | |
SharedMode | 1/0 | производить автообмен в разделенном (1) или монопольном (0) режимах |
WriteTo | base_code | код(ы) ИБ, в которую(ые) производить выгрузку; (*) - все |
ReadFrom | base_code | код(ы) ИБ, в которую(ые) производить загрузку; (*) - все |
ReceiveFrom | base_code | код(ы) ИБ, из которой(ых) получать почту; (*) - все |
SendTo | base_code | код(ы) ИБ, которой(ым) отправлять почту; (*) - все |
Таким образом, если оформить запуск конфигуратора в пакетном режиме в виде файла *.bat, *.cmd или *.wsh, то с помощью любого планировщика можно организовать полностью автоматическое выполнение некоторых рутинных операций в заданное время.
Скажите, пжл, как программно определить, запущена ли 1С в режиме польз?
СП помнит.
Не забудь про всякие консоли, регламентные задания, конфигуратор и прочую хрень.
Почему тут нет кнопки - голосовать за закрытие темы?
то ес мы во прям из нашег сеанс хоти узна - а выполняетс ли это во самы код, который выполняетс?
(11) Потому что сеанс конфигуратора — это не сеанс в режиме 1С:Предприятия. Как и консоль кластера, регламентные задания и т. д.
2(16) вам не кажется ли, что если вы программно что-то выполняется, то это уже выполняется в предприятии, и стало быть 1С запущена в режиме пользователя?
хотите изобрести настоящий искусственный интеллект - чтобы программа обладала рефлексией и думала над вопросом "А существую ли я на самом деле? Или просто снюсь бабочке?"
2 (23) ну не знаю у меня безо всяких закрывает все окна 1с
2(23) это оттого что нужно писать tskill:
tskill 1Cv8* /A
но это сработает только в том случае если у вас все пользователи работают в терминале
но самое смешное что этот код закроет и ваш сеанс тоже. а вам так нужно?
taskkill в этом плане более универсальная - позволит завершить процессы и на удаленных компах, но вам нужно знать имена компов на которых работают ваши пользователи
Здравствуйте, Живой Ископаемый!
Перед обменом нужно, как я понимаю, чтобы пользователей в базе не было. Как раз мое 1сПредприятие (польз "obmen") я и спрашиваю как закрыть (это к (26)).
У нас пользователи не в терминале работают и я тоже, спасибо, учту.
Сейчас попробую сделать, как Вы советуете.
TaskKill /F /IM 1cv8.exe - закрылось без вопроса, спасибо Вам огромное
наша задача состоит в том, чтобы угадать какой результат в каком случае? призы будут?
во 2 случае только код в кону загружается, и даже из конф для обновления 1сПредпр не запускается - остается "!" в конф-ре
"только код" - это я после выполнения случая2 захожу в конфигуратор и вижу что код заменился на новый и стоит в окне конф-ра "!"; те видимо сработала только первая строка батника,
"только код" - данные не загрузились
2(40) мучайтесь дальше. никто вас такую без фотки не пожалеет
я это уже объяснял в одной из позапрошлых веток.. с тех пор причина та же
(44) я не поняла, скажите, пжл, еще 1 раз, если не затруднит
2(45) нет, не просите вы помочь.. вы сообщаете ничего не значащие замечания о работе какого-то припадочного скрипта.
Кстати, в (30) - предположение "Перед обменом нужно, как я понимаю, чтобы пользователей в базе не было" - абсолютно ложное. могут быть. Пользователей быть не должно только в том случае, если пришли изменения конфы, при чем такие, которые меняют структуру. Если же просто поменялся код модуля - то пусть будут, ничего страшного нет
Читайте также: