Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Пустой результат запроса

Пустой результат запроса
Я
   Масянька
 
16.09.21 - 17:17
Добрый вечер!
Код:
Функция НайтиГруппу(КодЧисловой)
    
    Макет = Справочники.КлассификаторТНВЭД.ПолучитьМакет("Группы");
    
    ТабДанных = ПолучитьТЗИзМакета(Макет);
    
    Группа = Сред(КодЧисловой, 1, 2);
    Подгруппа = Сред(КодЧисловой, 3, 2);
    
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ВТ_Врем.Группа,
|    ВТ_Врем.Подгруппа,
|    ВТ_Врем.Наименование
|ПОМЕСТИТЬ ВТ_Врем
|ИЗ
|    &ТЗ КАК ВТ_Врем
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТ_Врем.Группа,
|    ВТ_Врем.Подгруппа,
|    ВТ_Врем.Наименование
|ИЗ
|    ВТ_Врем КАК ВТ_Врем
|ГДЕ
|    ВТ_Врем.Группа = &Группа
|    И ВТ_Врем.Подгруппа = &Подгруппа";

Запрос.УстановитьПараметр("ТЗ", ТабДанных);
Запрос.УстановитьПараметр("Группа", Группа);
Запрос.УстановитьПараметр("Подгруппа", Подгруппа);

Результат = Запрос.Выполнить().Выгрузить();  

    Сообщить("1 - " + Результат.Количество());

КонецФункции

Функция ПолучитьТЗИзМакета(ТабДок, КолонкаИндекса = 1) Экспорт
    ТаблицаДанных = Новый ТаблицаЗначений;
    
    НомерКолонки = 0;
    Пока Истина Цикл
        НомерКолонки = НомерКолонки + 1;
        ИмяКолонки = ТабДок.Область(1, НомерКолонки).Текст;
        Если ПустаяСтрока(ИмяКолонки) Тогда
            Прервать;
        КонецЕсли;
        Если (ИмяКолонки = "Наименование") Тогда
            ТаблицаДанных.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
        Иначе
            ТаблицаДанных.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(2)));
        КонецЕсли;
    КонецЦикла;
    СчетчикКолонок = НомерКолонки - 1;
    НомерСтроки = 1; ФлагПрерывания = Ложь;
    Пока Истина Цикл
        НомерСтроки = НомерСтроки + 1;
        Стр = ТаблицаДанных.Добавить();
        Для А = 1 ПО СчетчикКолонок Цикл
            ТекстКолонки = ТабДок.Область(НомерСтроки, А).Текст;
            Если ПустаяСтрока(ТекстКолонки) Тогда
                Если А = КолонкаИндекса Тогда
                    Флагпрерывания = Истина;
                    ТаблицаДанных.Удалить(Стр);
                КонецЕсли;
            Иначе
                Стр[А - 1] = ТекстКолонки
            КонецЕсли;
            Если Флагпрерывания Тогда
                Прервать
            КонецЕсли;
        КонецЦикла;
        Если Флагпрерывания Тогда
            Прервать
        КонецЕсли;
    КонецЦикла;
    Возврат ТаблицаДанных
КонецФункции

Возвращает пустой результат.
Ошибок нет (были до описания типов колонок).
Отладчик показывает заполненную таблицу (из которой выбираю).
Группа и подгруппа есть.
А результат пустой.
Почему?
Спасибо.
   mikecool
 
1 - 16.09.21 - 17:18
сэмулируй в консоли запрос и все поймешь )
   H A D G E H O G s
 
2 - 16.09.21 - 17:18
(1) Ага. Прям из макета
   Масянька
 
3 - 16.09.21 - 17:19
(1) А таблицу из макета как сэмулировать?
   1Сергей
 
4 - 16.09.21 - 17:19
(0) Вы текстовый тип данных от ссылочного с какого расстояния различаете?
   H A D G E H O G s
 
5 - 16.09.21 - 17:20
Запрос.УстановитьПараметр("Группа", Группа);
Запрос.УстановитьПараметр("Подгруппа", Подгруппа); 

добавить

Сообщить(ТипЗнч(Группа));
Сообщить(ТипЗнч(Подгруппа));

Сообщить(ТипЗнч(ТЗ[0].Группа));
Сообщить(ТипЗнч(ТЗ[0].Подгруппа));
   H A D G E H O G s
 
6 - 16.09.21 - 17:20
Автору надо покинуть специальность и не смешить никого. Это же ежам на смех.
   Масянька
 
7 - 16.09.21 - 17:24
(5) Группа - строка.
При заполнении таблицы (вторая функция) - везде строка.
   Масянька
 
8 - 16.09.21 - 17:24
+ (7) ТипЗнч (есесьно).
   mikecool
 
9 - 16.09.21 - 17:24
(1) (2) в чем проблема?
если есть понятие, как выглядит ТЗ на входе, то нарисовать несколько раз
Выбрать ...
Объединить все
   polosov
 
10 - 16.09.21 - 17:29
(0) Скорее всего проблема в 
  Группа = Сред(КодЧисловой, 1, 2);
  Подгруппа = Сред(КодЧисловой, 3, 2);
Если ТипЗнч(КодЧисловой) = Тип("Число")

Неявное преобразование в строку с НПП.
   Масянька
 
11 - 16.09.21 - 17:29
(10) Там все значения начинаются с 0 - 01, 02 и т.д.
   shuhard
 
12 - 16.09.21 - 17:30
(9) и рисовать не надо
достаточно убрать отбор в запросе 
|ГДЕ
|    ВТ_Врем.Группа = &Группа
|    И ВТ_Врем.Подгруппа = &Подгруппа"; 
позырить результат и вернуть отбор частями
   Масянька
 
13 - 16.09.21 - 17:30
+ (11) И сообщить(типзнч(группа)) - строка.
   polosov
 
14 - 16.09.21 - 17:31
(13) У КодЧисловой какой тип?
Подгруппа = Сред(КодЧисловой, 3, 2); - ожидается число больше 999?
   Kassern
 
15 - 16.09.21 - 17:33
тоже по символ НПП подумал. Если в параметре передается число более 3х знаков, то там можно словить данные символы. Лучше преобразовать в строку и срезать их, раз потом вы посимвольно выцепляете данные.
   polosov
 
16 - 16.09.21 - 17:34
(11) И ты в цикле гоняешь НайтиГруппу() для 0, 01, 02 и тп с постоянным формированием Макет = Справочники.КлассификаторТНВЭД.ПолучитьМакет("Группы")?
   hhhh
 
17 - 16.09.21 - 18:06
(13) что за КолонкаИндекса и почему она всегда равна 1?
   1Сергей
 
18 - 16.09.21 - 18:33
//Стр[А - 1] = ТекстКолонки

Стр[А - 1] = Справочник.ИмяСпр.НайтиПоНаименованию(ТекстКолонки);
   Масянька
 
19 - 16.09.21 - 18:57
(17) Вторая функция - с инфостарта, макет выгружает в таблицу значений (в данном случае, макет - группы ТН ВЭД).
В отладчике виду таблицу, вижу значения
   H A D G E H O G s
 
20 - 16.09.21 - 19:06
Как ей сказать? Как объяснить?
Я для неё путеводный луч в этом аду.
Дорогу к счастью нам должен осветить,
А я не знаю куда я её приведу.
Нет, я не знаю куда её веду...
   shuhard
 
21 - 16.09.21 - 19:21
(20) И восторг в их глазах нам вовек не понять
Им уже не помочь, и приходится лгать
   Ёпрст
 
22 - 16.09.21 - 19:57
(0)
Ошибка тут:
  Группа = Сред(КодЧисловой, 1, 2);
    Подгруппа = Сред(КодЧисловой, 3, 2);
   Ёпрст
 
23 - 16.09.21 - 19:59
про "ЧГ="  уже говорили ?

КодЧисловой судя по коду уже 4 знака минимум. Соответственно, неверно получается Группа из за разделителя разряда

ЗЫ: тебе выше об ентом говорили ужо
   Масянька
 
24 - 16.09.21 - 20:07
(22) (23) ЧисловойКод - это код ТН ВЭД (не помню сколько знаков - только числа). Строка.
Первые 2 символа - группа, вторые 2 - подгруппа.
   Масянька
 
25 - 16.09.21 - 20:08
+ (24) Никаких разделителей нет. Абсолютно
   hhhh
 
26 - 16.09.21 - 20:13
(23) КодЧисловой у нее не число. Поэтому там нормально.
   Ёпрст
 
27 - 16.09.21 - 21:40
(24) выкинь квалификатор строки, просто типизируй к Строка, без длины строки
   Ёпрст
 
28 - 16.09.21 - 21:40
Ну и ТЗ.ВыбратьСтроку() скриншот покажи и свой КодЧисловой, который строка
   Масянька
 
29 - 17.09.21 - 09:02
   Масянька
 
30 - 17.09.21 - 09:03
+(29) Убрала отбор в запросе по группе и подгруппе.
 
 
   Масянька
 
31 - 17.09.21 - 09:06
+ (29) При отборе (группа и подгруппа) - https://ibb.co/kg4Crg8
   Масянька
 
32 - 17.09.21 - 09:07
+ (29) Без квалификатора
   Масянька
 
33 - 17.09.21 - 09:11
С квалификатором без отбора - https://ibb.co/xGZDntC
Отбор - количество в результате 0.
   Масянька
 
34 - 17.09.21 - 09:27
Непереводимая игра слов с использованием местных идиоматических выражений...
Кривой макет с группами...
   Масянька
 
35 - 17.09.21 - 09:42
Всё арбайтэн.
   Масянька
 
36 - 17.09.21 - 09:43
Спасибо всем!
Лично (20): "Эта музыка будет вечной, если я  заменю батарейки" (С)
   Ёпрст
 
37 - 17.09.21 - 09:43
(29) еще раз, для тех кто в танке.
Покажи скриншот
ТабДанных.ВыбратьСтроку()
   Масянька
 
38 - 17.09.21 - 10:01
(37) Все сработало - https://ibb.co/0t01tsJ


Список тем форума
 
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.