Как обычно вносятся изменения в конфигурацию? Редко кто пишет прямо в живой базе. Обычно всю програмистскую работу (написание, отладку и т.п.) делают на копии, и только потом вносят изменения. И все бы ничего, но тут может добавиться ряд неприятных моментов:
1. Изменения можно вносить только тогда, когда никого в базе нет -> нужно либо выгонять пользователей, либо ждать окончания рабочего дня, когда они сами уйдут.
2. Часто на предприятии ведется не одна, а несколько баз идентичной конфигурации -> соответственно в каждую надо загружать изменения.
3. Наконец, базы могут быть на удаленных точках (филиалах). Соответственно там тоже должен быть кто-то, кто загрузит конфигурацию.
Все эти проблемы решались бы, если б 1С предусмотрела возможность пакетной загрузки конфигурации. Однако этого в версии 7.7 нет. И вот именно этот недостаток восполняет моя утилита.
Суть работы: утилита запускает 1С в режиме конфигуратора, и посылает его окну команды (сообщения WM_COMMAND, а также ввод текста в поля edit) как если бы это делал нажимающий на пункты менюшек админ ;) .
При запуске конфигуратора утилите известен идентификатор его процесса, поэтому "запутаться" (послать сообщение не тому окну) она не может. О результате обработки команд узнается по тексту выскакивающих сообщений. Обработка прописана только для сообщений из русского интерфейса, соответственно с иными интерфейсами работать не будет.
Кроме этого, утилита позволяет перед загрузкой конфы сделать выгрузку данных. Имя файла выгрузки может включать форматные символы, задающие дату, день недели и "последний каталог пути" к базе.
Далее, чтобы не показывать пароль пользователя или конфигурации, в параметрах программы можно задавать "шифрованный пароль". Ну и наконец, даже если база еще не зарегистрирована в списке баз (либо регистрация слетела) - в предложенном 1Ской окне регистрации утилита нажмет "Ок", и база зарегистрится под стандартным "Информационная база #N". Насколько мне известно, пакетный режим конфигуратора на этом останавливался.
Параметры задаются ini-файлом, и/или ключами командной строки. В ini параметр представляет строку Ключ=Значение (например, user=Админ); в ком. строке - /Ключ Значение (например, /user Админ), пробел между ключем и значением обязателен! Параметры указанные в ком. строке имеют приоритет перед аналогичными в ini-файле (э
то позволяет, например, написав инишник с параметрами загрузки, использовать его для загрузки нескольких баз, указывая в строке запуска только ключ с путем к базе).
Краткую справку по ключам можно получить, введя в ком. строке /?.
Подробнее о работе утилиты см. в файле readme.
Confstarter
Разработка - Инструментарий разработчика
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | Бесплатно | |
---|---|---|
-
.zip 78,71Kb
1562
|
1562 | Скачать бесплатно |
См. также
Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)
Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
12000 руб.
02.09.2020 172175 964 403
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО
8400 руб.
20.08.2024 14724 108 46
Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)
Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.
22200 руб.
06.10.2023 17363 43 15
Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)
Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.
9360 руб.
17.05.2024 27402 96 48
Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
15000 руб.
10.11.2023 11971 45 33
SALE! %
Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)
Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.
4800
3840 руб.
14.01.2013 191392 1153 0
Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)
Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.
20000 руб.
07.10.2021 18123 7 32
Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)
Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.
3600 руб.
27.12.2024 1159 2 0
1. Посмотреть документацию : ключ AnsiToOem - переводить (1) или нет (0) вывод из кодировки ANSI (CP-1251) в кодировку OEM (CP-866).
Коды возврата - 0 - все нормально, 1 - ошибка, 2 - загружаемый файл старее текущего (при update=1).
2. Использовать стандартное перенаправление вывода в файл ( > или >>), с последующим просмотром файла чем-либо что позволяет смотреть в разных кодировках (например, FAR, или встроенный вьювер тотал-коммандера)
3. Использовать перед запуском системную команду смены кодовой страницы консоли CHCP (chcp 866)
Пробую утилиту ConfStarter. Для начала хочу сделать бакап.
создаю backup.ini файл:
Debug=1
BasePath=C:\temp\oldbase
Path1CExe=C:\temp\bin
NewMDPath = NULL
DownloadTo=C:\temp\backup\backup.zip
запускаю ConfStarter.exe backup.ini
Получаю ошибку:
Подготовка командной строки...
1С: C:\temp\bin
База: C:\temp\oldbase
Пользователь:
ОШИБКА! Ошибка запуска 1С: (5) Отказано в доступе.
Что не так?
Например так: /DownloadTo C:\backup\?F-?YY-?MM-?DD
?YY-?MM-?DD - заменится на текущие год, месяц, день (для сегодня например 08-01-21), а ?F - на последний каталог в пути базы (например, для чего-то типа c:\bases_1s\mybase будет mybase), итого получим C:\backup\mybase-08-01-21
Для загрузки шаблонов нет (собственно говоря, нечего шаблонить :) ).
Как вариант - можно воспользоваться командой FOR с ключем /D
FOR /d %i in (c:\bases_1s\*) do confstarter /BasePath %i
(внутри батника естественно вместо %i надо писать %%i)
Теперь такие вопросы.
1. Не происходит выбор Файла новой конфигурации. Из-за Опенконфа может быть? У меня плагин FDSubst1C заменяет окно выбора МД-файла на ХР-подобное (места, мой комп и т.п.)
2. Выдается предупреждение "Загружаемая конфигурация не потомок текущей!" хотя 100% это потомок. При установке ForceReplace=1 происходит обновление конфы, но соответственно уже 1С выдает предупреждение, что, мол:
Частичная потеря информации при преобразовании значений. К_ОплатыСверхУрочныхЧасовПоследующих/ВС_ДолжностнойОклад
Частичная потеря информации при преобразовании значений. КПП/ВС_ОкладПоЗванию
Частичная потеря информации при преобразовании значений. НДФЛ/ВС_ПНВЛ
Частичная потеря информации при преобразовании значений. ПочтовыйСбор/КПП
Частичная потеря информации при преобразовании значений. КодДоходаЕСН/КодДоходаЕСН
Частичная потеря информации при преобразовании значений. РайонныйКоэффициент/Адрес
Частичная потеря информации при преобразовании значений. Руководитель/КодОКАТО
Это все константы, причем как видно, абсолютно разные... почему бы он их путал?
И в финале 1С говорит: "Нет возможности удалить документ, по которому существуют движения! БольничныйЛист" (это первый в конфигурации)
Подскажите, пожалуйста.
Прошу прощения, но у меня точно такие же сообщения (только ссылки на документы другие) при обновлении ЗиК с 313 на 320 при загрузке обновленн конфигурации. Работала с 320 приводя ее к не типовой. Прошу подскажите пожалуйста что сделать, чтобы это победить поподробнее...
Ниже я опишу процесс принятия изменений конфы, возможно что-то покажется вам тривиальным - но не зная вашего уровня я пишу максимально подробно.
Итак, все объекты метаданных ("агегатные" объекты типа справочников-документов-регистров, их реквизиты, формы, атрибуты форм и т.д и т.п.) идентифицируются системой не по имени, а по некоему внутреннему номеру(ИДу), который присваивается при создании объекта и в дальнейшем не меняется. Это позволяет, например, сделав копию базы спокойно производить изменения в копии, и лишь по окончании разработки, не боясь даже переименоания реквизитов, загрузить измененную конфу поверх исходной.
Однако, если в исходной конфе также делались изменения (тогда загружаемая конфа их попросту затрет), либо загружаемая конфа вообще не потомок исходной, ИДы скорее всего не будут соответствовать, и с объектами будет полный бардак (например в одной конфе объект № 12345 - Контрагент в РН, а в другой - вообще форма списка справочника товаров). Это ни к чему хорошему не приведет (в часности, возможны потери данных о которых и сообщается в процессе), поэтому эска отслеживает "потомственность" конфы, и при загрузке не-потомка - предупреждает (ну а дальше на выбор пользователя).
Альтернативой является объединение конфигураций - в этом случае во-первых, сопоставление производится по именам объектов (т.е. переименованый реквизит воспримется как новый), во-вторых, пользователю дается больший контроль над процессом (можно выбрать какие объекты и каким образом объединить). По-умолчанию же параметры объединения установлены на наиболее типичный вариант, чтобы максимально сохранить данные (т.е. старые объекты не удаляются, новые добавляются и т.п.).
Теперь что делает конфстартер с ключами force и merge. Без ключей если при загрузке конфы выдалось предупреждение "не потомок" - загрузка останавливается. Force=1 включает "насильственную" загрузку - конфа загружается если не потомок. Merge=1 же в случае "не потомка" вызывает объединение конфигураций, и сразу нажимает в диалоге объединения кнопку принятия (т.е. используется сценарий объединения по-умолчанию). Merge=2 аналогично Merge=1 за исключением того что объединение вызывается сразу же, без попытки обычной загрузки.
Если же у вас сложный случай, то лучше взять копию конфы, произвести с ней необходимые манипуляции, и загружать уже ее (она будет потомок исходной). Кроме того, конфстартер сделан для простой замены рутинных действий, поэтому если делается что-то серьезное (а смена редакции конфы очевидно серьезная и редкая вещь), лучше это сделать самому, не полагаясь на автомат.
PS. Вам (предполагаю, что вы все же начинающий разработчик) возможно стоит привлечь кого-то более опытного для консультаций по месту
Про конфстартер тоже спасибо еще раз. Думаю пригодиться.
Встречный вопрос - если у вас стоит опенконф, то может использовать его средства? На сколько мне известно, есть плагины, которые распознают ключи командной строки, есть плагин который автоматом файл из буфера обмена открывает, и т.п. Посмотрите на сайте опенконфа, возможно есть и плагин для автозагрузки?
2. Судя по всему, таки не потомок. 1Сочное предупреждение же свидетельствует что вероятно ваши конфы обновлялись слиянием (и счас у них не совпадают внутр. ИДы объектов). Соответственно и загружать лучше со слиянием (merge=1 forcereplace=0, при forcereplace=1 попытки объединения даже не делается). А лучше - сначала загрузить новый мд на копию основного, а потом уже, когда все ясно станет - загружать из копии в живую.
И пожалуйста, разберитесь в механизме загрузки/объединения в 1С, тогда подобных вопросов возникать не будет.
1. Опенконф то у меня стоит, но мне нужно наладить обновление у клиентов, порядка 100 машин. Поэтому не вариант.
2. Конфа - точно потомок, помогла команда Merge=1
Спасибище!
Но насколько мне известно, у 8ки в плане регламентных процедур и пакетного режима гАраздо больше возможностей чем у 77. Посмотрите в доке по администрированию, возможно там есть и загрузка конфы.
Посмотри внимательно:
Жаль только, что там нет загрузки с выполнением регламентных заданий и последующим выходом из программы. А то приходится извращаться.
А за Confstarter Спасибо!
А the1 прав.
Из-за Опенконфа файл новой конфигурации не выбирается. А насчет потомка, то в моем случае файл точно является потомком, но выводится сообщение о противном.
Причем для эксперемента заменил МД, при первом обновлении сообщение "о не потомке" не выводилось, а при последующих снова - не потомок. Есть подозрение, что это связано с тем, что у меня подключен Опенконфа, а у пользователей нет.
Не плохо было бы еще запускать в свернутом окне, так как в моем случае процесс обновления происходить на глазах у пользователя и думаю, что не исключена возможность непроизвольных нажатий.
В лог выдается ровно то, что сообщает 1С; если же речь идет о записи лога - для этого можно воспользоваться стандартными символами перенаправления ">" и ">>". См. комментарии, гдето такой пример был.
Да, и еще. Прога писалась давно, так что как будет под вин7 работать - без понятия.
А нужно так, по справке не понятно?
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
Я так и не поняла, как обновить несколько баз? Подскажите пожалуйста. Если прописать в INI-файле несколько, обновляется всё-равно только одна
Нужно создать несколько INI-файлов и в батники много раз вызывать их, либо использовать 1 ini-файл а все остальное (пути/пароли) прописать в батнике, там же можно использовать переменные.
AnsiToOem=1
BasePath=C:\RW_Chpato
Path1CExe=C:\Program Files\1Cv77_SQL\BIN
NewMDPath=C:\1cv7.md
ForceReplace=1
DeleteAfter=0
Update=0
User=Admin
Password=602564
ConfigPassword=652218
WorkTime=0
DownLoadTo=null
Помогите разобраться, пожалуйста. Что не так?
Вот например как это сделано у меня в батнике
set v8exe="C:\Program Files (x86)\1cv82\8.2.15.289\1cv8.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% ^
/n %user% /p %pass% ^
/ConfigurationRepositoryUpdateCfg -force ^
/ConfigurationRepositoryF %repo_dir% ^
/ConfigurationRepositoryN %repo_user% ^
/ConfigurationRepositoryP %repo_pass% ^
/UpdateDBCfg
Это для загрузки конфы из хранилища. Для загрузки из файла вместо ключей хранилища (ключи со словом Repository) указывается /LoadCfg имя_файла_конфы
Не совсем понятно, как конфстартер определяет, потомка базы?
7.70.027
1С Предприятие, Зарплата и Кадры, 7.70.321
И вот еще вопрос: когда я обновляю вручную, я делаю: Открыть конфигурацию, Объединение конфигурации,
в появившемся окне выбираю Загружаемая конф-я, Замещать объекты. Далее Да, Принять, ок.
Всё обновляется без проблем.
Если я использую конфстартер с инишкой:
Debug=1
BasePath=D:\test\base_zik
Path1CExe=C:\Program Files\1Cv77\BIN\1cv7l.exe
User=admin
NewMDPath=D:\test\z324\1cv7.md
ForceReplace=1
Merge=1
DownloadTo=D:\test\backups\?F-?DD-?MM-?YYYY
На этапе объединения, появляется сообщение вида:
[15:12] Конфигуратор :: Нет возможности удалить документ по которому существуют
движения! ИзменениеУсловийОплатыОтпускаПоУходуЗаРебенком
=OK=
[15:12] Конфигуратор :: Реорганизация данных не выполнена
=OK=
И всё стопорится.
А в чем же проблема? Вручную же обновляется вполне спокойно.
Заранее спасибо
Конфстартер не определяет потомка, это делает сам конфигуратор. Конфстартер только "на менюшки нажимает", и сообщения логгирует.
Если не работает автомат - ну сделайте один раз вручную. Система не может за вас решить, что делать ей, например, со счетом который на место существующего втиснуть пытаетесь.
Ключи ForceReplace=1 и Merge=1 несовместимы. Точнее, ForceReplace=1 заставляет принимать изменения даже если сообщено что конфа не потомок текущей - поэтому до объединения процесс вообще не доходит. Если нужно объединение - уберите ForceReplace=1.
Не совсем понимаю, что мне нужно сделать в конфстартере, чтобы всё гладко обновлялось, как и вручную?
Убрать merge=1?
Насчет обновления вручную - т.е. мд файл моей базы зик не типовой, или что?
Если обновляю подобным скриптом комплексную конфигурацию, вылазит:
[16:16] Конфигуратор :: Невозможно изменить код счета 76.ЗП на 10.11, так как су
ществует счет с данным кодом.
=OK=
[16:16] Конфигуратор :: Реорганизация данных не выполнена
=OK=
Но в теории - если конфстартер просто нажимает кнопки за меня, то почему при ручном обновлении 1с не задает дополнительных вопросов, а при обновлении именно через конфстартер задает?
Получается, когда вручную, конфигуратор сам определяет, что сделать со счетем, а через конфстартер - не умеет?
Т.е. теперь, если мне надо будет откатить базу на момент до обновления, я просто беру её из заранее выгруженного zip архива-бекапа, который делался командой DownloadTo=D:\test\backups\?F-?DD-?MM-?YYYY?
И больше ничего не нужно?
Ещё вопрос - а можно обновлять базы комплексной и зика не по порядку, например, 321 и 322, а сразу с 321 на 324? Или это чревато чем-то?
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 14304
Создание 17.08.06 00:00
Обновление 17.08.06 00:00
Просмотры 28159
Загрузки 1562
Рейтинг
69
Комментарии 65
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому
Системный администратор
,
Программист
Тип файла Приложение (exe)
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)