Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE #640482


#0 by alexei_aa
При переходе с 1С 7.7 на 8.2 пришлось переписывать связь с внешним приложением. Интеграция с 1С 7.7 работает замечательно и много где расписана, а вот с 8.2 дела обстоят хуже – информации практически нет. Но все же: запуск 1С 8.2 реализован, чтение данных из 1С 8.2 реализовать тоже удалось. А вот с записью возникли сложности, поэтому прошу помощи. Произвожу создание и запись контрагентов следующим способом: var OneSv8Obj, Ware, ObjForm: OleVariant; На последнюю строчку ругается: «Ошибка при выполнении обработчика – ‘ПередЗаписью’. Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода Обмен1СКЗБухгалтерия30ПередЗаписью » Сами данные в 1С из внешнего приложения передаются. Это можно видеть, если запустить форму следующим способом: Всю голову сломал – как побороть не знаю. По всей видимости какие-то настройки 1С. Help!!!
#1 by Спящая
как одно из предположений записывать непосредственно элементы справочников в процедуре с прямым указанием &НаСервере
#2 by alexei_aa
Дело в том, что записывать в 1С придется не только в справочники, но и в другие места. Например создавать акты, счета и счета-фактуры. Просто начал с контрагентов. Создавать для этого дополнительные процедуры на сервере не совсем логично.
#3 by Спящая
ну так достаточно одной функции для записи объекта на сервере и просто к ней обращаться при записи любого объекта что-то типа такого :
#4 by rinatru
не взлетит. скорее всего там подписка на событие срабатывает при записи. копать надо там
#5 by alexei_aa
Подписка срабатывает, даже знаю какая: "Обмен1СКАМИНЗарплатаБухгалтерия30ЗарегистрироватьИзменение" как раз на событие ПередЗаписью. В обработчике события у этой подписки "ОбменДаннымиСобытияБП.Обмен1СКЗБухгалтерия30ПередЗаписью". Объект, Отказ, И ОтключитьМеханизмРегистрацииОбъектов = Истина Тогда И РегистрироватьОбъектНаУзлеОтправителе = Истина Тогда Куда дальше копать?
#6 by Hmster
ты к 1С как конектишься? была похожая трабла с УТ11. смотреть на галки общего модуля куда ссылается данная подписка
#7 by alexei_aa
Коннект вот такой: Result.Connect('Srvr="Server";Ref="BaseName";Usr="User1C";Pwd="Password1C"'); Где какие галки смотреть?
#8 by Hmster
фишка в том что у свойства общего модуля не стоит/ стоит не та галка из возможных (сервер, клиент, внешнее соединение)
#9 by Hmster
с другой стороны ты как приложение отдельное запускаешь и этого быть не должно
#10 by Hmster
возможность редактирования включал?
#11 by Hmster
строка соединения вроде бы такая же конвертнешь в свое из 1С сам
#12 by Hmster
отличия в соединении: твой вариант - открывается как приложение вариант - открывается как внешнее соединение
#13 by alexei_aa
В общих модулях самих модулей слишком много и где какие галки нужны не совсем понятно. Соединение через COM тоже пробовал - там еще больше сложностей. Через OLE уже реализовано чтение необходимых данных.
#14 by Hmster
ОбменДаннымиСобытия ОбменДаннымиСобытияБП какие галки стоят у общих модулей? возможность вносить изменения включал ?
#15 by Hmster
попробуй в строке соединения указать параметр подключения в управляемом приложении
#16 by Hmster
попробуй на этих модулях поставить клиент
#17 by alexei_aa
ОбменДаннымиСобытия и ОбменДаннымиСобытияБП стоят галки Клиент (управляемое приложение), Сервер и Внешнее соединение. Еще стоит галка "Вызов сервера". Пробую с RunModeOrdinaryApplication и RunModeManagedApplication
#18 by alexei_aa
"Параметр подключения в управляемом приложении" не влияет на работу в данном случае - ошибка осталась.
#19 by acsent
у модуля с подпиской не все нужные галки стоят
#20 by Hmster
управляемое и обычное приложение когда работают с клиент сервером по разному относятся к объектам. в обычном приложении сервер не понимает объекты и вываливается. что самое интресное пробовал эксперимент. открыл в базе 2 формы: обычную и управляемую. пробовал записать обект. обычная форма спотыкалась на подписке событий как у тебя а управялемая нормально работала.
#21 by acsent
Толстый клиент галка нужна
#22 by Hmster
галка из есть ?
#23 by alexei_aa
Есть. Запускается именно толствый клиент. Пробовал в разных режимах - обычный и управляемый. Тонкого клиента можно запустить через 'V82c.Application', но там даже чтение не реализовать.
#24 by Hmster
понавключают тут, а потом не работает! ваша ошибка есть дело рук того кто включил обычное приложение. юзать желательно V82.COMConnector. работает намного быстрее.
#25 by Новиков
ответ в тронул дедушку Новикова, можно сказать, до слез ;)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С