Запись элементов по COM соединению, клиент-серверная база
Здравствуйте. Имеется внешняя обработка, которая создает COM соединение, и в целевой базе создает и записывает новые элементы справочников Контрагенты, Партнеры, Контактныелицапартнеров.
Если целевая база работает в файловом варианте - все работает отлично, никаких ошибок нет, элементы создаются правильно (вообщем косяков с реквизитами там нет)
Но если целевая база клиент-серверная, начинают лезть распространенные ошибки по этой теме, аля:
1) Не найден обработчик события
2) Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода
Точнее говоря, сначала всплывает первая ошибка, ее я решаю галочками "вызов сервера" и "сервер" на нужном модуле в целевой базе.
Потом появляется вторая, и с ней пока не разобрался.
В целевой базе в обработчике "ПриЗаписи" модуля объекта справочника Контрагенты вызывается функция:
В свою очередь в том справочнике идет что то вроде
На "Записать" встает ошибка мутабельного значения. В обоих справочниках в модулях стоят диррективы вначале
В теории вся работа ведется на сервере или внешнем соединении, клиент там вообще не участвует. А ошибка вроде бы возникает при передаче какой-нибудь формы с клиента на сервер.
Справочники эти не дописаны, конфигурация практически типовая, но это УФФ для УТИВСК, на стандартную торговлю там много чего наверчено сверху. Есть ли смысл обращаться в техподдержку разработчика? Или куда самому копнуть? Буду очень признателен за любые идеи.
Если целевая база работает в файловом варианте - все работает отлично, никаких ошибок нет, элементы создаются правильно (вообщем косяков с реквизитами там нет)
Но если целевая база клиент-серверная, начинают лезть распространенные ошибки по этой теме, аля:
1) Не найден обработчик события
2) Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода
Точнее говоря, сначала всплывает первая ошибка, ее я решаю галочками "вызов сервера" и "сервер" на нужном модуле в целевой базе.
Потом появляется вторая, и с ней пока не разобрался.
В целевой базе в обработчике "ПриЗаписи" модуля объекта справочника Контрагенты вызывается функция:
Справочники.КлючиРеестраДокументов.СоздатьОбновитьКлючРеестра(ЭтотОбъект, ДополнительныеСвойства.ЭтоНовый);
В свою очередь в том справочнике идет что то вроде
КлючОбъект = Справочники.КлючиРеестраДокументов.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(КлючОбъект, СтруктураПолейОбъекта);
КлючОбъект.Записать();
На "Записать" встает ошибка мутабельного значения. В обоих справочниках в модулях стоят диррективы вначале
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
В теории вся работа ведется на сервере или внешнем соединении, клиент там вообще не участвует. А ошибка вроде бы возникает при передаче какой-нибудь формы с клиента на сервер.
Справочники эти не дописаны, конфигурация практически типовая, но это УФФ для УТИВСК, на стандартную торговлю там много чего наверчено сверху. Есть ли смысл обращаться в техподдержку разработчика? Или куда самому копнуть? Буду очень признателен за любые идеи.
По теме из базы знаний
- База пользователей 1С (версия 0.7.1.16 от 21.08.2013)
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Отключение пользователей от базы и закрытие периода (УТ 10.3)
- Разработка и сценарное тестирование с Vanessa-ADD. Установка инструментов. Запись действий пользователя и выполнение сценариев
- Обзор полезных методов БСП 3.1.4
Найденные решения
Всем спасибо за идеи! Нашли простое решение, поэтому опубликую его здесь, вдруг кому позже поможет.
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:
При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.
В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:
При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.
В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Как- то встречался с таким поведением. У меня из модуля записи регистра, набор записей уходил в модуль "сервер" и там при "Для каждого ...Цикл ЗаполнитьЗначенияСвойств.... выпадала "бла бла мутабельного значения с клиента на сервер". Так же в файловой все было хорошо, и клиента подавно не было.
На партнерском ничего путного не нашлось. на v8@1c.ru ответа не дождался.
Победил только переписыванием ЗаполнитьЗначенияСвойств на "ручное заполнение свойств. Запись.Период = ЗаписьНабора.Период; Запись.Организация = ЗаписьНабора.Организация ........
На партнерском ничего путного не нашлось. на v8@1c.ru ответа не дождался.
Победил только переписыванием ЗаполнитьЗначенияСвойств на "ручное заполнение свойств. Запись.Период = ЗаписьНабора.Период; Запись.Организация = ЗаписьНабора.Организация ........
Выгрузить в ,xml/текст в этой базе и сразу же по сом соединению открыть загружать его в базе приемнике. Обмен типовых так работает? Весь исполняемый код по обработке объектов выполняется в базе, которой эти объекты принадлежат.
Подозреваю, что ЗаполнитьЗначенияСвойств() может работать некорректно, когда в аргументах есть COM-объект.
Думаю, придется ставить ОбменДанными.Загрузка = Истина и все блоки связанные с созданием сопутствующих объектов выполнять самому.
Думаю, придется ставить ОбменДанными.Загрузка = Истина и все блоки связанные с созданием сопутствующих объектов выполнять самому.
Всем спасибо за идеи! Нашли простое решение, поэтому опубликую его здесь, вдруг кому позже поможет.
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:
При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.
В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Сначала рассматривали возможность использовать ОбменДанными.Загрузка = Истина, но потом выяснилось следующее:
При появлении ошибки "попытка передачи мутабельного занчения" я недоглядел, что текст ошибки содержал еще и название функции. Это оказалось существенным упущением: глобальный поиск по той функции во всей конфигурации показал, что это функция-обработчик подписки на событие от встроенного в конфигурацию модуля телефонии.
В итоге установка галочек "вызов сервера" и "внешнее соединение" на общий модуль телефонии решила проблему. 1ая и 2ая ошибки из первого поста - это по сути своей одна и та же ошибка. Нужно было внимательнее смотреть подписки, связанные с данным справочником...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот