8.х При переносе через OLE код не уникальный. Хотя код программы правильный

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alex-79, 16 авг 2007.

  1. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Я перетаскиваю группы справочника из базы 7.7 в 8.0 Код элементов чиловой и уникальность во всем справочнике. А при перетасивании элементов в 8.0 выходит ошибка, что код не уникальный. Что можно сделать? :unsure:

    База7 = ПолучитьОЛЕБазу();
    Попытка
    База7.Метаданные.Выбран();
    Исключение
    Сообщить("Неудалось иницилизировать базу!");
    Возврат;
    КонецПопытки;

    Спр7 = База7.CreateObject("Справочник.Форматы");
    Спр7.ВыбратьЭлементы(1);
    Пока Спр7.ПолучитьЭлемент() Цикл
    Если Спр7.ЭтоГруппа() > 0 Тогда
    НовыйОбъект = Справочники.Форматы.СоздатьГруппу();
    НовыйОбъект.Код = Спр7.Код;
    НовыйОбъект.Наименование = Спр7.Наименование;
    НовыйОбъект.Записать();
    КонецЕсли;
    КонецЦикла;
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Проверьте в отладчике.
    Скорее всего вы и правда присваиваете не уникальный код. Попробуйте переделать часть кода вот так:

    Вместо:
    Код:
    НовыйОбъект.Записать(); 
    
    
    Поставьте
    Код:
    Попытка
    НовыйОбъект.Записать(); 
    Исключение
    Сообщить("Не удалось записать элемент: " + Спр7.Код + " " Спр7.Наименование);
    КонецПопытки;
    
    
    Так вы сразу увидите после работы обработки список элементов, котоыре не записались!
  3. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Проблема решилась. Оказывается 1С 8.0 не воспринимает код справочника равным 0 (тип кода числовой) и поэтому получается что в 1С 7.7 есть элемент справочника с кодом 0, а при присваивании этого кода элементу справочника 1С 8.0 при записи переприсваивается самой 1С другой код и в итоге нарушается уникальность. :unsure:

    Тока не понятно зачем это было сделано фирмой 1С

Поделиться этой страницей