#0
by developer1
Добрый день, возникла следующая проблема. Имеется модуль с простыми функциями типа отметить документ на удаление по номеру или провести документ по номеру. Проблема с методом .ПолучитьОбъект - при вызове функции ПометитьРасходнаяНакладная через COM из .NET приложения вылетает исключение, которое не перехватывается в теле функции ПометитьРасходнаяНакладная и более того некорректно сериализуется. То есть на стороне .NET приходит объект Exception с указателями-null'ами, не несущий никакой информации. Что интересно: - если эти функции вызываются непосредственно из 1С, то все прекрасно работает. - если изменить тип документа с РасходнаяНакладная на некоторый другой, то все выполняется корректно. Есть еще как минимум один тип, для которого это также не работает. Заметить отличия этих типов документов от других, с которыми все ок, не удалось - гарантируется, что сам вызов через COM осуществляется, если убрать проблемный вызов .ПолучитьОбъект, то вызов отрабатывает корректно -COM соединение выполняется под тем же аккаунтом, под которым функция корректно работает при выполнении через 1С:Предприятие -другие методы типа .ПолучитьФорму этой же ссылки работают корректно Итого: непонятная ошибка, которая не ловится trycatch и возникает при вызове метода .ПолучитьОбъект на ссылках документа типа РасходнаяНакладная при соединении через COM. .NET код: Могу выложить код GetConnection если необхдимо
#2
by developer1
Гарантируется, что объект с заданным номером в базе есть и, повторюсь, этот код с такими же параметрами корректно отрабатывает будучи вызванным через 1С Предприятие. Да и наверняка тогда поймалось бы исключение в самой функции ПометитьРасходнаяНакладная
#3
by Serginio1
Посмотри подписчики при записи. И посмотри стоит ли у этих модулей галка внешнее соединение
#4
by Serginio1
Или смотри модуль РасходнаяНакладная, что там вызывается при инициализации в модуле расходной накладной
#5
by developer1
Спасибо за помощь, но не вижу каких-либо проблем. Насчет ПриЗаписи, причем оно тут? Галка "Внешнее соединение" установлена, однако и с ней и без нее эффект одинаковый. Работает с другими документами и другими методами и без "внешнего соединения". В модуле РасходнаяНакладная вообще нет никаких функций, связанных с инициализацией (или я их не вижу). Вообще чисто гипотетически как может возникнуть описанная ситуация? 1) не ловится исключение в ПометитьРасходнаяНакладная 2) работает через 1С Предприятие 3) не работает через COM и только для некоторых типов документов
#6
by hhhh
НайтиПоНомеру(Номер) - это гарантированно не найдет. Пиши не через задницу, а по-человечески НайтиПоНомеру(Номер, Дата)
#7
by developer1
четвертый день вижу 1С, НайтиПоНомеру(Номер) находит то, что нужно, повторюсь, код работает будучи вызванным через 1С Предприятие. Поискал по коду 1С - почти всюду НайтиПоНомеру используется без второго аргумента. Из того, что сейчас прочитал - второй аргумент целесообразен при использовании периодичной нумерации (так?). В свойствах РасходнаяНакладная Периодичность "Непериодический". Готов попробовать тем не менее. Не представляю только какую дату указывать. Дата?
#8
by Serginio1
Не функций а кода который вызывает функции из других модулей. Код инициализации это код после последней процедуры функции модуля
#9
by developer1
Спасибо за пояснение. В модуле объекта РасходнаяНакладная кроме процедур и одной глобальной переменной нет никакого другого кода.
#10
by Serginio1
Сделай проверку на неопределено Если док=неопределено Тогда возврат "Не найден документ"; а на строчке документ=Док.ПолучитьОбъект; в отладчике "Шагнуть В";
#11
by developer1
Изменил: Запустил под отладчиком привязав вызов ПроведениеДокументов.ПометитьРасходнаяНакладная("00008121",Истина,Ложь); к одному из событий интерфейса. В результате ПолучитьОбъект отработал корректно. При "Шагнуть В" вход внутрь не выполнился. Я не знаю типично ли это для системных вызовов в 1С или мне нужно изменить какие-то настройки отладчика. Проверил и вызов через COM - все то же исключение, которое даже не удается идентифицировать.
#13
by developer1
не понимаю смысла. я и так знаю какой оператор приводит к ошибке, как мне мои же сообщения в журнале должны помочь? более реально было бы запустить отладчик удаленно, но в моей ситуации на одном физическом сервере запущены две базы (Dev и Production). Как я понимаю, переключение сервера в режим Debug приведет к замедлению в работе Production базы
#14
by Serginio1
Ну хотя бы в Исключение ЗаписьЖурналаРегистрации("ПометитьРасходнаяНакладная", А откуда знаешь, если отладчиком не пользуешься?
#15
by developer1
первый пост, объяснил все там. Как до этого дошел - опытным путем, вызывая разные методы вместо .ПолучитьОбъект и проверяя другие типы документов (не РасходнаяНакладная). Возвращается "Ok" (ну или я ставил Возвраты сразу до или после оператора с .ПолучитьОбъект). Если документ не найден, вызывается некорректный метод или не указаны обязательный аргументы (что я только не делал) и т.д. и т.п., то исключение в ПометитьРасходнаяНакладная перехватывается и мне на .NET клиент возвращается ошибка "Описание='" + Инфо.Описание + "'"; Еще раз - ошибка в .ПолучитьОбъект для документа типа РасходнаяНакладная при соединении через COM. Это ОЧЕНЬ странно и именно поэтому я пишу все это. Я не вижу никакого смысла имея Исключение писать
#16
by hhhh
ну разобрались же. Дату надо указать. Почему странно? Детский сад. ведь понятно же и во всех букварях написано, что по COM надо все параметры указывать, а иначе будет параметр NULL.
#18
by Serginio1
Не пиши. А вообще то всегда хорошо регистрировать ошибки и знать почему и когда они произошли. При этом ошибка у тебя не возвращается. Хозяин барин.
#20
by developer1
добавил, проверил, предсказуемо в журнал ничего не добавилось. Проблема все та же - невозможно даже перехватить КОНКРЕТНО ЭТО исключение в 1С, соответственно ничего не возвращается и не пишется в журнал. Писал выше, что другие ситуации типа некорректного метода или некорректных параметров отлично перехватываются и на стороне .NET'а (даже) я получаю соответствующую диагностику. Почему так - не знаю, это и хотел понять малой кровью.
#25
by developer1
заметил появление записи в журнале "Описание='Error calling context method (ПолучитьОбъект)" появляется она далеко не всегда и не сразу после вызова (то есть я уже получил результат, а запись в журнале появляется с приличной задержкой). Получается, Ваша правда. Что можно об этом сказать? Насчет ТИИ - узнал об этом только сейчас, запустил тестирование и, может быть, зря - уже несколько минут конфигуратор висит.
#29
by developer1
"Описание='Error calling context method (ПолучитьОбъект)'; 'ОбщийМодуль.ПроведениеДокументов.Модуль'; 22;" Строка 22 это документ = ссылка.ПолучитьОбъект;
#30
by Славен
тебе уже сказали нихрена он сылку не получил, без указания периода найтипономеру не работает по ком
#31
by developer1
а вот это сработало, вопрос как быть дальше? в интерфейсе 1C Предприятия этот документ есть и без каких-либо видимых проблем, также наблюдаю его в базе уже давно исправил, так что мимо
#34
by Serginio1
Установи в конфигураторе ПараметрыМодулипроверка галку напротив внешнее соединение. И сделай проверку модуля или проверка модулей в меню конфигурация
#35
by developer1
Я ошибся с утверждением насчет ЗначениеЗаполнено(ссылка). Все нормально и через COM. сделал, в модуле РасходнаяНакладная нашлась ошибка {Документ.РасходнаяНакладная.МодульОбъекта(201,98)}: Переменная не определена (глВалютаУпр) глВалютаУпр как я понял - глобальная переменная, устанавливаемая при запуске приложения строка 201 с ошибкой это в Процедура ОбработкаПроведения вызов которой так и не осуществляется, ошибка в ПолучитьОбъект - раньше, может ли все равно это быть причиной? Заметил, что подобной ошибки для "Толстый клиент" нет. И тем не менее. Как-то удалось получить подробную ошибку в журнале {ОбщийМодуль.ПроведениеДокументов.Модуль}: Error calling context method (ПолучитьОбъект) документ = ссылка.ПолучитьОбъект; because: No element selected! то есть проверка ЗначениеЗаполнено(ссылка) проходит, а дальше не удается получить объект.
#36
by developer1
Так, это все в модуле "Модуль обычного приложения", а в "Модуль внешнего соединения" ничего нет. Режим запуска приложения - "Обычное приложение". В этом причина?
#38
by Serginio1
Для интереса сделай так #Если НЕ ВнешнееСоединение Тогда Запрос.УстановитьПараметр("Курс",(КурсДокумента/КратностьДокумента)/ПолучитьКурсКратностьВалюты(глВалютаУпр,Дата)); #иначе Запрос.УстановитьПараметр("Курс",(КурсДокумента/КратностьДокумента)/ПолучитьКурсКратностьВалюты(Константы.ВалютаУправленческогоУчета.Получить,Дата)); #КонецЕсли
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Ошибка SQL: Де
- .Net: Получить картинку из 1С v8 в .NET через COM соединение
- Есть ли разница в апи V81.ComConnector и V82.ComConnector?
- V82.application не работает вместо V82.COMConnector
- CreateObject("V82.COMConnector"). Не удается создать объект
- Ошибка при вызове функции через V82.COMConnector
- Ошибка при вызове web-сервиса 1C 8.3 (Внутренняя ошибка. Ошибка инициализации б)
- Ошибка "Невозможно создание объекта контейнером ActiveX: V82.COMConnector"
- Ошибка при вызове метода контекста (Записать) Ошибка при выполнении файловой опе
- Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка данных XML
- Ошибка при вызове конструктора (ComОбъект): Ошибка при выполнении приложения-сер
- Ошибка при вызове метода контекста ПолучитьОбъект()
В этой группе 1С
- СКД: как вывести значения двух ресурсов в одну колонку по группировке?
- Запрос по нескольким значениям одного и того же поля
- ут 11. отправляю письмо не уходит
- Импортируемый пакет типов 'http://www.w3.org/2005/05/xmlmime' не определен
- 1С БГУ расширение файла при экспорте платежек PPA вместо PP9
- Как узнать текущую ширину поля в управляемой форме?
- Установить текущую строку в Динамическом списке
- v7: Параметризированный запрос
- (1С 8.3) СКД не отображает результат, хотя данные есть
- БП 2.0 Как попадают расходы по страховым в КУДиР? ЗП ведем в БП.
- БП 2.0. Реализация не попадает в книгу продаж
- УТ 11.0. Документ "Возврат поставщику" не делает движений по складу
- Не получается отбор по дате
- 8.3 Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
- v7: Цвет колонки в таблице
- Подскажите, где ошибка? ADO
- Передать данные ТЧ между формами
- остатки скд на каждый день
- Где в конфигураторе вводится сумма прописью?
- Вопрос по поводу свойства типа объекта XDTO