Имя: Пароль:
1C
1С v8
8.3 ошибка при вставке таб. зн. в запрос
,
0 dan4ik
 
16.06.14
12:29
Привет,

    ДеревоЗн = Новый ТаблицаЗначений;
    ДеревоЗн.Колонки.Добавить("ФактическоеПотребление", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
    ДеревоЗн.Колонки.Добавить("Тариф", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
    ДеревоЗн.Колонки.Добавить("ФИО", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная)));
    ДеревоЗн.Колонки.Добавить("Адрес", Новый ОписаниеТипов("СправочникСсылка.КВП_ЛицевыеСчета"));
    ДеревоЗн.Колонки.Добавить("Площадь", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
    ДеревоЗн.Колонки.Добавить("КоличествоПроживающих", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
    ДеревоЗн.Колонки.Добавить("Начисления", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
    ДеревоЗн.Колонки.Добавить("Услуга", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная)));

Запрос.Текст = "ВЫБРАТЬ
                   |    т.ФактическоеПотребление,
                   |    т.Тариф,
                   |    т.Адрес,
                   |    т.Площадь,
                   |    т.КоличествоПроживающих,
                   |    т.Начисления,
                   |    т.Услуга,
                   |    т.ФИО
                   |ПОМЕСТИТЬ врТаб
                   |ИЗ
                   |    &ВременнаяТаблица КАК т
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    _врТаб.ФактическоеПотребление КАК ФактическоеПотребление,
                   |    _врТаб.Тариф КАК Тариф,
                   |    _врТаб.Адрес КАК Адрес,
                   |    _врТаб.Площадь КАК Площадь,
                   |    _врТаб.КоличествоПроживающих КАК КоличествоПроживающих,
                   |    _врТаб.Начисления КАК Начисления,
                   |    _врТаб.Услуга КАК Услуга
                   |ИЗ
                   |    врТаб КАК _врТаб
                   |ИТОГИ
                   |    СУММА(ФактическоеПотребление),
                   |    СУММА(Тариф),
                   |    СУММА(Площадь),
                   |    СУММА(КоличествоПроживающих),
                   |    СУММА(Начисления)
                   |ПО
                   |    Адрес,
                   |    Услуга
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    __врТаб.Услуга КАК Услуга,
                   |    __врТаб.ФактическоеПотребление КАК ФактическоеПотребление,
                   |    __врТаб.Начисления КАК Начисления
                   |ИЗ
                   |    врТаб КАК __врТаб
                   |ИТОГИ
                   |    СУММА(ФактическоеПотребление),
                   |    СУММА(Начисления)
                   |ПО
                   |    Услуга";
    Запрос.УстановитьПараметр("ВременнаяТаблица", ДеревоЗн);
    Пакет = Запрос.ВыполнитьПакет();
    зВыборка = Пакет[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);


Собственно код, говорит что ошибка СУБД, Таблица или представление не существует или содержит ошибки! в 8.1 нормально работает в 8.3 при конвертации выдает ошибку?
1 Сергиус
 
16.06.14
12:59
(0) попробуй разбить запрос на куски.. сначала выполни первую часть, где идет помещение во временную таблицу. Ошибка есть?
2 Сергиус
 
16.06.14
13:01
+(1) возможно не хватает псевдонимов таблицы во 2-м запросе, например в итогах. Т.е. ПО Адрес, а ПО _врТаб.Адрес надо. Попробуй так.
3 dan4ik
 
16.06.14
13:03
да попробовал выполнить только помещение в запрос, вот именно там и дает ошибку,

    Запрос.Текст = "ВЫБРАТЬ
    |    т.ФактическоеПотребление,
    |    т.Тариф,
    |    т.Адрес,
    |    т.Площадь,
    |    т.КоличествоПроживающих,
    |    т.Начисления,
    |    т.Услуга,
    |    т.ФИО
    |ПОМЕСТИТЬ врТаб
    |ИЗ
    |    &ВременнаяТаблица КАК т
    |;"   ;
    Запрос.УстановитьПараметр("ВременнаяТаблица", ДеревоЗн);
    Запрос.Выполнить()
4 Сергиус
 
16.06.14
13:05
(3) тогда поубирай колонки методом исключений..т.е. начни с 1-й колонки в таблице, если все ок после запроса, добавляй 2-ю и т.д. Может и найдешь проблемную.
5 dan4ik
 
16.06.14
13:06
изменил создание таб. зн, как в справчной информации:

КЧ = Новый КвалификаторыЧисла(15, 2);
    КС = Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная);
    
    Массив = Новый Массив;
    Массив.Добавить(Тип("Число"));

    ДеревоЗн = Новый ТаблицаЗначений;
    ДеревоЗн.Колонки.Добавить("ФактическоеПотребление", Новый ОписаниеТипов(Массив,,, КЧ));
    ДеревоЗн.Колонки.Добавить("Площадь", Новый ОписаниеТипов(Массив,,, КЧ));    
    ДеревоЗн.Колонки.Добавить("Тариф", Новый ОписаниеТипов(Массив,,, КЧ));
    ДеревоЗн.Колонки.Добавить("КоличествоПроживающих", Новый ОписаниеТипов(Массив,,,КЧ));
    ДеревоЗн.Колонки.Добавить("Начисления", Новый ОписаниеТипов(Массив,,, КЧ));
    
    Массив.Очистить();
    
    Массив.Добавить(Тип("Строка"));
    
    ДеревоЗн.Колонки.Добавить("ФИО", Новый ОписаниеТипов(Массив,,КС));
    ДеревоЗн.Колонки.Добавить("Услуга", Новый ОписаниеТипов(Массив,,КС));
    
    Массив.Очистить();
    Массив.Добавить(Тип("СправочникСсылка.КВП_ЛицевыеСчета"));
    
    ДеревоЗн.Колонки.Добавить("Адрес", Новый ОписаниеТипов(Массив));
