1с где хранится версия конфигурации

Обновлено: 05.07.2024

Разбираем варианты решения данной проблемы!

Вопрос

Здравствуйте! Есть доработанная конфигурация 1С:БП. Она видимо была очень “криво” обновлена. Версии поставщика и основной конфигурации совпадают, но при их сравнении возникает огромное количество различий никак не связанных с доработками. Есть предположение, что кто-то просто дообновил конфигурацию поставщика и исправил вручную версию основной конфигурации. Через поддержку совсем не идет обновление, через “сравнить-объединить” вроде получилось, но опять-таки это какое-то “кривое” решение. Вопрос в том, какие выходы могут быть из данной ситуации?

Ответ

Есть несколько предложений:

  1. Создаем пустую типовую базу этого же релиза, переносим в нее все доработки конфигурации. Получаем новую базу, у которой нет проблем с конфигурацией поставщика, сохранены все доработки. Теперь в нее нужно перенести данные из текущей базы. Поскольку конфигурации полностью совпадают, можно воспользоваться “Конвертацией данных”, сгенерировать автоматически правила для обмена между одинаковыми конфигурациями. При помощи этих правил можно перенести все данные из старой базы в новую. Недостаток такого подхода – перенос данных может быть достаточно долгим по времени.
  2. Полностью снимаем конфигурацию с поддержки (меню Конфигурация – Поддержка – Настройки поддержки). После этого выполняем сравнение-объединение с cf-файлом типовой конфигурации этого же релиза (его можно взять на партнерском ИТС или на пользовательском сайте фирмы “1С”, если для этого релиза выложен полный дистрибутив). После этого конфигурация станет на поддержку, а добавленные реквизиты или объекты метаданных останутся в конфигурации. Теперь остается только сравнить-объединить с исходной конфигурацией, чтобы перенести изменения в модулях, формах, выверить все доработки. Все данные в базе при этом должны сохраниться.

Комментарий слушателя

Воспользовался вторым вариантам. Обновление через поддержку теперь получается. Спасибо. Объекты не встали полностью на «замок», а только «редактируются с сохранением поддержки», так понимаю, что это нормальное поведение системы?

Если обновления делаются на копии. Обновляется до последнего релиза выгружается в cf , потом путем сравнить объединить конфигурацию из файла , обновляется и через поддержку «догоняем» конфигурацию поставщика. Но как быть если есть несколько ключевых релизов, делать несколько cf для каждого?

Ответ тренера

  1. Да, это нормально, что объекты не полностью “на замке”, а редактируются с сохранением поддержки. Чтобы все объекты снова оказались “на замке”, можно загрузить типовую конфигурацию поставщика (cf-файл из дистрибутива нужного релиза). Но тогда будут потеряны все доработки.

Еще вариант вернуть конкретный объект конфигурации “на замок” – выполнить сравнение-объединение с конфигурацией поставщика (в окне, открываемом из меню Конфигурация – Поддержка – Настройки поддержки), в открывшемся окне указать нужные настройки поддержки для конкретного объекта.

  1. Да, если ключевых релизов несколько, то придется несколько раз выполнить обновление.

Есть несколько способов перенести выполненное обновление из копии базы в рабочую:

Эта статья продолжает наш цикл «Первые шаги в 1С». В ней рассматривается частая ситуация, в которую попадают внедренцы, администраторы, а также все те специалисты, кому необходимо обновить типовую конфигурацию какой-то «старой» версии на новую или просто развернуть новую базу у клиента, не имея при этом шаблона информационной базы последней редакции.

Описанный процесс обновления детально раскроет ответы на следующие вопросы:

  • Откуда и какие обновления скачивать?
  • В какой последовательности и как устанавливать эти обновления?
  • Когда создавать свой файл поставки и какие при этом есть подводные камни?

Применимость

В качестве примера для разбора последовательности обновлений в статье используется конфигурация 1С:Управление торговлей 11.1, которую необходимо обновить с редации 11.1.2.22 до редакции 11.1.4.11. Но сам алгоритм обновлений, конечно же, актуален и на текущий день для любых типовых конфигураций. Поэтому в качестве практики предлагаем вам самостоятельно проделать аналогичные действия для любых актуальных релизов, чтобы закрепить полученные знания.

Как в 1С установить файлы обновления и шаблоны конфигураций

Довольно распространена ситуация, когда сотрудник приезжает в офис к клиенту устанавливать конфигурацию, открывает коробку с диском, а там записан релиз двухгодичной давности. Пока диск дождется своей продажи, как правило, будет выпущено не одно обновление.

Информационные базы 1С

В частности, нас будут интересовать кнопка Конфигуратор, после нажатия которой, могут производиться изменения конфигурации, в том числе обновления (хотя на данный момент это уже не единственный способ обновления конфигураций).

Кнопка 1С:Предприятие необходима для запуска информационных баз в пользовательском режиме.

В чистом виде получить шаблон последней информационной базы бывает не так просто. А количество необходимых обновлений конфигурации может оказаться немалым.

Изначально исходные файлы конфигурации находятся внутри папки SETUP (при поставке начального диска), а обновления – UPDSETUP. На основании шаблона, извлеченного из каталога SETUP можно создать чистую базу, готовую к работе.

Последней версии конфигурации, как правило, в наличии нет, а на сайте обновлений, выкладываются, преимущественно только обновления, которых при этом может понадобиться несколько.

Поэтому, в случае необходимости сэкономить время на переезд между клиентами, можно заблаговременно поступить следующим образом:

  • скачать все необходимые обновления;
  • сначала взять устаревшую конфигурацию (например, если на Вашем компьютере имеется старая база или установить с диска из коробки 1С шаблон и создать базу) и обновить конфигурацию до актуальной;
  • в конфигураторе создать файл поставки;
  • у клиента установить последнее обновление и в ту же директорию поместить файл поставки;
  • из окна информационных баз можно будет создавать актуальные базы обновленной конфигурации;
  • по умолчанию у каждого пользователя создается свой каталог шаблонов, для удобства этот каталог можно разместить и прописать в сетевой папке.

Выполняем на практике. На начальном этапе используем готовую базу, а у клиента создадим новую. С помощью кнопки Конфигуратор открываем на Вашем компьютере старую базу (например, УТ11) и проверяем номер последнего релиза.

Номер последнего релиза Конфигурации

Скачиваем последние обновления: релизы 11.1.2.25, 11.1.4.10, 11.1.4.11, 11.1.2.31.

Последние обновления Конфигурации

Для удобства устанавливаем все обновления в одну директорию, например С:\templates (предварительно создайте на диске такую папку). Дело в том, что по умолчанию создается каталог шаблонов и обновлений, принадлежащий текущему пользователю.

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

Если каталог общий, то любой пользователь, имеющий доступ к этому каталогу сможет создавать свои новые базы и производить обновления.

Установка конфигурации

После всех установок в окне информационных баз нажмите на кнопку Настройка.

Настройка информационных баз

Откроется окно “Настройка диалога запуска”.

Настройка диалога запуска

В таблицу с каталогами шаблонов конфигураций и обновлений добавьте каталог С:\templates. Сделать это можно, нажав на кнопку Добавить и выбрав нужную папку в раскрывшемся диалоговом окне.

Добавить каталог

Добавить каталог

Теперь в режиме Конфигуратор произведите последовательные обновления конфигурации. Запуск процесса обновления в конфигураторе показан на рисунке.

Запуск обновления конфигурации

После чего появится окно настройки поиска доступных обновлений (см. рис. 7), в котором фактически нужно будет нажать на кнопку Далее.

Поиск доступных обновлений

В очередном окне “Обновление конфигурации” оставьте только галочку Искать в текущих каталогах шаблонов и обновлений, чтобы система не производила лишних действий.

Выбрать область поиска файлов обновлений

После того, как система найдет доступное обновление, выберите его двойным кликом мыши.

Выберите необходимое обновление

Обновить конфигурацию базы данных

После благополучного завершения серии всех обновлений конфигурации, Вам остается самостоятельно создать файл поставки.

Создать файлы поставки и обновления конфигурации

Этот файл должен находиться в папке, в которой содержится последний файл обновления.

Создать файл поставки

Содержимое данной директории будет выглядеть следующим образом.

Шаблон обновленной конфигурации

Посмотрим, что содержится в файле 1cv8.mft с помощью обычного блокнота.

Содержимое файла 1cv8.mft

Мы видим, что в качестве шаблона прописан именно наш файл 1Cv8.cf. Однако следует предупредить, что не для всех конфигураций в качестве шаблона прописан файл с таким названием.

В частности, для Бухгалтерии 3.0 в качестве шаблона по умолчанию используется файл 1CV8new.dt. Более подробно данный момент разберем в очередной статье.

Бухгалтерия 3.0

Замена 1CV8new.dt на 1сv8.сf

Теперь, при установке конфигурации у клиента, Вы можете создать на его компьютере точно такую же директорию, которая указывалась при создании файла поставки и скопировать туда подготовленное содержимое (главное, файлы 1Cv8.cf и 1cv8.mft).

B нашем случае это директория С:\templates\1C\trade\11_1_4_11\ (та директория, в которую установились файлы из комплекта последнего обновления).

А в настройках окна информационных баз следует также указать в качестве каталога шаблонов конфигураций и обновлений папку C:\templates (как Вы делали ранее на своем компьютере).

Указать путь к шаблонам и обновлениям конфигурации

После этих действий, если в окне информационных баз нажать на кнопку добавить, а далее выбрать пункт создание информационной базы, то можно создать из шаблона новую базу.

Создание информационной базы из шаблона

Полностью назначение настроек окна информационных баз, а также все возможные варианты их создания мы рассмотрим несколько позже.

Описанная методика также может быть полезной, если Вы не хотите хранить на своем компьютере старые шаблоны информационных баз и большое количество установленных обновлений. Подготавливаете обновленные шаблоны, для создания информационных баз, которые могут Вам потребоваться для работы, а все ненужное удаляете.

На этой оптимистичной ноте мы завершаем большую тему, связанную с развертыванием и обновлением информационной базы.

И что, это всё? Нет конечно! В следующей статье рассмотрим, что и как нужно делать в случае, если с базой произошел какой-то сбой и требуется провести работы по восстановлению её работоспособности.


PDF-версия статьи для участников группы ВКонтакте

Статья в PDF-формате

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

Автоматизировать процесс начнем с «конца»

  • В 1с обновление возможно только с определенной версии на определенную. Это связано с тем, что файлы обновления поставляются не в виде полного «слепка» конфигурации. А в виде изменений от эталонной версии.
  • Так же в самом коде 1с есть предопределенные обработки, которые запускаются при переходе с одной версии на другую.


При создании класса надо передать MemoryStream binary data из таблицы _config.
Как видно в коде им можно парсить и конфигурации 7.7, предварительно распаковав.

Теперь до версии конфигурации можно добраться зная её «адрес»: Далее просто создаем пустую базу с версией «ВЕРСИЯ» и находи что её «адрес» (v8metadata)(((v8metadata)(((v8metadata)(this.array_data[3])).array_data[1])).array_data[1])).array_data[15].ToString();


Но где же здесь MSSQL?
Вот CLR функция, которая получит эти данные в самом MSSQL:
У нас есть отдельная БД, которая хранит в себе сервера и базы. Соответственно функция адаптирована под это.


А как определить какое обновление необходимо для данной конфигурации 1с?
При установке обновлении 1с можно использовать каталог обновлений на сервере. В каждом обновлении есть файл .mft вида:
Vendor=Фирма "1С"
Name=БухгалтерияПредприятия
Version=2.0.25.5
AppVersion=8.2
.

И файл UpdInfo.txt
Version=2.0.25.5
FromVersions=;2.0.24.10;
UpdateDate=11.07.2011

Это же всё, что нам надо.
Зная FromVersions и дату выхода обновления мы можем автоматически генерировать строку для запуска обновления 1с. (ссылка на параметры в начале топика)

Но тут появляется еще одна проблема — наличие пользователей в базе. 1с не обновляется. Пишем «выгонялку» пользователей (vbscript)


На «Хабре» есть три отличных поста про управление списками баз в 8.х:

Каждый из них содержит свой кусок паззла от полноценной картины: Легкое управление списками баз 1С.

Пролог

Приведенная идеология построения позволяет легко масштабировать настройки, как для простых офисов с одним доменом, так и для мультидоменной структуры в составе леса. Конкретную реализацию решения каждый выбирает под себя сам, но здесь заложена основа чтобы без лишних усилий получить необходимую гибкость. Решение легко передается по наследству. Там нет скриптов. Совсем нет. Вообще.

Итак, с чем же мы боремся:

Пользователей стало много! – обойти 40+ пользователей с единой целью прописать новую базу или изменить настройки подключения у старой займёт приличное время. Хорошо, тем у кого есть бойцы техподдержки.
Баз стало много! – зоопарк баз, тестовые базы с легкой подачи 1Сников оказывающиеся в продакшне все еще находясь на серверах для тестирования. Умножаем на количество пользователей и ужасаемся.
Невнятные названия баз! — в этом месте, я каждый раз представляю, как своими руками душу очередного 1Сника за базу с именем «new2_baza2_copy» к которой привязана куча обработок, отчетов и СОМ соединений. Потому что ему показалось логичным ТАК назвать новую базу. Организация же одна и она внезапно не вырастет. И он один и все помнит. И никогда не уволится. А документацию ведут слабаки. Да это же всегда можно по быстрому переделать!
Частая ротация пользователей! – каждый новый пользователь не знает какие базы ему нужны (Часто звучит: «Мне нужны ВСЕ»), сотрудники часто меняют должности, подразделения, организации и как следствие свои обязанности.
Нагрузка! Скрипты! – сладостные скрипты сканящие весь AD леса в поисках определённых имен групп, чтобы подключить одну базу. А кто его написал? На чем? Когда? Где комменты?
Где мои базы?! – упс. Многие решения не позволяют сохранить индивидуальный список баз 1С пользователя и при этом использовать предопределенный набор баз.
Кластеры 1С? Сервера БД? – а есть разница? Их может быть больше одного. Разных версий 1С, разных баз данных. Техподдержка пытается найти концы, что бы точно понять что конкретно прописывать у пользователя на ПК.

Основную боль я описал.

1. Вся представленная инфраструктура является тестовой и виртуальной. Любые совпадения с названиями юридических лиц являются случайными.
2. Простите меня за английский интерфейс на скриншотах с серверов. Я не мог иначе.
3. Поверьте мне, я руководитель группы системных администраторов, я знаю что я делаю! (с)

Шесть этапов до счастья:

Этап 1 — Инвентаризация

Берем табличный редактор и 1Сников. И подробно инвентаризируем, возможно, даже руками:

Рождается примерно такая таблица:


Наша задача понять, что где. Структурировать. Подробно расписать.

Этап 2 — Группы AD для баз 1С

Создание групп для баз в Active Directory, сразу пишем в описании используемый кластер и сервер баз данных:


На выходе получаем подробную информацию о каждой базе в структуре Active Directory. Указание имени базы данных в имени группы AD сильно облегчает поиск группы для определенной базы в больших инфраструктурах. Выделил пользователей, выбрал добавление в группу и указал нужное имя базы. Оп и все там. В то же время вашим коллегам (или наследникам) сразу будет видно какая группа AD за какую базу отвечает и где база находится.

Важно:
Помимо создания групп AD для каждой базы необходимо создать дополнительную группу AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» — она поможет нам обеспечить доступ к файловому ресурсу, где хранятся конфигурации v8i всех необходимых нам баз. Включаем в эту группу все группы AD для баз 1С. Новые группы AD для баз 1С так же не забываем добавлять. Еще нам понадобится в её составе группа Domain Computers, чтобы дать возможность учетным записям ПК заходить на файловый ресурс. О нюансах ниже.


Этап 3 — Файлы конфигураций 1С

Инвентаризацию сделали, группы AD для баз создали, теперь файлы конфигурации v8i. Они хранят настройки подключения к базам: кластер 1С и имя базы в этом кластере.
Запускаем 1С. Если есть сформированный список баз, именуем их красиво и понятно.
Организация — Конфигурация — Версия конфигурации
Сохраняем их по правой кнопке в файлы, файлы именуем по имени базы. Заботливо накапливаем эти замечательные v8i файлы в одном каталоге. Если первоначального списка нет, можно создать одну запись в списке, она будет эталоном. С нее плодим новые файлы конфигурации v8i забивая необходимую информацию напрямую текстом в файл.

На выходе имеем файл с таким содержимым:


Избавляем каждый файл от лишних строк:


В итоге получаем определенное количество v8i файлов конфигурации, столько же сколько и баз.

Следующий шаг заключается в редактировании общего файла конфигурации баз для 1С.

По умолчанию в нем содержится совсем не перечень баз:


Проведем небольшие манипуляции, и в нем теперь указываются пути до всех файлов конфигурации v8i баз 1С.


Обращение к файлам v8i работает, как и с простой сетевой папкой на файловом сервере, так и с DFS ресурсом. Балансировка нагрузки, отказоустойчивость? Да! Знаем. Летаем.

В итоге имеем каталог полный файлов конфигурации v8i на каждую базу отдельно, плюс общий файл конфигурации в котором прописаны все пути до всех файлов конфигурации v8i.

Этап 4 — Файловый или DFS ресурс

Создаем каталог, в котором будут лежать файлы конфигурации v8i для подключения к каждой конкретной базе, а также общий список баз — файл 1CEStart.cfg:
именуем каталог Sync-1CBases.
Идеологический подход по доступу, к общим ресурсам, у всех разный. Многие предпочитают ставить на сам общий ресурс доступ Everyone — Full control, а дальше рулить доступом на уровне файловой системы. Так проще. Я предпочитаю отсекать доступ сразу на уровне самого общего ресурса, не создавая дополнительной нагрузки на файловый сервер лишними перепроверками возможности доступа.

На новый сетевой ресурс даем доступ группе «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» права на чтение.

Божественные мануалы одной картинкой. Вместо тысячи слов.


Важно:
Дальше настраиваем безопасность на уровне файловой системы.

Самый первый шаг — это сброс настроек по умолчанию на объекты каталога Sync-1CBases. Отключаем наследование разрешений. Оставляем «SYSTEM», локальные Администраторы, Администраторы домена. Там, где есть лес можно добавить администраторов предприятия и/или делегированных администраторов. Получившийся результат применяем с наследованием. Тут же, не отходя далеко от кассы, добавляем группу AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» с правом Чтение и только на этот каталог без наследования. На этом шаге мы получаем возможность добраться до корня папки и получить список файлов в каталоге.



До сих пор не привыкну к такому интерфейсу настройки прав доступа

Дальше самая соль:

На файл 1CEStart.cfg мы выдаем право на чтение только группе AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg»


Затем на каждый файл конфигурации базы v8i выдается доступ для своей группа доступа Active Directory:


Повторять последний шаг пока файлы конфигураций v8i баз данных не закончатся.

Этап 5 — Групповые политики

Очень многие не используют групповые политики. Многие используют их пренебрежительно мало. Зря-зря-зря. Это очень мощный инструмент облегчающий жизнь на работе даже в малых офисах.

Создаем новую групповую политику, линкуем её на корень домена. Указываем, что работает она только с Domain Computers:


Главное откровение (или нюанс) тут в том, что список баз подключается не по пользователю, а к ПК. К сожалению, пользователь не может с своими правами заменить файл конфигурации, находящийся в C:\ProgramData\1C\1CEStart\ и за него это сделает ПК.


Здесь задача взять файл с общего ресурса и заменить локальный файл.
Что бы это делали только ПК с установленной 1С, задаем условия выполнения групповой политики через Item Level Targeting.

Проверяем наличие установленной 1С:


Это самая элементарная проверка. Проверяет как для х86 так и для х64 редакций операционных систем. Не делает различий между серверными и клиентскими ОС.

А вот сами условия проверки можно весьма широко варьировать, применяя эти настройки к определенным организационным подразделениям, в зависимости от условий доступности сетевых ресурсов и многим другим параметрам, что дает возможность максимально сузить условия срабатывания данной групповой политики.

Файл приводится в соответствие при загрузке ПК, либо раз в 90+- минут.

Этап 6 — Пользователь

Берем пользователя. И добавляем его в группы AD:


После чего производим вход пользователя в систему, запускаем 1С, которая считывает файл конфигурации и подключает все файлы v8i к которым у пользователя есть доступ. Результат:


Чего собственно и добивались.

При это данное решение не затрагивает файл C:\Users\%username%\AppData\Roaming\1C\1CEStart\ibases.v8i в котором хранятся базы, которые прописал сам пользователь. Впрочем, его всегда можно обнулить, чтобы почистить список баз у пользователя. Групповые политики вам в руки!

Эпилог

Формально я передал одну из множества вариантов реализации. Передал идеологию. Дополнительные решения к этой статье могут быть весьма широкими:
Автоматическое создание файла v8i, добавление его в cfg, создание группы AD для базы 1C.
Доступ для редактирования для специалистов по 1С для этих же файлов.
Проверка актуальности файла конфигурации cfg прежде чем заменять его на ПК.
Для параноиков можно создавать cfg файлы с предопределенными списками, а в v8i прописывать более одной базы. И вообще делать имена v8i файлов без указания на имя базы.
Можно изменить способ доставки cfg файла на ПК, где в конфигурации ПК изменяются права доступа к данному файлу, а пользователь уже с своими правами перезаписывает его.
И многое другое. Все что пожелаете. Каждый волен решать сам.

Итого:
Пользователей стало много! – не имеет никакого значения.
Баз стало много! – внесли базу 1Сники в реестр, пользователи её получили. Не внесли – база даже самоподключенная исчезнет у пользователя при следующем входе в систему, если включено обнуление списка локальных баз.
Невнятные названия баз! – какая разница? У тебя всегда актуальная информация. Нет полной информации о базе – нет базы у пользователей.
Частая ротация пользователей! – была заявка подключить базу? Есть база! Сменил место или подразделение, потерял базу вместе с сбросом прав.
Нагрузка! Скрипты! – где? Зачем? Балансировка, точное нацеливание, только актуальная информация, легкость обслуживания и поддержки.
Где мои базы?! – не положено! Ну или пользуйтесь пожалуйста. Все довольны.
Кластеры 1С? Сервера БД? – никакой путаницы. Все уже задано настройками. Технари заняты полезными делами, а не выяснением кому, куда и чего прописывать, как это обзывать и как не оставить пользователей с утра без учетной системы из-за обновления.

Постскриптум

Я потратил день. Чтобы вы за пять минут долетели. Спасибо!

Update:
Хабражитель — sisaenkov справедливо заметил, что вместо копирования cfg файлы в папку C:\ProgramData\1C\1CEStart\, для клиентских систем на базе Windows XP следует использовать переменную "%ALLUSERSPROFILE%\Application Data\1C\1CEStart\", в то время как для систем на базе Vista и старше можно использовать указанный в статье вариант, либо переменную %ProgramData%\1C\1CEStart\

Читайте также: