Имя: Пароль:
1C
1С v8
Ругается на Тип во временном запросе
0 Ткачев
 
20.02.12
09:37
Ругается {(3, 2)}: Тип не может быть выбран в запросе
<<?>>ТаблицаТоваров.Штрихкод,
Пробовал указать через ВЫРАЗИТЬ и ПОДСТРОКА, но все равно ругается, как сделать правильно ?

   МассивФайлов = НайтиФайлы(Объект.ПапкаОбмена, "inventry.dat");
   Если МассивФайлов.Количество() Тогда
       ТекстФайла = Новый ТекстовыйДокумент;
       ПутьФайла = МассивФайлов[0].ПолноеИмя;
       ТекстФайла.Прочитать(ПутьФайла);
       КоличествоСтрок = ТекстФайла.КоличествоСтрок();
       Для Аа = 1 По КоличествоСтрок Цикл
           СтрокаФайла = ТекстФайла.ПолучитьСтроку(Аа);
           НовСтр = ТаблицаЗагрузки.Добавить();
           НовСтр.Штрихкод = Сред(СтрокаФайла, 3, 5);
           НовСтр.Количество = Число(Сред(СтрокаФайла, 17, 10));
       КонецЦикла;
       Запрос = Новый Запрос("
       |ВЫБРАТЬ
       |    ТаблицаТоваров.Штрихкод,
       |    ТаблицаТоваров.Количество
       |ПОМЕСТИТЬ Товары
       |ИЗ
       |    &ТаблицаТоваров КАК ТаблицаТоваров
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ ПЕРВЫЕ 1
       |    Штрихкоды.Штрихкод,
       |    Товары.Количество
       |ИЗ
       |    Товары КАК Товары
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
       |        ПО (Штрихкоды.Владелец.Код ПОДОБНО ""%"" + Товары.Штрихкод)");
       Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаЗагрузки);
       Выборка = Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() Цикл
           
           
           
       КонецЦикла;
   КонецЕсли;
1 butterbean
 
20.02.12
09:39
колонки в ТаблицаЗагрузки должны быть типизированы
2 Smallrat
 
20.02.12
09:58
типа так
ТаблицаЗагрузки.Колонки.Добавить("Кол1", Новый ОписаниеТипов("Число"));
ТаблицаЗагрузки.Колонки.Добавить("Кол2", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(8)));
ТаблицаЗагрузки.Колонки.Добавить("Кол3", Новый ОписаниеТипов("Дата"));
3 Ткачев
 
20.02.12
10:15
(2)А уже в созданной таблице как тип можно поменять ?
4 decdmb
 
20.02.12
10:48
5 Ткачев
 
20.02.12
11:48
Что не правильно и не красиво сделано ?
Функция ЗагрузитьТаблицу(Объект, ТаблицаЗагрузки) Экспорт
   
   МассивФайлов = НайтиФайлы(Объект.ПапкаОбмена, "inventry.dat");
   Если МассивФайлов.Количество() Тогда
       ТаблицаЗагрузки.Колонки.Очистить();
       ТаблицаЗагрузки.Колонки.Добавить("Штрихкод",   Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(5)));
       ТаблицаЗагрузки.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число" , , Новый КвалификаторыЧисла(10, 2)));
       ТекстФайла = Новый ТекстовыйДокумент;
       ПутьФайла = МассивФайлов[0].ПолноеИмя;
       ТекстФайла.Прочитать(ПутьФайла);
       КоличествоСтрок = ТекстФайла.КоличествоСтрок();
       Для Аа = 1 По КоличествоСтрок Цикл
           СтрокаФайла = ТекстФайла.ПолучитьСтроку(Аа);
           НовСтр = ТаблицаЗагрузки.Добавить();
           НовСтр.Штрихкод = Сред(СтрокаФайла, 3, 5);
           НовСтр.Количество = Число(Сред(СтрокаФайла, 17, 10));
       КонецЦикла;
       Запрос = Новый Запрос("
       |ВЫБРАТЬ
       |    ТаблицаТоваров.Штрихкод,
       |    ТаблицаТоваров.Количество
       |ПОМЕСТИТЬ Товары
       |ИЗ
       |    &ТаблицаТоваров КАК ТаблицаТоваров
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    Товары.Штрихкод,
       |    СУММА(Товары.Количество) КАК Количество
       |ПОМЕСТИТЬ ТабТовары
       |ИЗ
       |    Товары КАК Товары
       |
       |СГРУППИРОВАТЬ ПО
       |    Товары.Штрихкод
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод,
       |    МАКСИМУМ(ТабТовары.Количество) КАК Количество
       |ИЗ
       |    ТабТовары КАК ТабТовары
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
       |        ПО (Штрихкоды.Владелец.Код ПОДОБНО ""%"" + ТабТовары.Штрихкод)
       |
       |СГРУППИРОВАТЬ ПО
       |    Штрихкоды.Владелец");
       Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаЗагрузки);
       ТаблицаЗагрузки = Запрос.Выполнить().Выгрузить();
   КонецЕсли;
   Возврат мНетОшибки;
   
КонецФункции
6 Smallrat
 
20.02.12
11:57
(3) вроде нет
7 Ткачев
 
20.02.12
12:01
(6)А если информация есть в таблице и запрос ее не берет, что делать?, создавать новую и циклом в нее переносить ?
8 Jaffar
 
20.02.12
12:19
(7) см. ссылку в (4) - там есть типизация ТЗ
9 Smallrat
 
20.02.12
12:19
возможно так прокатит
ТаблицаЗагрузки.Колонки.Добавить("НоваяКолонка", Новый ОписаниеТипов("Число"));
ТаблицаЗагрузки.ЗагрузитьКолонку(ТаблицаЗагрузки.ВыгрузитьКолонку("СтараяКолонка"), "НоваяКолонка");
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший