Дублирование номеров документов #261340


#0 by BB52
При записи документа формирую номер, т.е. пробегаю по всем проведенным документам, смотрю какой номер последнего введенного и увеличиваю его на 1. НО Когда два юзера проводят одновременно документ, то иногда получается дублирование номера. Выбирать проведенные документы нужно для того чтобы делать анализ на непрерывность номеров (т.е. введено 5, удалили 2-ой, новый док будет с номером 2 а не 6). Подскажите плз методы как избежать подобных дублей?
#2 by BB52
мимо
#3 by а лю 427
$50....  А если мимо - так тебе тут хороший метод не подскажут...
#4 by BB52
не флуди
#5 by а лю 427
Ставлю пакет кефира... что не подскажут... 0.5 литра P.S. самовывоз...
#6 by BB52
тогда придется попотеть и опробовать те варианты что есть.
#7 by Allexe
УстановитьНовыйНомер(<?>); Синтаксис: УстановитьНовыйНомер(<Префикс>) Назначение: Установить новый номер документа с заданным префиксом. Параметры: <Префикс> - строка с префиксом номера документа.
#8 by Конь в пальто
мимо
#9 by Allexe
Сделай какой-нибудь реквизит.. при вводе дока срабатывает твоя обработка и в этот реквизит присваивается номер дока который собираются проводить. Второй юзер тоже начинает вводить новый док.. твоя обработка пробегается по всем доками+этот реквизит, определяет новый номер и присваивает опять в этот реквизит
#10 by BB52
спсб. это надо попробовать
#11 by BB52
Выбрал самый простой и ,наверное, надежный вариант: Из ПриЗаписи перекинул все операции над номером документа в модуль документа, т.е. все проверки делаю при проведении документа, когда журнал заблокирован, должно пахать. Если у кого были случаи что подобное не работало - напишите сюда примеры.
#12 by Tymoha
афигеть - а потом кричат 7-ка отстой, база работает ну очень медленно, необходимо переходить на 8-ку, причем немедленно. бюджет не интересует ))))))
#13 by Chieftain
тебя видать сильно запарили с переходами
#14 by BB52
подобные задачи думаю и на 8ке стандартно не решаются. а что 8 это круто - спорный вопрос. Да и бюджет - ты прав, ооочень веселый. Смотрю вся россия уже год "переходит" на 8.0 у всех предприятий купивших ее куча франчей + свои всей толпой чета мудрят, но ведь главное что - чтобы платили ))) так что можно и по 2 года "внедрять"
#15 by Tymoha
да есть малехо - а что, сильно заметно? )))) Просто запарили такие вот "спецы" - чуть что, сразу "7-ка не потянет. переходим на 8-ку. Потому что это прогрессивно"!!!
#16 by zalex
может туплю, но... в момент проведения не даст заменить? (одновременно двое проводить не могут, это транзакция)
#17 by zalex
проглядел :)
#18 by zalex
только сабжа не очень догнал, если удалили второй и у нового будет номер не 2 а 6 о какой непрерывности речь?
#19 by BB52
кидая тему надеялся что подскажут чего интересного.. но.. селяви p.s.:может в самом деле проще 1С нет ничего?!
#20 by BB52
прочитай еще раз внимательно ))
#21 by Ёпрст2
Контроль уникальности, выключен ? ...
#22 by zalex
Про дубли я понял, не понял, если у тебя идут номера: 1,3,4,5,6 это называется непрерывность?
#23 by DGorgoN
Не знаю вашу проблему, вроде как 1с сама ставит номера документов и следит за этим. В нормальных БД это делаться след. образом: 1) Есть либо журнал номеров документов, либо последние значение норма документа (счетчик). В 1 конкретное время ко всему этому может иметь доступ только 1 документ 2) При формировании документа, прога берет либо последний номер + 1, либо ищет свободный номер и берет его себе. Записывает в это действие
#24 by BB52
тут номер хотросделаный, номер надо вырезать из серединки, поэтому проверка на уникальность не поможет, своя нужна. вроде написано правильно >(т.е. введено 5, удалили 2-ой, новый док будет с номером 2 а не 6) вроде как понятно что если второй номер удален, то следующий должен быть тоже номер 2 а не 6. тут боссы для себя напридумали как формировать номер, он там из 3х частей, и по номеру им сразу много чего понятно про документ. что ж поделать, хозяин-барин..
#25 by DGorgoN
Полностью задачу опиши, чем не нравиться?
#26 by zalex
.2 А-а, подумал как раз наоборот хочешь...
#27 by BB52
спасибо за желание подсказать, но я уже сделал и более подробно описать уже не смогу см
#28 by а лю 427
будете еще обсуждать - кефир протухнет
#29 by а лю 427
эта вещь (составной номер) - давно пройдена. И номер там вообще не нужно использовать... методику быстрого поиска свободного номера никто не предложил....
#30 by dk
Круто, записываем с одним номером, проводим и уже видим другой? Видать сильно терпеливые пользователи :)
#31 by dk
30+ А отдельный номер на печать не канает?
#32 by dk
Типа справочника соответствий Документ - Номер --- Забиваеешь туда сразу несколько тысяч записей про запас. А при поиске свободного - просто минимальный номер с пустым полем документ. Правда тут надо подумать как будет удаляться документ из справочника при удалении самого документа
#33 by ASV
при тыще доков в день, запас закончится быстро :)
#34 by Warlock
Просто нужно запихнуть алгоритм получения номера в транзакцию.
#35 by Ёпрст2
И пусть весь мир подождет ...
#36 by Warlock
Тут уже все зависит от алгоритма...
#37 by F1234
lhfcnb? lznks
#38 by BB52
не пойдет для данной постановки задачи: юзер фмет ОК в форме, ему вопрос "Записать?" он ДА и засыпает, номер сформирован уже, а т.к. юзер спит, то некому ответить на вопрос "Провести?", в это вермя коллега нашего юзера спокойно проводит новый документ с таким же номером. алгоритм формирования номера документа выполняется меньше чем за секунду, так что ждать не приходится.
#39 by а лю 427
хи-хи
#40 by Rad
Создаем справочник СвободныеНомера при удалении документа создаем элемент, в Наименование записываем освободившийся номер. При записи документа ищем свободный номер ставим элемент на блокировку если уже заблокирован ищем следующий. Находим - меняем номер документа, удаляем элемент справочника, не находим - оставляем присвоенный 1Ской номер. Искать свободный номер моджо и при создании/закрытии документа, пока форма открыта и элемент на блокировке этот номер ни кто не юзнет.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С