Имя: Пароль:
1C
1C 7.7
v7: Значение не представляет агрегатный объект (НомерIBAN)
0 Peltik
 
27.07.18
15:48
Доброго времени суток всем!


Док = СоздатьОбъект("Документ.ПлатежноеПоручение");
    
    СчББ = 0;
    СчАБ = 0;
    СчПр = 0;
    
    а = СписокПП.РазмерСписка();
    б = " ";
    Пока а > 0 Цикл
        НомерПлатежки = Лев(СписокПП.ПолучитьЗначение(а,б),Найти(СокрЛП(СписокПП.ПолучитьЗначение(а,б))," "));
        Если СписокПП.Пометка(а) = 1 Тогда
            Док.НайтиПоНомеру(НомерПлатежки);
            Если Найти(Док.РасчетныйСчет.НомерIBAN, "AKBB") <> 0 Тогда
                ЗагрузкаББ(Док);
                СчББ = СчББ + 1;
            ИначеЕсли Найти(Док.РасчетныйСчет.НомерIBAN, "PJCB") <> 0 Тогда
                ЗагрузкаПриор(Док);
                СчПр = СчПр + 1;
            ИначеЕсли Найти(Док.РасчетныйСчет.НомерIBAN, "BAPB") <> 0 Тогда
                ЗагрузкаБАПБ(Док);
                СчАБ = СчАБ + 1;
            Иначе
                Сообщить("Платежное поручение №"+Док.НомерДок+ " не импортировано");
            КонецЕсли;
        КонецЕсли;
        а = а - 1;
    КонецЦикла;


Что-то не могу понять, если запускаю это, то выдает ошибку:

Если Найти(Док.РасчетныйСчет.НомерIBAN, "AKBB") <> 0 Тогда
{Обработка.ПлатежныеПоручения.Форма.Модуль(163)}: Значение не представляет агрегатный объект (НомерIBAN)

Но если это  же запустить через отладчик, с точкой останова в строке которая ниже, то всё работает ОК. В чем прикол?
1 HawkEye
 
27.07.18
15:59
(0) ничего нового.... как обычно дело не бобине...
2 trdm
 
27.07.18
15:59
Перезагрузись
3 Peltik
 
27.07.18
16:10
(1) так я про старое не вкурсе :(
4 HawkEye
 
27.07.18
16:13
(3) работает так, как написано....
но вообще не мешает проверить, нашелся ли документ и заполнен ли у него реквизит, а потом уже к нему обращаться....
5 Peltik
 
27.07.18
16:15
(4) Конечно нашелся и заполнен, написано же с Оиладчиком всё работает
6 HawkEye
 
27.07.18
16:17
(5) написано: "Значение не представляет агрегатный объект (НомерIBAN)"

а значит или не заполнен или заполнен ни тем типом...
то, что в отладчике что-то работает, не показатель.... отладчиком тоже надо уметь пользоваться....
7 Peltik
 
27.07.18
16:25
(6) и что я могу сделать такого в отладчике, что может повлиять на исполнение программы? Я там только точку останова ставлю, при чем только в определенном месте
8 HawkEye
 
27.07.18
16:32
(7) откуда я знаю, перед тобой же открыто...
напиши код по человечески и не надо будет играть в угадайку...

Если  Док.НайтиПоНомеру(НомерПлатежки) = 1 Тогда
Если ПустоеЗначение(Док.РасчетныйСчет) = 0 Тогда
....
9 Peltik
 
27.07.18
16:50
(8) и что в моем коде нечеловеческого?
10 Kigo_Kigo
 
27.07.18
17:05
(9) поставь 2 проверки из 8
а вообще как то цикл криво организован
11 hhhh
 
27.07.18
17:16
(9) вот это надо без пробела чтобы номер платежки

НомерПлатежки = Лев(СписокПП.ПолучитьЗначение(а,б),Найти(СокрЛП(СписокПП.ПолучитьЗначение(а,б))," ") - 1);
12 Peltik
 
31.07.18
07:57
(11) не то :(
13 Peltik
 
31.07.18
10:53
Док.НайтиПоНомеру(НомерПлатежки, КонДата);

и всё заработало, Платежка оказалось с переодической нумерацией в пределах года :(
но почему оно работало через отладчик, я так и не понял :(
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн