1с получить версию конфигурации программно
По долгу службы наша контора обслуживает несколько организаций, которые для управленческого и бухгалтерского учета используют 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)
DartRomanius --> DartRomaniusДоброго времени суток коллеги.
Наверное разучился я пользоваться СП.
Вопрос: каким образом программно получить версию конфигурации.
ЗЫ: В СП не нашел.
Fynjy --> FynjyСистемнаяИнформация (SystemInfo) ВерсияПриложения (AppVersion)
Flexy --> FlexyОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
Версия (Version)
Использование:
Только чтение.
Описание:
Тип: Строка.
Версия конфигурации.
Сервер, толстый клиент, внешнее соединение.
logist --> logistСистемнаяИнформация (SystemInfo) ВерсияПриложения (AppVersion)
Не то, но спасибо.
ЗЫ: Пора в отпуск.
ValeryZ --> ValeryZУзнать версию платформы:
Узнать версию (релиз) конфигурации:
| Текстовая версия | Сейчас: 24.11.21, 10:14 |
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!
Доброго времени суток коллеги.
Наверное разучился я пользоваться СП.
Вопрос: каким образом программно получить версию конфигурации.
ЗЫ: В СП не нашел.
Fynjy --> FynjyСистемнаяИнформация (SystemInfo) ВерсияПриложения (AppVersion)
Flexy --> FlexyОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
Версия (Version)
Использование:
Только чтение.
Описание:
Тип: Строка.
Версия конфигурации.
Сервер, толстый клиент, внешнее соединение.
logist --> logistСистемнаяИнформация (SystemInfo) ВерсияПриложения (AppVersion)
Не то, но спасибо.
ЗЫ: Пора в отпуск.
ValeryZ --> ValeryZУзнать версию платформы:
Узнать версию (релиз) конфигурации:
| Текстовая версия | Сейчас: 24.11.21, 10:14 |
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!
MdInternals понимает формат cf, cfu, epf, erf, распаковывает содержимое в удобочитаемые Xml и текстовые файлы и загружает обратно. Позволяет программно обращаться к внутренним файлам и свойствам объектов.
Проект состоит из частей:
- MdInternals программно обращается к объектам и свойствам конфигурации
- CfProject отвечает за сериализацию и десериализацию объектов MdInternals
- MdInternals.Cil декомпилирует байт-код (OpCode) 1С
- MdInternals.Serialization работает с внутренним полу-JSON форматом 1С вида " < 19 < "", 2 >>"
Выгрузка файлов cf, cfu, epf, erf на диск
Распознанные файлы записываются в дерево каталогов по видам объектов. Нераспознанные помещаются в каталог Unresolved:
Распознанные файлы выгружаются в XML-формате. Формат XML позволяет контролировать логическую целостность файлов и обрабатывать файлы сторонними программами. Известные свойства перемещаются в соответствующие разделы (атрибуты или тэги) XML-структуры:
Чтение из MSSQL-таблицы
Обращение к внутренним файлам
Создание файла из выгруженного xml-формата
Описание Cf-Формата
Cf-файл состоит из заголовка образа (ImageHeader) и следующими за ним страницами (ImagePage1-ImagePageN). Заголовок образа состоит из 4х байт сигнатуры, которая равна 0xFF 0xFF 0xFF 0x7F, 4х байт размера страницы и 8 зарезервированных байт. После заголовка файла идут по порядку страницы с данными. Каждая предыдущая страница ссылается на последующую.
Каждая страница (ImagePage) состоит из заголовка страницы (ImagePageHeader), группы указателей на записи ImageRowPointers и области ImageRows.
Заголовок страницы ImagePageHeader содержит в себе: зарезервированные 2 байта 0x0D 0x0A, 27 байт текстовой информации и еще зарезервированные 2 байта 0x0D 0x0A. Текстовая информация содержит 3 шестнадцатеричных числа: общий размер данных всех страниц (FullSize), размер текущей страницы (PageSize) и адрес следующей страницы в файле (NextPageAddress). FullSize проставляется только для первой страницы цепочки страниц. Для остальных страниц цепочки это значение 0. Для последней страницы цепочки NextPageAddress принимается равным 0xFF 0xFF 0xFF 0x7F.
Блок указателей ImageRowPointers занимает размер, указанный в значении PageSize страницы. Каждый указатель состоит из 4х байт адреса заголовка HeaderAddress и 4х байт адреса тела BodyAddress. В конце каждого указателя помещается сигнатура 0xFF 0xFF 0xFF 0x7F. Адреса указывают на расположения внутри текущей страницы на область ImageRows.
Заголовок ImageRowHeader начинается с блока заголовка страницы ImagePageHeader, который сообщает, сколько байт отведено под заголовок. Далее идут 20 зарезервированных байт, UTF-16 строка идентификатора данных (Id) и 4 зарезервированных байт.
Тело ImageRowBody начинается с блока заголовка страницы ImagePageHeader, который сообщает, сколько байт отведено под тело данных. Если тело данных начинается на 0xEF 0xBB 0xBF (сигнатура UTF8), то тело содержит UTF-8 строку. Иначе тело данных содержит упакованные данные. Если распакованные данные начинаются на 0xFF 0xFF 0xFF 0x7F, то содержимое – последовательность объектов, и они записаны в CF-формате. Иначе содержимое – это строка сериализации.
Прежде всего это среда разработки для 1С предприятия, но также выполняет задачи по администрирования информационной базы.
Перечень функционала конфигуратора:
- конфигурирование: сама разработка, проверка конфигурации и управление обновлением 1С
- отладка исполнения кода
- замер производительности работы модулей
- администрирование пользователей
- настройка параметров журнала регистрации
- тестирование базы
- реиндексация таблиц данных
- проверка логической и ссылочной целостности
- пересчет итогов регистров
- публикация базы на веб-сервере
- получение лицензии на сервер или компьютер
- выгрузка и загрузка резервной копии информационной базы
Запуск конфигуратора:
Интерактивно выполняется в 3 действия
Внешний вид
Основное окно конфигуратора:
В таком виде открывается, когда конфигурация не открыта для разработки, например при первом входе в информационную базу.
Первый некэшированный запуск производится медленно, затем вы увидите более расширенный интерфейс конфигуратора:
Меню конфигурация представляет остальные служебные функции по управлению конфигурацией
Описание основных кнопок меню
(отмечены значения по умолчанию)
Меню отладка
Для управления отладкой: подключение, точки остановки выполнения, пошаговое исполненение, табло расчета значений переменных(состояния), включение замера производительности.
Меню Администрирование
Меню сервис
Калькулятор, календарь, настройка интерфейса конфигуратора, параметры среды разработки, режимы запуска отладки
Меню Окна
Меню Справка
Вызов встроенной справки, синтаксис помощника по коду и функциям, информации о программе: релиз платформы, конфигурации
Некоторые действия с информационной базой производятся в монопольном режиме, т.е. когда кроме конфигуратора с базой данных не должен никто работать.
При клиент-серверной версии потребуется отключить выполнение фоновых заданий, иначе они будут препятствовать (выгрузке/загрузке, тестированию)
Остальные функции для обзорного изучения излишни и, если будет необходимо, затрону в контексте других объясняемых функций системы
Секрет интуиции тот же, что и секрет рекламы: повторите человеку тысячу раз, что мыло «Пирс» улучшает цвет лица, и он, возможно, интуитивно почувствует, что так оно и есть.
— Сомерсет Моэм
Читайте также: