![]() |
|
v7: Перенумерация документов SQL запросом | ☑ | ||
---|---|---|---|---|
0
zenik
24.05.16
✎
11:19
|
Категорически приветствую. Предыстория: каким то образом в одном из доков нумератор пропустил 7000 номеров (предполагаю или рабочей датой прошлого года или перетащили док из прошлого года - не суть). Был номер ТИнв1-9999, потом ТИнв1-1000. И теперь все новые доки ТИнв1-1000 и естественно при попытке записать - номер не уникальный. Поле номера пользователю не доступно.
Вот думаю как малой кровью перенумеровать... Поискал обработки, но они все "УстановитьНовыйНомер" и "Записть"... Не пойдет, так как документ будет перепроводиться при записи, а это долго. Решил я напрямую заменить номера в SQL. Думаю это не сильно аморально? Так вот, рассчитать новые номера у меня ума хватило, а вот сделать update результатами из другой таблицы - я такого не делал и не представляю. Собсно запрос: DECLARE @TABLE TABLE ( IDENT INT IDENTITY NOT NULL, DOCNO varchar(10) NULL, ROW_ID INT NOT NULL ) INSERT INTO @TABLE (ROW_ID) SELECT ROW_ID FROM dbo._1SJOURN AS T1 WHERE T1.IDDOCDEF = 1434 AND LEFT(T1.DATE_TIME_IDDOC,4) = '2016' AND LEFT(T1.DOCNO,1) = 'Т' ORDER BY T1.DATE_TIME_IDDOC UPDATE @TABLE SET DOCNO = 'ТИнв1-'+RIGHT('0000000000'+CAST(IDENT AS varchar(4)),4) SELECT * FROM @TABLE В итоге в @TABLE в DOCNO у нас новый номер документа его надо записать в DOCNO в dbo._1SJOURN. Как ? |
|||
1
ДенисЧ
24.05.16
✎
11:21
|
ПриЗаписиПерепроводить(0) уже не модно?
|
|||
2
zenik
24.05.16
✎
11:23
|
Я хотел без правки конфы обойтись :\
|
|||
3
Злопчинский
24.05.16
✎
11:24
|
(0) "УстановитьНовыйНомер" и "Записть"... Не пойдет, так как документ будет перепроводиться при записи, а это долго."
- ты не поверишь, но программная запись объекта-документа не вызывает его проведение. |
|||
4
zenik
24.05.16
✎
11:24
|
там и приЗаписи() хватает делов...
|
|||
5
Злопчинский
24.05.16
✎
11:25
|
(2) используй штатную "Универсальный подбор объектов" и с ее помощью перенумеруй как сочтешь нужным. Со штатным перенумератором могут быть проблемы в том случае если для номера использован нумератор, который задействован в нескольких видах документов
|
|||
6
zenik
24.05.16
✎
11:26
|
(5) К этому виду документа нумератор не привязан.
|
|||
7
zenik
24.05.16
✎
11:30
|
UPDATE dbo._1SJOURN SET dbo._1SJOURN.DOCNO = T.DOCNO FROM @TABLE AS T WHERE dbo._1SJOURN.ROW_ID = T.ROW_ID
И все получилось. Спасибо за внимание :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |