|
ComОбъект | ☑ | ||
---|---|---|---|---|
0
noffkj
07.05.19
✎
15:38
|
Переношу настройки пользователей из одной базы в другую. базы идентичные.
Подключаюсь через COM-соединение. Выб = бд.ХранилищеСистемныхНастроек.Выбрать(Новый Структура("Пользователь", Юзер)); Пока Выб.Следующий() Цикл ХранилищеСистемныхНастроек.Сохранить(Выб.КлючОбъекта, Выб.КлючНастроек, Выб.Настройки, Выб.Представление, ПользовательИБ.Имя); КонецЦикла; В итоге Выб.Настройки Значение (COMОбъект) Тип (COMОбъект) как с ним работать? Если выполнить такой код. Выб = ХранилищеСистемныхНастроек.Выбрать(Новый Структура("Пользователь", Строка.Пользователь)); Пока Выб.Следующий() Цикл Настройка = Выб.Настройки; КонецЦикла; то Настройка будет иметь значение НастройкиОкна и ТИП НастройкиОкна. |
|||
1
sqr4
07.05.19
✎
15:47
|
Протосек? Все что ты получаешь из удаленной базы через ком объект кроме примитивов и будет ком объектом. У этого ком объекта будут свои примитивные поля, по которым можно их как то уникально идентифицировать и сопоставить с тем что у тебя есть в базе.
Можешь еще попробовать БД.ЗначениеВСтрокуВнутр и ЗначениеИзСТрокиВнутр, это я не пробовал, только сейчас придумал |
|||
2
noffkj
07.05.19
✎
16:15
|
ЗначениеИзСТрокиВнутр(ЗначениеВСтрокуВнутр(Выб.Настройки)) неопределено.
ЗначениеВСтрокуВнутр(Выб.Настройки) "{"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}" Интересно что это? некий уид? ХранилищеСистемныхНастроек.Сохранить <Настройки> (обязательный) Тип: Произвольный. Содержит настройки, которые нужно сохранить в хранилище. |
|||
3
sqr4
07.05.19
✎
16:18
|
(2) хотя да логично, у вас же ее еще нет, ее нужно создавать.
|
|||
4
sqr4
07.05.19
✎
16:19
|
(2) а если и создадите уиды все равно разные будут, так что вообще не рабочая фигня
|
|||
5
noffkj
07.05.19
✎
16:19
|
||||
6
hhhh
07.05.19
✎
16:22
|
(2) еще вот здесь фигня
Новый Структура("Пользователь", Юзер) должно быть типа бд.NewOdject("Структура" что-то такое |
|||
7
sqr4
07.05.19
✎
16:25
|
||||
8
noffkj
07.05.19
✎
16:33
|
Спасибо она у меня есть эта обработка. но она использует файлы для переноса. а мне поставлена задача несколько иная.
часть кода я стырил оттуда. |
|||
9
noffkj
07.05.19
✎
16:34
|
(6) без разницы. всеравно никаких методов нет. ComОбъект и все.
|
|||
10
sqr4
07.05.19
✎
16:34
|
(8) задача у вас такая же, только ХМЛ достаточно передать не через файл а через ком соединение.
|
|||
11
noffkj
07.05.19
✎
16:41
|
Вот код по выгрузке из этой обработки
Выб = ХранилищеСистемныхНастроек.Выбрать(Новый Структура("Пользователь", Строка.Пользователь)); Пока Выб.Следующий() Цикл Сообщить(" " + Выб.КлючОбъекта + ":" + Выб.КлючНастроек + ?(Выб.Представление = "", "", ":" + Выб.Представление)); НСтр = Настройки.Добавить(); НСтр.КлючНастроек = Выб.КлючНастроек; НСтр.КлючОбъекта = Выб.КлючОбъекта; НСтр.Настройки = Новый ХранилищеЗначения(Выб.Настройки); НСтр.Представление = Выб.Представление; КонецЦикла; //XDTO таблица значений в XML и обратно в 1С СериализаторXDTO.ЗаписатьXML(З, Настройки); З.Закрыть(); Но как только я меняю ХранилищеСистемныхНастроек.Выбрать на бд.ХранилищеСистемныхНастроек.Выбрать появляется ошибка. {ВнешняяОбработка.ПереносДанныхПоOLEМатрица.Форма.Форма.Форма(134)}: Ошибка при вызове конструктора (ХранилищеЗначения) НСтр.Настройки = Новый ХранилищеЗначения(Выб.Настройки); по причине: Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент делал я и так. УдаленноеХранилище = бд.NewObject("ХранилищеЗначения",Выб.Настройки); Всеравно ComОбъект и никаких методов полей... вобще ничего. |
|||
12
noffkj
07.05.19
✎
16:42
|
||||
13
noffkj
07.05.19
✎
16:43
|
УдаленноеХранилище.Get() COMОбъект COMОбъект
|
|||
14
hhhh
07.05.19
✎
16:44
|
(11) Выб.Настройки это у вас объект другой базы. Зачем вы его в эту базу захерачиваете?
|
|||
15
sqr4
07.05.19
✎
16:47
|
Вам нужно из объекта З получить текст ХМЛ и его засунуть в процедуру загрузки той обработки
|
|||
16
Провинциальный 1сник
07.05.19
✎
16:48
|
(2) "ЗначениеИзСТрокиВнутр(ЗначениеВСтрокуВнутр(Выб.Настройки)) "
Неправильно, вот как надо: ЗначениеИзСТрокиВнутр(бд.ЗначениеВСтрокуВнутр(Выб.Настройки)) Но сработает только в случае идентичных конфигураций для предопределенных значений, перечислений и объектов, сопадающих по гуидам. Ну и всякие там таблицы-списки передаются хорошо. |
|||
17
noffkj
07.05.19
✎
16:49
|
(16) Неопределенно.
|
|||
18
noffkj
07.05.19
✎
16:50
|
(15) бд.XMLСтрока(УдаленноеХранилище) Получаю строку
AQHCBAAAAAAAAO+7v3siIyIsNjNhMmJkNWEtNjdlMy00MGQxLTg2ZGQtYzUyYTMx MjA5ZGEyLA0KezMsMTYsIkZvcm1TZXR0aW5nc19UREkiLCJ7MywNCnswfQ0KfSIs IlRvcExldmVsTS9fVERJIiwiezQsMSw2MzksMTY4LDEyODIsODczLDYzMSw2MzAs MCwwLDAsMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwLDAsQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPX0iLCJcNmE1ODFlOTUtMjk4Mi00OTNk LWFmNzYtNjk4ZjQ1NjVlZGZlXDFfVERJIiwiezQsNDI5NDk2NzI5NSwwLDAsMH0i LCJcODc1ZmFhMjQtYmE0Yi00NzMxLTlmMTEtN2E3Y2VhOTllZjE2XDE3X1RESSIs Ins0LDQyOTQ5NjcyOTUsMCwwLDF9IiwiXDg3NWZhYTI0LWJhNGItNDczMS05ZjEx LTdhN2NlYTk5ZWYxNlw0X1RESSIsIns0LDQyOTQ5NjcyOTUsMCwwLDF9IiwiXDk5 NGUwYWQ3LTczYTUtNGRlMC1hNjkyLWQ4NGMzNmRlOTIzZlwxNF9UREkiLCJ7NCw0 Mjk0OTY3Mjk1LDAsMCwwfSIsIlw5OTRlMGFkNy03M2E1LTRkZTAtYTY5Mi1kODRj MzZkZTkyM2ZcMTlfVERJIiwiezQsNDI5NDk2NzI5NSwwLDAsMH0iLCJcOTk0ZTBh ZDctNzNhNS00ZGUwLWE2OTItZDg0YzM2ZGU5MjNmXDdfVERJIiwiezQsNDI5NDk2 NzI5NSwwLDAsMH0iLCJcOWRkNTU3ODYtMTlkYy00YTk5LWI0MjEtMjM3Njk1MWRj MDMxXDRfVERJIiwiezQsNDI5NDk2NzI5NSwwLDAsMX0iLCJcYjc4ZjJlODAtZWM2 OC0xMWQ0LTlkY2YtMDA1MGJhZTJiYzc5XDExX1RESSIsIns0LDQyOTQ5NjcyOTUs MCwwLDF9IiwiXGI3OGYyZTgwLWVjNjgtMTFkNC05ZGNmLTAwNTBiYWUyYmM3OVwx N19UREkiLCJ7NCw0Mjk0OTY3Mjk1LDQsDQp7MCwwfSwNCnsxLDB9LA0KezMsMH0s DQp7NCwwfSwwLDF9IiwiXGI3OGYyZTgwLWVjNjgtMTFkNC05ZGNmLTAwNTBiYWUy YmM3OVw1X1RESSIsIns0LDQyOTQ5NjcyOTUsMCwwLDB9IiwiXGI3OGYyZTgwLWVj NjgtMTFkNC05ZGNmLTAwNTBiYWUyYmM3OVw2X1RESSIsIns0LDQyOTQ5NjcyOTUs MCwwLDB9IiwiXGI3OGYyZTgwLWVjNjgtMTFkNC05ZGNmLTAwNTBiYWUyYmM3OVw3 MF9UREkiLCJ7NCw0Mjk0OTY3Mjk1LDAsMCwwfSIsIlxmZmUyNmNiMy0zMjJiLTEx ZDUtYjA5Ni0wMDgwNDhkYTA3NjVcMTBfVERJIiwiezQsNDI5NDk2NzI5NSwwLDAs MX0iLCJcZmZlMjZjYjMtMzIyYi0xMWQ1LWIwOTYtMDA4MDQ4ZGEwNzY1XDRfVERJ IiwiezQsNDI5NDk2NzI5NSwwLDAsMH0ifQ0KfQ== |
|||
19
ам794123
07.05.19
✎
16:50
|
(0) такие вещи нужно делать не через СОМобъект, а через внешнее соединение
|
|||
20
sqr4
07.05.19
✎
17:05
|
Для типа объектам записьХМЛ, нужно использовать не сохранение а получить текст
ПОпробуй вот это изменить З.Закрыть(); На Перем = З.Закрыть(); И посмотри что там в ней |
|||
21
sqr4
07.05.19
✎
17:06
|
и не используй имя Перем
|
|||
22
sqr4
07.05.19
✎
17:23
|
и для З надо сделать так
З.УстановитьСтроку(); |
|||
23
sqr4
07.05.19
✎
17:25
|
ну а затем
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрXML); |
|||
24
sqr4
07.05.19
✎
17:44
|
да и вообще нахрена эта таблица значений нужна, можно и сразу в базу писать перегоняя через ХМЛ только настройки
|
|||
25
noffkj
15.05.19
✎
16:25
|
Получилось. Если кто то вдруг нарвется на эту тему выкладываю решение.
МенеджерНастроек = База.ХранилищеСистемныхНастроек; ТаблицаНастроек = ЧтениеНастроекИзХранилища(МенеджерНастроек, Юзер.Name); Для Каждого Настройка Из ТаблицаНастроек Цикл КлючОбъекта = Настройка.КлючОбъекта; КлючНастройки = Настройка.КлючНастроек; Попытка Значение = МенеджерНастроек.Загрузить(КлючОбъекта, КлючНастройки, , Юзер.Name); Сообщить(ТипЗНЧ(Значение)); Исключение Продолжить; КонецПопытки; //ОписаниеНастроек = МенеджерНастроек.ПолучитьОписание(КлючОбъекта, КлючНастройки, Юзер.Name); ХранилищеСистемныхНастроек.Сохранить(КлючОбъекта, КлючНастройки, ЗначениеИзСтрокиВнутр(База.ЗначениеВСтрокуВнутр(Значение)),, ПользовательИБ.Имя); КонецЦикла; |
|||
26
sqr4
15.05.19
✎
16:30
|
(25) получается уиды ну или что там вместо них совпали в базах, ну да и ладно, работает не трож)
|
|||
27
noffkj
15.05.19
✎
16:32
|
(16) был прав. Спасибо. Если бы я еще прочитал внимательно то не потратил бы зря неделю.
|
|||
28
lamme
15.05.19
✎
17:04
|
эм .. перенос данных между идентичными конфигурациями - не предлагать ?
|
|||
29
sqr4
15.05.19
✎
17:12
|
(28) а что там и настройки пользователей можно переносить?
|
|||
30
lamme
15.05.19
✎
17:20
|
так это вроде регистр сведений ...
в не уф - рс переноситься только с типом = хранилище не проверял. но вроде оно выгружается как двоичные данные в хмл |
|||
31
sqr4
15.05.19
✎
17:34
|
(30) Ну судя по коду, не хранилище, в той что у меня есть обработке нет эдакой штуки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |