Имя: Пароль:
1C
 
Ошибка при вызове метода контекста (Выполнить)
,
0 Fuas4
 
18.05.15
18:39
Господа, я в замешательстве. УПП 1.3 с модулем бит финанса. Типовой Битфинансовский код:
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    бит_ДатыЗапретаРедактирования.ДатаЗапрета
    |ИЗ
    |    РегистрСведений.бит_ДатыЗапретаРедактирования КАК бит_ДатыЗапретаРедактирования";
    Результат = Запрос.Выполнить();
КОд вызывается из подписки. для определенного документа падает с ошибкой из сабжа.
Суть функции - узнать, заполнен ли регистр данными.
В связи с чем вопрос:
1. почему данный запрос может не выполняться, если тут даже никаких параметров нет у запроса.
1 Drac0
 
18.05.15
18:42
(0) нельзя давать синоним таблице равный ее названию. Зачем тебе он вообще?
2 Drac0
 
18.05.15
18:42
"ВЫБРАТЬ ПЕРВЫЕ 1
    |    1
    |ИЗ
    |    РегистрСведений.бит_ДатыЗапретаРедактирования";
3 Fuas4
 
18.05.15
18:44
(1) вроде можно (2) Мопед не мой. Править я его не хочу. Почему запрос 1 раз выполняется. а второй раз нет?
4 shuhard_серый
 
18.05.15
18:45
(1) лажа
ВЫБРАТЬ
    Продажи.Контрагент,
    Продажи.Стоимость
ИЗ
    РегистрНакопления.Продажи КАК Продажи

чудесно работает
и таких запросов в УПП 90%
5 Гёдза
 
18.05.15
18:46
полную ошибку давай
6 Drac0
 
18.05.15
18:46
(4) ХМ, странно. Запамятовал, значит...
7 Fuas4
 
18.05.15
18:47
(5) по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.бит_ДатыЗапретаРедактирования.Модуль(324)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
В данной транзакции уже происходили ошибки!
8 Fuas4
 
18.05.15
18:52
ТиИ может что-то исправить, как думаете?
9 GROOVY
 
18.05.15
18:55
Попытка/Исключение в этом модуле есть?
10 shuhard_серый
 
18.05.15
18:57
(8) нет
11 Fuas4
 
18.05.15
18:57
(9) нет. Транзакция, я полагаю, это сама запись документа. Там внутри одного документа генерится несколько. И все в одной транзакции. Но падает то за выполнении запроса
12 Drac0
 
18.05.15
18:58
(11)Отдельно запрос падает? А если его закомментить, падает? Пробуй. Это называется отладка :)
13 Fuas4
 
18.05.15
19:01
(9) нашел попытку/исключение при записи документа. Но когда он а в стеке есть, то норм выполняется запрос. А когда другой документ, без попытки записывается. там падает
14 Fuas4
 
18.05.15
19:09
(12) ОТдельно работает. Если закомментить, то падает дальше: при попытке получить константу. Хотя права на нее есть (полные права стоят). Ошибка та же: в данной транзакции уже роисходили ошибки
15 Drac0
 
18.05.15
19:11
(14) Значит, проблема не в запросе. Комменти константу и продвигайся к багу :)
16 Drac0
 
18.05.15
19:12
(14) Кстати, Остановка по ошибке стоит у тебя?
17 Fuas4
 
18.05.15
19:22
(16) Да, остановка по ошибке помогла. там в  попытке документ записывается, а если у него не получилось, то алгоритм дальше идет. И там уже падает, например, на "найтиПоНаименованию". ХЗ как так, раньше не видел такого. Завтра проанализирую внимательно что там происходит. Всем спасибо большое
18 GROOVY
 
18.05.15
19:23
Попытки в транзакциях еще никому ничего хорошего не приносили.
19 Fuas4
 
18.05.15
19:25
(18) странно, что после попытки начинает падать где попало. Не должно же так быть. Если в попытке не сработало что-то, то при чем тут выполнение запроса?
20 Drac0
 
18.05.15
21:47
(19) похоже, что слетает при обращении к базе данных в уже отмененной транзакции.
21 Fuas4
 
21.05.15
19:50
Считаю нужным написать, в чем было дело: попытка вызывалась в модуле объекта "передЗаписью", где, как известно, уже начинается транзакция. Потом моя попытка начинала как бы вложенную транзакцию, которую 1с как бы не поддерживает. В результате, при выпадении в исключение откатывалась не только моя попытка но и все, что произошло в "ПередЗаписью". И далее любое обращение к БД выдавало ошибку. Единственный выход в данном случае: в исключении делать Отказ=истина и возврат, чтобы не обращаться к БД. Не знал раньше об этом
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.