Запись элементов по COM соединению, клиент-серверная база

1. LosevI 24.09.18 02:39 Сейчас в теме
Здравствуйте. Имеется внешняя обработка, которая создает COM соединение, и в целевой базе создает и записывает новые элементы справочников Контрагенты, Партнеры, Контактныелицапартнеров.

Если целевая база работает в файловом варианте - все работает отлично, никаких ошибок нет, элементы создаются правильно (вообщем косяков с реквизитами там нет)

Но если целевая база клиент-серверная, начинают лезть распространенные ошибки по этой теме, аля:
1) Не найден обработчик события
2) Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода

Точнее говоря, сначала всплывает первая ошибка, ее я решаю галочками "вызов сервера" и "сервер" на нужном модуле в целевой базе.
Потом появляется вторая, и с ней пока не разобрался.
В целевой базе в обработчике "ПриЗаписи" модуля объекта справочника Контрагенты вызывается функция:

Справочники.КлючиРеестраДокументов.СоздатьОбновитьКлючРеестра(ЭтотОбъект, ДополнительныеСвойства.ЭтоНовый);


В свою очередь в том справочнике идет что то вроде

КлючОбъект = Справочники.КлючиРеестраДокументов.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(КлючОбъект, СтруктураПолейОбъекта);
КлючОбъект.Записать();


На "Записать" встает ошибка мутабельного значения. В обоих справочниках в модулях стоят диррективы вначале

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


В теории вся работа ведется на сервере или внешнем соединении, клиент там вообще не участвует. А ошибка вроде бы возникает при передаче какой-нибудь формы с клиента на сервер.

Справочники эти не дописаны, конфигурация практически типовая, но это УФФ для УТИВСК, на стандартную торговлю там много чего наверчено сверху. Есть ли смысл обращаться в техподдержку разработчика? Или куда самому копнуть? Буду очень признателен за любые идеи.
По теме из базы знаний
Найденные решения
5. LosevI 25.09.18 06:15 Сейчас в теме
Всем спасибо за идеи! Нашли простое решение, поэтому опубликую его здесь, вдруг кому позже поможет.
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:

При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.

В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dandykry 10 24.09.18 07:14 Сейчас в теме
(1) Как- то встречался с таким поведением. У меня из модуля записи регистра, набор записей уходил в модуль "сервер" и там при "Для каждого ...Цикл ЗаполнитьЗначенияСвойств.... выпадала "бла бла мутабельного значения с клиента на сервер". Так же в файловой все было хорошо, и клиента подавно не было.

На партнерском ничего путного не нашлось. на v8@1c.ru ответа не дождался.

Победил только переписыванием ЗаполнитьЗначенияСвойств на "ручное заполнение свойств. Запись.Период = ЗаписьНабора.Период; Запись.Организация = ЗаписьНабора.Организация ........
3. acanta 24.09.18 08:10 Сейчас в теме
Выгрузить в ,xml/текст в этой базе и сразу же по сом соединению открыть загружать его в базе приемнике. Обмен типовых так работает? Весь исполняемый код по обработке объектов выполняется в базе, которой эти объекты принадлежат.
4. herfis 499 24.09.18 11:17 Сейчас в теме
Подозреваю, что ЗаполнитьЗначенияСвойств() может работать некорректно, когда в аргументах есть COM-объект.
Думаю, придется ставить ОбменДанными.Загрузка = Истина и все блоки связанные с созданием сопутствующих объектов выполнять самому.
5. LosevI 25.09.18 06:15 Сейчас в теме
Всем спасибо за идеи! Нашли простое решение, поэтому опубликую его здесь, вдруг кому позже поможет.
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:

При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.

В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот