|
v8: Значение поля "Номер" не уникально. Как посмотреть индекс или счетчик в SQL? | ☑ | ||
---|---|---|---|---|
0
programmist1cswworld
06.06.13
✎
06:08
|
При переносе документов через текст на определенном номер дает сбой.
Пишет Значение поля "Номер" не уникально. Такого номера нет. И 999999 тоже нет. Сбой ни с того ни с сего, посреди файла. n документов загрузил на n+1 сбойнул. Если смотреть через отладчик сразу после попытки записи, переменная "Менеджер документов" выдает ошибку, как будто её нет и она до этого не инициализировалась. Изменил в файле, из которого идет загрузка, номер на вообще левый, с нереальным префиксом - все пошло дальше нормально. Может внутреннее представление номера на SQL не хранит некоторые символы и в результате получается номер, который уже есть? Из любопытства хочется знать, где посмотреть индекс или счетчик номеров SQL который отвечает за номера. Отладить, по тяжелой, так сказать. |
|||
1
Sammo
06.06.13
✎
06:24
|
Не верю.
См - какой номер пытается присвоить. |
|||
2
SnarkHunter
06.06.13
✎
07:02
|
Номер 999999 не обязателен, достаточно, например наличия номера 9 или 99. Если номер текстовый, конечно.
|
|||
3
shuhard
06.06.13
✎
07:04
|
(0) счётчик живёт в оперативной памяти и шансов добраться до него 0
|
|||
4
etoyaelena
26.06.13
✎
15:51
|
Здравствуйте. Помогите, пожалуйста! а у меня есть номер 999,
и что теперь делать?? |
|||
5
shuhard
26.06.13
✎
15:54
|
(4) Ваш номер выиграл - получите приз
|
|||
6
etoyaelena
26.06.13
✎
16:04
|
Спасибо за сарказм!
|
|||
7
МихаилМ
26.06.13
✎
16:13
|
(6)
заведите отдельную тему. Ваша проблема с проблемой в (0) не имеет общего. |
|||
8
programmist1cswworld
24.07.13
✎
02:14
|
(3) Ну да. У 1С в коде вроде защита от отладки. Отладчик слетает.
|
|||
9
Rie
модератор
24.07.13
✎
03:32
|
(0) Лето. Телепаты в отпусках...
"Через текст" - стало быть, есть некий код, который загружает данные. Возникает вопрос: а что в этом коде написано? |
|||
10
programmist1cswworld
24.07.13
✎
04:51
|
(9) Документ = Менеджер.СоздатьДокумент();
Документ.Дата = ... //Дата получена из текста Текст.ПолучитьСтроку...; Документ.Номер = ... // номер аналогично; ... Реквизиты документа, табличная часть ... Документ.Записать(РежимЗаписиДокумента.Запись); И вот здесь вылетает. Документ в тексте по счету тысяча там какой-то. В номере тоже ничего особенного - "ТАЮт-02128". Поменял в тексте только этот номер на "ОШ000001". Загрузка прошла нормально. Проблему проще обойти, чем искать причину. |
|||
11
Rie
модератор
24.07.13
✎
04:57
|
(10) А что говорит Менеджер.НайтиПоНомеру(НомерПолученныйИзТекста,ДатаПолученнаяИзТекста?
|
|||
12
Rie
модератор
24.07.13
✎
04:58
|
(10) Обойти - оно, конечно...
Но есть риск, что в базе имеется неопознанный летающий документ с указанным номером. Может быть, даже проведенный. Со всеми отсюда вытекающими. |
|||
13
programmist1cswworld
24.07.13
✎
05:15
|
(11) Условие есть. Перед записью документа проверка
Если Менеджер.НайтиПоНомеру(Документ.Номер, Документ.Дата) = Менеджер.ПустаяСсылка() Тогда ... Попытка Документ.Записать(РежимЗаписиДокумента.Запись); Исключение ... |
|||
14
programmist1cswworld
24.07.13
✎
05:20
|
(12) Загрузка была в чистую базу.
Проведен? Т.е. влияние на регистры. Остатки по регистрам пошли, тестирование не делал. "неопознанный летающий документ" - вот что-то такое мне кажется и есть. Хорошее выражение. И таких ошибок - две. |
|||
15
alkov
24.07.13
✎
05:57
|
ОбновитьНумерациюОбъектов() уже предлагали?
|
|||
16
skunk
24.07.13
✎
06:36
|
(13)а с чего ты взял, что он найдет пустую ссылку?
Если Не Менеджер.НайтиПоНомеру(Документ.Номер, Документ.Дата) = Неопределено Тогда ... Попытка Документ.Записать(РежимЗаписиДокумента.Запись); Исключение |
|||
17
sda553
24.07.13
✎
07:08
|
(15) тсссс, дай еще поглумимся
|
|||
18
Rie
модератор
24.07.13
✎
09:42
|
(16) Тогда уж ЗначениеЗаполнено лучше.
|
|||
19
skunk
24.07.13
✎
09:52
|
(18)зачем ... если найтипономеру возращает "неопределено", когда документ не найден
|
|||
20
Rie
модератор
24.07.13
✎
09:59
|
(19) Если верить встроенной справке, то
"Возвращаемое значение: Тип: ДокументСсылка.; Неопределено. Ссылка на найденный документ. Если документ не найден, возвращается пустая ссылка на документ. Если номер не задан (длина = 0), то будет возвращено Неопределено". |
|||
21
George Wheels
24.07.13
✎
10:05
|
Если в базе длина номера 9, а в тексте номера такие:
000000123 0000001234 то по моему обрежется десятый символ и вуаля |
|||
22
Rie
модератор
24.07.13
✎
10:12
|
(21) +1
|
|||
23
programmist1cswworld
25.07.13
✎
01:22
|
(15) Спасибо.
|
|||
24
programmist1cswworld
25.07.13
✎
01:39
|
(17) Смейтесь, смейтесь
|
|||
25
programmist1cswworld
25.07.13
✎
01:39
|
(21) Везде длина 10.
|
|||
26
ИсчадиеADO
25.07.13
✎
05:18
|
(4) читайте молитвы, Господь защитит вас от козней Диавола))
|
|||
27
programmist1cswworld
27.07.13
✎
07:50
|
Ошибка на копии базы не воспроизводится. Всем спасибо.
|
|||
28
hhhh
27.07.13
✎
08:05
|
наверно, забыл сохранить конфигурацию. Вот номера в оперативной памяти и кучкуются.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |