Как получить имя базы 1с программно

от admin

Как узнать путь к базе 1С

У информационной базы 1С есть «имя» и «путь».

На изображении ниже «1» — это «имя базы», «2» — это «путь к базе».

Имя информационной базы

Может быть абсолютно любым, оно может совершенно не отражать назначение базы.

Путь к базе

Однозначно определяет место расположения информационной базы 1С.

Как узнать путь к информационной базе 1С

Одиночным щелчком выделите вашу базу 1С в списке баз, внизу окна со списком баз 1С появится «путь к базе».

Как получить имя базы 1с программно

Приложение

Приложение

Приложение

Приложение

Приложение

Как получить имя базы 1с программно

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

  • Как запустить внешнюю программу и дождаться окончания её выполнения
  • Как запустить внешнюю программу без ожидания окончания её выполнения
  • Как открыть сайт в браузере по умолчанию
  • Как открыть сайт в Internet Explorer
  • Как открыть файл word или excel
  • Как открыть конкретную папку в проводнике
  • Как выделить нужный файл в проводнике
  • Как запустить приложение с параметрами
  • Как выполнить команду операционной системы из приложения
  • Как получить имя компьютера
  • Как получить каталог исполняемых файлов
  • Как получить каталог для временных файлов
  • Как получить стандартный каталог документов
  • Как получить информацию об экранах (dpi, разрешение) клиента
  • Как получить рабочий каталог данных пользователя
  • Как узнать текущий язык, используемый в приложении
  • Как получить список пользователей операционной системы
  • Скачать и выполнить эти примеры на компьютере

Работа с операционной системой в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

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

Получение версии конфигурации 1с напрямую из SQL

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

Читать:
Как играть в resident evil 5 по сети

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

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

Значит нам надо получить текущую версию 1с.
Есть конечно вариант использования 1с-COMConnector, который не менее 2 секунд устанавливает соединение, «Кушает» лишнюю лицензию, память и пьет мой кофе.
Я пошел по другому пути. В версиях 1с >8.0 нет каталога базы данных, следовательно всё хранит в себе база данных MSSQL.
В таблицах БД есть таблица _config, а в ней строка с FileName=root. Смотрим содержимое (Binary Data):
<2,e0666db2-45d6-49b4-a200-061c6ba7d569>
Содержимое хранится в сжатом виде. Ниже будет пример его распаковки
Методом научного тыка находим этой же таблице есть запись с FileName=e0666db2-45d6-49b4-a200-061c6ba7d569 (тот же идетификатор):
<2,
<1e4190e9-76c2-456e-a607-4d817110ffd9>,6,
<9cd510cd-abfc-11d4-9434-004095e12fc7,
<1,
<36,
<0,
<0,
<0,3,6b021b70-482d-4baf-b590-b86b68d4730e>,»ЗарплатаИУправлениеПерсоналом»,
<1,"ru","Зарплата и Управление Персоналом, редакция 2.5">,»»>
>,»»,1,
<1,"ru","Зарплата и Управление Персоналом, редакция 2.5">,
<1,"ru","Зарплата и Управление Персоналом, редакция 2.5">,
<1,"ru","Copyright (С) ООО ""1C"", 2007-2011. Все права защищены">,
<1,"ru","http://www.1c.ru">,
<1,"ru","http://v8.1c.ru/hrm/">,72ef09b4-4393-4d23-a530-7e5b50cf1d24,31e2aa98-4a9c-4d99-a3e7-540a13396b8c,1e7940af-fba5-46c3-8ffb-e8389ac2b79f,87090b31-2cd0-4b45-8b24-efdb2383b1a2,1,»Фирма «»1С»»»,»2.5.40.3″,»http://downloads.v8.1c.ru/tmplts/»,1,
(приведена только самая интересная часть файла)

Вы наверное догадались что это за конфигурация 1с.
Теперь надо это объяснить MS SQL.
В c# я написал класс:

При создании класса надо передать 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)

Похожие статьи