Имя: Пароль:
1C
 
Слетает нумерация доков
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) По трудоемкости имхо то же самое, что и вставлять процедуру проверки.
Кстати, проверки могут (и должны) быть и на другие реквизиты.
Например, дата документа не должна относиться к другому тысячелетию...
Где-то нужно блокировать пустые или нулевые значения в каких-то полях.
Чем ругать юзеров, гораздо профессиональнее блокировать неправильный ввод.
Основная теорема систематики: Новые системы плодят новые проблемы.