Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) mirrr, База на postgres. Проверяю по строке подключения к БД. С файловой бд - может не прокатить.
как-то так.
Делал, чтобы в рабочей бд не выскакивали отладочные сообщения. И чтобы тестовые БД не выполняли мои регламентные задания.
как-то так.
//Проверяет, является ли эта база рабочей
Функция ЭтоРабочаяБаза() Экспорт
Возврат (СтрокаСоединенияИнформационнойБазы()="Srvr=""servername"";Ref=""basename"";");
КонецФункции // ЭтоРабочаяБаза()
Делал, чтобы в рабочей бд не выскакивали отладочные сообщения. И чтобы тестовые БД не выполняли мои регламентные задания.
(1) mirrr, Самому интересно. То что уникальных идентификатор существует и по нему хранятся настройки в /.Application Data\1C\1Cv82\Гуид базы, догадываюсь. Только как его получить?
Тоже приходится писать такой код
Если Найти(СтрокаСоединенияИнформационнойБазы(),<Нужная база>)>0 Тогда
//то выполняем такой то код только для нужной базы
КонецЕсли
Если кто то развернет детешник в не в <Нужная база> работать не будет. К сожалению
Тоже приходится писать такой код
Если Найти(СтрокаСоединенияИнформационнойБазы(),<Нужная база>)>0 Тогда
//то выполняем такой то код только для нужной базы
КонецЕсли
Если кто то развернет детешник в не в <Нужная база> работать не будет. К сожалению
Очертите задачу конкретнее.
Хотите привязать внешнюю обработку к конфигурации?
Насколько мне известно такого уникального идентификатора нет, другое дело, что вы можете его организовать. Можно генерировать GUID, запомнить его где нибудь, в каком нибудь регистре сведений, и потом выполнять соответствующую проверку.
Хотите привязать внешнюю обработку к конфигурации?
Насколько мне известно такого уникального идентификатора нет, другое дело, что вы можете его организовать. Можно генерировать GUID, запомнить его где нибудь, в каком нибудь регистре сведений, и потом выполнять соответствующую проверку.
mirrr пишет:
Подскажите, есть ли для информационной базы какой-то уникальный код, такой, чтобы его можно было получить программно.
Подскажите, есть ли для информационной базы какой-то уникальный код, такой, чтобы его можно было получить программно.
Если программно, то читать вот это
Если не получается, то искать другие варианты.
Я подобную проблему решаю тупо: есть константа с именем вроде "код базы". В ней 2-3 буквы.
Но эффективно.
Но эффективно.
(14) Есть задача интереснее, в которой такой подход не поможет. Например как определить конкретную БД, и суметь отличить бекап от оригинала? :) Анализ строки соединения не совсем помогает, т.к. в ней иногда может фигурировать не имя сервера, а IP. Подозреваю, что может там быть и FQDN имя сервера, что ещё больше увеличивает путаницу.
(15) ну, это можно, и достаточно просто. Думаю, 1С тот же алгоритм реализовали:
1) При первоначальном заполнении базы сохраняем строку доступа. Для файловой базы можно поизвращаться ещё про дату создания. Можно также при начальном заполнении взводить флажок "надо запомнить строку соединения", и для файловой базы снимать этот флажок только тогда, когда путь к файлу начинается с "\\" (так обработаем ситуацию, когда локальный путь отличается от сетевого).
2) При запуске проверяем, и если текущая строка соединения отличается от ожидаемой, выводим сообщение "Айяйяй, базу переместили, больно же! Вы её насовсем переместили, или как?". Если "насовсем", то обновляем запомненные параметры. Если "или как" - то отключаем лишнее.
В случае с 1С они для файловой базы изобразили ещё один файлик "DoNotCopy", но, по-моему, решение даже более сомнительное, чем то, что я предложил.
1) При первоначальном заполнении базы сохраняем строку доступа. Для файловой базы можно поизвращаться ещё про дату создания. Можно также при начальном заполнении взводить флажок "надо запомнить строку соединения", и для файловой базы снимать этот флажок только тогда, когда путь к файлу начинается с "\\" (так обработаем ситуацию, когда локальный путь отличается от сетевого).
2) При запуске проверяем, и если текущая строка соединения отличается от ожидаемой, выводим сообщение "Айяйяй, базу переместили, больно же! Вы её насовсем переместили, или как?". Если "насовсем", то обновляем запомненные параметры. Если "или как" - то отключаем лишнее.
В случае с 1С они для файловой базы изобразили ещё один файлик "DoNotCopy", но, по-моему, решение даже более сомнительное, чем то, что я предложил.
(16) Ну в моём случае была пара отличий: во-первых все базы (и оригинал, и копии) были SQL-ные. Во-вторых именно на анализ строки запуска изначально я и полагался. К нему привязал автоопределение прод/не_прод база. И если не_прод - то при любом запуске сеанса производился сброс всяких интеграционных настроек к тестовым значениям. Всё было хорошо, пока в базу не стали заходить юзера из Румынии, у которых в строке соединения почему-то был IP, а не имя сервера. После чего на проде настройки сбросились к непродовским и естественно случились мега-паника, скоростные хотфиксы и прочие головные боли)))
Изначально хотел сделать как вы и предложили - диалог для юзера, чтоб он подтвердил выбор. Но начальство зарубило интерактивщину, в итоге весь этот функционал просто закомментили в долгий ящик, от греха подальше)))
Изначально хотел сделать как вы и предложили - диалог для юзера, чтоб он подтвердил выбор. Но начальство зарубило интерактивщину, в итоге весь этот функционал просто закомментили в долгий ящик, от греха подальше)))
(17) Ну, как же так! Просто же: при начале работы пользователя на сервере исполняете команду системы ping к серверу (параметры подобрать надо будет), сохраняете результат во временный текстовый файл. Потом из 1С считываете файл, и получаете IP сервера! Всё просто, и можно сравнивать именно адреса серверов.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот