Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (Записать):Значение поля "Номер" не уникально
0 sapravka
 
18.05.15
22:44
Здравствуйте.
Если что не так, прошу сильно не ругать.
Есть правила переноса из УТ 10.3 в БП 2.0 нескольких документов и вот при загрузке в БП 2.0 выходит ошибка:

Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  ПоступлениеТоваровУслуг
    ТипОбъекта             =  Поступление товаров и услуг
    Объект                 =  Поступление товаров и услуг ФЛ000000399 от 26.09.2014 0:00:02
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Значение поля "Номер" не уникально
    ПозицияМодуля          =  (11)
    КодСообщения           =  21

Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1630)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  ПоступлениеТоваровУслуг
    ТипОбъекта             =  Поступление товаров и услуг
    Объект                 =  Поступление товаров и услуг ФЛ000000399 от 26.09.2014 0:00:02
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Значение поля "Номер" не уникально
    ПозицияМодуля          =  (11)
    КодСообщения           =  21

Окончание загрузки: 18.05.2015 22:13:02

и загрузка соответственно прекращается.


В ПКО после загрузки прописано:

Если НЕ Объект.Ссылка.ПометкаУдаления Тогда  //если помечен на удаление, то ничего не делаем
    Если Объект.ЭтоНовый() Тогда  //если новый документ, то сразу его проводим
        Попытка
            Объект.Записать(РежимЗаписиДокумента.Проведение);
            Сообщить("Документ реализации товаров и услуг № " + Объект.Номер + " от " + Объект.Дата + " УСПЕШНО ЗАГРУЖЕН И ПРОВЕДЕН");
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
            Иначе
                Если  объект.Проведен тогда  //если объек проведен, то снимает проведение, что бы не было глюков
                    Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
                    Попытка
                        Объект.Записать(РежимЗаписиДокумента.Проведение);
                        Сообщить("Документ реализации товаров и услуг № " + Объект.Номер + " от " + Объект.Дата + " УСПЕШНО ЗАГРУЖЕН И ПРОВЕДЕН");
                    Исключение
                        Сообщить(ОписаниеОшибки());
                    КонецПопытки;
                Иначе
                    Попытка
                        Объект.Записать(РежимЗаписиДокумента.Проведение);
                        Сообщить("Документ реализации товаров и услуг № " + Объект.Номер + " от " + Объект.Дата + " УСПЕШНО ЗАГРУЖЕН И ПРОВЕДЕН");
                    Исключение
                        Сообщить(ОписаниеОшибки());
                    КонецПопытки;
            КонецЕсли;
        КонецЕсли;
Иначе
    Сообщить("Проведение документа реализации товаров и услуг № " + Объект.Номер + " от " + Объект.Дата + " НЕВОЗМОЖНО, так как он помечен на удаление");
КонецЕсли;

Убедительно прошу, подскажите, как реализовать в КД, что бы при загрузке если номер и дата совпадает документ замещался (перезаписывался) данными из базы источника?
1 Nikart
 
18.05.15
23:06
Поставить поиск не по внутреннему идентификатору, а сначала по дате и номеру
2 sapravka
 
18.05.15
23:11
(1) Хоть убрал, хоть поставил все равно ошибка осталась:
http://s020.radikal.ru/i710/1505/af/cac36d028939.jpg
3 RomanYS
 
18.05.15
23:15
(2) а поля поиска настроены?
4 Nikart
 
18.05.15
23:16
Скорее всего время разное у документов или даже дата. Вообще уникальный должен быть номер обычно в пределах года.
У тебя секунда в секунду совпадает?
5 sapravka
 
18.05.15
23:23
(4) Номер есть в этом году, но он совсем с другой датой
6 Nikart
 
18.05.15
23:27
Навскидку не придумаю сейчас без КД перед глазами как сделать. Попробуй выделить тогда год,указать его параметром для поиска и номер.
7 sapravka
 
18.05.15
23:33
(6) А немного можно поподробнее, пожалуйста...
8 Nikart
 
18.05.15
23:38
Сс телефона пишу)
9 RomanYS
 
18.05.15
23:42
имхо без кода такое не сделаешь, там обработчик должен быть у ПКО по полям поиска - посмотри его описание, может поможет
10 sapravka
 
19.05.15
00:43
(9) Что то пока ничего не получается...

А можно пример в студию?
11 vicof
 
19.05.15
00:54
Очень интересно, как получилось так, что в разных базах разные документы за разные даты с одним номером.
12 sapravka
 
19.05.15
07:41
(11) Так базы разные:
1. Источник - УТ 10.3
2. Приемник - БП 2.0
Вот как то так....

Подскажите пожалуйста, а лучше дайте пример кода:
Как проверить при загрузке в загружаемом годе на уникальность номера и в случаи нахождения двойников - что бы делал код уникальным - например находил последний номер за этот год и прибавлял к нему 1.
13 Фрэнки
 
19.05.15
07:57
(12) А если в базе приемнике просто перенумеровать уже существующие документы? Зачем при переносе данных по КД менять назначенные в источнике номера? Я бы понял если бы меняли префиксы или доля документов из источника или для документов в приемнике.

А код написать... код можно не успеть быстро придумать
Основная теорема систематики: Новые системы плодят новые проблемы.