Имя: Пароль:
1C
 
Ошибка в запросе ТОИР
0 extrim-style
 
22.11.16
16:36
Обнаружилась следующая ошибка: иногда неверно формируется структура данных, теряются операции. Проявляется следующим образом: при первом выполнении - неправильно, при всех последующих (даже после перезапуска) - верно. В случае ошибки функция возвращает таблицу, которая неправильно отсортирована. Не могу понять, что на это влияет и как это исправить?
Параметр ID_Ремонта - одинаковый, параметр ТаблицаРемонтныхРаботПоНормативу - в этих случаях отличается идентификатор одного из полей.

Функция ПолучитьТаблицуИсполняемыхРаботДляЗаявки(ID_Ремонта, ТаблицаРемонтныхРаботПоНормативу)
    
    Запрос = Новый Запрос;
    МенеджерВТ = новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТаблицаРемонтныхРаботПоНормативу.РемонтнаяРабота КАК РемонтнаяРабота,
                   |    ТаблицаРемонтныхРаботПоНормативу.РемонтыОборудования_ID,
                   |    ТаблицаРемонтныхРаботПоНормативу.ТехКартаРемонта,
                   |    ТаблицаРемонтныхРаботПоНормативу.Родитель_ID,
                   |    ТаблицаРемонтныхРаботПоНормативу.ID,
                   |    ТаблицаРемонтныхРаботПоНормативу.Количество КАК Количество
                   |ПОМЕСТИТЬ ТаблицаРемонтныхРаботПоНормативу
                   |ИЗ
                   |    &ТаблицаРемонтныхРаботПоНормативу КАК ТаблицаРемонтныхРаботПоНормативу";
    
    Запрос.УстановитьПараметр("ТаблицаРемонтныхРаботПоНормативу", ТаблицаРемонтныхРаботПоНормативу);
    Запрос.Выполнить();
    
    ЗапросРР = Новый Запрос;
    
    ЗапросРР.МенеджерВременныхТаблиц = МенеджерВТ;
    
    ЗапросРР.Текст =
    
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтнаяРабота,
    |    торо_ЗаявкаНаРемонтРемонтныеРаботы.ID,
    |    торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтыОборудования_ID
    |ПОМЕСТИТЬ РаботыВДокументах
    |ИЗ
    |    Документ.торо_ЗаявкаНаРемонт.РемонтныеРаботы КАК торо_ЗаявкаНаРемонтРемонтныеРаботы
    |ГДЕ
    |    торо_ЗаявкаНаРемонтРемонтныеРаботы.РемонтыОборудования_ID В(&РемонтыОборудования_ID)
    |    И торо_ЗаявкаНаРемонтРемонтныеРаботы.Ссылка.Проведен
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы.РемонтнаяРабота,
    |    торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы.ID,
    |    торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы.РемонтыОборудования_ID
    |ИЗ
    |    Документ.торо_НарядНаВыполнениеРемонтныхРабот.РемонтныеРаботы КАК торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы
    |ГДЕ
    |    торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы.РемонтыОборудования_ID В(&РемонтыОборудования_ID)
    |    И торо_НарядНаВыполнениеРемонтныхРаботРемонтныеРаботы.Ссылка.Проведен
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    торо_АктОВыполненииЭтапаРаботРемонтныеРаботы.РемонтнаяРабота,
    |    торо_АктОВыполненииЭтапаРаботРемонтныеРаботы.ID,
    |    торо_АктОВыполненииЭтапаРаботРемонтныеРаботы.РемонтыОборудования_ID
    |ИЗ
    |    Документ.торо_АктОВыполненииЭтапаРабот.РемонтныеРаботы КАК торо_АктОВыполненииЭтапаРаботРемонтныеРаботы
    |ГДЕ
    |    торо_АктОВыполненииЭтапаРаботРемонтныеРаботы.РемонтыОборудования_ID В(&РемонтыОборудования_ID)
    |    И торо_АктОВыполненииЭтапаРаботРемонтныеРаботы.Ссылка.Проведен
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаРемонтныхРаботПоНормативу.РемонтнаяРабота,
    |    ТаблицаРемонтныхРаботПоНормативу.Количество,
    |    ТаблицаРемонтныхРаботПоНормативу.РемонтыОборудования_ID,
    |    ТаблицаРемонтныхРаботПоНормативу.ID,
    |    ТаблицаРемонтныхРаботПоНормативу.Родитель_ID,
    |    ТаблицаРемонтныхРаботПоНормативу.ТехКартаРемонта
    |ПОМЕСТИТЬ РаботыИзДокументаОснования
    |ИЗ
    |    ТаблицаРемонтныхРаботПоНормативу КАК ТаблицаРемонтныхРаботПоНормативу
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    РаботыВДокументах.ID КАК ID1,
    |    РаботыИзДокументаОснования.РемонтнаяРабота,
    |    РаботыИзДокументаОснования.РемонтыОборудования_ID,
    |    РаботыИзДокументаОснования.ID,
    |    РаботыИзДокументаОснования.Родитель_ID,
    |    РаботыИзДокументаОснования.ТехКартаРемонта,
    |    РаботыИзДокументаОснования.Количество
    |ПОМЕСТИТЬ ИтоговаяТаблица
    |ИЗ
    |    РаботыИзДокументаОснования КАК РаботыИзДокументаОснования
    |        ЛЕВОЕ СОЕДИНЕНИЕ РаботыВДокументах КАК РаботыВДокументах
    |        ПО РаботыИзДокументаОснования.РемонтнаяРабота = РаботыВДокументах.РемонтнаяРабота
    |            И РаботыИзДокументаОснования.РемонтыОборудования_ID = РаботыВДокументах.РемонтыОборудования_ID
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ИтоговаяТаблица.РемонтнаяРабота,
    |    ИтоговаяТаблица.Количество,
    |    ИтоговаяТаблица.РемонтыОборудования_ID,
    |    ИтоговаяТаблица.ID,
    |    ИтоговаяТаблица.ТехКартаРемонта,
    |    ИтоговаяТаблица.Родитель_ID
    |ИЗ
    |    ИтоговаяТаблица КАК ИтоговаяТаблица
    |ГДЕ
    |    ИтоговаяТаблица.ID1 ЕСТЬ NULL ";
    
    ЗапросРР.УстановитьПараметр("РемонтыОборудования_ID", ID_Ремонта);
    
    ТЗРаботы = ЗапросРР.Выполнить().Выгрузить();

    Возврат ТЗРаботы;
    
КонецФункции
1 extrim-style
 
22.11.16
16:43
+(0) в таблице из второго параметра, имеется поле с уникальным идентификатором, который создаётся в коде. Какой бы ни был идентификатор (протестировал несколько раз), почему-то всегда первый раз - неправильно, потом - верно. Не пойму, в чём суть подобной ошибки?
Программист всегда исправляет последнюю ошибку.