Имя: Пароль:
1C
1С v8
Запись документа с неуникальным номером - в ОписаниеОшибки() пусто
0 N-S-B
 
24.05.18
12:30
Программно записываю документ, если номер неуникальный, то при записи очевидно появляется исключение "Значение "123" поля "Номер" не уникально".
Если же запись документа обернуть в Попытку Исключение, то в ОписаниеОшибки() в этом случае будет пусто.
Почему и можно ли как-то отловить это исключение?
1 DrShad
 
24.05.18
12:38
а зачем ты записываешь с неуникальным номером?
2 N-S-B
 
24.05.18
12:47
Парсю файл и на основании него создаю документы с нужными номерами. Если номер неуникальный, то надо обработать это исключение соответствующе. Но проблема в том, что понять по исключение, что ошибка именно в неуникальности номера нельзя, так как в ОписаниеОшибки() в этом случае пусто.
3 catena
 
24.05.18
12:59
(2)У меня не пусто.
4 N-S-B
 
24.05.18
13:08
(3) Баг платформы оказался. Если ОписаниеОшибки() запихнуть в переменную, то текст ошибки есть, хотя отладкой ОписаниеОшибки() что до присвоения переменной, что после - пустая строка.
Платформа 8.3.11.3034
5 Cool_Profi
 
24.05.18
13:09
(4) А ты её отладчиком смотрел? Так это никогда не работало...
6 DrShad
 
24.05.18
13:09
а если сразу поискать неуникальный номер, до записи
7 N-S-B
 
24.05.18
13:13
(6) Увеличит время выполнения, там тысячи документов создаются
8 DrShad
 
24.05.18
13:15
(7) чем увеличит? у тебя при записи что-то отличное от этого происходит?
9 N-S-B
 
24.05.18
13:17
(8) А ну да, может и не увеличит)
10 catena
 
24.05.18
13:19
(4)"Применять данную функцию имеет смысл только внутри операторных скобок Исключение - КонецПопытки, так как в ином случае она вернет пустую строку. Помогает в выдаче диагностики при возникновении ошибок.
Не рекомендуется использовать для отображения пользователю. "

В табле отладчика - это и есть "иной случай".
11 N-S-B
 
24.05.18
13:23
(10) Ну естественно я ее и проверяю внутри Исключение - КонецПопытки
12 Aleksey
 
24.05.18
13:27
(8) Загружается 10 000 документов из них возможно 1 документ будет с не уникальным номером (но это не точно). Думаешь 10 000 поисков по всей базе в поисках, а есть ли такой номер у других документов, не сильно повлияет на общую производительность?
13 catena
 
24.05.18
13:35
(11)Тогда как понимать фразу "хотя отладкой ОписаниеОшибки() что до присвоения переменной, что после - пустая строка."?
14 N-S-B
 
24.05.18
13:41
(13)
Попытка
    Документ.Записать();
Исключение
    Ошибка = ОписаниеОшибки();//Вот тут точка останова
    Возврат;
КонецПопытки;

При остановке ОписаниеОшибки() - пусто
На следующем шаге (на Возврате) ОписаниеОшибки() - по-прежнему пусто, а в Ошибка уже текст
15 catena
 
24.05.18
13:44
(14)Вот я и говорю, что вычисление в табло - это уже "иной случай", описанный в СП. Это ж не переменная, чтобы хранить значение.
16 DrShad
 
24.05.18
13:45
(12) а как по твоему платформа проверяет уникальность номера? не на каждом ли документе?
17 DrShad
 
24.05.18
13:47
+(16) да и не нужно 10 000 раз искать, достаточно собрать все номера в массив и один раз найти уже существующие
18 alxxsssar
 
24.05.18
13:48
может перед загрузкой запросом вытащить все номера в таблицу, а в процессе загрузки к таблице обращаться? чтобы не перебирать всю базу на каждом загружаемом документе?
19 DrShad
 
24.05.18
13:48
а при записи документа еще кучу времени на выполнение кода в процедурах ПередЗаписью и т.п.
20 alxxsssar
 
24.05.18
13:51
(19) зачем при записи? я так понял он обработкой грузит. Вот в ней и прописать. Отработал поиск, нашел заданное значение - пропускаем строку, идем дальше, не грузим этот документ.
21 DrShad
 
24.05.18
13:53
(20) читай тему внимательно, я именно за этот вариант - меня убеждают в обратном
22 alxxsssar
 
24.05.18
13:54
(21) просю просчения