|   |   | 
| 
 | В данной транзакции уже происходили ошибки! | ☑ | ||
|---|---|---|---|---|
| 0
    
        Privetanya 02.08.19✎ 09:06 | 
        Ошибка при вызове метода контекста (Выполнить) 
 Выборка = Запрос.Выполнить().Выбрать(); по причине: Ошибка выполнения запроса по причине: В данной транзакции уже происходили ошибки! Не могу понять в чем проблема,помогите пожалуйста... после выполнения Номенклатура=Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры)) Номенклатура =Ошибка получения представления значения: В данной транзакции уже происходили ошибки! | |||
| 1
    
        Cyberhawk 02.08.19✎ 09:08 | 
        В поломанной транзакции обращаться к БД нельзя     | |||
| 2
    
        Cyberhawk 02.08.19✎ 09:08 | 
        Истинная проблема где-то в коде до того места, где тебе показало эту ошибку     | |||
| 3
    
        piter3 02.08.19✎ 09:08 | 
        С чего решил,что здесь?
 Номенклатура=Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры)) | |||
| 4
    
        Privetanya 02.08.19✎ 09:11 | 
        (3) после выполнения этой строки номенклатура=Ошибка получения представления значения: В данной транзакции уже происходили ошибки!. Отладчиком проверяла     | |||
| 5
    
        Privetanya 02.08.19✎ 09:11 | 
        (2) как найти?     | |||
| 6
    
        Cyberhawk 02.08.19✎ 09:12 | 
        Отладчиком тем более нет смысла проверять, т.к. ты все еще внутри поломанной транзакции     | |||
| 7
    
        Cyberhawk 02.08.19✎ 09:13 | 
        (5) Написать хитрый метод в общем модуле, в каждой строке кода в режиме трассировки вызывать этот метод, который будет возвращать признак того, что транзакция поломана. Ну это если совсем тямы нет прикинуть по коду, где же факап случился.     | |||
| 8
    
        piter3 02.08.19✎ 09:13 | 
        (4)Нет,ищи ранее     | |||
| 9
    
        Privetanya 02.08.19✎ 09:26 | 
        (8) я взяла эту обработку из комплексной и перенесла на нашу самописку. Там все хорошо работает.а тут такая ошибка...     | |||
| 10
    
        piter3 02.08.19✎ 09:27 | 
        (9) И че?Ищи,попробуй на копии без транзакции     | |||
| 11
    
        Privetanya 02.08.19✎ 09:38 | 
        (10) так странно. В этой функции ВИНоменклатуры = Неопределено
 Функция НайтиСоздатьНоменклатуру(СтрокаТовара, Знач ВидНоменклатуры, СтавкаНДС, ВИНоменклатуры = Неопределено) Номенклатура = Справочники.Номенклатура.ПустаяСсылка(); ВИНоменклатуры = Неопределено; УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено); а при вызове ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам приходит уже Истина. Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры) Если НЕ ЗначениеЗаполнено(СтрокаТовара.ТоварУслугаИд) Тогда Возврат Ложь; КонецЕсли; Попытка ИдНоменклатуры = ПолучитьИдНоменклатуры(СтрокаТовара.ТоварУслугаИд); Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры)); | |||
| 12
    
        piter3 02.08.19✎ 09:39 | 
        Истина это нашла или нет?Я же не вижу что там     | |||
| 13
    
        Privetanya 02.08.19✎ 10:21 | 
        (12) Если посмотреть в комплексной,то там получает так же неопределено. А у меня истина.     | |||
| 14
    
        piter3 02.08.19✎ 10:21 | 
        (13) Может стоит подумать над кодом и отличиями?     | |||
| 15
    
        Вафель 02.08.19✎ 10:24 | 
        в транзакции нельзя записывать с попыткой. все равно ломается     | |||
| 16
    
        Privetanya 02.08.19✎ 10:27 | 
        (14) Вот ищу отличия     | |||
| 17
    
        dka80 02.08.19✎ 10:30 | 
        Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры)
 Возврат Истина КонецФункции Тогда увидишь где ошибка ранее | |||
| 18
    
        zva 02.08.19✎ 10:34 | 
        Вместо УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено);
 нужно УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры); | |||
| 19
    
        catena 02.08.19✎ 10:37 | 
        УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено);
 - ну еще бы оно не приходило "Истина" | |||
| 20
    
        Privetanya 02.08.19✎ 10:39 | 
        (18) ошибка осталась     | |||
| 21
    
        Privetanya 02.08.19✎ 10:42 | 
        (17) не вижу ошибку ранее,значит она в этой функции     | |||
| 22
    
        Privetanya 02.08.19✎ 10:51 | 
        (15) убрала попытку и вышла вот такая ошибка. {Обработка.ОбменССайтом.МодульОбъекта(5103)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
 Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда по причине: В данной транзакции уже происходили ошибки! Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ХарактеристикаНоменклатуры) Если НЕ ЗначениеЗаполнено(СтрокаТовара.ТоварУслугаИд) Тогда Возврат Ложь; КонецЕсли; //Попытка ИдНоменклатуры = ПолучитьИдНоменклатуры(СтрокаТовара.ТоварУслугаИд); Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры)); Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Возврат Ложь; КонецЕсли; Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда // Объект не найден СообщитьПользователю("Номенклатура не найдена по уникальному идентификатору: " + ИдНоменклатуры, Ложь); Возврат Ложь; КонецЕсли; Если НЕ Номенклатура.ВестиУчетПоХарактеристикам Тогда Возврат Истина; КонецЕсли; ИдХарактеристики = ПолучитьИдХарактеристики(СтрокаТовара.ТоварУслугаИд); Если ПустаяСтрока(ИдХарактеристики) Тогда Возврат Истина; КонецЕсли; ХарактеристикаНоменклатуры = Справочники.ВариантыИсполнения.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдХарактеристики)); ПустаяХарактеристикаСсылка=Справочники.ВариантыИсполнения.ПустаяСсылка(); Если ХарактеристикаНоменклатуры = ПустаяХарактеристикаСсылка Тогда Возврат Истина; КонецЕсли; Если ХарактеристикаНоменклатуры.ПолучитьОбъект() = Неопределено Тогда СообщитьПользователю("Объект <ХарактеристикаНоменклатуры> не найден: " + Строка(ИдХарактеристики) + ". Будет создан новый объект.", Ложь); Возврат Ложь; КонецЕсли; //Исключение // Возврат Ложь; //КонецПопытки; Возврат Истина; КонецФункции | |||
| 23
    
        Вафель 02.08.19✎ 10:54 | 
        (22) нельзя ЗАПИСЫВАТЬ в попытке. ищи запись выше по коду     | |||
| 24
    
        Cyberhawk 02.08.19✎ 10:55 | 
        (15) (23) Что-то ты несешь ерунду     | |||
| 25
    
        catena 02.08.19✎ 10:56 | 
        (22)Поставь уже в отладчике остановку по ошибке.     | |||
| 26
    
        GGDots 02.08.19✎ 10:59 | 
        (25) +     | |||
| 27
    
        DrZombi гуру 02.08.19✎ 11:09 | 
        (22) Номенклатура.ПолучитьОбъект()
 Что вы тут пытаетесь проверить... Баже святы... У вас какой уровень в 1С? :) | |||
| 28
    
        DrZombi гуру 02.08.19✎ 11:09 | 
        (25) Тут и без отладчика видно ошибку :)     | |||
| 29
    
        DrZombi гуру 02.08.19✎ 11:11 | 
        +(22) "Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда"
 Тут скрыт первый косяк... "Детектит, ГУАНО код"... Рекомендую тут подумать вам, и переписать :) | |||
| 30
    
        Privetanya 02.08.19✎ 11:17 | 
        похоже поняла. Ошибка происходит при записи договора контрагента.     | |||
| 31
    
        DrWatson 02.08.19✎ 11:30 | 
        (30) Нужно найти ту первую Попытку с записью данных в БД, которая вываливается в исключение без "В данной транзакции уже происходили ошибки!". После такого исключения продолжать работу в транзакции уже нельзя. Нужно выходить из всех вызывающих процедур. Лучше всего это сделать через ВызватьИсключение с человеческим сообщением об ошибке или вообще не делать попытку.
 Возможно, обработка просто не рассчитана на работу в транзакции. | |||
| 32
    
        catena 02.08.19✎ 11:59 | 
        (27)По-моему, проверяется найденность элемента по переданному ИД. А как надо?     | |||
| 33
    
        hhhh 02.08.19✎ 12:08 | 
        (32) а точно там "Неопределено" выдаст? может null?     | |||
| 34
    
        catena 02.08.19✎ 12:27 | ||||
| 35
    
        Cyberhawk 02.08.19✎ 12:29 | 
        (32) Запросом же можно (с условием на ссылку)     | |||
| 36
    
        catena 02.08.19✎ 12:32 | 
        (35)Ну, это дело вкуса, при разовом обращении не вижу тут грубой ошибки.     | |||
| 37
    
        Cyberhawk 02.08.19✎ 12:34 | 
        (36) Все зависит от того, планируется ли дальнейшая работа с объектом. Если только для проверки существования, то избыточное получение данных налицо.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |