Имя: Пароль:
1C
 
При выполнении запроса - "В данной транзакции уже происходили ошибки"
Ø (Волшебник 22.06.2017 21:15)
,
0 falselight
 
22.06.17
15:49
Подскажите пожалуйста, что может делать этот запрос?
На нем ломается выполнение кода.
Мне не понятна его суть и как это можно устранить.
Может кому либо известно это?




ВЫБРАТЬ

    ПометкаУдаления КАК ПометкаУдаления
ИЗ
    Документ.ЛМБ_ПеремещениеИмуществаМеждуФилиалами КАК ПсевдонимЗаданнойТаблицы
ГДЕ
    ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
1 falselight
 
22.06.17
15:51
вылетает такая ошибка




по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ОбщегоНазначения.Модуль(101)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
В данной транзакции уже происходили ошибки!
2 Митяйский
 
22.06.17
15:51
ПсевдонимЗаданнойТаблицы.ПометкаУдаления КАК ПометкаУдаления
3 falselight
 
22.06.17
15:59
(2) А как от этого избавиться?
Как это допустилось, я не пойму ((((
4 falselight
 
22.06.17
16:00
вот вся функция



////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

////////////////////////////////////////////////////////////////////////////////
// Общие процедуры и функции для работы с данными в базе

// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы
// по ссылке на объект.
//
//  Если доступа к одному из реквизитов нет, возникнет исключение прав доступа.
//  Если необходимо зачитать реквизит независимо от прав текущего пользователя,
//  то следует использовать предварительный переход в привилегированный режим.
//
// Параметры:
//  Ссылка    - Ссылка на объект - элемент справочника, документ, ...
//
//  Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
//              требований к свойствам структуры.
//              Например, "Код, Наименование, Родитель".
//            - Структура, ФиксированнаяСтруктура - в качестве ключа передается
//              псевдоним поля для возвращаемой структуры с результатом, а в качестве
//              значения (опционально) фактическое имя поля в таблице.
//              Если значение не определено, то имя поля берется из ключа.
//            - Массив, ФиксированныйМассив - имена реквизитов в формате требований
//              к свойствам структуры.
//
// Возвращаемое значение:
//  Структура - содержит имена (ключи) и значения затребованных реквизитов.
//              Если строка затребованных реквизитов пуста, то возвращается пустая структура
//
Функция ЗначенияРеквизитовОбъекта(Ссылка, Реквизиты) Экспорт
    
    Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда
        Если ПустаяСтрока(Реквизиты) Тогда
            Возврат Новый Структура;
        КонецЕсли;
        
        СтруктураРеквизитов = Новый Структура(Реквизиты);
        
    ИначеЕсли ТипЗнч(Реквизиты) = Тип("Структура")
          ИЛИ ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда
        
        СтруктураРеквизитов = Реквизиты;
        
    ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив")
          ИЛИ ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда
        
        СтруктураРеквизитов = Новый Структура;
        Для каждого Реквизит Из Реквизиты Цикл
            СтруктураРеквизитов.Вставить(Реквизит);
        КонецЦикла;
    Иначе
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"),
            Строка(ТипЗнч(Реквизиты)));
    КонецЕсли;
    
    ТекстПолей = "";
    Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
        
        ИмяПоля   = ?(ЗначениеЗаполнено(КлючИЗначение.Значение),
                      СокрЛП(КлючИЗначение.Значение),
                      СокрЛП(КлючИЗначение.Ключ));
        
        Псевдоним = СокрЛП(КлючИЗначение.Ключ);
        
        ТекстПолей  = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + "
        |    " + ИмяПоля + " КАК " + Псевдоним;
        
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |" + ТекстПолей + "
    |ИЗ
    |    " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы
    |ГДЕ
    |    ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
    |";
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    
    Результат = Новый Структура;
    Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
        Результат.Вставить(КлючИЗначение.Ключ);
    КонецЦикла;
    ЗаполнитьЗначенияСвойств(Результат, Выборка);
    
    Возврат Результат;
    
КонецФункции
5 falselight
 
22.06.17
16:03
в параметре "Реквизиты" там идет ПометкаУдаления

если так то возвратить пустую структуру????
правильно так бедет?
6 Naf2017
 
22.06.17
16:07
Ссылка имеет какой тип?
7 falselight
 
22.06.17
16:08
(6) Ссылка - Ошибка получения представления значения
8 falselight
 
22.06.17
16:09
Вообще отменять выполнение если идет в реквизитах ПометкаУдаления тогда, же, 100% ?
9 sapphire
 
22.06.17
16:12
(7) Объект вне прав пользователя.
10 falselight
 
22.06.17
16:21
(9) Как правильно от этого избавиться?
Как думаете? Есть рекомендации?
11 pessok
 
22.06.17
16:24
(10) убрать запрос.
вместо Если РезультатЗапроса.Пустой()
написать Если Не СсылкаНаОбъект.ПометкаУдаления
12 sapphire
 
22.06.17
16:24
(10) Вероятно, установить флаги привилегированный режим проведения или отмены проведения.
13 sapphire
 
22.06.17
16:26
(11) А это могет не избавить от ошибки
14 mehfk
 
22.06.17
16:27
Пристрелите его кто-нибудь.
15 sapphire
 
22.06.17
16:30
(14) По што?
Поди какие-то стандартные вызовы а-ля БСП
16 mehfk
 
22.06.17
16:31
(15) Да не тебя, а ТС-а.
17 falselight
 
22.06.17
16:33
если так сделать пойдет?

    Если Реквизиты = "ПометкаУдаления" Тогда
        Возврат Новый Структура;
    КонецЕсли;
18 Неверный Параметр И
 
22.06.17
16:36
(14) Но-но! Ливингстар вечен и предназначен нести нам радость. Второго такого не найдешь!
19 mehfk
 
22.06.17
16:40
(18) Не путай радость с тупостью.
20 sapphire
 
22.06.17
16:42
(17) Мдя.
21 falselight
 
22.06.17
16:44
(17) это не подходит

вот тут потом обрывается

Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита) Экспорт
    
    Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита);
    Возврат Результат[ИмяРеквизита];
    
КонецФункции
22 falselight
 
22.06.17
16:48
(11) А где вы это увидели Если РезультатЗапроса.Пустой() ?
23 falselight
 
22.06.17
16:50
(11) и там нет на объекте документе ссылки на удаление
не подойдут такие проверки
24 Неверный Параметр И
 
22.06.17
16:52
(19) Радость тупости!
25 Мимохожий Однако
 
22.06.17
16:58
Добавь в функцию проверку параметра Ссылка
26 Cyberhawk
 
22.06.17
17:00
А почему все думают над запросом, когда в тексте ошибки вроде написано "В данной транзакции уже происходили ошибки!"?
Ошибка где-то раньше...
27 Мимохожий Однако
 
22.06.17
17:01
(26) Куда ткнули - туда и думаем ))
28 falselight
 
22.06.17
17:06
сейчас вот ошибка

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ОбщегоНазначения.Модуль(135)}: Поле объекта не обнаружено


если сделать так



    Если Реквизиты = "ПометкаУдаления" Тогда
        Реквизиты = "";
        Возврат Новый Структура;
    КонецЕсли;





идет она тут


Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита) Экспорт
    
    Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита);
    Возврат Результат[ИмяРеквизита];
    
КонецФункции
29 falselight
 
22.06.17
17:07
(4) Если в функцию (4) в Реквизиты идет ПометкаУдаления
как от этого избавиться, что бы ошибки не было?
30 Вафель
 
22.06.17
17:08
Ошибка то явно не из-за запроса.
А из-за того что записал в попытке и сломал транзакцию
31 Лефмихалыч
 
22.06.17
17:08
(0) проблема (1) не в указанном запросе, а в коде, который до него.
32 falselight
 
22.06.17
17:11
(30)(31) В предприятии случилась ошибка
я по кнопке перещел в конфигуратор, стал искать
от чего она. До этого ошибки нет.
33 Лефмихалыч
 
22.06.17
17:12
(32) до этого ошибка есть, но она заглушена попыткой
34 Timon1405
 
22.06.17
17:13
(32) ошибку вызвал код раньше, вы ее получили при первом обращении к данным в БД. закомментируйте запрос, напишите
К = Константы.ВалютаРегУчета.Получить();
получите такую же ошибку
правильно вам пишут, ищите попытки
35 Вафель
 
22.06.17
17:15
поставь отладку и остановку по ошибке. увидишь
36 falselight
 
22.06.17
17:15
(34)(33) Ясно, да такого там полно.
Есть ли какие метода вероятные поиска этого.
Или блуждением по коду?
Просмотр всех попыток?
37 Мимохожий Однако
 
22.06.17
17:18
(36) Чтобы меньше блуждать,надо включить голову.
38 Лефмихалыч
 
22.06.17
17:26
(36) в (35) метод
39 Diman000
 
22.06.17
17:30
Запрос не причем. Бегом гуглить, тема разжевана.
Вкратце, внутри транзакций рискованно ставить попытку, т.к. может выскакивать ошибка из сабжа.
40 falselight
 
22.06.17
18:13
Ошибка вот тут. Отсутствуют поля в структуре, буду искать почему так. ЭтотОбъект.ДополнительныеСвойства.ДатаДокументаСдвинутаВперед



        УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь,
            ВыборочноОчищатьРегистры И НЕ ЭтотОбъект.ДополнительныеСвойства.ДатаДокументаСдвинутаВперед);
41 Buster007
 
22.06.17
18:16
в исключение надо, например, записать в ЖР информациюПоОшибке и там все будет видно в каком месте у тебя ломается
42 falselight
 
22.06.17
18:16
(40+) Почему может у некого документа,
в структуре ДополнительныеСвойства отсутствовать нужное поле, пока не понял!
43 falselight
 
22.06.17
18:17
(41) Я нашел место, по подсказке (35)
сейчас нужно разобраться почему (42) + (40)