|
Ошибка переброски документа COMОбъект("V82.ComConnector") | ☑ | ||
---|---|---|---|---|
0
DenisSol
16.02.12
✎
16:32
|
Добрый день. Помоги пожалуйста решить следующую проблему.
Необходимо через объект “V82.ComConnector” перенести документ “Реализация товаров, услуг” из конфигурации “Управление торговлей ред. 10.3” в конфигурацию “Бухгалтерия предприятия ред. 2.0” V8 = Новый COMОбъект("V82.ComConnector"); ОбъектБазыПриемник = V8.Connect ("File="+ПутьКбазе+"; Usr="+Пользователь+"; Pwd="+Пароль); Документ переносится нормально, но при попытке проведения “ДокументПриемник.Записать(ОбъектБазыПриемник.РежимЗаписиДокумента.Проведение);” выдает следующую ошибку: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация: Ошибка при выполнении обработчика - 'ОбработкаПроведения' Хотя если проводишь непосредственно из конфигурации “Бухгалтерия предприятия ред. 2.0” (вручную) документ проводится с выводом следующего сообщения: “Для номенклатуры "4х16 Заклепки комбинированные 500" в табличной части "Товары" по счету ГТД определен остаток 0 ед. 4х16 Заклепки комбинированные 500 из необходимых 4 ед.”. Немного проанализировав ситуации сделал вывод (может не правильный). Ошибка заключается в процедуре сообщения об ошибке: В Процедура ПроведениеДокументаСписанияПоСчетуГТД( Есть СтрокаНачалаСообщенияОбОшибке = "Для номенклатуры """+ СокрЛП(ТоварПоНомеруГТД.Номенклатура) + """ в табличной части ""Товары"" "; СтрокаСообщения = "по счету ГТД определен остаток "+УчетноеКоличество+" ед. "+ТоварПоНомеруГТД.Номенклатура+" из необходимых "+ТоварПоНомеруГТД.Количество+" ед."; ОбщегоНазначения.ОшибкаПриПроведении(СтрокаНачалаСообщенияОбОшибке + СтрокаСообщения,,); Если её закомментировать, то документ проводится во время переноса, но думаю это не правильно. Подскажите как можно решить данную ошибку. Заранее спасибо. |
|||
1
depthzer0
16.02.12
✎
16:38
|
нужно чтобы хватало
|
|||
2
DenisSol
16.02.12
✎
16:42
|
(1) Согласен. Только со стороны заказчика логика: документ непосредственно из самой базы проводится, хоть и с сообщением об ошибки. Получается, что ошибка в обработке которая не может провести.
|
|||
3
Анатоль
16.02.12
✎
16:44
|
(0) может просто попробовать вставить инструкции выполнения типа
#Если Клиент Тогда // вывод сообщения об ошибке #КонецЕсли |
|||
4
Анатоль
16.02.12
✎
16:45
|
(2) По описанию похоже что COM не умеет выдавать сообщения
|
|||
5
DenisSol
16.02.12
✎
16:48
|
(3) Внести изменения в конфигурацию "Бухгалтерия Предприятия" ?
|
|||
6
kible
16.02.12
✎
16:51
|
(0) Перепиши обработку так чтобы запускалась в БП, а не в УТ
|
|||
7
vmv
16.02.12
✎
16:53
|
В приемнике делаешь общий серверный модуль и при переброске документов из источника
1. передаешь структуру свойстсв объекта из источника в приемника 2. скармливаешь эту структуру серверном методу общего модуля. при проблемах "кормления" используешь временное хранилище в приемнике, т.е. скормил структуру свойств в клиентском методе в хранилище, в серверном его вытащил. 3. секрверный метод премника получает ИЗВНЕ по п.1 и п.2 некий накбор свойств объекта и пашет как негр в своей песочнице и плевать ему уже, что кто-то скормил ему все это через ком, пом, гном и т.д. если мысль не ясна - я буду очень опечален |
|||
8
vmv
16.02.12
✎
16:58
|
(7) в источник можно вернуть структурированную строку разделенную Символы.ПС, которая будет содержать все тексты общибок при выполнении методов приемника и показать ее как резельтат операции в источнике.
Если она пуста, то ничего не делаем или запускаем ролик с в вставщим на дыбы конем - типа, все ок, чувак - прокатило) усе, любая другая технология ущебна и от лукавого |
|||
9
DenisSol
16.02.12
✎
17:02
|
(7)
Общий смысл ясен, но необходимо дорабатывать типовую конфигурацию, что не хочется делать. |
|||
10
Jaap Vduul
16.02.12
✎
17:05
|
Скорее всего, в процедуре "ОбщегоНазначения.ОшибкаПриПроведении" написано что-то вроде:
#Если Клиент Тогда Сообщить(...); #ИначеЕсли ВнешнееСодинение Тогда ВызватьИсключение(...); #КонецЕсли Т.е. надо или править обработку проведения или эту процедуру. |
|||
11
DenisSol
16.02.12
✎
17:07
|
(10) Да это так
#Если ВнешнееСоединение Тогда Если ВызыватьИсключение Тогда Если ЗначениеЗаполнено(Заголовок) Тогда ТекстСообщения = Заголовок + Символы.ПС + ТекстСообщения; Заголовок = ""; КонецЕсли; ВызватьИсключение (ТекстСообщения); КонецЕсли; #Иначе Если ЗначениеЗаполнено(Заголовок) Тогда Сообщить(Заголовок); Заголовок = ""; КонецЕсли; Сообщить(ТекстСообщения, Статус); #КонецЕсли |
|||
12
DenisSol
16.02.12
✎
17:08
|
а как править обработку ? отказываться от переноса Новый COMОбъект("V82.ComConnector");
|
|||
13
vmv
16.02.12
✎
17:11
|
(9) Добавление префиксованных общих модулей Адд_СомКлиент и Адд_СомСервер совершенно безболезненная доработка у меня все типовые с ними живут и в ус не дуют, когда накатываешь обновления проблем нету. Зато все конфы дружат друг с другом при записи объектов без дурацкого обращения к сом.
СомКонектор должен служить просто ТРАНСПОРТОМ, а не средством модификации данных где-либо. Это нужно прнинять как молитву и больше не делать круглых глаз, когда он кома хоят того, что он вовсе не обязан делать |
|||
14
H A D G E H O G s
16.02.12
✎
17:25
|
Бугага
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |