обработка

Новая тема
Показывать по 10 20 40 сообщений
Вот мне и нужен контроль уникальности.
Если использовать Если "СтрДлина(а)>СтрДлина(б)", то цикл очень быстро заканчивается и ничего не меняет. Если использовать "а<>б", то на каком-то шаге возникает ошибка "код не уникален". Может нужно еще какая-нибудь проверка на уникальность?
>Если использовать Если "СтрДлина(а)>СтрДлина(б)", то цикл очень быстро заканчивается и ничего не меняет.
>
Стоит такое предположить, так как если реквизиты "Код" и "НомерИнвКарт" одинаковой длины, то это
условие просто никогда не выполняется.

>Может нужно еще какая-нибудь проверка на уникальность?
>
А вот это зависит от того, какие данные вы вводили. Тут если таких элементов не много
то просто руками изменить номер инв. карты и соответственно переправить нумерацию инвентарных
карт, если требеутся. Тогда обработка пройдёт нормально.
Так же стоит подумать, а нельзя ли данное сделать другими путями.
А изменять или отключать контроль уникальности у справочника не стои вообще.
так как проблем потом какие-нибудь возникнуть могут
"Можно попробовать что-то вроде:
Для Д = 1 по  Спис.РазмерСписка() Цикл
    ОС = Спис.ПолучитьЗначение(Д);
    Состояние("2. " + ОС.Наименование);
    а = Лев(ОС.Код, СтрДлина(ОС.НомерИнвКарт));
    б = Лев(ОС.НомерИнвКарт, СтрДлина(ОС.Код));
    Если ПустоеЗначение(б) = 0 Тогда
         Если Спр.НайтиПоКоду(б)=1 Тогда
               //Тут чего-нибудь делаем если такой код уже есть
               //Можно просто сообщать о таких элементах и потом руками переправить
         КонецЕсли;
         Спр.НайтиЭлемент(ОС);
         Спр.Код = б;
         Спр.НомерИнвКарт = а;
         Спр.Записать();
         Сообщить("Обмен: " + ОС.Код + " " + ОС.Наименование+" "+ ОС.НомерИнвКарт);
    КонецЕсли;
КонецЦикла;
КонецПроцедуры"
Читают тему
(гостей: 1)

Быстрый переход