|
В данной транзакции уже происходили ошибки... | ☑ | ||
---|---|---|---|---|
0
Лялечка
07.10.11
✎
09:53
|
Добрый день! Понимаю, что тема обсуждалась уже ни раз, но не нашла ни одного нормального ответа на данный вопрос. Ситуация такая:
При записи контрагента необходимо проверить отмечены у него какие-нибудь категории или нет. Добавила в процедуру ПередЗаписью() проверку: ОтметкаКатегории = Ложь; мТаблицаКатегорийОбъекта = Категории.КатегорииОбъекта.Выгрузить(); Для каждого СтрКатегория Из мТаблицаКатегорийОбъекта Цикл Если СтрКатегория.Категория.УчастиеВПравах = Истина Тогда Если СтрКатегория.Принадлежность = Истина Тогда ОтметкаКатегории = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если ОтметкаКатегории = Ложь Тогда Предупреждение("У контрагента должна быть отмечена хотя бы одна категория! Запись невозможна!"); Отказ = Истина; КонецЕсли; Если изменять данные у записанного контрагента, то все ок. Но если создавать нового и не отмечать категорию, то потом возникает ошибка: "В данной транзакции уже происходили ошибки!". Подскажите, пожалуйста, как это все-таки можно обойти? Проверять категории обязательно. Заранее благодарна. |
|||
1
Wobland
07.10.11
✎
09:56
|
(0) а Попытки часом нигде нет?
|
|||
2
Лялечка
07.10.11
✎
10:07
|
В процедуре ПередЗаписью() нигде нет.
|
|||
3
Ненавижу 1С
гуру
07.10.11
✎
10:08
|
(2) а в других местах?
|
|||
4
Wobland
07.10.11
✎
10:08
|
(2) а вообще сильно мешает?
|
|||
5
Лялечка
07.10.11
✎
10:11
|
(4) ну конечно мешает, не дает нового контрагента записать с первого раза, если категорию не заполнили.Пользователь заполняет все данные, а ему бац говорят извините вы категории не заполнили закрывайте карточку и делайте все заново:( мешает...
|
|||
6
Wobland
07.10.11
✎
10:11
|
ну там НачатьТранзакцию() мож есть где?
|
|||
7
Базис
naïve
07.10.11
✎
10:12
|
Фотки нет.
Вопрос простой, но традиции форума требуют. |
|||
8
Лялечка
07.10.11
✎
10:13
|
(6) В ПередЗаписью(), ПриЗаписи() нет ничего подобного...
|
|||
9
Лялечка
07.10.11
✎
10:13
|
(7) блин
|
|||
10
Лялечка
07.10.11
✎
10:15
|
(7) странные люди, сами без фоток...
ладно не принципиально, мне к вечеру обязательно надо эти изменения сделать, помогите, пожалуйста, разобраться с этим... |
|||
11
unregistered
07.10.11
✎
10:15
|
Что такое Категории?
Есть подозрение, что, пока Контрагент не записан в базу (новый), ни каких категорий нет. Соответственно мТаблицаКатегорийОбъекта - пустая и флаг ОтметкаКатегории всегда Ложь для нового контрагента. Ошибка же (В данной транзакции уже происходили ошибки) вылетает как раз при попытке записать эти самые категории, т.к. перед записью Контрагента Отказ = Истина. |
|||
12
Базис
naïve
07.10.11
✎
10:18
|
(10) Объясняю.
1. Кто задаёт простые вопросы, тот и выкладывыает фотки. 2. Моё фото вас рассстроит. Старый и женатый программист никому не нужен. 3. Перед записью контрагента выведите ОписаниеОшибки(). Во-первых, узнаете, что случилось. Во-вторых ЕМНИП снимете флаг ошибки. 4. Фото ждём вечером. |
|||
13
Лялечка
07.10.11
✎
10:19
|
(12) да фото можете посмотреть уже сейчас
|
|||
14
БибиГон
07.10.11
✎
10:20
|
Если мТаблицаКатегорийОбъекта.Количество()=0 тогда
возврат; Конецесли; |
|||
15
Лялечка
07.10.11
✎
10:24
|
(14) таблица не пустая точно
|
|||
16
Лялечка
07.10.11
✎
10:25
|
(11) таблица категорий не пустая, но флаг отметки конечно ложь, потому что как раз и рассматривается ситуация, когда пользователь забыл отметить категорию
|
|||
17
DailyLookingOn Sunset
07.10.11
✎
10:27
|
У меня такая же фигня постоянно.
Попыток и транзакций нет. Релиз 8.2.13.219 |
|||
18
Лялечка
07.10.11
✎
10:29
|
Ошибка выскакивает на моменте:
Попытка ВыполнитьТекст + "ПриЗаписи(ЭтотОбъект, Отказ)"); Исключение КонецПопытки; Это общий модуль ОбработкаСобытий. |
|||
19
Лялечка
07.10.11
✎
10:31
|
Сорри:
Попытка Выполнить(Текст + "ПриЗаписи(ЭтотОбъект, Отказ)"); Исключение КонецПопытки; |
|||
20
Лялечка
07.10.11
✎
10:33
|
Описание ошибки: {ОбщийМодуль.ОбработчикиСобытий(1531)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Процедура или функция с указанным именем не определена (СправочникКонтрагентыПриЗаписи)
|
|||
21
Базис
naïve
07.10.11
✎
10:34
|
Ну вставь же после Исключение Сообщить(ОписаниеОшибки());
вместо Сообщить может потребоваться серверный аналог. |
|||
22
Базис
naïve
07.10.11
✎
10:34
|
А, вот, уже лучше.
|
|||
23
Джинн
07.10.11
✎
10:38
|
Попытка внутри транзакции или другой попытки. Пилите гирю внимательнее...
|
|||
24
Лялечка
07.10.11
✎
10:40
|
(23) дело в том, что это типовой механизм...у меня модуль даже закрыт для изменения...неужели от одной моей проверки перед записью (она же без всяких Попыток и НачатьТранзакцию() сделана) все начинает так косячить. И что же делать тогда? может есть другой способ проверки заполнения обязательных реквизитов?
|
|||
25
Базис
naïve
07.10.11
✎
10:41
|
Ошибся. ПЕРЕД Попытка прочитай ОписаниеОшибки(). Если она не пустая, то начинать новую транзакцию не надо.
|
|||
26
Лялечка
07.10.11
✎
10:43
|
(25) пустая она, ничего нет
|
|||
27
БибиГон
07.10.11
✎
10:45
|
Ты делаешь подпиской на события?
|
|||
28
Лялечка
07.10.11
✎
10:46
|
(27) да, это не я делаю, это стандартно
|
|||
29
Джинн
07.10.11
✎
10:47
|
(24) Есть типовой механизм проверки. В него и "впишитесь".
|
|||
30
Лялечка
07.10.11
✎
11:45
|
(29) а никто не подскажет, где хоть смотреть этот типовой механизм?(( как он все-таки реализован хотя бы...
|
|||
31
Лялечка
07.10.11
✎
12:03
|
Хорошо, может кто-нибудь подскажет, что в моем коде не так? Ведь без этой проверки все отрабатывает нормально...Получается, что я неправильно пишу что-то...
ОтметкаКатегории = Ложь; мТаблицаКатегорийОбъекта = Категории.КатегорииОбъекта.Выгрузить(); Для каждого СтрКатегория Из мТаблицаКатегорийОбъекта Цикл Если СтрКатегория.Категория.УчастиеВПравах = Истина Тогда Если СтрКатегория.Принадлежность = Истина Тогда ОтметкаКатегории = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если ОтметкаКатегории = Ложь Тогда Предупреждение("У контрагента должна быть отмечена хотя бы одна категория! Запись невозможна!"); Отказ = Истина; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |