Имя: Пароль:
1C
1С v8
Проведение документов через COM-соединение
0 John83
 
30.04.14
09:55
В БП 2.0 есть реализация, при проведении которой появляется ошибка
"Для номенклатуры "Зеркало стоматологическое без ручки" в табличной части "Товары" по счету ГТД определен остаток 0 ед. Зеркало стоматологическое без ручки из необходимых 500 ед."
Но все же документ проводится.
Дальше подключаюсь к этой базе через СОМ (из УТ 10.3), в попытке пытаюсь провести этот же документ, но попадаю в исключение.
Почему так?
1 ДенисЧ
 
30.04.14
10:00
ОписаниеОшибки() мы должны угадать?
2 vmv
 
30.04.14
10:01
перечисли возможные причины и будем думать
3 John83
 
30.04.14
10:02
(1) да ошибка та же, что и в БП
{ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(4081)}: Ошибка при вызове метода контекста (Записать)
            ДокОбъект.Записать(Соединение.РежимЗаписиДокумента.Проведение);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.90): Ошибка при выполнении обработчика - 'ОбработкаПроведения'
{ОбщийМодуль.ОбщегоНазначения.Модуль(2745)}: Для номенклатуры "Зеркало стоматологическое без ручки" в табличной части "Товары" по счету ГТД определен остаток 0 ед. Зеркало стоматологическое без ручки из необходимых 500 ед.
4 John83
 
30.04.14
10:03
(2) были бы у меня варианты, скорее всего тему не стал бы создавать
5 kotletka
 
30.04.14
10:03
(0) по Ком документы не проводятся, напиши свой обший модуль проведения и обращайся к нему по ком
6 ДенисЧ
 
30.04.14
10:03
Вот и ищи Если ВнешнееСоединение ... ВызватьИсключение
7 kotletka
 
30.04.14
10:04
либо руками пиши нужные движения доку
8 John83
 
30.04.14
10:04
(5) если документ без ошибок, то прекрасно проводится
9 John83
 
30.04.14
10:04
(6) можно чуть подробнее?
10 Aleksandr N
 
30.04.14
10:05
(0) Дело в этом:

Процедура СообщитьОбОшибке(Знач ТекстСообщения, Отказ = Ложь, Заголовок = "", Знач Статус = Неопределено, ВызыватьИсключение = Истина) Экспорт

    Если Статус = Неопределено Тогда
        Статус = СтатусСообщения.Важное;
    КонецЕсли;
    
    ТекстСообщения = СформироватьТекстСообщения(ТекстСообщения);
    Отказ = Истина;
    
    #Если ВнешнееСоединение Тогда
        
        Если ВызыватьИсключение Тогда
            Если ЗначениеЗаполнено(Заголовок) Тогда
                ТекстСообщения = Заголовок + Символы.ПС + ТекстСообщения;
                Заголовок = "";
            КонецЕсли;
            
            ВызватьИсключение (ТекстСообщения);
        КонецЕсли;
        
    #Иначе
        
        Если ЗначениеЗаполнено(Заголовок) Тогда
            Сообщить(Заголовок);
            Заголовок = "";
        КонецЕсли;
        
        Сообщить(ТекстСообщения, Статус);
    #КонецЕсли
    
КонецПроцедуры // СообщитьОбОшибке()
11 ДенисЧ
 
30.04.14
10:06
(5) (7) Уже отмечаешь?
(9) Что именно поподробней? Посмотри в модулях условие препроцессора #Если ВнешнееСоединение
12 ДенисЧ
 
30.04.14
10:06
во, о чём я и говорю...
13 Nenaviwu1c20
 
30.04.14
10:08
(9) Ты проверь под кем проводишь документ.Может у нево прав нет в отрицательный остаток проводить.
14 kotletka
 
30.04.14
10:10
(11) да попутал я,  нет не отмечаю, но активно готовлюсь- разминаюсь
15 Aleksandr N
 
30.04.14
10:10
(13) Нет, в данном случае по-любому при внешнем соединении документ не будет проводиться.
16 Nenaviwu1c20
 
30.04.14
10:11
(15) Ну как же нет если ч сталкивался с такой ситуацией
17 John83
 
30.04.14
10:11
(10) да, проблема именно в этом
спасибо пребольшое!!!
PS (6) хоть с твоего ответа проблему искал бы гораздо дольше, но все равно тоже спс :)
18 Aleksandr N
 
30.04.14
10:12
В (10) все написано.
19 John83
 
30.04.14
10:13
(10) а можно как-то обойти эту проблему из УТ? или только в БП закомментировать кусок?
20 Aleksandr N
 
30.04.14
10:20
(19) Только в БП изменять.
21 John83
 
30.04.14
10:21
(20) понял
еще раз спасибо
22 Aleksandr N
 
30.04.14
10:21
(21) Не за что.