Имя: Пароль:
1C
 
Всётаки как присвоить всем элементам справочника новый код?
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
Спасибо :)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.