Имя: Пароль:
1C
1С v8
Как "отличить" базу от ее копии?:)
0 Dwarrior
 
18.09.13
14:10
Здравствуйте!

В-общем, есть база 1С, настроен РИБ с несколькими дочерними узлами. Между базами ходят файлы типа "Message_000_001.zip". Назовем этот набор баз "Система №1".
Теперь берем и копируем центральную базу и создаем новые узлы. Назовем эту систему "Система №2".
Теперь вопрос - как сделать так, чтобы юзеры не путали файлы "Message_000_001" из системы №1 и системы №2? Иначе говоря, как сделать так, чтобы при попытке загрузки файла обмена из первой системы во вторую вываливалась ошибка, что файл обмена не от этой базы?
Смотрел выгружаемый XML, думаю дело в v8de:Signature или v8de:Digest, но как ее изменить? Пробовал создавать вторую базу выгрузкой/загрузкой *.cf из первой, думал, что эти уникальные значения генерируются при создании базы, но не помогает, значения те же.
1 Зойч
 
18.09.13
14:12
настрой другой каталог обмена да и все
2 pumbaEO
 
18.09.13
14:12
делаю константу с названием и путем базы данных. Не выгружать ни загружать не дает, если константа отличается.
3 Галахад
 
гуру
18.09.13
14:12
Коды узлов можно поменять.
4 Dwarrior
 
18.09.13
14:15
(1),(2),(3) - все понятно, но это решения "в обход" проблемы. Коды узлов надо сохранить, Константу делать не хочется, как-то топорно:)
Другой каталог тоже не годится, потому что рано или поздно юзверь перепутает каталоги.
5 Dwarrior
 
18.09.13
14:16
Ведь каждая база 1С имеет что-то, отличающее ее от других? Кроме различия в структуре, типа УникальногоИдентификатора() для объектов
6 Cyberhawk
 
18.09.13
14:17
(4) "юзверь перепутает каталоги" на каждую базу 1С - свой терминальный сервер
7 Волшебник
 
модератор
18.09.13
14:18
(5) имя сервера и имя базы на сервере
8 Dwarrior
 
18.09.13
14:19
(6) - все базы файловые, на обычных клиентских машинах, без терминальных и SQL серверов.
Да даже и переименовать базы на SQL - это же не видно в файле обмена и чужой файл таки загрузится
9 Галахад
 
гуру
18.09.13
14:20
Ну конфигурацию поменяй. Фиг загрузиться.
10 Cyberhawk
 
18.09.13
14:21
Маркировать файл обмена надо как-то, вестимо. У автора вопрос: как это делать или чем уникальным это делать?
11 shuhard
 
18.09.13
14:22
(0) как случилось, что пользователи руками выбирают файлы и нажимают кнопки, вместо автоматического обмена ?
12 Dwarrior
 
18.09.13
14:23
Идеальное решение тут конечно разные имена файлов обмена, тогда и юзеру видно откуда файл и 1С не загрузит чужой. Но вот так поставлена задача, что менять имя файла обмена нельзя, можно только поменять что-то внутри файла обмена, в XML.
13 Dwarrior
 
18.09.13
14:24
(11) Файлы обмена им приходят по электронной почте, в теле письма написано "обмен для системы №1".
14 dmpl
 
18.09.13
14:30
(4) Реквизит в плане обмена или сохраненная настройка.
15 shuhard
 
18.09.13
14:33
(12) форум должен угадать какими средствами файл обмена строиться ?
16 dmpl
 
18.09.13
14:33
(13) Ну добавляй своим кодом при выгрузке в XML ту же строку соединения с базой-источником, а при загрузке анализируй - та строка или не та.
17 shuhard
 
18.09.13
14:34
(13) ещё раз [как случилось, что пользователи руками выбирают файлы и нажимают кнопки, вместо автоматического обмена ?]
18 Dmitry77
 
18.09.13
14:35
(13) настрой им почтового клиента , что бы файл "обмен для системы №2" удаляся
19 Лефмихалыч
 
18.09.13
14:38
(0) процесс делания копии нужно регламентировать так, чтобы сразу после создания она обезвреживалась. То есть, чтобы там очищались все источники данных, заглушались регламентные задания, чистились пути к продуктивным всяким тёплым местам.
20 Лефмихалыч
 
18.09.13
14:41
ну и прямо совсем хорошо, когда регламентных заданий в базе вообще нет и ими занимается другая база, подключающаяся к продуктиву черезCOM. Это гарантирует, что при создании копии ни чего не начнет стартовать откуда попало, а еще сервисный код с бизнес логикой не перемешивается
21 Dwarrior
 
