Имя: Пароль:
1C
1С v8
Странный вылет при загрузке в бух 2 из семерки
,
0 Сияющий Асинхраль
 
20.09.12
18:02
После загрузки 19500 объектов вылетает типовая загрузка, причем вылетает  при выполнении:
Выполнить(Правило.ПослеЗагрузки);
Смотрю, что передается в Выполнить. Вот такой код:

Если Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс Тогда
   // найдем договор из документа-основания и установим его таким же, как у счета-фактуры
   // это необходимо из-за того, что договор может отличаться в выписке и в счете-фактуре
   Попытка
       НовыйДоговор = Объект.ДокументыОснования[0].ДокументОснование.ДоговорКонтрагента;
   Исключение
       НовыйДоговор = Неопределено;
   КонецПопытки;
   Если НовыйДоговор <> Неопределено Тогда
       Объект.ДоговорКонтрагента = НовыйДоговор;
   КонецЕсли;
КонецЕсли;

Вроде бы проверил в этом куске все:

(Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс) = Ложь;

Объект.ДокументыОснования[0].ДокументОснование.ДоговорКонтрагента определен, что здесь может не работать ума не приложу :-( Может подскажете, где туплю...
1 Kondarat
 
20.09.12
18:04
Вылетает 1С, или загрузка останавливается по ошибке?
2 Сияющий Асинхраль
 
20.09.12
18:06
Ошибка загрузки, при выполнении вышеприведенного кода
3 Kondarat
 
20.09.12
18:08
Обычно обработка загрузки пишет подробную ошибку в окно сообщения.
4 Сияющий Асинхраль
 
20.09.12
18:10
Пишет, но поскольку данный кусок выполняется не построчно, а с помощью Выполнить, то понять, что 1С не нравится достаточно трудно
5 Сияющий Асинхраль
 
20.09.12
18:12
+(4) Этот кусок кидается в выполнить, а оттуда возвращается сообщение о невозможности выполнить этот код, почему - невнятно
6 Kondarat
 
20.09.12
18:18
(5) Ну кинь сюда все что вывелось в окно сообщения
7 Сияющий Асинхраль
 
20.09.12
18:21
Закрыл окно, но выдавала ошибку 21, и уверяла, что не хватает КонецЕсли, что непонятно, поскольку уж это все на месте...
8 Kondarat
 
20.09.12
18:26
(7) В (0) весь код из обработчика ПослеЗагрузкиОбъекта ? Если не весь, то может где-то и не хватает.
9 Сияющий Асинхраль
 
20.09.12
18:28
(8) Весь. Больше ни одного символа туда не передается :-(
10 Kondarat
 
20.09.12
18:31
(9) В 7-ке то, хоть что за конфа?
11 Сияющий Асинхраль
 
20.09.12
18:38
Типовая выгрузка из Бухгалтерии 7.7 в БП 2
12 Сияющий Асинхраль
 
20.09.12
18:38
И та и другая конфы типовые и последние
13 vladko
 
20.09.12
18:51
может в 7.7. есть счет-фактура без документа-основания?
14 Сияющий Асинхраль
 
20.09.12
18:57
В том то и фигня, что в этом конкретном документе строка:
Объект.ДокументыОснования[0].ДокументОснование.ДоговорКонтрагента
выдает определенное, вполне правильное значение :-(
15 Kondarat
 
20.09.12
18:59
(14) Негде глянуть - нет правил выгрузки из бух 77 в бух 2.0
16 Сияющий Асинхраль
 
20.09.12
19:02
Ладно, все нормально, найду, просто обидно, на паршивую типовую!!! выгрузку уже полтора дня угробил
17 Сияющий Асинхраль
 
21.09.12
11:50
Чудеса продолжаются :-(, вместо обработки указанного кода по Выполнить, поставил в УниверсальныйОбменДаннымиXML этот же код в явном виде:


                       Если ТипЗНЧ(Объект) = Тип("ДокументОбъект.СчетФактураВыданный") Тогда
                           Если Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс Тогда
                               // найдем договор из документа-основания и установим его таким же, как у счета-фактуры
                               // это необходимо из-за того, что договор может отличаться в выписке и в счете-фактуре
                               Попытка
                                   НовыйДоговор = Объект.ДокументыОснования[0].ДокументОснование.ДоговорКонтрагента;
                               Исключение
                                   НовыйДоговор = Неопределено;
                               КонецПопытки;
                               Если НовыйДоговор <> Неопределено Тогда
                                   Объект.ДоговорКонтрагента = НовыйДоговор;
                               КонецЕсли;
                           КонецЕсли;
                       Иначе
                           Выполнить(Правило.ПослеЗагрузки);
                       КонецЕсли;


Как это ни странно все отработало без каких-либо помарок :-(. Единственная идея, которая приходит в голову, может внутри Выполнить нельзя Попытки использовать, но с другой стороны код типовой, вряд-ли они бы такой косяк допустили...
Независимо от того, куда вы едете — это в гору и против ветра!