Уникальный id инф. базы

1. mirrr 89 20.10.11 11:25 Сейчас в теме
Подскажите, есть ли для информационной базы какой-то уникальный код, такой, чтобы его можно было получить программно.

Суть в том, чтобы при выполнении какой-либо операции проверять, из той ли нужной базы она запускается.
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. SuhoffGV 20.10.11 12:57 Сейчас в теме
(1) mirrr, База на postgres. Проверяю по строке подключения к БД. С файловой бд - может не прокатить.

как-то так.
//Проверяет, является ли эта база рабочей
Функция ЭтоРабочаяБаза() Экспорт
	Возврат (СтрокаСоединенияИнформационнойБазы()="Srvr=""servername"";Ref=""basename"";");
КонецФункции // ЭтоРабочаяБаза()


Делал, чтобы в рабочей бд не выскакивали отладочные сообщения. И чтобы тестовые БД не выполняли мои регламентные задания.
Xershi; +1
8. tusv 211 20.10.11 14:12 Сейчас в теме
(1) mirrr, Самому интересно. То что уникальных идентификатор существует и по нему хранятся настройки в /.Application Data\1C\1Cv82\Гуид базы, догадываюсь. Только как его получить?
Тоже приходится писать такой код
Если Найти(СтрокаСоединенияИнформационнойБазы(),<Нужная база>)>0 Тогда
//то выполняем такой то код только для нужной базы
КонецЕсли
Если кто то развернет детешник в не в <Нужная база> работать не будет. К сожалению
+
12. herfis 498 20.02.17 17:59 Сейчас в теме
(8)(9) Это не ID базы. Это идентификатор настроек, по сути. Если перезаполнить список баз - будут другие ID (зуб не дам, но вроде так).
AGLux; +1
13. ksv74 90 20.02.17 18:16 Сейчас в теме
(12) Согласен. Будет новый уид - сам этим пользуюсь
+
2. WaterSmith 355 20.10.11 12:19 Сейчас в теме
Очертите задачу конкретнее.
Хотите привязать внешнюю обработку к конфигурации?
Насколько мне известно такого уникального идентификатора нет, другое дело, что вы можете его организовать. Можно генерировать GUID, запомнить его где нибудь, в каком нибудь регистре сведений, и потом выполнять соответствующую проверку.
+
3. tango 540 20.10.11 12:24 Сейчас в теме
вопрос интерсный, но, автор, что вы предложите для детешников?
+
4. tango 540 20.10.11 12:25 Сейчас в теме
имхо, юникод для конкретной базы - ее месторасположения, типа IP
+
5. tango 540 20.10.11 12:26 Сейчас в теме
имхо, юникод для конкретной базы - ее месторасположения, типа IP
+
6. tango 540 20.10.11 12:26 Сейчас в теме
ну, дубли на ИС шерифа не
+
9. ksv74 90 20.10.11 14:38 Сейчас в теме
mirrr пишет:
Подскажите, есть ли для информационной базы какой-то уникальный код, такой, чтобы его можно было получить программно.

Если программно, то читать вот это Формирование списка зарегистрированных информационных баз системы 1Cv8, затем парсить файл C:\Documents and Settings\%CurrentUser%\Application Data\1C\1CEStart\ibases.v8i, в нем каким-то образом получать ID.
Если не получается, то искать другие варианты.
+
10. tusv 211 20.10.11 14:56 Сейчас в теме
(9) ksv74, Проверил. Это только для локальной машины:(
+
11. AGLux 20.02.17 16:23 Сейчас в теме
Да, при соединении через веб-клиент это не сработает.
+
14. Dnki 4 20.02.17 22:45 Сейчас в теме
Я подобную проблему решаю тупо: есть константа с именем вроде "код базы". В ней 2-3 буквы.
Но эффективно.
+
15. AGLux 21.02.17 13:32 Сейчас в теме
(14) Есть задача интереснее, в которой такой подход не поможет. Например как определить конкретную БД, и суметь отличить бекап от оригинала? :) Анализ строки соединения не совсем помогает, т.к. в ней иногда может фигурировать не имя сервера, а IP. Подозреваю, что может там быть и FQDN имя сервера, что ещё больше увеличивает путаницу.
+
16. japopov 68 21.02.17 13:40 Сейчас в теме
(15) ну, это можно, и достаточно просто. Думаю, 1С тот же алгоритм реализовали:
1) При первоначальном заполнении базы сохраняем строку доступа. Для файловой базы можно поизвращаться ещё про дату создания. Можно также при начальном заполнении взводить флажок "надо запомнить строку соединения", и для файловой базы снимать этот флажок только тогда, когда путь к файлу начинается с "\\" (так обработаем ситуацию, когда локальный путь отличается от сетевого).
2) При запуске проверяем, и если текущая строка соединения отличается от ожидаемой, выводим сообщение "Айяйяй, базу переместили, больно же! Вы её насовсем переместили, или как?". Если "насовсем", то обновляем запомненные параметры. Если "или как" - то отключаем лишнее.

В случае с 1С они для файловой базы изобразили ещё один файлик "DoNotCopy", но, по-моему, решение даже более сомнительное, чем то, что я предложил.
+
17. AGLux 20.03.17 20:10 Сейчас в теме
(16) Ну в моём случае была пара отличий: во-первых все базы (и оригинал, и копии) были SQL-ные. Во-вторых именно на анализ строки запуска изначально я и полагался. К нему привязал автоопределение прод/не_прод база. И если не_прод - то при любом запуске сеанса производился сброс всяких интеграционных настроек к тестовым значениям. Всё было хорошо, пока в базу не стали заходить юзера из Румынии, у которых в строке соединения почему-то был IP, а не имя сервера. После чего на проде настройки сбросились к непродовским и естественно случились мега-паника, скоростные хотфиксы и прочие головные боли)))
Изначально хотел сделать как вы и предложили - диалог для юзера, чтоб он подтвердил выбор. Но начальство зарубило интерактивщину, в итоге весь этот функционал просто закомментили в долгий ящик, от греха подальше)))
+
18. japopov 68 21.03.17 09:47 Сейчас в теме
(17) Ну, как же так! Просто же: при начале работы пользователя на сервере исполняете команду системы ping к серверу (параметры подобрать надо будет), сохраняете результат во временный текстовый файл. Потом из 1С считываете файл, и получаете IP сервера! Всё просто, и можно сравнивать именно адреса серверов.
AGLux; +1
19. AGLux 21.03.17 18:09 Сейчас в теме
(18) ну да, примерно что-то такое было в идеях, но к тому времени этот функционал всё равно уже зарубили))) Так что, теперь просто спортивный интерес. :)
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот