Имя: Пароль:
1C
1С v8
Как сделать тестовую БД (изменить данные)
0 Антиквар
 
11.06.22
01:12
Всем привет!
Есть пользовательская БД (тестовая), которую нужно периодически обновлять из другой, рабочей БД.
Но при этом в тестовой БД нужно сделать конвертацию некоторых данных.
Проблема в том, что конвертацию нужно сделать до того, как в базу сможет войти пользователь. Как это реализовать?
База на MS SQL, самый очевидный путь - это сделать скрипт на SQL, который меняет данные прямо в таблицах БД SQL, и запускать этот скрипт сразу после рестора тестовой БД из бэкапа средствами SQL.
Но, это нарушает лицензионное соглашение 1С , а также требует специальных знаний и постоянного отслеживания структуры БД после каждого обновления релиза.
Что тут можно придумать?
Думал над блокировкой сеансов, но ведь при этом надо дать код доступа тому сеансу, который будет конвертировать данные. Т.е. этот код в явном виде будет прописан в строке запуска допустим планировщика виндовс.
Может есть у кого идеи?
1 Asmody
 
11.06.22
01:21
(0) посмотреть, как в БСП сделано обновление конфигурации
2 shuhard
 
11.06.22
06:24
(1) +1
монопольные обработчики
3 Мимохожий Однако
 
11.06.22
07:21
Уже придумана программка Обновлятор-1С. Доступно и всерьёз.
4 Фрэнки
 
11.06.22
07:22
Слишком абстрактно озвучена задача. Решение может отличаться от типовой конфигурации. В (1) сказано о БСП, но в топике о наличии какого-то БСП ни слова.

Абстрактно : есть предопределенные обработчики, которые разбирают параметры запуска сеанса.
Примерно туда вставлены вызовы для проверки версии платформы, обработки процедур обновления и т.д.
5 Конструктор1С
 
11.06.22
08:49
(1) поддерживаю, самый правильный вариант
6 Конструктор1С
 
11.06.22
08:51
Эх, гениального мнения тут не хватает. Мне даже интересно, черех какие гланды он делал бы подобное
7 hhhh
 
11.06.22
09:12
всё-таки наверно сделать риб из этих двух баз.
8 Фрэнки
 
11.06.22
09:26
(6) ты теперь любую ветку будешь пытаться в гениальный срач превращать?
9 Фрэнки
 
11.06.22
09:30
(7) я тоже так подумал, но такой РИБ на практике может оказаться трудно сделать, поскольку не обозначено под какую конфу им это нужно.
10 Мимохожий Однако
 
11.06.22
13:17
Когда ТС проснётся, расскажет нам для чего в тестовой базе кроме обновления нужна конвертация данных
11 Winnie Buh
 
11.06.22
14:01
(10) было бы вообще неплохо понять, что именно понимается под этой "конвертацией данных"
а то может речь о анонимизации данных, чтобы поменять всё названия номенклатуры на Товар1, Товар2,Товар3...., а названия контрагентов на Котнтрагент1, Контрагент2...
12 ДедМорроз
 
11.06.22
14:19
Очень просто.
Создаем в базе специального пользовптеля.
При запуске,проверяем,если специальный пользовптель,то зарускаем обработку в монопольном режиме.
Специальный пользователь - для того,чтобы иметь права на все объекты,которые нужно изменить.
Далее,из рабочей выгружаем backup.
Загружаем его в служебную базу.
Запускаем служебную базу аод специальным пользователем любым способом.
После окончания обработки удаляем тестовую базу и заменяем ее служебной.
Если что-то не отработало,то тестовая будет старее,но будет доступна без проблем.
13 ДедМорроз
 
11.06.22
14:20
На самом деле,чаше всего,из рабочей базы не только удаляются персональные данные,но и меняются пользователи,которые к ней имеют доступ.
14 Выпрь
 
11.06.22
18:07
(12) а потом какой-нибудь м... запусит рабочую под специальным пользователем
15 ДедМорроз
 
11.06.22
19:18
(14) Ну и что?
Если все сделано правильно,то в журнал будет записана ошибка и показана пользователю,что на данной базк этот функционал не работает.
Не забываем,что серверная база,если не отключены регламенты,начинает выполнять обмены,и они должны работать только в рабочей базе.
16 hhhh
 
11.06.22
20:54
(15) причем тут регламенты, он же вручную будет обмен пускать. Это же разово запускается. Раз в месяц, например. По желанию.
17 Garykom
 
гуру
11.06.22
22:49
(0) две копии баз сделай
0 - исходная рабочая будет
1 - чистая копия средствами sql
2 - правленная копия средствами 1С через монопольную обработку 1-й копии (там удобно что юзеров кроме "робота" никого) и выгрузки во вторую
18 Garykom
 
гуру
11.06.22
22:50
(17)+ в итоге в 0-й юзеры, в 1-й только робот, во 2-й разрабы/тестеры
19 Антиквар
 
12.06.22
12:20
Извиняюсь, был без доступа в инет.
(11) Да, речь об анонимизации, типа того что пишете.
Все предложения как я понял основаны на том, что базу можно запустить средствами 1С, но админы не хотят давать доступ к базе, пока данные в ней не конвертированы. (16) Ничего вручную не будет. В том и дело, что будет настроен бэкап, копирование, рестор базы. Но это делают админы, и политика безопасности запрещает им делать рестор на тест, если в базе реальные данные. В идеале, чтобы скрипт на SQL это делал, и админы бы его прикрутили к процедуре рестора. После чего только открыли бы доступ к базе.
(18) Поясни пожалуйста, как получается п.1 - чистая копия средствами SQL. Почему в ней только робот? На каком этапе удалены все другие пользователи, кто это сделал?
20 Winnie Buh
 
12.06.22
12:39
(19) на ИТС в инструментах разработчика должна быть штатная обработка СкрытиеКонфиденциальнойИнформации.epf
21 Антиквар
 
12.06.22
13:49
(20) Обработку и свою напишем. Проблема в том, как её запустить, если базу нельзя сделать активной до того как данные будут исправлены
22 Фрэнки
 
12.06.22
15:08
(21) в любом случае, каким-бы извратом не пользовались, не запустите ничего - нужен запуск в режиме Предприятия.

Вы решаете проблему несколько извращенным способом.

Но способов достичь желаемого (сделать базу для тестирования) даже несколько. Но любой из способов будет отрабатывать только в режиме Предприятие.
23 Фрэнки
 
12.06.22
15:10
Ваши админы "не хотят"... Так они и бакапы базы делать не должны разрешать, потому что база в бакапе содержит все нужные данные :-)))

И обмены из базы делать нельзя - там же данные !!!
24 ДедМорроз
 
12.06.22
18:09
Я же вам писал,служебная база.
К ней никто,кроме самих админов доступа иметь не должен.
А когда она стала готова,то она переносится тестовую,причем можно также методом backup-restore.
25 Фрэнки
 
12.06.22
21:29
(24) бе-бе-бе :-)))))
26 AlteZ
 
12.06.22
21:52
27 Антиквар
 
13.06.22
00:33
(24) "К ней никто,кроме самих админов доступа иметь не должен." - это как реализовать, чтобы после рестора БД стала доступна только админам... Доступ к БД делается на уровне прав учетки SQL, под которой 1С ходит в БД. Если блокируем эту учетку, то и админы не войдут. А если разрешаем, то любой войдет, зная имя сервера и имя ИБ.
28 Антиквар
 
13.06.22
00:37
(26) У нас на копии нужны некоторые регламентные задания, они там тоже тестируются, поэтому наверное не подойдет
29 ДедМорроз
 
13.06.22
21:12
(27) во-первых,при восстановлении можно использовать другого пользователя sql,пароль от которого знают только специальные люди.
во-вторых,можно выполнять все действия на копии сервера 1с,к которому доступ только локально,тогда к этой базе никто подключиться не может.
Что касается регламентов,то можно в базе определить другое расписание и поменять настройки подключения,тогда база ни в какие рабочие обмены не полезет.

Как вариант,можно сделать расширение,которое есть в рабочей базе,но нет в копии,тогда все,что выполняется в рабочей,в копии выполняться не будет или будет выполняться из другого расширения.
30 Антиквар
 
14.06.22
01:09
(29) "во-первых, при восстановлении можно использовать другого пользователя sql,пароль от которого знают только специальные люди."
Это не поможет, поскольку пароль SQL вводится 1 раз при создании ИБ в консоли сервера 1С. А дальше, если ты имеешь доступ к консоли сервера, то ты знаешь имя базы и сервер, и пароль SQL тебе не нужен, чтоб зайти в базу.

"во-вторых,можно выполнять все действия на копии сервера 1с,к которому доступ только локально,тогда к этой базе никто подключиться не может."
Вот это очень интересно, спасибо. Но я не совсем понял, что это значит) Сервер 1С установлен на сервере приложений, куда всем разработчикам есть доступ по RDP. Т.е. получается у всех разработчиков локальный доступ есть? Это имели ввиду?
31 DrZombi
 
гуру
14.06.22
07:15
(0) Может вам нужно обезличить персональные данные, но вы стесняетесь это озвучить? :)
32 Фрэнки
 
14.06.22
08:15
(31) он это уже озвучил в постах. Вся проблема его топика в том, что _любые_ действия над данными в базах 1С выполняются корректно только когда 1С в режиме Предприятие _открыта_.

А тс не желает ни под какими вариантами и нигде более это сделать.
Копирует базу средствами СУБД и тут же ожидает до запуска 1С изменение данных, т.е. обезличивание.
Более того, он еще вероятно ожидает, что из базы будут удалены все пользователи ИБ.
и т.д. и т.п.
33 Bigbro
 
14.06.22
08:38
нужна схема с восстановлением БД из бэкапа на отдельном сервере, на который есть доступ только у отдельного "доверенного" пользователя, дальше запуск обезличивания данных в режиме 1с, и перенос полученной базы на общий сервер.
34 AlteZ
 
14.06.22
12:20
(28) Отключить регзадания на кластере 1с перед деплоем бэкапа не?
Проверять перед началом работы, прод ли это, и, если нет, выводить окно очистки конфиденциальных данных?
35 AlteZ
 
14.06.22
12:21
(34)В самописных регзаданиях добавить проверку на прод перед стартом.
36 AlteZ
 
14.06.22
12:30
(35) При полном недоверии безопасности схд хранить дампы SQL таблиц с критичной инфой отдельно от архивов, выгрузка через промежуточную базу с предварительной очисткой конфиденциальных данных