![]() |
![]() |
![]() |
|
Всётаки как присвоить всем элементам справочника новый код? | ☑ | ||
---|---|---|---|---|
0
Platon
11.10.04
✎
17:35
|
Делаю так: заполняю из файла справочник при этом надо чтобы код был с префиксом 52 и длина кода вместе с префиксом 6 символов использую
УстановитьНовыйКод("52"); но выдаёт ошибку что нарушена уникальность кода. Может у кого есть алгоритм или готовая обработка по изменению кодов справочников. |
|||
1
Лошадка в пальто
11.10.04
✎
17:39
|
Код числовой? текстовый?
Что за префикс "52"? |
|||
2
Platon
11.10.04
✎
17:41
|
(1)Текстовый. код должен начинатся с 52 т.е.520001 итд
|
|||
3
Шапокляк
11.10.04
✎
17:45
|
Спр.ПорядокНаименований();
Спр.ИспользоватьРодителя(НужныйРодитель); Спр.выбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Спр.Код="52"+Прав("0000"+Строка(Число(Спр.Код)),4); Спр.Записать(); КонецЦикла; Хотя бы так. |
|||
4
Лошадка в пальто
11.10.04
✎
17:46
|
2. Попробуй УстановитьНовыйКод("52"+Строка(ну и тут то , что должно быть далее));
|
|||
5
Platon
11.10.04
✎
17:58
|
(3) Не совсем понял что должно получится
(4) УстановитьНовыйКод(<префикс>) и получится 6 значный префикс а потом сам код? |
|||
6
Шапокляк
11.10.04
✎
18:07
|
А ты какой вопрос задавал? Я ведь на него отвечала...
|
|||
7
Platon
11.10.04
✎
18:46
|
(6)Тоже самое пишет что код не уникальный :(
Процедура Сформировать() Спр=СоздатьОбъект("Справочник.Материалы"); Если Спр.НайтиПоНаименованию("Запчасти ОГМ",0,1) = 0 тогда Сообщить("Не найден"); Возврат; Иначе Род=Спр.ТекущийЭлемент(); КонецЕсли; Спр.ПорядокНаименований(); Спр.ИспользоватьРодителя(Род); Спр.выбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Спр.Код="52"+Прав("0000"+Строка(Число(Спр.Код)),4); Спр.Записать(); КонецЦикла; КонецПроцедуры |
|||
8
Platon
11.10.04
✎
18:47
|
Спр.Записать();
{C:\DOCUMENTS AND SETTINGS\V\РАБОЧИЙ СТОЛ\ИЗМ КОДОВ.ERT(18)}: Код не уникальный! |
|||
9
Шапокляк
11.10.04
✎
18:54
|
Значит, там были элементы с оддинаковым кодом за исключением количества нулей впереди. Попробуй через попытку-исключение обрабатывать ситуацию если с Прав(...,4) не получилось, сделай Прав(...,3).
Или принципиально по-другому попробуй: инд=0; Спр.ПорядокНаименований(); Спр.ИспользоватьРодителя(Род); Спр.выбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл инд=инд+1; Спр.Код="52"+Прав("0000"+Строка(инд),4); Спр.Записать(); КонецЦикла; |
|||
10
Platon
11.10.04
✎
19:01
|
Слушай сработало наконец! :) Может подскажешь как потом с уникальностью боротся если вдруг в справочнике найдутся дубли кодов.
Процедура Сформировать() инд=0; Спр=СоздатьОбъект("Справочник.Материалы"); Если Спр.НайтиПоНаименованию("Запчасти ОГМ",0,1) = 0 тогда Сообщить("Не найден"); Возврат; Иначе Род=Спр.ТекущийЭлемент(); КонецЕсли; Спр.ПорядокНаименований(); Спр.ИспользоватьРодителя(Род); Спр.выбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл инд=инд+1; Спр.Код="52"+Прав("0000"+Строка(инд),4); Спр.Записать(); КонецЦикла; КонецПроцедуры |
|||
11
Шапокляк
11.10.04
✎
19:04
|
Да я и сейчас подскажу. Если все сработало, значит нормально с уникальностью. А вот в прошлый раз посылала программа как раз из-за нее проклятой.
|
|||
12
Platon
11.10.04
✎
19:08
|
Спасибо :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |