1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
geminisf 02.12.20 - 08:18 | Доброго всем дня.
Есть простенький код НовыйЭлемент = Справочники.НоменклатураКонтрагентов.СоздатьЭлемент(); НовыйЭлемент.Наименование = Стр.НаименованиеНоменклатурыПоставщика; НовыйЭлемент.НаименованиеНоменклатуры = Стр.НаименованиеНоменклатурыПоставщика; НовыйЭлемент.НаименованиеПолное = Стр.НаименованиеНоменклатурыПоставщика; НовыйЭлемент.Артикул = Стр.КодПоставщика; НовыйЭлемент.Номенклатура = НайденнаяНоменклатура.Ссылка; НовыйЭлемент.Упаковка = НайденнаяНоменклатура.ЕдиницаИзмерения; НовыйЭлемент.Владелец = ПоставщикВладелец.Ссылка; НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец; НовыйЭлемент.Записать(); Так вот, перед записью НовыйЭлемент.Владелец, НовыйЭлемент.ВладелецНоменклатуры, ПоставщикВладелец и ПоставщикВладелец.Ссылка имеют тип СправочникСсылка.Партнеры. Но при записи возникает ошибка "В данной транзакции уже происходили ошибки". Если закомментировать строку НовыйЭлемент.ВладелецНоменклатуры = НовыйЭлемент.Владелец; то запись происходит, но у элемента справочника как бы нет владельца. Т.е. отбор в списке не работает. Реквизит "ВладелецНоменклатуры" имеет определяемый тип "ВладелецНоменклатурыБЭД", который в свою очередь имеет тип "СправочникСсылка.Партнеры". Не могу сообразить - как правильно записать значение в реквизит "ВладелецНоменклатуры". | ||
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) Нет. Видимо при записи элемента справочника происходит запись еще в какой-нибудь регистр сведений (сейчас некогда разбираться) и происходит она только тогда, когда указан ВладелецНоменклатуры. |
|
Список тем форума |