Имя: Пароль:
1C
1С v8
Восстановление нумерации справочника номенклатура
,
0 DjSpike
 
10.05.12
20:40
В справочнике номеклатура при создании новых позиций случайно задали позициям код из накладной, а надо чтобы код присваивался 1с. Помогите восстановить нумерацию номеклатуры, вручную не хочется исправлять 50 позиций...
1 НуВотКак
 
10.05.12
20:42
Позвони, сбросим счет, поможем
2 Злопчинский
 
10.05.12
20:42
не баись.. 50позиций и ручками поправишь. будет наука а) писать аккуратно б) знать типовые возможности по восстанеовлению нумерации
3 DjSpike
 
10.05.12
20:51
(2) Кому наука? Девочке, которая зугружала накладную и накосячила?
4 Лефмихалыч
 
10.05.12
20:51
(0) на ИТС есть обработка УниверсальныйПодборИОбработка, она умеет перенумировывать. Если база файловая, надо будет всех вытряхнуть. Если серверная - вызвать ОбновитьНумерациюОбъектов() (или как-то так оно называется - ищ СП по обновить)
5 DjSpike
 
10.05.12
20:52
Я бы может и посмотрел что нибудь "типовое" да вот только диска ИТС под рукой нету, а на сайте users.v8 ничего не нашел.
6 Злопчинский
 
10.05.12
20:52
(3) ну, если у тебя есть альтернаьтива...
7 НуВотКак
 
10.05.12
20:57
а перенумировывать весь справочник из-за 50ти позиций это нормально? Не ну если ты сможешь аккуратно перенумировать только 50 позиций тогда ладно
8 Лефмихалыч
 
10.05.12
20:58
(3) а девочке надо ногти вырвать и объяснить, что в следующий раз это будут не накладные, а родные ногти
9 DjSpike
 
10.05.12
20:59
(7) эти позиции можно отфильтровать по длинне кода, т.е. стандартный код 00000015386  а эти позиции с кодом 102452
10 НуВотКак
 
10.05.12
21:02
(9) умный ты шибко, как ты такой фильтр задашь?
11 DjSpike
 
10.05.12
21:04
(10) СтрДлина (Объект.Код) < 11
12 s03
 
10.05.12
21:05
Если Лев(ТвоеЧисло, 5)<>"00000" Тогда
...
КонецЕсли
13 DjSpike
 
10.05.12
21:06
(12) Спасибо. Тоже хороший вариант.
14 НуВотКак
 
10.05.12
21:06
Гениально, а теперь пишите дальше, потому что в стандартных обработках замены значений вы такое не вставите
15 catena
 
10.05.12
21:07
Подобно "______"
16 s03
 
10.05.12
21:08
А зачем стандартные брать?
Если достаточно найти последнюю "правильную" и всем последующим присвоить "правильная"+1
17 НуВотКак
 
10.05.12
21:09
пишите, я бы за это время девочке бы уже объяснил как ей косяк нумерации исправить
18 s03
 
10.05.12
21:16
Да и делов то не много
Обычный запрос:

"ВЫБРАТЬ
   Номенклатура.Ссылка,
   Номенклатура.Код
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка>&ПоследняяПравильная"

Ну и затем:

сч = КодПоследнейПравильной;
Пока Выборка.Следующий() Цикл
   сч = сч + 1;
   Номенклатура = Выборка.Ссылка.ПолучитьОбъект();
   Номенклатура.Код = Прав("00000000000"+СтрЗаменить(сч, Символы.НПП, "")));
   Номенклатура.Записать();
КонецЦикла;
19 s03
 
10.05.12
21:18
Для таких вещей даже обработки не пишу, а пользуюсь расширенной консолью запросов, у которой есть возможность обрабатывать полученную выборку.
20 НуВотКак
 
10.05.12
21:19
А вдруг
Номенклатура.Код = Прав("00000000000"+СтрЗаменить(сч, Символы.НПП, "")));
Будет номер не уникален?
21 DjSpike
 
10.05.12
21:20
Спасибо всем за внимание. Вот решение:
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   СпрНом =  Справочники.Номенклатура.ВыбратьИерархически();
   Сообщить("Начало");
   счетчик=15387;
   Пока СпрНом.Следующий() цикл
   Объект = СпрНом.ПолучитьОбъект();
   
       Если Лев(Объект.Код, 6)<>"000000" Тогда
           Сообщить(Объект.код);
           Объект.Артикул = Объект.Код;
           Объект.Записать();
           Объект.Код= "000000"+Счетчик;
           счетчик = счетчик + 1;
           Объект.Записать();
       КонецЕсли;
   КонецЦикла;
   Сообщить("Конец");
КонецПроцедуры
22 s03
 
10.05.12
21:24
(20) Исходя из условия, изначально код присваивался 1С автоматически, и только последние 50 позиций руками вбили неправильный. Поэтому найти последний "правильный" - уже ручная работа (и довольно несложная). А увеличивая постоянно на +1 счетчик уже тем самым избавляемся от того, что он может повториться.

p.s. Но опять же, это основываясь только на заданных ТС данных.
23 s03
 
10.05.12
21:25
(20) Хотя да, у мну там маленькая опечатка - забыл добавить сколько символов справа надо )))
24 Злопчинский
 
10.05.12
21:27
(11) гов-н/окод детектед
Если СтрДлина (СокрЛП(Объект.Код)) < Метаданные.Справочник("Номенклатура").ДлинаКода