|
Значение поля "Номер" не уникально | ☑ | ||
---|---|---|---|---|
0
Ticklion
01.03.23
✎
10:33
|
Добрый день.
На сервере стоит 1С 8.3.17.2760 и типовая конфигурация Управление торговлей 11.5.10.73. Есть веб-сервис, который создаёт документы Реализации товаров и услуг. Бывают моменты, когда API-функция веб-сервиса запускается в двух потоках (фоновых заданиях) одновременно и пытаются так же одновременно создать Реализацию товаров и услуг. В таком случае 1С выдаёт ошибку: {ОбщийМодуль.***ОбщиеМетоды.Модуль(4251)}: Ошибка при вызове метода контекста (Записать): Значение "***-2914" поля "Номер" не уникально Также эта ошибка может появиться, если пользователь записывает новую Реализацию товаров и услуг в то время, как веб-сервис это делает. В веб-сервисе создание объекта довольно простое: ДокОбъектР = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); ДокОбъектР.Заполнить(СсылкаНаЗаказКлиента); <дополнительное заполнение полей> И в попытке: ДокОбъектР.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); |
|||
1
shuhard
01.03.23
✎
10:37
|
(0) вводи префиксацию
|
|||
2
vicof
01.03.23
✎
10:42
|
Скорей блокировки
|
|||
3
lodger
01.03.23
✎
10:42
|
как разруливается ситуация когда 2 юзера вводят документ на одну организацию? суть такая же.
шаблон номера "***-2914" выглядит подозрительно. |
|||
4
Ticklion
01.03.23
✎
10:46
|
(3) Я замазал часть номера, там формат: ***-***-1234
|
|||
5
lodger
01.03.23
✎
11:04
|
(4) тоже жуть какая то.
|
|||
6
Ticklion
01.03.23
✎
11:22
|
(2) Блокировка чего? Всей таблицы? Объект ещё не был создан. Номер автоматически присваивается ему после первой записи. Причём не могу найти, где именно.
В модуле объекта Реализации товаров и услуг: Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) Префикс = ОбщегоНазначенияУТПовтИсп.ДополнительныйПрефиксНумератораДокументыРеализацииТоваров(); КонецПроцедуры И это ничего не даёт. Там результат "0" или "", а не по шаблону "***-***-1234". Где прописано формирование префикса в УТ? |
|||
7
Dmitrii
гуру
01.03.23
✎
11:30
|
Потому что не надо рукоблудить с автонумерацией документов в типовых конфигурациях и придумывать какие-то свои велосипеды на эту тему. Тем более, что в большинстве случаев велосипеды эти имеют квадратные колёса.
Придумали какую-то свою нумерацию - вот и разруливайте теперь сами. Если бы нумерация была типовая, такой проблемы бы не возникало. Типовой нумератор на уровне платформы разруливает такие проблемы и ошибка неуникальности номера там может возникнуть только в случае, когда достигнут предел нумерации и невозможно присвоить очередной номер. У вас либо где-то зачем-то вкорячена установка нового номера задолго до записи документа, либо явно где-то в коде нахреначено принудительное присвоение очередного номера. Если этот алгоритм выполняется одновременно несколькими потоками (сеансами), то вполне возможно, что в каждом из этих потоков получается один и тот же очередной номер. После того как кто-то из них успел записать документ с этим номером, остальные получают сообщение об ошибке нарушения уникальности. Проходите в отладке весь код вашего веб-сервиса и смотрите - откуда и в какой момент присваивается номер документа. |
|||
8
Гипервизор
01.03.23
✎
11:31
|
(6) Так префикс тут не при чём. Первый документ когда-то создали с хитрым номером, а последующие номера +1 к последнему и всё.
|
|||
9
Ticklion
01.03.23
✎
11:45
|
(7) В расширениях нет доработок, которые бы меняли номер при записи, при проведении или при установке нового номера.
То, что я написал выше, взято из типовой конфигурации. |
|||
10
Ticklion
01.03.23
✎
13:20
|
Причём, этот конфликт начал возникать только в последние две недели, раньше веб-сервис спокойно создавал документы и не жаловался, что не может сам подобрать следующий номерок при записи.
При тестах заполнения на основании Заказа клиента я не заметил, чтобы номер заполнялся откуда-либо, т.е. он остаётся пустым перед первой записью, что должно дать понять 1С, что надо автоматически пронумеровать его. |
|||
11
Dmitrii
гуру
01.03.23
✎
15:05
|
(9) Чудес не бывает.
Сервис нумерации является сервисом, предоставляемым кластером серверов. Ему плевать во сколько потоков у вас там одновременно создаются документы. Он очередной номер выдаёт последовательно. Так что повторюсь. Берите отладчик и смотрите - в какой момент и каким алгоритмом присваивается номер документа. >> взято из типовой конфигурации. О каком типовом веб-сервисе идёт речь? |
|||
12
Мультук
гуру
01.03.23
✎
15:06
|
(10)
Отметил себе пересмотреть на выходных доктора Хауса с его "Все пациенты - врут, а 1С-ники при этом ..." |
|||
13
Ticklion
01.03.23
✎
16:40
|
(11) Веб-сервис руками написан, создаётся документ безо всяких управляемых транзакций и блокировок.
Но нумерация документов нигде не переработана и не переписана, она типовая. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |