Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

В данной транзакции уже происходили ошибки

В данной транзакции уже происходили ошибки
Я
   geminisf
 
02.12.20 - 08:18
Доброго всем дня.
Есть простенький код
НовыйЭлемент = Справочники.НоменклатураКонтрагентов.СоздатьЭлемент();
НовыйЭлемент.Наименование = Стр.НаименованиеНоменклатурыПоставщика;
НовыйЭлемент.НаименованиеНоменклатуры = Стр.НаименованиеНоменклатурыПоставщика;
НовыйЭлемент.НаименованиеПолное = Стр.НаименованиеНоменклатурыПоставщика;
НовыйЭлемент.Артикул = Стр.КодПоставщика;
НовыйЭлемент.Номенклатура = НайденнаяНоменклатура.Ссылка;
НовыйЭлемент.Упаковка = НайденнаяНоменклатура.ЕдиницаИзмерения;
НовыйЭлемент.Владелец = ПоставщикВладелец.Ссылка;            
НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец;
НовыйЭлемент.Записать();


Так вот, перед записью НовыйЭлемент.Владелец, НовыйЭлемент.ВладелецНоменклатуры, ПоставщикВладелец и ПоставщикВладелец.Ссылка имеют тип СправочникСсылка.Партнеры. Но при записи возникает ошибка "В данной транзакции уже происходили ошибки". Если закомментировать строку
    
НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец;


то запись происходит, но у элемента справочника как бы нет владельца. Т.е. отбор в списке не работает.
Реквизит "ВладелецНоменклатуры" имеет определяемый тип "ВладелецНоменклатурыБЭД", который в свою очередь имеет тип "СправочникСсылка.Партнеры". Не могу сообразить - как правильно записать значение в реквизит "ВладелецНоменклатуры".
 
 Партнерская программа EFSOL Oblako
   Kigo_Kigo
 
1 - 02.12.20 - 08:27
НовыйЭлемент.ВладелецНоменклатуры = ПоставщикВладелец.Ссылка; 

А если так?
   geminisf
 
2 - 02.12.20 - 08:33
(1) Изначально так было. Всё то же самое.
   aka MIK
 
3 - 02.12.20 - 08:57
При такой ошибке на конкретную строку кода можно не обращать внимание.
   Волшебник
 
4 - 02.12.20 - 08:58
Ошибка случилась раньше. Надо смотреть журнал регистрации
   hhhh
 
5 - 02.12.20 - 09:30
(2) вообще-то справочник называется НоменклатураПоставщиков. Чего-то вы не договариваете.
   zippygrill
 
6 - 02.12.20 - 09:42
В данной транзакции уже происходили ошибки - говорит зачастую о том что у тебя ранее есть конструкция типа

Попытка
.....
Исключение

..... ДругаяПроцедура()
          Попытка
             Исключение
          КонецПопытки
      КлнецПроцедуры
Конецпопытки
   geminisf
 
7 - 02.12.20 - 09:49
(5) НоменклатураКонтрагентов скопировал из конфигуратора
   geminisf
 
8 - 02.12.20 - 11:03
(6) Собственно вот вся процедура
&НаСервере
Процедура кнЗагрузитьНаСервере()
    тзНомПост = РеквизитФормыВЗначение("Таб");
    спрНоменклатура = Справочники.Номенклатура;    
    Для Каждого Стр Из тзНомПост Цикл
        НайденнаяНоменклатура = спрНоменклатура.НайтиПоРеквизиту("Артикул", СокрЛП(Стр.НашКод));
        
        Если НайденнаяНоменклатура.Пустая() = Ложь Тогда
            НовыйЭлемент = Справочники.НоменклатураКонтрагентов.СоздатьЭлемент();
            НовыйЭлемент.Наименование = Стр.НаименованиеНоменклатурыПоставщика;
            НовыйЭлемент.НаименованиеНоменклатуры = Стр.НаименованиеНоменклатурыПоставщика;
            НовыйЭлемент.НаименованиеПолное = Стр.НаименованиеНоменклатурыПоставщика;
            НовыйЭлемент.Артикул = Стр.КодПоставщика;
            НовыйЭлемент.Номенклатура = НайденнаяНоменклатура.Ссылка;
            НовыйЭлемент.Упаковка = НайденнаяНоменклатура.ЕдиницаИзмерения;
            НовыйЭлемент.Владелец = ПоставщикВладелец.Ссылка;            
            НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец;
            
            НовыйЭлемент.Записать();
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры



Как видно, больше никакие процедуры или функции не вызываются и конструкций никаких нет. Всё просто. Да и если закомментировать строку с ВладельцемНоменклатуры, то запись создается.
   youalex
 
9 - 02.12.20 - 11:06
А зачем ты получаешь ссылку от ссылки, вот здесь например?
НайденнаяНоменклатура.Ссылка
ПоставщикВладелец.Ссылка видимо тоже
   hhhh
 
10 - 02.12.20 - 11:09
(8) посмотрите, кто владелец у НоменклатураКонтрагентов. Точно Партнер? Ведь должен быть контрагент.
   geminisf
 
11 - 02.12.20 - 11:13
(10) Нет. Партнер.
   geminisf
 
12 - 02.12.20 - 11:15
(9) Без ссылок тоже пробовал. Не получается. Вот полный текст ошибки.
В данной транзакции уже происходили ошибки!
{ВнешняяОбработка.ЗагрузкаНоменклатурыПоставщика.Форма.Форма.Форма(39)}:            НовыйЭлемент.Записать();
{ВнешняяОбработка.ЗагрузкаНоменклатурыПоставщика.Форма.Форма.Форма(74)}:    кнЗагрузитьНаСервере();

по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
В данной транзакции уже происходили ошибки!
{ОбщийМодуль.УдалениеПомеченныхПовтИсп.Модуль(17)}:    Результат.Значение = Константы.ПроверятьИспользованиеУдаляемыхОбъектов.Получить();
{ОбщийМодуль.УдалениеПомеченныхОбъектовСлужебный.Модуль(216)}:    ДанныеКонстанты = УдалениеПомеченныхПовтИсп.ПроверятьИспользованиеУдаляемыхОбъектов();
{ОбщийМодуль.УдалениеПомеченныхОбъектовСлужебный.Модуль(975)}:    Если Не ПроверятьИспользованиеУдаляемыхОбъектов() Тогда
{ОбщийМодуль.УдалениеПомеченныхОбъектовСлужебный.Модуль(230)}:    ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ);
{ВнешняяОбработка.ЗагрузкаНоменклатурыПоставщика.Форма.Форма.Форма(39)}:            НовыйЭлемент.Записать();

по причине:
В данной транзакции уже происходили ошибки!

   youalex
 
13 - 02.12.20 - 11:18
Включи Отладка/Остановка по ошибке  и смотри по стеку, если поймаешь ошибку
   acht
 
14 - 02.12.20 - 11:33
(12) У тебя где-то в обработчиках передзаписью/призаписи попыткой-исключением наглухо давится ошибка работы с базой. Это приводит к тому, что одна из подписок призаписи, выполняющаяся после, падает на чтении константы ПроверятьИспользованиеУдаляемыхОбъектов.

Судя по тому, что все это завязано не владельца - ищи кривой код и больше так не делай.
   geminisf
 
15 - 02.12.20 - 12:30
Оказалось, что нужно заполнить реквизиты "Идентификатор" и "ИдентификаторНоменклатуры".
   acht
 
16 - 02.12.20 - 12:32
(15) То есть в фразе "Если закомментировать строку НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец; то запись происходит" ты нас обманывал?
   geminisf
 
17 - 02.12.20 - 12:39
(16) Нет. Видимо при записи элемента справочника происходит запись еще в какой-нибудь регистр сведений (сейчас некогда разбираться) и происходит она только тогда, когда указан ВладелецНоменклатуры.

Список тем форума
 
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.