#0
by BB52
При записи документа формирую номер, т.е. пробегаю по всем проведенным документам, смотрю какой номер последнего введенного и увеличиваю его на 1. НО Когда два юзера проводят одновременно документ, то иногда получается дублирование номера. Выбирать проведенные документы нужно для того чтобы делать анализ на непрерывность номеров (т.е. введено 5, удалили 2-ой, новый док будет с номером 2 а не 6). Подскажите плз методы как избежать подобных дублей?
#7
by Allexe
УстановитьНовыйНомер(<?>); Синтаксис: УстановитьНовыйНомер(<Префикс>) Назначение: Установить новый номер документа с заданным префиксом. Параметры: <Префикс> - строка с префиксом номера документа.
#9
by Allexe
Сделай какой-нибудь реквизит.. при вводе дока срабатывает твоя обработка и в этот реквизит присваивается номер дока который собираются проводить. Второй юзер тоже начинает вводить новый док.. твоя обработка пробегается по всем доками+этот реквизит, определяет новый номер и присваивает опять в этот реквизит
#11
by BB52
Выбрал самый простой и ,наверное, надежный вариант: Из ПриЗаписи перекинул все операции над номером документа в модуль документа, т.е. все проверки делаю при проведении документа, когда журнал заблокирован, должно пахать. Если у кого были случаи что подобное не работало - напишите сюда примеры.
#12
by Tymoha
афигеть - а потом кричат 7-ка отстой, база работает ну очень медленно, необходимо переходить на 8-ку, причем немедленно. бюджет не интересует ))))))
#14
by BB52
подобные задачи думаю и на 8ке стандартно не решаются. а что 8 это круто - спорный вопрос. Да и бюджет - ты прав, ооочень веселый. Смотрю вся россия уже год "переходит" на 8.0 у всех предприятий купивших ее куча франчей + свои всей толпой чета мудрят, но ведь главное что - чтобы платили ))) так что можно и по 2 года "внедрять"
#15
by Tymoha
да есть малехо - а что, сильно заметно? )))) Просто запарили такие вот "спецы" - чуть что, сразу "7-ка не потянет. переходим на 8-ку. Потому что это прогрессивно"!!!
#16
by zalex
может туплю, но... в момент проведения не даст заменить? (одновременно двое проводить не могут, это транзакция)
#18
by zalex
только сабжа не очень догнал, если удалили второй и у нового будет номер не 2 а 6 о какой непрерывности речь?
#19
by BB52
кидая тему надеялся что подскажут чего интересного.. но.. селяви p.s.:может в самом деле проще 1С нет ничего?!
#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х частей, и по номеру им сразу много чего понятно про документ. что ж поделать, хозяин-барин..
#29
by а лю 427
эта вещь (составной номер) - давно пройдена. И номер там вообще не нужно использовать... методику быстрого поиска свободного номера никто не предложил....
#30
by dk
Круто, записываем с одним номером, проводим и уже видим другой? Видать сильно терпеливые пользователи :)
#32
by dk
Типа справочника соответствий Документ - Номер --- Забиваеешь туда сразу несколько тысяч записей про запас. А при поиске свободного - просто минимальный номер с пустым полем документ. Правда тут надо подумать как будет удаляться документ из справочника при удалении самого документа
#38
by BB52
не пойдет для данной постановки задачи: юзер фмет ОК в форме, ему вопрос "Записать?" он ДА и засыпает, номер сформирован уже, а т.к. юзер спит, то некому ответить на вопрос "Провести?", в это вермя коллега нашего юзера спокойно проводит новый документ с таким же номером. алгоритм формирования номера документа выполняется меньше чем за секунду, так что ждать не приходится.
#40
by Rad
Создаем справочник СвободныеНомера при удалении документа создаем элемент, в Наименование записываем освободившийся номер. При записи документа ищем свободный номер ставим элемент на блокировку если уже заблокирован ищем следующий. Находим - меняем номер документа, удаляем элемент справочника, не находим - оставляем присвоенный 1Ской номер. Искать свободный номер моджо и при создании/закрытии документа, пока форма открыта и элемент на блокировке этот номер ни кто не юзнет.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как отловить нажатие мышки на форме в 1С 8.0
- КопироватьФайл(); не получается скопировать файлы
- Как закрыть Ole Excel без запроса сохранения файла.
- Как программно поменять местами положение колонок в табличной части докумен
- Как получить текущую строку в списке значений?
- v7: Конвертация данных. Выгрузка из ТиС в Бух
- Учет по сериям в УПП
- Активность записи регистра сведений
- Как в запросе отрезать от даты время?
- Как сохранить в регистре сведений табличную часть?
- v7: Отчет: печать проводок выбранной операции
- Как перехватить нажатие мышки в 1С?
- v7: "каталог пользователя занят"
- Как открыть список значений для выбора?
- Сортировка по двум столбцам в XBase
- Расшифровка ячейки в отчете
- Корректировка себестоимости возврата поставщику
- Основной реквизит формы
- Запуск 1С-ки автоматом и автоматом запуск нужной обработки
- Как отловить выбор строки в табличной части обработке?