Проблема с OLE #624130


#0 by SyncMaster7
Платформа 8.2.15.289. Конфигурация УПП 1.3.28.1. Необходимо по OLE перекинуть данные по договорам из обной базы в другую. Конфигурации одинаковые и без изминений. Пишу внешную обработку. Создаю коннект. Все работает. Данные прочитать из второй базы можно. Но как только я пробую создать в ней новый элемент - получаю ошибку: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (СоздатьЭлемент)    СпрДоговорыКонтрагентов.СоздатьЭлемент; по причине:Произошла исключительная ситуация (1C:Enterprise 8.2.15.289): {ОбщийМодуль.ОбщегоНазначения.Модуль(29,2)}: Переменная не определена (ОбщегоНазначенияКлиентСервер) Иду по ошибке - там процедура - ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Таблица2, ТаблицаРезультат); Зашел в ОбщийМодуль.ОбщегоНазначения там нахожу данную процедуру ДополнитьТаблицу. К тому же она - Экспорт. Вот текст: В чем проблема?
#1 by Лоботряс
7-рошник?
#2 by бомболюк
ну значит этот общий модуль недоступен для внешнего соединения, чего ж тут непонятного то.
#3 by Лоботряс
Не. Вот сюда смотри
#4 by Галахад
Не проще читать данные по оле, а писать уже нормально, в текущую базу?
#5 by SyncMaster7
Так везде и всюду (начиная с книжек Радченко или Габеца) приводят именно такой пример текста, как у меня. И в 8.1 у меня оно работало. Да и с 7-й проблем не было. Что предпринять то, вроде задачка совсем простая, а не получается.
#6 by DrShad
а что там не так?
#7 by DrShad
и именно со справочником договоров у Радченко или Габеца дословно так?
#8 by SyncMaster7
Надо именно из базы, где запускается обработка данные по договору скинуть во вторую базу. То есть, создавать новый элемент справочника надо именно там.
#9 by бомболюк
процедура этого модуля вызывается где нить в модуле объекта. Объект создается во внешнем соединении, а модуль наверняка для внешнего соединения недоступен. Проверь, есть там галка соответствующая?
#10 by SyncMaster7
Галка для работы с внешним соединением есть.
#11 by SyncMaster7
В книжках приводят примеры для справочника Организации и Номенклатура. Но я для примера и их пробовал - та же ошибка.
#12 by бомболюк
Подписки на события тоже проверь
#13 by SyncMaster7
Кстати, если поменять  V8 = Новый COMObject ("V82.COMConnector"); на V8 = Новый COMObject ("V82.Application"); и грузить полное приложение, то ошибка выскакивает уже другая: {Форма.Форма.Форма}: Значение не является значением объектного типа (Справочники)    СпрДоговорыКонтрагентов = Соединение.Справочники.ДоговорыКонтрагентов;
#14 by бомболюк
в Application и COMConnector по разному соединение организуется. Сделай не Соединение = V8.Connect ("Srvr =""appl-srv""; Ref = ""it"";  Usr =""User"";  Pwd = ""123"""); а
#15 by Галахад
Гм. ОбщегоНазначенияКлиентСервер <> ОбщегоНазначения Или в описании ошибки ошибка?
#16 by Лоботряс
Не рабочий код
#17 by DrShad
почему?
#18 by бомболюк
гыыы, точняк
#19 by SyncMaster7
Сорри, конечно модуль ОбщегоНазначенияКлиентСервер, а не ОбщегоНазначения. И галка на внешнее соединение у него не стоит. Поскольку конфу трогать нельзя - какие есть варианты обхода?
#20 by Лоботряс
Б_ть, потому что он менеджеру присваивает значения а не элементу...
#21 by Галахад
Покажи рабочий.
#22 by Галахад
А, точно.
#23 by Лоботряс
#24 by DrShad
точно, пора на свалку :)
#25 by Лоботряс
Я ж говорю - семерочник...
#26 by Лоботряс
Не в обиду:))
#27 by SyncMaster7
Да фигня вопрос. Просто всю голову сломал с OLE, а на присвоения уже не обращал внимание. Вернул V8 = Новый COMObject ("V82.COMConnector"); Вставил код Лоботряса - получил ошибку {Форма.Форма.Форма}: Поле объекта не обнаружено (Справочники)    СпрДоговорыКонтрагентов = Соединение.Справочники.ДоговорыКонтрагентов;
#28 by DrShad
ты же божился что у Габеца слово в слово
#29 by Лоботряс
Не могет быть... А соединение точно подключилось? Или у тебя в подключаемой конфе нет справочников...
#30 by SyncMaster7
Габец Простые примеры разработки стр.348. Про коннект опускаю - там к файловой базе. Далее - Далее идет обработка выборки и в ней:
#31 by DrShad
ну и совсем не похоже на то что было у тебя
#32 by SyncMaster7
Точно подключилось. Я могу из справочника ДоговораКонтрагентов получить любые данные. Может тут собака порылась в SQL базе, а не в файловой?
#33 by DrShad
да разницы нет
#34 by hhhh
ты там точно в полуобморочном состоянии? Лоботряс тебе V8= кинул для Application, а ты его в В COMConnector присобачиваешь.
#35 by Лоботряс
А как получаешь?
#36 by SyncMaster7
Да я уже понял, что накосячил с присвоением. Поправил, но ошибка все равно возникает. Теперь с самим справочником. А если вернуть Application, то получаю ошибку {Форма.Форма.Форма}: Поле объекта не обнаружено (ДоговорыКонтрагентов)    СпрДоговорыКонтрагентов = Соединение.Справочники.ДоговорыКонтрагентов;
#37 by Галахад
Ты целиком код показывай. С соединением.
#38 by SyncMaster7
Да я уже все варианты перебираю. И с COMConnector и с Application. Но вообще-то надо для COMConnector сделать.
#39 by SyncMaster7
Вот полный код:
#40 by SyncMaster7
Какие-нибудь идеи еще будут? Может это трабл с платформой - и стоит перейти на 16? Или как?
#41 by Галахад
Покажи как получаешь:
#42 by SyncMaster7
Ок Найдена организация с кодом 000000020 ее ИНН 5008053412 Найден договор с кодом 000021128 Химмашстарт
#43 by Галахад
#44 by SyncMaster7
Естественно я попробовал данный код перед отправкой предыдущего сообщения. И получаю ошибку с которой начинал данную тему: {Документ.Договор.Форма.ФормаДокумента.Форма}: Ошибка при вызове метода контекста (СоздатьЭлемент)    НовыйДоговор = МенеджерДоговораУПП.СоздатьЭлемент; по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.15.289): {ОбщийМодуль.ОбщегоНазначения.Модуль(29,2)}: Переменная не определена (ОбщегоНазначенияКлиентСервер) Я уже понял, что модуль ОбщегоНазначенияКлиентСервер не имеет галочки Внешнее соединение. Вопрос прежний - как это обойти без изменения конфигурации?
#45 by hhhh
ну проанализируй при каких условиях вызывается ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Таблица2, ТаблицаРезультат); и сделай, чтобы эти условия не возникли.
#46 by hhhh
может там константа какая-нибудь есть типа "ДополнятьТаблицы"
#47 by Лоботряс
+ Причем вызывается эта процедура откуда-то из модуля объекта документа. Из обработки заполнения наверное?
#48 by SyncMaster7
Ради интереса установил галку ОбщегоНазначенияКлиентСервер у и получил очередную ошибку {Документ.Договор.Форма.ФормаДокумента.Форма}: Ошибка при вызове метода контекста (Записать)    НовыйЭлемент.Записать;     по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.15.289): Не удалось записать: "Договор контрагента"!
#49 by Лоботряс
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>) ОбработкаЗаполнения (Filling) ... Возникает при вводе элемента справочника на основании, а также при выполнении метода Заполнить, при вводе на основании, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов элемента справочника на основании переданного значения.
#50 by Лоботряс
Но тут ведь вроде как раз неинтерактивный ввод нового. Непонятно...
#51 by SyncMaster7
Однозначно. Создается именно новый элемент. Без всякого основания.
#52 by zladenuw
ну так есть подписки на события. может там участвует твой объект. вот он и лезет бог знает куда
#53 by Лоботряс
А если это неинтерактивный ввод, то откуда скажите мне формы взялись которые в?
#54 by SyncMaster7
Это из первой конфигурации. В ней на форме документа Договор есть кнопка, при нажатии на которую и должен быть записан договор во вторую конфигурацию.
#55 by Галахад
Чо-та не понял, почему же другую конфигурацию нельзя менять, если эту можно?
#56 by SyncMaster7
По хорошему обе конфы менять нельзя. Просто ради проверки в конфе приемнике я установил галочку на модуль ОбщегоНазначенияКлиентСервер и ошибка эта исчезла. Появилась следующая - с записью нового элемента справочника ДоговораКонтрагентов.
#57 by Andreyyy
СпрДоговорыКонтрагентов.ОбменДанными.Загрузка = Истина;
#58 by Лоботряс
+1 можно попробовать...
#59 by SyncMaster7
{Документ.Договор.Форма.ФормаДокумента.Форма}: Поле объекта не обнаружено (ОбменДанными)    СпрДоговорыКонтрагентов.ОбменДанными.Загрузка = Истина; Хотя хелп такой метод у справочника показывает. Но видимо для справочника из другой конфигурации по ОЛЕ не работает.
#60 by Лоботряс
НовыйЭлемент.ОбменДанными.Загрузка = истина;
#61 by Лоботряс
опять же
#62 by SyncMaster7
Заработало. Большое спасибо. Остался только вопрос с галочкой на ОбщегоНазначенияКлиентСервер.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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