|
Значение поля "Номер" не уникально | ☑ | ||
---|---|---|---|---|
0
windows98a
02.03.16
✎
22:12
|
Здравствуйте.
Извините, сначала много букв, потому что все равно будут вопросы. УТ 10.3, немного дописанная. Есть холдинг из n организаций. Есть универсальный документ продажи, куда кассир долбит товары, не заморачиваясь, какой организации он принадлежит - все в один док. Этот универсальный документ, в зависимости от установленной галочки может принимать вид чек, реализация, возврат. В конце дня обработка преобразует эти универсальные кассовые документы в стандартные документы УТ 10.3 "отчеты ккм", "реализации товаров услуг", "возвраты от покупателя", фасуя их по нужным организациям. Проблема в том, что реализацию клиенту уже нужно отдать с номером, а поскольку документ "реализация товаров и услуг" будет создан только вечером, программа по определенному алгоритму формирует и запоминает их номера в универсальном кассовом документе. Номера реализации формируются по принципу: префикс подразделения + "к" + номер кассового документа + "n" n - счетчик доков "реализация товаров услуг", которые содержит в себе один конкретный кассовый документ(соответсвует количеству различных организаций, присутствующих в кассовом документе). Эта схема работает уже 4 года без проблем, но вот настал день.. При преобразовании кассового документа в одну из "реализаций товаров услуг" выдается ошибка Значение поля "Номер" не уникально. Отладчик с условием по этому номеру перед записью документа останавливается только один раз. Документа за период с таким номером в базе нет. Обновление нумерации не помогает. Попытка ДокументОбъект.Записать(); Исключение Сообщить("Пытаюсь записать реализацию с номером " + Строка(ДокументОбъект.Номер)); Сообщить(ОписаниеОшибки()); ОтменитьТранзакцию(); Возврат; КонецПопытки; Есть мысли? |
|||
1
Cyberhawk
02.03.16
✎
22:29
|
"Документа за период с таким номером в базе нет" // Я тебе не верю, убеди меня
|
|||
2
Записьдампа
02.03.16
✎
22:34
|
(1) Написано же:
ОтменитьТранзакцию();
=) |
|||
3
windows98a
03.03.16
✎
09:19
|
Хрень какая то... вот такой код:
Сообщить(ДокументОбъект.Номер); Сообщить(ДокументОбъект.Дата); ИскомыйДок = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(ДокументОбъект.Номер, ДокументОбъект.Дата); Сообщить(ИскомыйДок); Попытка ДокументОбъект.Записать(РежимЗаписиДокументов); Исключение Сообщить("Пытаюсь записать реализацию с номером " + Строка(ДокументОбъект.Номер)); Сообщить(ОписаниеОшибки()); ОтменитьТранзакцию(); Возврат; КонецПопытки; Выдает вот что: МКк00050491 02.03.2016 14:33:58 ТЦк00142711 02.03.2016 21:55:24 Реализация товаров и услуг ТЦк00142711 от 02.03.2016 17:40:48 Пытаюсь записать реализацию с номером ТЦк00142711 {Форма.Форма.Форма(1020)}: Ошибка при вызове метода контекста (Записать): Значение "ТЦк00142711" поля "Номер" не уникально |
|||
4
Ma3eIIa
03.03.16
✎
09:20
|
так у тебя разная длина номера. приведи в одну длину
|
|||
5
mistеr
03.03.16
✎
09:24
|
(0) Может ТИИ для начала?
|
|||
6
Serg_1960
03.03.16
✎
09:25
|
(4) Не принципиально. Если номер формируется вручную, а не автонумерацией - не принципиально.
|
|||
7
windows98a
03.03.16
✎
09:28
|
МКк00050491
02.03.2016 14:33:58 ! ТЦк00142711 02.03.2016 21:55:24 ! {Форма.Форма.Форма(1054)}: Ошибка при вызове метода контекста (Записать): Значение "ТЦк00142711" поля "Номер" не уникально Создание документов прервано! |
|||
8
Serg_1960
03.03.16
✎
09:29
|
(0) Перед записью найди документ с номером нового и сообщи. А также сообщи номер нового документа, но после неудачной попытки записи. Будет весело - гарантирую :)
|
|||
9
Serg_1960
03.03.16
✎
09:31
|
Упс (3) невидел
|
|||
10
DJ Anthon
03.03.16
✎
09:33
|
может, нумератор какой есть на несколько видов документов?
|
|||
11
aleks_default
03.03.16
✎
09:35
|
(3)А че непонятного, вот же написано что уже есть документ с таким номером:
Реализация товаров и услуг ТЦк00142711 от 02.03.2016 17:40:48 |
|||
12
windows98a
03.03.16
✎
09:37
|
(8)вроде все подежания учел
Сообщить(ДокументОбъект.Номер); Сообщить(ДокументОбъект.Дата); ИскомыйДокНайден = ?(Документы.РеализацияТоваровУслуг.НайтиПоНомеру(ДокументОбъект.Номер, ДокументОбъект.Дата) = Документы.РеализацияТоваровУслуг.ПустаяСсылка(), "Не найден!", "Найден"); Сообщить("!" + Строка(ИскомыйДокНайден)); Попытка Сообщить("Номер перед записью " + ДокументОбъект.Номер); ДокументОбъект.Записать(РежимЗаписиДокументов); Исключение Сообщить("Пытаюсь записать реализацию с номером " + Строка(ДокументОбъект.Номер)); Сообщить(ОписаниеОшибки()); ОтменитьТранзакцию(); Возврат; КонецПопытки; выдает ТЦк00142711 02.03.2016 21:55:24 !Не найден! Номер перед записью ТЦк00142711 {Форма.Форма.Форма(1055)}: Ошибка при вызове метода контекста (Записать): Значение "ТЦк00142711" поля "Номер" не уникально Создание документов прервано! |
|||
13
Serg_1960
03.03.16
✎
09:41
|
(предположение) Ты, наверно, уже не первый раз запускаешь обработку, вылизывая алгоритм,... на тех-же исходных данных.
|
|||
14
windows98a
03.03.16
✎
09:48
|
(13) ну колечно, я вот в 100 раз пытаюсь "свернуть" эту реализацию. Это имеет значение?
Не пойму почему в исключении не отрабатывает строка Сообщить("Пытаюсь записать реализацию с номером " + Строка(ДокументОбъект.Номер)); |
|||
15
Cyberhawk
03.03.16
✎
09:50
|
Думаю, при записи документа где-то вызывается код по записи этого же вида документа с этим же номером
|
|||
16
Serg_1960
03.03.16
✎
09:53
|
(14) "Не пойму почему в исключении не отрабатывает строка" - отрабатывает, судя по твоим постам - см.(3) - перед текстом ошибки, строка "Пытаюсь записать...".
(15) Может напомнить автору что уникальность номера не только по периоду, но и по организации? Как вы думаете? :) |
|||
17
windows98a
03.03.16
✎
09:56
|
(16) в (3) строчка есть, а в (12) уже нет...
|
|||
18
Cyberhawk
03.03.16
✎
09:58
|
(16) Это ж платформенное сообщение вроде у него, а не прикладным кодом выдаваемое, так что про организацию вряд ли
|
|||
19
aleks_default
03.03.16
✎
10:00
|
а у докмента-то периодичность нумерации вообще включена?
|
|||
20
Cyberhawk
03.03.16
✎
10:01
|
Или периодичность месяц, например, и документ в феврале есть такой
|
|||
21
Cyberhawk
03.03.16
✎
10:01
|
Хотя в этом случае ругаться не должен, отбой (20)
|
|||
22
windows98a
03.03.16
✎
10:06
|
(19) периодичность год, но я в найтипономеру указываю дату, так что в периоде нет
|
|||
23
Serg_1960
03.03.16
✎
10:13
|
(17) По поводу "а в 12 уже нет": не исключаю варианты что а) автор изменил обработку, но не сохранил; б) платформа взяла "из кэша" обработку (предыдущий вариант запустила)
|
|||
24
Serg_1960
03.03.16
✎
10:18
|
(пальцем в небо, ибо мыслей уже нет)
В (0) алгоритм указан создания номера, в частности "Номера реализации формируются по принципу: префикс подразделения +..." - ты уверен в уникальности префикса подразделения? |
|||
25
Serg_1960
03.03.16
✎
10:26
|
Ага, появилась мысль: покажи не только номер и дату, но и тип нового документа. Фиг его знает, может поиск номера по одному типу, а новый документ совсем другого...
Всё, опять нет мыслей :) |
|||
26
windows98a
03.03.16
✎
10:34
|
короче ошибка вылетала при записи приходника, который делался на основании этой реализации. номер у приходника такой же, поэтому произошла путаница. поэтому же не попадало в исключение. больно не пинайте, каюсь, большое Вам всем спасибо
|
|||
27
windows98a
03.03.16
✎
10:35
|
вчера падало на реализации, но теперь это уже не важно, исследование невозможно
|
|||
28
Cyberhawk
03.03.16
✎
11:08
|
Ну т.е. (15) оказался ближе всего :)
|
|||
29
DJ Anthon
03.03.16
✎
15:11
|
(28) да? ;)
|
|||
30
Cyberhawk
03.03.16
✎
15:24
|
(29) С вызовом прикладного кода угадал, но ошибся насчет "этого же вида"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |