Добрый день!

При обновлении конфигурации столкнулись со следующим моментом:
- Старая конфигурация работала в режиме совместимости "с 8.2.13";
- Новую конфигурацию перевели на режим совместимости "Не использовать".

- Все хорошо бы вроде, но в старой конфе используется конструкция типа

```1c
    Новый ХранилищеЗначений(Переменная)
```

При этом Переменная имеет тип COMОбъект. В старой версии эта конструкция работает, а в новой выкидывает ошибку. Собственно, эта конструкция относится к защите одного из модулей конфигурации, и он не находится на поддержке у производителя. Не хотелось бы в нее влезать.

Так вот вопросы:
1. Это был баг в режиме совместимости, что COMОбъект мог сериализоваться?
2. Что мы приобретаем, включив режим совместимости "Не использовать" (8.2.14)?
---
Вы можете поместить структуру в параметр сеанса с типом значения "Произвольное".
То есть, по сути, сейчас у вас есть:

```1c
    КомпонентаЗащиты = Новый ХранилищеЗначений(Переменная);
    КЗ = КомпонентаЗащиты.Получить();
```

А вы сделаете

```1c
    ПараметрыСеанса.КомпонентаЗащиты = Переменная;
    КЗ = ПараметрыСеанса.КомпонентаЗащиты;
```

Сделать можно поиском и заменой значений.

При отказе от совместимости с 8.2.14 вы теряете, например, механизм общих реквизитов и разделения данных - это основная "фишка" релиза. Еще там есть поддержка новых функций СКД.

Поподробнее, что у вас с выходом за пределы размерности?
---
AlX0id,
1. Это был баг в режиме совместимости, что COMОбъект мог сериализоваться?
слова все умные повторяют... 1С ляпнет - "сериализация", и остальные за ней, даже не зная, что такое "сериализация", повторяют с умным видом - умные слова, а понимая под "сериализовать" тупое раскладывание объекта в строку.
Если бы 1С придерживалась значений терминов, а не брала готовые названия и "натягивала" их на свою ж для своих экспериментов, смущая умы многочисленных студентов, то и вопросов бы подобных не было: есть механизм сериализации - объекты сериализуются, нет - не выгружаются.
А тут - 1С просто выкинула хранение COM-объекта из ХранилищеЗначений, посчитав, что и "так слишком много возможностей" (а по-правде - огребла массу ошибок из-за представлений и битых выгрузок COM-объектов вследствии непродуманности всей схемы "типа объектная платформа", и таким кардинальным способом решила закрыть огромный пласт проблем: нет выгрузки - нет проблем).
(10) AlX0id,
Тут основная проблема в том, что мне очень сильно не хочется вмешиваться в код защиты сторонних разработчиков :( Мало ли что еще там всплывет..
да ничего там не всплывет. Делайте теперь аналоги COM-объектов в базе-приемнике, ищите соответствия COM-объектам базы-источника, и "сериализуйте" их уже в этой базе на здоровье, восклицая "ай-да я! ай да 1С! вот ведь так!" :D
---
AlexO, сложно наверное работать с 1С и так люто ненавидеть?

И что вы, если не секрет, понимаете под понятием сериализация? Безусловно что-то не тупое, а острое.
---
juntatalor,
сложно наверное работать с 1С и так люто ненавидеть?
вот когда будете именно РАБОТАТЬ с 1С, да чтоб действительно автоматизировать сектора деятельности фирм-предприятий, а не графики "повысим-углубим" рисовать, да чтоб пользователям было удобно, а не как сказала 1С, да чтобы работало качественно и надежно, а не декларируемо и абы как - вот тогда и поговорим.
А не задачки тестовые решать да семинары посещать.
И что вы, если не секрет,
не секрет, который раскрыт выше - что и как и зачем.
---
juntatalor,
сложно наверное работать с 1С
кстати, нет, не сложно.
Потому что я знаю, что это за херня, и сразу делаю так, как мне нужно, а не как каким-то там неведомым "методистам 1С".
И потому, что знаю, чего ожидать от этого "г", и насколько оно получится "конфеткой".
---
А что извлекается потом из хранилища? На платформе 8.2.13
---
kasper076,
А что извлекается потом из хранилища? На платформе 8.2.13
Извлекается и помещается туда компонента защиты, то бишь, ее com-объект..

(5) andrewks,
я так думаю, в то место, где он извлекается из ХЗ, и надо перенести код, предшествующий помещению его в ХЗ (т.е. код, где этот объект создаётся)
Предшествует подключение к менеджеру лицензий, а это ой, какая не быстрая процедура.. и если ее каждый раз выполнять при попытке получения оного com-объекта.. Умру либо я, либо пользователи )
---
AlX0id, так, может, тогда в параметры сеанса закинуть?
---
andrewks,
Ну там как.. На дубе утка, в утке яйцо..
Com-Объект в структуре, структура в хранилище, а хранилище в параметре )
Если выносить com-объект из структуры, придется основательно перелопатить чужой код защиты, а этого не хотелось бы делать по двум причинам:
1. Все же это код защиты - не комильфо в нем копаться..
2. Там достаточно много обращений к этой структуре - соответственно, нужно порядком времени, чтобы это все отладить..

Мне все же интереснее, что же я теряю при отказе от режима совместимости 8.2.14 - так как, как оказалось чуть позднее опубликования данного вопроса - вылезла еще одна ошибка с "выходом за пределы размерности", которая так же решается отключением режима совместимости :(
---
Вы можете поместить структуру в параметр сеанса с типом значения "Произвольное".
То есть, по сути, сейчас у вас есть:

```1c
    КомпонентаЗащиты = Новый ХранилищеЗначений(Переменная);
    КЗ = КомпонентаЗащиты.Получить();
```

А вы сделаете

```1c
    ПараметрыСеанса.КомпонентаЗащиты = Переменная;
    КЗ = ПараметрыСеанса.КомпонентаЗащиты;
```

Сделать можно поиском и заменой значений.

При отказе от совместимости с 8.2.14 вы теряете, например, механизм общих реквизитов и разделения данных - это основная "фишка" релиза. Еще там есть поддержка новых функций СКД.

Поподробнее, что у вас с выходом за пределы размерности?
---
juntatalor,
Могу - тут спора нет. Но как я уже говорил - защита не моя. И часть кода зашита на ключе - что может помешать варианту поиска с заменой..
Тут основная проблема в том, что мне очень сильно не хочется вмешиваться в код защиты сторонних разработчиков :( Мало ли что еще там всплывет..

А по поводу размерности - ошибка подобная: http://www.forum.mista.ru/topic.php?id=404572
Добавили в реализацию пару реквизитов - и все..
Удаление узлов обмена не помогает..

В принципе, без общих реквизитов и разделения данных я проживу.. Да и клиенты тоже :)
Насчет новых функций СКД - сомневаюсь, что они пропадут в режиме совместимости 8.2.13.. Хотя тут надо тестить..
---
COMОбъект в хранилище? однако...
---
а что потом делают с этим "нечто" из хранилища? это же полная профанация
---
я так думаю, в то место, где он извлекается из ХЗ, и надо перенести код, предшествующий помещению его в ХЗ (т.е. код, где этот объект создаётся)
---
что-то мне ветка напомнила сказочное "поди туда, не знаю, куда, принеси то, не знаю, что"
---
что это за херня
А мне вот через семь лет работы с ней, сей факт начинает только открываться..
---
По первому вопросу:
В том что com-объект можно было сохранить в хранилище значения (сериализировать) - это ошибка в 1С исправленная при работе без режима совместимости. Более подробно можно найти в этой ветке партнерского форума http:_//partners.v8.1c.ru/forum/thread.jsp?id=1058206#1058206
Если кратко:
 - Как тогда хранить COM Объект на сервере?
 - Никак. Скажем так - закрыли недокументированную возможность ввиду неоднозначности ее работы.
Собственно, на форуме это обсуждалось.
 Пример:
 Сервер1 - ОС Windows
 Сервер2 - ОС Linux
Что делать, если управление получит Сервер2?
По второму:
Из глобального: использование общих реквизитов и разделителей. Если нужны частности то лучше сюда http:_//downloads.v8.1c.ru/content/Platform/8_2_14_540/V8Update.htm

p.s. В ссылках для работы убрать символ подчеркивания
---
SkorikA,
Я видел эту тему на партнерском форуме.
Но, во-первых, там речь о 8.3, а у меня 8.2.15.318, о которой там как раз и написано, что есть возможность поместить com-объект )
Во-вторых, речь о сериализации именно на сервере. В моем случае она ругается, как на сервере, так и не на сервере.
---
Хм..
А переписать код на использование функций с повторным использованием нельзя?
Например как в БСП ОбменДаннымиПовтИсп.ПолучитьВнешнееСоединениеДляУзлаИнформационнойБазы

По ошибке: а какой текст собственно выдается? У меня просто при десериализации получается "Неопределено" на платформе 8.2.15.318 в режиме совместимости 8.2.13
---
SkorikA,
А переписать код на использование функций с повторным использованием нельзя?

По практике - переписать можно все, что угодно. Но так как это не мои работодатели, а клиенты - стоимость оной переписки для них будет не сильно низка. По крайней мере, не ниже стоимости решения о том, чтобы не выключать режим совместимости.

По ошибке: а какой текст собственно выдается? У меня просто при десериализации получается "Неопределено" на платформе 8.2.15.318 в режиме совместимости 8.2.13
"Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент" - только на английском.

В общем, поковырявшись еще на форуме партнеров, нашел следующую фразу:
Данное изменение описано в файле "Отличия текущей версии от предыдущих и особенности перехода"
 downloads.v8.1c.ru/conte... »»

"Не поддерживается помещение в хранилище значения данных, которые не поддерживают сериализацию. В режиме совместимости поведение не изменилось."
Как-то так - раньше можно было пихать чо угодно, а теперь только сериализуемое.
---
В общем, для себя выводы сделал.
Бонус отдаю juntatalor за разъяснение того, что теряю в режиме совместимости.
Остальные активные участники темы могут обратиться за "спасибом" в личку - отсыплю пару см )