6 Сергиус
 
16.06.14
13:06
(5) чего то изменилось после этого?
7 Сергиус
 
16.06.14
13:08
ДеревоЗн = Новый ТаблицаЗначений;
    ДеревоЗн.Колонки.Добавить("ФактическоеПотребление", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));

Запрос.Текст = "ВЫБРАТЬ
    |    т.ФактическоеПотребление
    |ПОМЕСТИТЬ врТаб
    |ИЗ
    |    &ВременнаяТаблица КАК т
    |;"   ;
    Запрос.УстановитьПараметр("ВременнаяТаблица", ДеревоЗн);
    Запрос.Выполнить()

Так есть ошибка?
8 dan4ik
 
16.06.14
13:14
да, я разные вариации попробовал, один и тот же результат, псевдонимы таблиц, думал что короткие одна буква, просто поставил * выбарть, короче какой то косяк наверное в БД, хотя

Запрос.Текст = "ВЫБРАТЬ
    |    т.Услуга,
    |    т.ВидУслуги
    |ПОМЕСТИТЬ тУслуги
    |ИЗ
    |    &таб КАК т
    |;
";
Запрос.УстановитьПараметр("таб", ПрикрепленныеУслуги);

, в этой же обработке вот такой код работает
9 Сергиус
 
16.06.14
13:18
(8) ну так и добавляй постепенно по одной новой колонке..найдешь ту, на которой ошибка.
10 Любопытная
 
16.06.14
13:20
(7)А если не ОписаниеТипов использовать а Тип("Число")?
11 dan4ik
 
16.06.14
13:36
все нормально когда создаю пустую таблицу и вставляю в запрос, мне кажется ошибка в бд, какие нить битые ссылки
12 dan4ik
 
17.06.14
05:38
решил проблему, сделал временную таблицу в основном запросе и все все манипуляции сделал в запросе)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший