Как обычно вносятся изменения в конфигурацию? Редко кто пишет прямо в живой базе. Обычно всю програмистскую работу (написание, отладку и т.п.) делают на копии, и только потом вносят изменения. И все бы ничего, но тут может добавиться ряд неприятных моментов:
1. Изменения можно вносить только тогда, когда никого в базе нет -> нужно либо выгонять пользователей, либо ждать окончания рабочего дня, когда они сами уйдут.
2. Часто на предприятии ведется не одна, а несколько баз идентичной конфигурации -> соответственно в каждую надо загружать изменения.
3. Наконец, базы могут быть на удаленных точках (филиалах). Соответственно там тоже должен быть кто-то, кто загрузит конфигурацию.
Все эти проблемы решались бы, если б 1С предусмотрела возможность пакетной загрузки конфигурации. Однако этого в версии 7.7 нет. И вот именно этот недостаток восполняет моя утилита.
Суть работы: утилита запускает 1С в режиме конфигуратора, и посылает его окну команды (сообщения WM_COMMAND, а также ввод текста в поля edit) как если бы это делал нажимающий на пункты менюшек админ 😉 .
При запуске конфигуратора утилите известен идентификатор его процесса, поэтому «запутаться» (послать сообщение не тому окну) она не может. О результате обработки команд узнается по тексту выскакивающих сообщений. Обработка прописана только для сообщений из русского интерфейса, соответственно с иными интерфейсами работать не будет.
Кроме этого, утилита позволяет перед загрузкой конфы сделать выгрузку данных. Имя файла выгрузки может включать форматные символы, задающие дату, день недели и «последний каталог пути» к базе.
Далее, чтобы не показывать пароль пользователя или конфигурации, в параметрах программы можно задавать «шифрованный пароль». Ну и наконец, даже если база еще не зарегистрирована в списке баз (либо регистрация слетела) — в предложенном 1Ской окне регистрации утилита нажмет «Ок», и база зарегистрится под стандартным «Информационная база #N». Насколько мне известно, пакетный режим конфигуратора на этом останавливался.
Параметры задаются ini-файлом, и/или ключами командной строки. В ini параметр представляет строку Ключ=Значение (например, user=Админ); в ком. строке — /Ключ Значение (например, /user Админ), пробел между ключем и значением обязателен! Параметры указанные в ком. строке имеют приоритет перед аналогичными в ini-файле (э
то позволяет, например, написав инишник с параметрами загрузки, использовать его для загрузки нескольких баз, указывая в строке запуска только ключ с путем к базе).
Краткую справку по ключам можно получить, введя в ком. строке /?.
Подробнее о работе утилиты см. в файле readme.
Замечательная программа. Использовал для обновления 80 ЗиК баз — запустил и ушел, все обновилось 🙂
Отличная вещь.. скачивал правда не здесь.. Но успешно работает и облегчает жизнь….
Вещь
Вещь замечательная, но, сказав «а», можно и продолжить по алфавиту… При обновлении типовых, помимо мдшника, обновляются файлы v7plus.als, .dll и содержимое папки ExtForms. Если бы еще и это автоматизировать — вообще цены не сложишь.
В отличии от конфигурации, файлы внешних отчетов, компонент и прочая-прочая обновляется простым копированием. Соответственно, для «автоматизации» этого «обновления» нет необходимости писать что-либо, вполне достаточно средств ОС.
Ну да, выполнить 10-20 раз (а у 1Спополам — 80) раз копирование одного и того же — задача не требующая особого ума, но уж очень однообразная (плюс — можно одну-другую базу по запарке пропустить). В то же время, для автоматизации процесса можно дописать мелочевку, типа CopyFile(NewMDPath+’v7plus.als’, BasePath, False) и т.д. в текст программы с необходимыми проверками на сущесвование, да добавить ключ, включающий копирование этих файлов.
А конфстартер вы что, тоже руками 10-20….80 раз запускаете???? бат-файлы нынче отменили?
Хинт: наберите в командной строке XCOPY /? — много интересного прочтете. Еще можете HELP в ком. строке набрать…
Нас не понимают :). Я ведь не в качестве претензии, просто было бы удобнее. Для себя я уже давно написал программку, которая делает все, что мне надо, в том числе и копирование.
Ну так раз уже есть — в чем проблемы? Я просто исхожу из того, что надо не заменять, а дополнять. И что стандартно позволяет система — незачем дублировать. К тому же, у разного народа разные каталоги/файлы копировать надо.
А нельзя ли добавить фукционал чтоб она только 1Сv7.md загружала но и вообще все данные?
Подскажите как шаблон имени задать? Необходимо обновить большое количество баз.
Шаблон имени выгрузки?
Например так: /DownloadTo C:ackup?F-?YY-?MM-?DD
?YY-?MM-?DD — заменится на текущие год, месяц, день (для сегодня например 08-01-21), а ?F — на последний каталог в пути базы (например, для чего-то типа c:ases_1smybase будет mybase), итого получим C:ackupmybase-08-01-21
Для загрузки шаблонов нет (собственно говоря, нечего шаблонить 🙂 ).
Как вариант — можно воспользоваться командой FOR с ключем /D
FOR /d %i in (c:ases_1s*) do confstarter /BasePath %i
(внутри батника естественно вместо %i надо писать %%i)
Все классно, но почему то новую измененную конфу предлагает выбрать, хотя путь прописан в ини
Пользую, выручила, спасибо
Подскажите че не так?
Пробую утилиту ConfStarter. Для начала хочу сделать бакап.
создаю backup.ini файл:
Debug=1
BasePath=C: empoldbase
Path1CExe=C: empin
NewMDPath = NULL
DownloadTo=C: empackupackup.zip
запускаю ConfStarter.exe backup.ini
Получаю ошибку:
Подготовка командной строки…
1С: C: empin
База: C: empoldbase
Пользователь:
ОШИБКА! Ошибка запуска 1С: (5) Отказано в доступе.
Что не так?
путь непосредственно к экзешнику, а не в его каталог
типа так:
Path1CExe=C: empin1cv7.exe
Ура спасибо!!!
Однозначно +, обновил 34 базы. Запускал в 4 потока, все обновилось без ошибок. Автору респект.
Хорошая программа! Однозначно +.
Присоединяюсь к (10).
Хотелось бы добавить возможность загрузки базы из выгруженой копии.
не очень понятно, выдает какое-то сообщение об ошибке, но кракозябрами. Судя по всему код ошибки (2). Что это?
(20) У вас есть варианты:
1. Посмотреть документацию : ключ AnsiToOem — переводить (1) или нет (0) вывод из кодировки ANSI (CP-1251) в кодировку OEM (CP-866).
Коды возврата — 0 — все нормально, 1 — ошибка, 2 — загружаемый файл старее текущего (при update=1).
2. Использовать стандартное перенаправление вывода в файл ( > или >>), с последующим просмотром файла чем-либо что позволяет смотреть в разных кодировках (например, FAR, или встроенный вьювер тотал-коммандера)
3. Использовать перед запуском системную команду смены кодовой страницы консоли CHCP (chcp 866)
Спасибо! Помогло AnsiToOem=1
Теперь такие вопросы.
1. Не происходит выбор Файла новой конфигурации. Из-за Опенконфа может быть? У меня плагин FDSubst1C заменяет окно выбора МД-файла на ХР-подобное (места, мой комп и т.п.)
2. Выдается предупреждение «Загружаемая конфигурация не потомок текущей!» хотя 100% это потомок. При установке ForceReplace=1 происходит обновление конфы, но соответственно уже 1С выдает предупреждение, что, мол:
Это все константы, причем как видно, абсолютно разные… почему бы он их путал?
И в финале 1С говорит: «Нет возможности удалить документ, по которому существуют движения! БольничныйЛист» (это первый в конфигурации)
Подскажите, пожалуйста.
1. Да, скорее всего так и есть. Программа не может распознать диалог открытия файла.
Встречный вопрос — если у вас стоит опенконф, то может использовать его средства? На сколько мне известно, есть плагины, которые распознают ключи командной строки, есть плагин который автоматом файл из буфера обмена открывает, и т.п. Посмотрите на сайте опенконфа, возможно есть и плагин для автозагрузки?
2. Судя по всему, таки не потомок. 1Сочное предупреждение же свидетельствует что вероятно ваши конфы обновлялись слиянием (и счас у них не совпадают внутр. ИДы объектов). Соответственно и загружать лучше со слиянием (merge=1 forcereplace=0, при forcereplace=1 попытки объединения даже не делается). А лучше — сначала загрузить новый мд на копию основного, а потом уже, когда все ясно станет — загружать из копии в живую.
И пожалуйста, разберитесь в механизме загрузки/объединения в 1С, тогда подобных вопросов возникать не будет.
Спасибо, все получилось! Оказывается у меня был старый ReadMe, поэтому использовал не все ключи.
1. Опенконф то у меня стоит, но мне нужно наладить обновление у клиентов, порядка 100 машин. Поэтому не вариант.
2. Конфа — точно потомок, помогла команда Merge=1
Спасибище!
А нет ли такой программы и для 1С8?
Нет :). Я 8кой (пока?) не занимаюсь.
Но насколько мне известно, у 8ки в плане регламентных процедур и пакетного режима гАраздо больше возможностей чем у 77. Посмотрите в доке по администрированию, возможно там есть и загрузка конфы.
Ксажелению я ничего такого там не видел. 😥
(27)
Параметры командной строки 1с8
Посмотри внимательно:
Жаль только, что там нет загрузки с выполнением регламентных заданий и последующим выходом из программы. А то приходится извращаться.
А за Confstarter Спасибо!
А the1 прав.
Из-за Опенконфа файл новой конфигурации не выбирается. А насчет потомка, то в моем случае файл точно является потомком, но выводится сообщение о противном.
Причем для эксперемента заменил МД, при первом обновлении сообщение «о не потомке» не выводилось, а при последующих снова — не потомок. Есть подозрение, что это связано с тем, что у меня подключен Опенконфа, а у пользователей нет.
Не плохо было бы еще запускать в свернутом окне, так как в моем случае процесс обновления происходить на глазах у пользователя и думаю, что не исключена возможность непроизвольных нажатий.
Спасибо! Полезная прога.
Подскажите в чем дело. Работа программы останавливается на строках:
Поиск окна конфигуратора
Авторизация доступа
и всё… обновление дальше не идет.
Мега супер прога, есть только 1 вопрос. Что сделать чтобы можно было запускать от пользователя, имя которого на русском языке и можно ли добавить запись лога, чтобы знать что утилита смогла обновить а что нет. И еще опция merge почему то не срабатывает в командной строке, только из файла.
С параметрами в ком. строке работает точно также как в файле. Единственно, в ком. строке могут быть проблемы с кодировками, потому лучше русские имена писать в файле. Merge работает и там и там, может у вас что-то другое.
В лог выдается ровно то, что сообщает 1С; если же речь идет о записи лога — для этого можно воспользоваться стандартными символами перенаправления «>» и «>>». См. комментарии, гдето такой пример был.
Да, и еще. Прога писалась давно, так что как будет под вин7 работать — без понятия.
(32) Спасибо, по кодировке понял!!! Наверно командную строку неправильно написал. У меня так было: ConfStarter merge=1 Load1S.ini /user Admin /password 007
А нужно так, по справке не понятно?
ConfStarter /merge 1 Load1S.ini /user Admin /password 007
или
ConfStarter Load1S.ini /user Admin /password 007 /merge 1
как правильно вывести сообщение в файл, поправь пжл:
@echo off
ConfStarter Load1S.ini /user Админ /password 123
>>c:log.txt
Да, ключ в ини-файле задается в виде «Ключ=Значение», в командной строке — «/Ключ Значение», т.е. имя ключа предваряется «/», значение ключа — следующий аргумент ком. строки, отделенный пробелом (пробелами). Аргументы, содержащие пробелы берутся в кавычки. Имя обрабатываемого настроечного файла идет как есть. Такова обычная практика построения ком. строки в винде.
(34) на 64-разрядном сервере в терминале отказывается запускать 1с. Показывает Ид процесса и не может найти конфигуратор, процесс при этом не запускается.
Ничего не могу сказать про работу под 64х.
Могу только посоветовать поиграться с режимом совместимости (в свойствах ЕХЕшника 1С и самого конфстартера).
Я так и не поняла, как обновить несколько баз? Подскажите пожалуйста. Если прописать в INI-файле несколько, обновляется всё-равно только одна 🙁
Подскажите, можно ли к маске имени файла выгрузке добавить время?
Смысл в том, что бы при повторном обновлении в этот же день файл выгрузки не замещался новым!
Я так и не поняла, как обновить несколько баз? Подскажите пожалуйста. Если прописать в INI-файле несколько, обновляется всё-равно только одна
Нужно создать несколько INI-файлов и в батники много раз вызывать их, либо использовать 1 ini-файл а все остальное (пути/пароли) прописать в батнике, там же можно использовать переменные.
А есть тоже самое для 8-ки?
Добрый день! У меня почему-то ошибка возникает <5> ОТКАЗАНО В ДОСТУПЕ. не могу понять, в чем дело. Текст файла настроек: Debug=1
AnsiToOem=1
BasePath=C:RW_Chpato
Path1CExe=C:Program Files1Cv77_SQLBIN
NewMDPath=C:1cv7.md
ForceReplace=1
DeleteAfter=0
Update=0
User=Admin
Password=602564
ConfigPassword=652218
WorkTime=0
DownLoadTo=null
Помогите разобраться, пожалуйста. Что не так?
Все, победила! путь к движку 1с надо указывать полностью с именем и расширением 😀
(22) the1,
Прошу прощения, но у меня точно такие же сообщения (только ссылки на документы другие) при обновлении ЗиК с 313 на 320 при загрузке обновленн конфигурации. Работала с 320 приводя ее к не типовой. Прошу подскажите пожалуйста что сделать, чтобы это победить поподробнее…
(24) the1,
И очень прошу поподробнее о «команда Merge=1». Уже четвертый день «колдую» без результатно……
(46) Спасибо большое. Очень понятно и познавательно. Поняла, что я не совсем того, потому что представления мои были аналогичны. Жаль только, что «дошла» до них сама. Я уже каажется справилась сама. В итоге пришла к тому, что если берешь конфу после «ОченьУмелых» ручек (не в обиду им будет сказано), которые без особых объяснений «спрыгивают» с предприятия, то помочь сможет только объединение и дотошная рутинная сверка. Надеется на автоматизацию процесса не приходиться. жаль только, что много времени потратила. Обновила, сегодня уже январь закрыли. Теперь предстоит в 8ку перенести….. Проанализировав ИБ, поняла, что опять «попала», но мы ж не ищем легких путей. Любой опыт-он бесценен:).
Про конфстартер тоже спасибо еще раз. Думаю пригодиться.
есть ли для восьмерке нечто подобное?
(48) В 8ке эта возможность встроена — см. ключи запуска конфигуратора (во встроенной справке — Запуск 1С:Предприятие 8 и параметры запуска Параметры командной строки пакетного режима запуска).
Вот например как это сделано у меня в батнике
set v8exe=»C:Program Files (x86)1cv828.2.15.2891cv8.exe»
set user=admin
set pass=пароль_админа
set server=сервер_базы_данных
set db=имя_БД_на_сервере
set logfile=update.log
set repo_dir=\путькхранилищу
set repo_user=пользователь_хранилища
set repo_pass=его пароль
%v8exe% DESIGNER /Out%logfile% -NoTruncate /S%server%\%db% #k8SjZc9Dxk
/n %user% /p %pass% #k8SjZc9Dxk
/ConfigurationRepositoryUpdateCfg -force #k8SjZc9Dxk
/ConfigurationRepositoryF %repo_dir% #k8SjZc9Dxk
/ConfigurationRepositoryN %repo_user% #k8SjZc9Dxk
/ConfigurationRepositoryP %repo_pass% #k8SjZc9Dxk
/UpdateDBCfg
Показать
Это для загрузки конфы из хранилища. Для загрузки из файла вместо ключей хранилища (ключи со словом Repository) указывается /LoadCfg имя_файла_конфы
alexqc добрый день.
Не совсем понятно, как конфстартер определяет, потомка базы?
7.70.027
1С Предприятие, Зарплата и Кадры, 7.70.321
И вот еще вопрос: когда я обновляю вручную, я делаю: Открыть конфигурацию, Объединение конфигурации,
в появившемся окне выбираю Загружаемая конф-я, Замещать объекты. Далее Да, Принять, ок.
Всё обновляется без проблем.
Если я использую конфстартер с инишкой:
Debug=1
BasePath=D: estase_zik
Path1CExe=C:Program Files1Cv77BIN1cv7l.exe
User=admin
NewMDPath=D: estz3241cv7.md
ForceReplace=1
Merge=1
DownloadTo=D: estackups?F-?DD-?MM-?YYYY
На этапе объединения, появляется сообщение вида:
[15:12] Конфигуратор :: Нет возможности удалить документ по которому существуют
движения! ИзменениеУсловийОплатыОтпускаПоУходуЗаРебенком
=OK=
[15:12] Конфигуратор :: Реорганизация данных не выполнена
=OK=
И всё стопорится.
А в чем же проблема? Вручную же обновляется вполне спокойно.
Заранее спасибо
(50) пытаешься обновить разными мд-никами (не тем, что рученьками делал)
а ошибка скорее всего в том, что делаешь Загрузить конфу, а не объединение..ибо при объединении документы не удаляются.
Ёпрст
Не совсем понимаю, что мне нужно сделать в конфстартере, чтобы всё гладко обновлялось, как и вручную?
Убрать merge=1?
Насчет обновления вручную — т.е. мд файл моей базы зик не типовой, или что?
Если обновляю подобным скриптом комплексную конфигурацию, вылазит:
[16:16] Конфигуратор :: Невозможно изменить код счета 76.ЗП на 10.11, так как су
ществует счет с данным кодом.
=OK=
[16:16] Конфигуратор :: Реорганизация данных не выполнена
=OK=
(50) (53)
Конфстартер не определяет потомка, это делает сам конфигуратор. Конфстартер только «на менюшки нажимает», и сообщения логгирует.
Если не работает автомат — ну сделайте один раз вручную. Система не может за вас решить, что делать ей, например, со счетом который на место существующего втиснуть пытаетесь.
Ключи ForceReplace=1 и Merge=1 несовместимы. Точнее, ForceReplace=1 заставляет принимать изменения даже если сообщено что конфа не потомок текущей — поэтому до объединения процесс вообще не доходит. Если нужно объединение — уберите ForceReplace=1.
Спасибо, я попробую без forcereplace.
Но в теории — если конфстартер просто нажимает кнопки за меня, то почему при ручном обновлении 1с не задает дополнительных вопросов, а при обновлении именно через конфстартер задает?
Получается, когда вручную, конфигуратор сам определяет, что сделать со счетем, а через конфстартер — не умеет?
Может потому что ты не загрузку измененной конфы, а сразу объединение делаешь?
Чтобы так же делал конфстартер, надо написать merge=2 (естественно, без forceReplace).
Отлично, заработало.
Т.е. теперь, если мне надо будет откатить базу на момент до обновления, я просто беру её из заранее выгруженного zip архива-бекапа, который делался командой DownloadTo=D: estackups?F-?DD-?MM-?YYYY?
И больше ничего не нужно?
Ещё вопрос — а можно обновлять базы комплексной и зика не по порядку, например, 321 и 322, а сразу с 321 на 324? Или это чревато чем-то?
Здравствуйте Уважаемые!
работает ли эта прога на Windows 7 ???
а то вот пробую — нифига! (в режиме совместимости тоже)
(58) roman_zzz, работает, я то как раз под вин 7 32 бита и сижу, и без всяких режимов совместимости, под админом.
Опишите весь цикл действий, наверняка, где-то просто пропустили шаг.
сорри, все уже заработало — нехватало параметров, хотя в ХР все работало и так!
А с бухгалтерией 7.7 Базовой будет эта штука работать или она только для Проф?
Нормальная штука… Сделано то, что 1С в своё время не сделала…