18.09.13
14:46
(15) Обмен самый что ни на есть стандартный РИБ -ПланОбмена.ПрочитатьИзменения() и ПланОбмена.ЗаписатьИзменения(). Через
(17) да, можно автоматизировать обмен, чтобы юзер не касался файлов обмена. Но это дополнительные трудозатраты, FTP-сервер поднимать или писать код обмена через email. Да и нужно это не навсегда, а на какое-то время.
(19),(20) - да нет, тут регламентные задания не при чем. Обмен  практически ручной (как самый простой) - получили файл, открепили, выложили в каталог, запустили обмен, выгруженный файл из каталога отправили обратно.
22 Dwarrior
 
18.09.13
14:51
про v8de:Signature или v8de:Digest никто ничего не скажет?
23 kosts
 
18.09.13
15:04
(0) Всё не читал. Сделай, что бы во всех системах не было повторяющихся кодов узлов. Никакой путаницы не будет.
Если сделать обмен по фтп. То даже с файлами не придется возиться.
24 Галахад
 
гуру
18.09.13
15:04
А если номера сообщений поднять на порядок?

По сигнатуре, насколько я понимаю проверяться идентичность конфигураций.
25 Широкий
 
18.09.13
15:08
сделай константу, забей туда параметры соединения с ИБ.
Потом сверяй
26 Dwarrior
 
18.09.13
15:09
(24) Это идея, с другими номерами сообщений...
"По сигнатуре, насколько я понимаю проверяться идентичность конфигураций" - ВОТ да, об этом я! Т.е. получается, что две отдельно созданные конфигурации но с одинаковым составом справочников и реквизитов буду иметь одинаковую сигнатуру? И тогда ее нельзя считать уникальной?
27 Галахад
 
гуру
18.09.13
15:22
(26) Ну да. И это легко проверяется. Скопировать базу и сделать выгрузку в обеих базах.

v8de:Signature и v8de:Digest будут идентичны.
28 skunk
 
18.09.13
15:26
префикс добавить узлам предлагали?
29 Dwarrior
 
18.09.13
15:27
(28) префикс узлов менять по сравнению с системой №1 нельзя.
30 Dwarrior
 
18.09.13
15:30
(27) а если не копировать базу, а создать новую с теми же объектами? Тогда сигнатура новой будет одинакова с исходной?
31 skunk
 
18.09.13
15:30
(29)почему? ... кстати в копии еще можно счетчик обнулить ...
32 Vovan1975
 
18.09.13
15:31
ну измените наименование сообщения, будет у вас не "Message_000_001" а "MessageТ_000_001"

или как вариант - вы ведь архивируете сообщения - ну так и устанавливайте пароль на архив, и в каждой базе будет свой пароль
33 kiruha
 
18.09.13
15:33
(0)
Константу.
В ней уникальный идентификатор каждой базы
34 Dwarrior
 
18.09.13
15:33
(32) Вот с паролем самое то! ничего менять не надо, только в настройке обмена пароль прописать! Я бы сказал гениально!:)
Менять "Message" можно, но это прописано в коде типовой бухгалтерии, а в типовой код не хотелось бы лезть.
(33) Сложновато, по сравнению с установкой пароля на архив:)
35 Dwarrior
 
18.09.13
15:36
Спасибо всем сочуствующим! Вариант с паролем на файл обмена самое то, если конечно у кого-то нет идеи еще круче, например как изменить сигнатуру базы:)

Еще раз спасибо всем, и Vovan1975 в частности!
37 Maxus43
 
18.09.13
16:02
На практике используем СтрокаСоединения() для идентификации, как уже выше и писали, нормальный способ
38 RomanYS
 
18.09.13
16:22
(34) если поменять только пароль - базы будут обмениваться через раз. Если обмен через каталог, файлы одной системы будут перезаписывать файлы другой;
правильней всё-таки поменять пути/почтовые ящики/ftp
39 wms
 
18.09.13
16:30
никто еще не написал что ли?
СтрокаСоединенияИнформационнойБазы()
40 sda553
 
18.09.13
16:33
(39) Верно. Константа хранит строку соединения. Сравниваем получившуюся строку с константой и получаем копия это или нет. Я обычно при этом еще цветовую тему автоматом менял, чтобы понятнее визуально было
41 kiruha
 
18.09.13
16:43
Теоретически можно поднять сервер с тем же именем и именем базы.

ГУИД более универсально
Или СтрокаСоединенияИнформационнойБазы + Гуид
42 Maxus43
 
18.09.13
16:47
(41) гуид чего?
43 kiruha
 
18.09.13
18:16
(42)
Просто ГУИД формирующийся при первом запуске базы

Например Новый уникальныйидентификатор
44 sda553
 
19.09.13
02:55
(43) Ничего не понял. Есть база. При первом запуске ей дался какой то гуид. Делаем с базы копию. Копия свой запуск не идентифицирует как первый и у нее остается тот же гуид. Так?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.