|
Универсальный способ определить, что данная база "тестовая" | ☑ | ||
---|---|---|---|---|
0
MCh
30.08.18
✎
11:35
|
Есть мысль к коде прописать проверку, на то, является ли данная база тестовой. Чтоб отключить по умолчанию всякие обмены и т.п. Проверять на то, файловая ли она или отключены ли регламентные задания? Привязывать все к имени база не хотелось бы.
|
|||
1
Dmitry1c
30.08.18
✎
11:35
|
Я благословляю тебя
|
|||
2
unregistered
30.08.18
✎
11:43
|
(0) Чем не устраивает встроенный в БСП механизм?
Или речь о нетленке без БСП? Кстати проверка сделанная в БСП основана на проверке изменения строки подключения базы. Изменилось подключение (место, имя базы и т.п.) вываливаем вопрос о том не является ли база копией. Если пользователь отвечает "Да", блокируем регламентные задания (механизм тоже описан в БСП) на уровне конфигурации (в кластере регламенты не блокируются). |
|||
3
Denis_CFO
30.08.18
✎
11:44
|
(0) Если ТекушийПользователь().Имя = "Директор" Тогда
Возврат "Вы слыхали, как поют дрозды?"; КонецЕсли |
|||
4
trdm
30.08.18
✎
11:45
|
Константа.ЭтоТестоваяБаза = Да;
|
|||
5
PR
30.08.18
✎
11:48
|
(4) Ну да, при копировании базы эта константа конечно же не забудет установиться в Истина
|
|||
6
trdm
30.08.18
✎
11:48
|
Константа.ПолитикаОбменовСДругимиСистемами = Запретить:
Перечисление.ВидыПолитикОбменовСДругимиСистемами.Запретить; Перечисление.ВидыПолитикОбменовСДругимиСистемами.Разрешить; |
|||
7
trdm
30.08.18
✎
11:50
|
(5)
Если ИмяКомпьютера() = "KHU78567T7GNBN" Тогда Константа.ЭтоТестоваяБаза = Да; КонецЕсли; |
|||
8
Волшебник
30.08.18
✎
11:51
|
(0) Вы ещё пользуетесь файловыми базами?
Завести константу "ИмяРабочегоСервера". При старте проверять СтрокаСоединенияИнформационнойБазы на наличие имени сервера. Тестовые базы держать на другом сервере. |
|||
9
trdm
30.08.18
✎
11:52
|
Можно еще так:
Если ИмяКомпьютера() = "KHU78567T7GNBN" Тогда Если Найти(КаталогИБ(),гКаталогМоихКрутыхРазработок) Тогда Константа.ЭтоТестоваяБаза = Да; КонецЕсли; КонецЕсли; |
|||
10
bolobol
30.08.18
✎
11:52
|
Выгнал всех пользователей из базы - оп-па - стала тестовой. Ну чо, хороший способ, много лучше, чем имя базы проверять.
|
|||
11
bolobol
30.08.18
✎
11:53
|
(8) Платит Волшебник за лицензию на тестовый сервер?
|
|||
12
trdm
30.08.18
✎
11:53
|
(8) Надо сопоставлять не только имя сервера, но и каталог ИБ.
|
|||
13
Волшебник
30.08.18
✎
11:54
|
(11) Ну я вас умоляю...
|
|||
14
Wirtuozzz_Х
30.08.18
✎
11:54
|
(0) По адресу проверяй, если адрес сменился то все. По одному адресу 2 базы быть не может.
|
|||
15
bolobol
30.08.18
✎
11:59
|
(14) Её адрес - не дом и не улица... Я не въехал в предложение
|
|||
16
PR
30.08.18
✎
12:06
|
(7) Рукалицо
А что мешает на том же сервере 1С развернуть базу с другим именем? |
|||
17
leonidk
30.08.18
✎
12:08
|
+1 к проверять по строке соединения. ВРег(СтрокаСоединенияИнформационнойБазы()) = ВРег("Srvr=""XXXX"";Ref=""XXX"";")
|
|||
18
PR
30.08.18
✎
12:08
|
Мама дорогая
Для скулевых баз 1. Делаются константы "Имя базы" и "Имя сервера" 2. При старте проверяется, если имя базы и имя сервера из строки соединения совпадают с константами, нормуль, база рабочая, иначе копия |
|||
19
PR
30.08.18
✎
12:09
|
(17) Пример копрокода в лучших традициях
|
|||
20
leonidk
30.08.18
✎
12:12
|
(19) Прошу прощения, что наступил на Ваше тонкое чувство прекрасного.
|
|||
21
Мыш
30.08.18
✎
12:13
|
ЭтаБазаРаньшеБылаВДругомМесте = Не СтрокаСоединенияИнформационнойБазы()=Константа.СтрокаСоединенияИнформационнойБазы.Получить();
|
|||
22
Сияющий в темноте
30.08.18
✎
12:13
|
Для серверной базы достаточно имя сервера и имя базы,но проверку нужно делать в каждом регламентном задании,ь.е.они стартанут сразу после разворачивания базы.
с файловой базой сложнее,т.к.директории на каждой машине будут свои,если всех в одну сетевую папку не загнать,но можно запомнить для каждого имени компьютера свой путь и положить его в текстовом файле рядом с базой,если файла нет или если в нем нет пути для данного компьютера или путь другой,база тестовая.слава богу,регламент не стартанет до входа пользователя в базу. |
|||
23
bolobol
30.08.18
✎
12:15
|
(22) Модуль какого-нибудь сеанса - не решает эту задачу в одном месте?
|
|||
24
Вафель
30.08.18
✎
12:20
|
(18) А чем 2 поля лучше чем 1 строка соединения?
|
|||
25
PR
30.08.18
✎
12:23
|
(24) Мда
Как минимум тем, что в строке соединения может быть еще какая-то дрянь |
|||
26
Serg_1960
30.08.18
✎
12:24
|
А теперь на мгновение представим, что нам нужно поднять копию рабочей базы с типовой конфигурацией из архива... Представили? :)
|
|||
27
PR
30.08.18
✎
12:27
|
(26) Что представили? Что именно тебя шокировало?
|
|||
28
Вафель
30.08.18
✎
12:32
|
(25) А именно? что-то я про такое не слышал
|
|||
29
PR
30.08.18
✎
12:35
|
(28) Бывает, ничего страшного
Загугли |
|||
30
Fragster
гуру
30.08.18
✎
12:35
|
переходи на БСП, там это реализовано
|
|||
31
Wirtuozzz_Х
30.08.18
✎
12:35
|
(15) У рабочей базы есть адрес, я не думаю, что они постоянно переносят базу, будь она файловая или серверная. Поэтому в константу запихивает адрес базы и если фактический адрес не совпадает с значением в константе, базу смело можно считать тестовой.
|
|||
32
Serg_1960
30.08.18
✎
12:38
|
(22) Меня ничего не шокировало. Просто прочтите (22) ещё раз. То, что в БСП "научились" определять копию - замечательно (сарказм). Осталось только разобраться с мелочью - с внутриплатформенной остановкой работы регламентных и фоновых заданий, пока не будет получен ответ на преславутый вопрос пользователю про копию.
|
|||
33
PR
30.08.18
✎
12:41
|
(32) С чего бы это вдруг тормозить _все_ регламентные и фоновые задания, да еще на уровне платформы?
|
|||
34
Cyberhawk
30.08.18
✎
12:41
|
(32) БСП и с этим разобралась )
|
|||
35
Serg_1960
30.08.18
✎
12:42
|
(34) И как именно позвольте спросить?
|
|||
36
Cyberhawk
30.08.18
✎
12:43
|
(35) Никакие РЗ (ну, из тех, что помечены как связанные с перемещением ИБ) не запускаются, а падают в ЖР с исключением
|
|||
37
Cyberhawk
30.08.18
✎
12:44
|
Ошибка РЗ Отправка СМС: "{ОбщийМодуль.РегламентныеЗаданияСлужебный.Модуль(175)}: Изменилась строка соединения информационной базы.
Возможно информационная база была перемещена. Регламентное задание "Отправка SMS" отключено. ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Изменилась строка соединения информационной базы." |
|||
38
Cyberhawk
30.08.18
✎
12:45
|
(вот такое в ЖР)
|
|||
39
Cyberhawk
30.08.18
✎
12:46
|
Вот если бы сервер приложений умел определять, что база в СУБД была перезалита / восстановлена / еще чего-нибудь, то было бы неплохо
|
|||
40
Serg_1960
30.08.18
✎
12:52
|
(37) Замечательное решение :) Т.е. вместо того, чтобы просто остановить менеджер регламентных заданий - пусть они работают, но работать мы им не дадим.
В БСП (и платформе) всё сделали шиворот навыворот и наоборот. Нужно, как минимум не блокировать рег.задания по ответу "Да, это копия", а разрешать(!) их работу по ответу "Да, перемещена". Имхо, разумеется. |
|||
41
Serg_1960
30.08.18
✎
12:54
|
Тогда бы и автору ветки не пришлось бы разрабатывать вечный двигатель... пардон - "универсальный метод"(цы).
|
|||
42
Serg_1960
30.08.18
✎
12:59
|
Кстати, совсем недавно ветка была (принимал участие) - При загрузке бекапа из SQL не получается программно создавать справочники и документы , где автор нарвался на проблему неуникальности номеров в копии базы - там тоже искали "универсальны метод" определения копии и куда бы засунуть ОбновитьНумерациюОбъектов()...
|
|||
43
PR
30.08.18
✎
13:01
|
(40) Ахренеть
И почему теперь должно блокироваться регзадание обновления индекса полнотекстового поиска, например? |
|||
44
Serg_1960
30.08.18
✎
13:09
|
(43) А почему бы ему не быть заблокированным на время пока пользователь не ответит на вопрос о копии? С момента загрузки информационной базы до запуска первого сеанса пользователя чего такого важного произошло в базе, что нужна работа рег.заданий? Ответ: ничего!
|
|||
45
Cyberhawk
30.08.18
✎
13:17
|
Зато хоть видно, что что-то не так
|
|||
46
Serg_1960
30.08.18
✎
13:24
|
Да ради бога. У меня так, просто... беспредметный разговор - в чужой монастырь да со своим уставом :( Просто поднял только из-за того, что считаю нет и не будет найдено оптимального решения - чего уж тут говорить про "универсальное решение" ветки.
Будете искать решение - у меня просьба: не забудьте про РИБ - для меня это таки очень важно :) |
|||
47
ejikbeznojek
30.08.18
✎
13:26
|
Странно что ни кто не предложил
распарсить ibases и получить таблицу с 2мя колонками. Имя базы и строка подключения. Потом получить текущую строку подключения и по ней понять имя текущей базы. А потом: Если ИмяБазы = "Тестовая" или ИмяБазы = "Копия" тогда ЭтоТестоваяБаза=истина; иначе ЭтоТестоваяБаза=ложь; конецесли |
|||
48
Рэйв
30.08.18
✎
13:26
|
ТС троль а вы ведетесь все.
|
|||
49
Рэйв
30.08.18
✎
13:27
|
хотя дело ваше конечно.
|
|||
50
ИначеЕсли
30.08.18
✎
13:31
|
В имя тестовой базы добавлять префикс или суффикс "test" и дальше анализировать строку соединения
|
|||
51
PR
30.08.18
✎
13:56
|
(44) Сконцентрируйся, это важно
Я ответил, что да, это копия, но хочу, чтобы регламентное задание по обновлению полнотекстового поиска продолжало работать Как быть? |
|||
52
DexterMorgan
30.08.18
✎
14:07
|
(11) Бу-га-га, если у тебя на рабочем сервере тестовые базы, у меня для тебя плохие новости)
З.Ы. Увольняйся, они нищеброды))) |
|||
53
Serg_1960
30.08.18
✎
14:34
|
(51) Сконцентрируйся, это важно.
Я предлагал временно блокировать регламентные задания - пока не будет ответа на вопрос. Далее, после ответа - хоть потоп, хоть трава не расти. Ещё раз: на период с момента загрузки ИБ и до ответа на вопрос. Временно. По существу вопроса: не знаю как Вам быть, а я отвечаю на вопрос "да, копия", а потом запускаю обработку, которая сканирует рег.задания, останавливая их работу и снимает общую блокировку с базы (платформа 8.3.11, ЗУП 3.1.5). |
|||
54
PR
30.08.18
✎
14:39
|
(53) Нахрена временно блокировать? Что это даст?
|
|||
55
Serg_1960
30.08.18
✎
15:27
|
Спасибо что не спросили "А зачем их вообще блокируют?" - не находишь, что вопрос из той же серии? :) Sorry, я тоже могу задавать много вопросов. Например, "А почему нужно что-то запрещать, если можно не разрешать?"
Допустим, я поднял копию из архива (не важно архив SQL или в конфигураторе *.dt загрузил) - регламентные задания в клиент-серверной версии начали выполняться. Так? Допустим я не просто поднял копию, а обработкой ночью, когда некого спрашивать и некому отвечать - они так и будут работать? "А зачем?"(цы) |
|||
56
PR
30.08.18
✎
15:35
|
(55) LOL
Нет, не так Если ты такой автоматизированный, то ты ясен пень поставишь блокировку регламентных заданий на базу через консоль кластеров Детский сад какой-то |
|||
57
Serg_1960
30.08.18
✎
15:58
|
Сам ты lol :( Мне это вообще не актуально - давно пройденный этап. Дело в принципе.
|
|||
58
Feanor
30.08.18
✎
16:34
|
(18) вместо имени сервера прописали IP и все, схема сломалась
|
|||
59
Cyberhawk
30.08.18
✎
17:15
|
(58) От этого можно было бы защититься, если бы платформа предоставляла штатный доступ к списку инфобаз в кластере, где ИБ однозначно идентифицируется ее УИДом. Тогда было бы пофиг, какая там строка соединения.
|
|||
60
Serg_1960
30.08.18
✎
18:25
|
(59) Если парсить 1CV8Clst.lst, то там есть то, что условно можно назвать идентификатором базы :) Разумеется и эти данные не вечны, но на безрыбье и рак - щука.
|
|||
61
PR
30.08.18
✎
21:08
|
(58) Да я больше скажу, с другого сервера 1С к той же скулевой базе подцепились и ага, навалили сами себе за шиворот
|
|||
62
Feanor
30.08.18
✎
21:22
|
(61) ну это экзотика, если админ долбодятел, то тут уже ничем не поможешь)
а в (58) реальная ситуация, клиент в строке подключения может знатно накреативить |
|||
63
bolobol
31.08.18
✎
09:30
|
(52) Ню-ню! Вы смешны)
|
|||
64
bolobol
31.08.18
✎
09:40
|
(58) Ну ежели только получение АйПи адреса как-то заблокировано для сервера 1С, и/или получение имени сервера по АйПи адресу.
|
|||
65
PR
31.08.18
✎
12:29
|
(62) Добавь две константы для имени, ok
|
|||
66
Feanor
31.08.18
✎
12:31
|
(65) а если юзер написал вместо "MyTrueServer" что-то типа "MyTrueServer.domain" или "MyTrueServer.domain.local", то еще две константы? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |