![]() |
![]() |
|
Слетает нумерация доков | ☑ | ||
---|---|---|---|---|
0
death3d
28.12.04
✎
09:24
|
В пятый раз уже парюсь с проблемой. В новый документ подставляется существующий номер и автонумерация обламывается. Такое бывает, а как лечится не помню. хелп ми
|
|||
1
Diter
28.12.04
✎
09:30
|
Автонумерация включена?
А не произошло ли предельное заполнение длины номера? А не сбили ли нумерацию вручную? Лечение - перенумерация документов обработкой. |
|||
2
death3d
28.12.04
✎
09:36
|
автонумерация включена. Похоже сбили вручную. Не могу ничего придумать. Перенумерацию делать нельзя. Расходники распечатаны. Лана. Чего-нить придумаю. Отойду только от вчерашнего. А то шило совсем. Спасибо, что ответил.
|
|||
3
Rovan
гуру
28.12.04
✎
10:05
|
(2) Проверяй уникальность программно при открытии дока - при нарушении ищи следующий №.
|
|||
4
wolk
28.12.04
✎
10:06
|
(3) - а если в базе >=2 юзера? И они одновременно создадут по новому доку?
|
|||
5
laeg
28.12.04
✎
10:21
|
(4)
Знаком с блокировкой ? Одновременно записать система не даст ... При записи дока моно вставить следующий код // Попытка записи документа Попытка Записать(); Исключение УстановитьНовыйНомер(<Префикс>); Записать(); КонецПопытки; |
|||
6
Diter
28.12.04
✎
10:28
|
(3,4,5) Честно говоря не понимаю о чём вы спорите?
У чела слетела автонумерация. Варианта два или перенумеровать с сохранением в доп реквизите существующего номера с последующим выводом на печать именно его а не номера документа. Или изменить код и попытаться переназначить номер. НО. При УстановитьНовыйНомер() при сбитой автонумерации ничего не получится ибо номер будет такой же как и при интерактивном вводе документа т.е. дублированный. Попытка тупо присвоить следующий номер обречена на неудачу. Нука, какой номер будет последним при вводе предыдущего документа задним числом? |
|||
7
Diter
28.12.04
✎
10:31
|
(5) каким образом блокировка связана с назначением новому документу номер уже существующего? Проверка на блокировку происходит при записи. Теперь картинка - три юзера одновременно (ну или до записи) создают три новых документа. При сбитой нумерации их номера одинаковы. При УстановитьновыйНомер() можно играться только префиксом. И что? Ваши действия?
|
|||
8
008
28.12.04
✎
10:37
|
(6) "Нука" пишется через дефис...
А люди для (0) пытаются объяснить, что ликвидация последствий - это одно, а предупреждение оных - совсем другое... |
|||
9
Diter
28.12.04
✎
10:52
|
(8)По русскоум в школе было 4.
Они нифига не объясняют. Все объяснения и решение в (1). |
|||
10
laeg
28.12.04
✎
11:13
|
(9)
Решение для перенумерации РКО или ПКО :))) хех ... ню-ню ... Дуракам закон не писан. (6) Спора нету, есть предложения. За заднее число в ПКО и РКО руки оторвать. (7) Моно в цикле до бесконечности давать новый номер пока не даст :))) Всё как говорится ИМХО |
|||
11
Diter
28.12.04
✎
13:42
|
(10) Читай (7) там вариант про "Решение для перенумерации РКО или ПКО". Дураки допускают ситуации с задвоением номеров. Всё равно выход искать надо. Лучше один раз отгрести за новые номера, нежели всё время долбать номер ручками или ждать пока твой бесконечный цикл отработает.
|
|||
12
laeg
28.12.04
✎
13:47
|
(11)
А кто сказал что нельзя ? Долбать не все время ... оставшиеся :))) пару дней |
|||
13
Diter
28.12.04
✎
13:53
|
(12) ты имеешь в виду, что до конца года, а там новый период нумерации настанет? :)))
|
|||
14
Valery
28.12.04
✎
13:55
|
С нового года нумерация начнется сначала. Так что не парся
|
|||
15
death3d
28.12.04
✎
14:37
|
Всем спасибо за ответы. Хотелось бы узнать как эта автонумерация работает. Как высчитывает какой номер надо подставлять.
|
|||
16
Diter
28.12.04
✎
14:46
|
(15) Грубо говоря так
1. Анализируется возможная длина номера 2. Выделяется префикс (строковая часть) и сам номер (число) 3. Прибавляется 1 к числовой части 4. Прибавляется "откушеный" префикс 5. Проверяется на удовлетворение условия по длине (чтобы например после номера "999" при длине номера "3" не выскочило "000" (остаток от "1000") - при таком раскладе останется "999" и будет сообщение об ошибке уникальности номера). |
|||
17
miki
28.12.04
✎
14:50
|
(16)А откуда берется "сам номер" из 2.?
|
|||
18
romix
28.12.04
✎
15:03
|
В 1С все новички допускают одну и ту же траблу.
А именно, стирают ведущие нули в номере документа. А 1С никак это не контролирует. |
|||
19
Diter
28.12.04
✎
15:10
|
(17)
"Выделяется префикс (строковая часть) и сам номер (число)" расшифровать? Для номера ПР-0001234 выделяется строковая часть ПР- Число - 1234 прибавляется 1 - 1235 Прибавляется префикс и ведущие нули (добавляются до дины номера) - ПР-0001235 |
|||
20
death3d
28.12.04
✎
15:14
|
Вот теперь все ясно. Я нашел отсутствующие ведущие нули. Пойду руки отрывать.
|
|||
21
romix
28.12.04
✎
15:15
|
(20) Отрывать нужно программерам, которые не контролируют поступающие в программу сведения.
|
|||
22
Diter
28.12.04
✎
15:18
|
(21) Тяжело контролировать все за...оны юзеров. Хотя конечно, можно извернуться и проверить длину номера при записи. Ещё проще - вообще запретить его редактирвоание в документе. Я так частенько делаю.
|
|||
23
miki
28.12.04
✎
15:25
|
(19) А откуда берется "ПР-0001234"?
|
|||
24
Diter
28.12.04
✎
15:29
|
(23) Издеваешься? Это номер последнего документа. Если спросишь откуда он берётся - убью :)
|
|||
25
miki
28.12.04
✎
15:36
|
Да я-то знаю откуда он берется. А ты?
Просто мне показалось что аутор в (15) это и хотел узнать... |
|||
26
Diter
28.12.04
✎
15:39
|
(25) Я тоже знаю.
|
|||
27
romix
28.12.04
✎
15:42
|
(22) Это необходимо. Типовая 1С этого, к сожалению, не делает.
Как вариант, можно использовать программу Inserter АльФ'а и вставить во все модули в ПриЗаписи() вызов глобальной функции для проверки реквизитов. Например, Если глПроверкаРеквизитов(Контекст)=0 Тогда Предупреждение("Документ не будет сохранен"); СтатусВозврата(0); Возврат; КонецЕсли; |
|||
28
Diter
28.12.04
✎
15:49
|
(27) При обновлении что будем делать? По новой Inserter пользовать?
|
|||
29
romix
28.12.04
✎
15:52
|
(28) Проблема - к 1С. Видимо, да...
|
|||
30
Diter
28.12.04
✎
16:03
|
(29) Эта проблема решается запретом редактирования реквизита "НомерДок".
|
|||
31
romix
28.12.04
✎
16:26
|
(30) При обновлении будешь везде мышой это закрывать?
|
|||
32
Diter
28.12.04
✎
16:29
|
(31) Можно обработку написать с использованием ActiveMD, которая проставит везде галки вместо тебя. Когда у тебя в работе много клиентов - это реальный выход.
|
|||
33
romix
28.12.04
✎
16:32
|
(32) По трудоемкости имхо то же самое, что и вставлять процедуру проверки.
Кстати, проверки могут (и должны) быть и на другие реквизиты. Например, дата документа не должна относиться к другому тысячелетию... Где-то нужно блокировать пустые или нулевые значения в каких-то полях. Чем ругать юзеров, гораздо профессиональнее блокировать неправильный ввод. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |