Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (НайтиПоРеквизиту)
,
0 Nikitos
 
14.03.13
02:36
Доброй ночи.
Не могу понять как так происходит. Есть некая обработка загрузки документов и подписка на событие ПередЗаписью() документа РеализацияТоваровИУслуг.

Во время выполнения загрузки идет запись документа 2 раза (почему так не знаю - писал не я). И из подписки идет обращение к функции:

Функция ПолучитьСприсокКонтрагентов(ИД_Базы)
   СК = Новый СписокЗначений;

   Если ИД_Базы = "1" Тогда
        СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "4716022531");
       .......
   Иначе
       .......
   КонецЕсли;

   Возврат СК;
КонецФункции

Собственно говоря вопрос в следующем:
при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка "Ошибка при вызове метода контекста (НайтиПоРеквизиту)".

Как так происходит?
1 rotting
 
14.03.13
02:39
что пишет при нажатии на кнопку подробно?
2 Nikitos
 
14.03.13
02:46
(1) Ошибка при вызове метода контекста (НайтиПоРеквизиту)

Прояснило? :)
3 Nikitos
 
14.03.13
03:08
хм... Все страньше и страньше...

С горя переписал заполнение списка значений запросом. При втором обращении вылазит ошибка:

Ошибка при вызове метода контекста (Выполнить) : Ошибка выполнения запроса

Вообще ничего не понимаю
4 simol
 
14.03.13
03:16
Для НайтиПоРеквизиту реквизит должен быть проиндексирован
5 Nikitos
 
14.03.13
03:19
Я в курсе. Это "допиленная" БП. К тому же смотри (3) и "... при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка ..."
6 simol
 
14.03.13
03:24
СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "4716022531");

Скобки не хватает
7 Nikitos
 
14.03.13
03:28
(6) Когда сюда набивал недопоставил.
и (0) "... при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка ..."
8 simol
 
14.03.13
03:35
По "подробно" что пишет?
9 Nikitos
 
14.03.13
03:36
(8) смотри (2)
10 rotting
 
14.03.13
04:03
(9) отладчик что говорит? Вбей в отладчике Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "4716022531")
11 Nikitos
 
14.03.13
04:10
(1) При первом обращении к функции находит контрагента.
При втором - {(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
12 Nikitos
 
14.03.13
04:11
причем Справочники.Контрагенты имеет значение СправочникМенеджер.Контрагенты, т.е. вроде как все правильно
13 rotting
 
14.03.13
04:16
(12) ну оно ж должно писать при нажатии на кнопку "подробно" что-то типа "по причине..", мистика какая-то....
14 Nikitos
 
14.03.13
04:24
вот оно такую причину и пишет
15 Nikitos
 
14.03.13
04:25
шла вторая ночь...
16 Godofsin
 
14.03.13
04:29
Батюшку приглашал бесов изгонять?
17 Nikitos
 
14.03.13
04:38
наверное пора
18 Sasha_Rapira
 
14.03.13
04:44
У ИНН стоит индексирование? У ИНН длина ограничена?
19 wertyu
 
14.03.13
05:05
комп ребутни
20 Nikitos
 
14.03.13
05:12
(18) учимся читать внимательно

(19) минимум на 3 разных компах такое наблюдается
21 wertyu
 
14.03.13
05:16
(20).2 ну так сервак ребутни )
22 Nikitos
 
14.03.13
05:23
(21) раз в сутки ребутится
23 cw014
 
14.03.13
07:51
(11) При нажатии на кнопку подробно должно написать что-то типа: "{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): метод объекта не обнаружен" или "{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): реквизит не является индексируемым" или "{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): бесы пошалили, батюшка" ну или что-то в этом роде, но причина ошибки вызова метода должна быть
24 Nikitos
 
14.03.13
08:58
(23) Дословно выглядит вот так (если убрать всякие попытки-исключения) :

{Обработка.З.Форма.Форма.Форма(788)}: Ошибка при вызове метода контекста (Записать)
                       СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{ОбщийМодуль.ВыгрузкаДанныхБУ.Модуль(384)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
                       СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
В данной транзакции уже происходили ошибки!
25 Nikitos
 
14.03.13
09:16
апну
26 Nikitos
 
14.03.13
09:42
люди!!!!
27 wertyu
 
15.03.13
01:47
(26) так у тебя ошибки были до неё )
Программист всегда исправляет последнюю ошибку.