|
Восстановление нумерации справочника номенклатура | ☑ | ||
---|---|---|---|---|
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) гов-н/окод детектед
Если СтрДлина (СокрЛП(Объект.Код)) < Метаданные.Справочник("Номенклатура").ДлинаКода |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |