Имя: Пароль:
1C
1С v8
Ошибка при создании документа ПКО через COM-соединение
,
0 DmAvd
 
28.10.11
12:21
Создаю через COM-соединение документ Приходный кассовый ордер в Бухгалтерии 2.0.

Вот так работает:

ДокБухОб.Дата = ДокУпр.Дата;    
ДокБухОб.ВидОперации = БазаБух.Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
ДокБухОб.Записать(БазаБух.РежимЗаписиДокумента.Запись);

И вот так работает:

ДокБухОб.Дата = ДокУпр.Дата;    
ДокБухОб.Организация = ОрганизацияБух;
ДокБухОб.Записать(БазаБух.РежимЗаписиДокумента.Запись);

А вот так выдается ошибка:

ДокБухОб.Дата = ДокУпр.Дата;    
ДокБухОб.ВидОперации = БазаБух.Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
ДокБухОб.Организация = ОрганизацияБух;
ДокБухОб.Записать(БазаБух.РежимЗаписиДокумента.Запись);

Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация: Ошибка при выполнении

обработчика - 'ПередЗаписью'

Вообще не понимаю, почему....
1 vmv
 
28.10.11
12:22
увидело ссылочный тип и давай плеваться
2 DmAvd
 
28.10.11
12:25
(1) не понял...
3 DmAvd
 
28.10.11
12:25
по отдельности же работает, а если вместе Организацию и ВидОперации заполняю, то не записывается...
4 DmAvd
 
28.10.11
12:28
причем смотрю в модуле объекта ПКО событие ПередЗаписью() там вообще Отказ=Истина нету! как же может исключение в этом событии генерироваться?
5 GenV
 
28.10.11
12:31
(4) Возможно идет вызов клиентский процедур недоступных в режиме СОМ-соединения (например, модуль для внешнего соединения недоступный).

Добавь: ДокБухОб.ОбменДанными.Загрузка = Истина; перед записью
6 DmAvd
 
28.10.11
12:36
не помогло...
7 hhhh
 
28.10.11
12:38
(6) там вообще-то процедур ПередЗаписью() 10-15 штук. Ты их все просмотрел?
8 DmAvd
 
28.10.11
12:44
(7) ругается только на строчку

ДокБухОб.Записать(БазаБух.РежимЗаписиДокумента.Запись);
9 izekia
 
28.10.11
12:48
(8) код процедуры перед записью покажи?
10 izekia
 
28.10.11
12:49
(4) русским языком написано, что произошла "исключительная ситуация", то есть ошибка, а не отказ был выставлен в истину
11 Лефмихалыч
 
28.10.11
12:51
(0) ты текст ошибки не читал, по этому и не понимаешь. ТАм всё по-русски написано относительно причин происходящего
12 Михаил Козлов
 
28.10.11
12:55
Запись документа поставьте в ПОПЫТКА ИСКЛЮЧЕНИЕ и в исключении выведите ОписаниеОшибки(). Может обламываться не в Перед, а в ПриЗаписи или в обработчиках событий.
13 DmAvd
 
28.10.11
12:56
(9) Типовая процедура, модуль объекта ПКО

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   УчетнаяПолитикаНеЗадана = Ложь;
   мУчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(Дата, УчетнаяПолитикаНеЗадана, Организация);
   
   мУчетВПродажныхЦенах = Ложь;
   Если мУчетнаяПолитика.Количество() > 0 Тогда    
       Если (мУчетнаяПолитика.СпособОценкиТоваровВРознице = Перечисления.СпособыОценкиТоваровВРознице.ПоПродажнойСтоимости) Тогда
           мУчетВПродажныхЦенах = Истина;
       КонецЕсли;
   КонецЕсли;

   НалоговыйУчетУСН.ЗаполнитьНастройкуКУДиР(ЭтотОбъект, , (мУчетВПродажныхЦенах И ВыручкаСНТТ));
   
   Если ОбменДанными.Загрузка Тогда
       Возврат;
   КонецЕсли;
   
   Если РасшифровкаПлатежа.Количество() = 0 Тогда
       НоваяСтрока = РасшифровкаПлатежа.Добавить();
   КонецЕсли;
   
   ДоговорКонтрагента = РасшифровкаПлатежа[0].ДоговорКонтрагента;

КонецПроцедуры
14 DmAvd
 
28.10.11
12:57
щас еще по подпискам на событие пробегусь
15 DmAvd
 
28.10.11
13:01
подскажите, а можно ли отлаживать код выполняемый в режиме внешнего соединения?
Я ставлю две точки останова - одну в текущей базе на строке ДокБухОб.Записать(БазаБух.РежимЗаписиДокумента.Запись);
А другую - в базе, к которой подключаюсь в событии ПередЗаписью().
Срабатывает только точка останова в текущей базе.
А интересно было бы поглядеть что в com-базе происходит...
16 DmAvd
 
28.10.11
13:13
Все, нашел - не заполнялась сумма)))
всем спасибо!
17 izekia
 
28.10.11
13:13
ураааа
18 DmAvd
 
28.10.11
13:14
ошибка детская конечно, но бывает)))
19 DmAvd
 
28.10.11
13:15
странно что по отдельности записывался, а если Организация + ВидОперации - то нет
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс