Имя: Пароль:
1C
1C 7.7
v7: Получить таблицу значений с v82.comconnector. ошибка
0 zladenuw
 
19.11.12
18:11
Делаю так
лКом8 = СоздатьОбъект("v82.comconnector");
   СтрокаПодключения = "Srvr=1csqltest;Ref=test;Usr=test;Pwd=test;";
       
   

   Попытка
       ТекСоединение = лКом8.connect(СтрокаПодключения);
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
   
   
   Табилца8 = ТекСоединение.ПолучитьСписокДокументов(Строка(НачДата),Строка(КонДата));

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

Получаю ошибку
к = ТекСоединение.ПолучитьСписокДокументов(Строка(НачДата),Строка(КонДата));
{C:\USERS\DESKTOP\FROM7TO8.ERT(38)}: Плохой тип переменной
1 Шапокляк
 
19.11.12
18:14
Функция ПолучитьСписокДокументов(пДата1,пДата2), а в самой функции Дата1,Дата2. Может, с ошибкой и не связано...
2 zladenuw
 
19.11.12
18:23
(0) разобрался.
Пустой запрос был.
А можно передать таблицу значений 7 и заполнить ее в 8. если передавать через параметр ?
3 Шапокляк
 
19.11.12
18:39
текст точно можно
4 zladenuw
 
19.11.12
18:42
в 8
Функция КонвертироватьДатус7в8(Дата7,пДень="",пМесяц="",пГод="")
    День = Лев(Дата7,2);    
    Дата7 = СтрЗаменить(Дата7,День+".","");
    Месяц=  Лев(Дата7,2);
    Дата7 = СтрЗаменить(Дата7,Месяц+".","");
    Год=  Лев(Дата7,2);
    возврат Дата("20"+Год,Месяц,День,00,00,00);  //Дата(1984,03,26,06,24,21)
   

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

Функция ПолучитьСписокДокументов(пДата1,пДата2) Экспорт
   
    Дата1 = КонвертироватьДатус7в8(пДата1);
    Дата2 =  КонвертироватьДатус7в8(пДата2); //Дата(1984,03,26,06,24,21)
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ЗаявкаТО.Фирма,
                          |    ЗаявкаТО.Номер,
                          |    ЗаявкаТО.Дата,
                          |    ЗаявкаТО.Клиент,
                          |    ЗаявкаТО.Склад,
                          |    ЗаявкаТО.Авто,
                          |    ЗаявкаТО.ЦФО,
                          |    ЗаявкаТОТабЗЧ.ЗЧ.Наименование КАК Наименование,
                          |    ЗаявкаТОТабЗЧ.ЗЧ.Артикул КАК Артикул,
                          |    ЗаявкаТОТабЗЧ.Кво КАК Кво,
                          |    ЗаявкаТОТабЗЧ.Цена КАК Цена,
                          |    ЗаявкаТОТабЗЧ.ПроцентСкидки КАК ПроцентСкидки,
                          |    ЗаявкаТОТабЗЧ.Сумма КАК Сумма
                          |ИЗ
                          |    Документ.ЗаявкаТО.ТабЗЧ КАК ЗаявкаТОТабЗЧ
                          |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаТО КАК ЗаявкаТО
                          |        ПО ЗаявкаТОТабЗЧ.Ссылка = ЗаявкаТО.Ссылка
                          |ГДЕ
                          |    ЗаявкаТО.Ссылка МЕЖДУ &Дата1 И &Дата2
                          |    И НЕ ЗаявкаТО.Закрыта
                          |
                          |ОБЪЕДИНИТЬ ВСЕ
                          |
                          |ВЫБРАТЬ
                          |    ЗаявкаТОТабРаботы.Ссылка.Фирма,
                          |    ЗаявкаТОТабРаботы.Ссылка.Номер,
                          |    ЗаявкаТОТабРаботы.Ссылка.Дата,
                          |    ЗаявкаТОТабРаботы.Ссылка.Клиент,
                          |    ЗаявкаТОТабРаботы.Ссылка.Склад,
                          |    ЗаявкаТОТабРаботы.Ссылка.Авто,
                          |    ЗаявкаТОТабРаботы.Ссылка.ЦФО,
                          |    ЗаявкаТОТабРаботы.Нормативы.Наименование,
                          |    ЗаявкаТОТабРаботы.Нормативы.Код,
                          |    ЗаявкаТОТабРаботы.Кво,
                          |    ЗаявкаТОТабРаботы.Цена,
                          |    ЗаявкаТОТабРаботы.ПроцентСкидки,
                          |    ЗаявкаТОТабРаботы.Сумма
                          |ИЗ
                          |    Документ.ЗаявкаТО.ТабРаботы КАК ЗаявкаТОТабРаботы
                          |ГДЕ
                          |    ЗаявкаТОТабРаботы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
                          |    И НЕ ЗаявкаТОТабРаботы.Ссылка.Закрыта");
     Запрос.УстановитьПараметр("Дата1",НачалоДня(Дата1));
     Запрос.УстановитьПараметр("Дата2",КонецДня(Дата2));
     Попытка
         
         ВремТбЗн =  Запрос.Выполнить().Выгрузить();
       //Попытка
           //ВремТбЗн2= ВремТбЗн.Скопировать(,"Фирма,Номер,Дата,Клиент,Склад,Авто,ЦФО,Сумма");
           ///ВремТбЗн2.свернуть("Фирма,Номер,Дата,Клиент,Склад,Авто,ЦФО","Сумма");
           //Для каждого СтрТЗ Из ВремТбЗн2 Цикл
           //    ТбЗнДокументовСТО.НоваяСтрока();
           //    ТбЗнДокументовСТО.НомерДокумента = Строка(СтрТЗ.Номер);
           //    ТбЗнДокументовСТО.ДатаДок = Строка(СтрТЗ.Дата);
           //    ТбЗнДокументовСТО.Контрагент = Строка(СтрТЗ.Клиент);
           //    ТбЗнДокументовСТО.Авто =  Строка(СтрТЗ.Авто);
           //    ТбЗнДокументовСТО.СТО = Строка(СтрТЗ.ЦФО);
           //    ТбЗнДокументовСТО.Сумма = СтрТЗ.Сумма;
           //КонецЦикла;
           
           
           Возврат ВремТбЗн;
       //Исключение
       //    Возврат 0;
       //КонецПопытки;
     Исключение
       Возврат 0;
     КонецПопытки;
КонецФункции // ()
5 zladenuw
 
19.11.12
18:44
(3) передаю через параметр вот так
ТекСоединение.ПолучитьСписокДокументов(ТбЗн,Строка(НачДата),Строка(КонДата));

пишет ошибку о типах и все.
А вот с 8 получаю
6 Шапокляк
 
19.11.12
19:00
Значит, 7-ка не знает что ей делать с полученной из 8-ки таблицей значений.
7 zladenuw
 
19.11.12
19:02
(6) жаль. но я же передаю ее же таблицу :(
8 zladenuw
 
19.11.12
19:09
а почему тогда не работает вот так.
   ТаблицаОбщая8 = ТекСоединение.NewObject("ТаблицаЗначений");
   Таблица8 = ТекСоединение.NewObject("ТаблицаЗначений");
   к = ТекСоединение.Обмен77.ПолучитьСписокДокументов(Строка(НачДата),Строка(КонДата),ТаблицаОбщая8,Таблица8);

в 8 заполняю
Функция ПолучитьСписокДокументов(пДата1,пДата2,ВремОбщая,ВремТбЗн) Экспорт

     ВремОбщая =  Запрос.Выполнить().Выгрузить();
           ВремТбЗн= ВремОбщая.Скопировать(,"Фирма,Номер,Дата,Клиент,Склад,Авто,ЦФО,Сумма");
           ВремТбЗн.свернуть("Фирма,Номер,Дата,Клиент,Склад,Авто,ЦФО","Сумма");

Но таблицы пустые.
9 zladenuw
 
19.11.12
19:31
у кого есть какие идеи ?
10 Шапокляк
 
19.11.12
19:34
в (8) пропущена часть кода где запрос формируется? Если так, то в самом запросе есть несколько странные места: "...ГДЕ
                          |    ЗаявкаТО.Ссылка МЕЖДУ &Дата1 И &Дата2
.
И что-то не внушает  Функция КонвертироватьДатус7в8(Дата7,пДень="",пМесяц="",пГод="")
    День = Лев(Дата7,2);    
    Дата7 = СтрЗаменить(Дата7,День+".","");
    Месяц=  Лев(Дата7,2);
    Дата7 = СтрЗаменить(Дата7,Месяц+".","");
    Год=  Лев(Дата7,2);
     возврат Дата("20"+Год,Месяц,День,00,00,00);  //Дата(1984,03,26,06,24,21)

   

КонецФункции
Как выглядит в 7-ке Строка(НачДата)? (извините, 7-ку уже 100 лет не ковыряла)
11 zladenuw
 
19.11.12
19:35
(10) 26.07.12 вот так выглядит.

если передавать в возврат Запрос.выполнить().выгрузить()

То таблица есть. если же через параметры. то пусто
12 Vladal
 
19.11.12
19:44
13 zladenuw
 
19.11.12
19:50
(12) ну как же не передается.
Если доступно внешние соединение. ех блин.
Да я передаю уже Список значений. а он содержит 2 таблицы.
По этому пляски с бубном
14 Vladal
 
19.11.12
20:24
(13) Передаются только объекты базового типа. А всякие ссылки нет, но из ссылок можно получить код, наименование и прочее.
Ну раз со списком значений, посмотри 8-й пост по первой ссылке, у ТС список получился.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой