Имя: Пароль:
1C
1С v8
Не работает SetParameter
,
0 nebelung
 
15.03.14
20:29
Пытаюсь отфильтровать входящие платежи по номеру договора, почему-то не работает.


dynamic query = connection.NewObject("Запрос");

            string queryText =
                " ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ВидОперации) КАК ВидОперации, " +
                " ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаВыписки) КАК ДатаВыписки,  " +
                " ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент.ИдентификационныйКодЛичности) КАК BIN, " +
                " ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Номер) КАК Номер,  " +
                " ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент.НаименованиеПолное КАК Контрагент, " +
                " ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа КАК СуммаРасхода, " +
                " ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств) КАК Статья, " +
                " ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.ДоговорКонтрагента) КАК ДоговорКонтрагента, " +
                " ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаНДС КАК СуммаНДС,  " +
                " ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Комментарий     " +
                " ИЗ Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа  " +
                " ГДЕ ДоговорКонтрагента=&Nomer";

            query.Текст = queryText;

            query.SetParameter("Nomer", docNo);

            dynamic e = query.Выполнить().Выбрать();


В чем может быть дело?
1 ДенисЧ
 
15.03.14
20:30
1. расстрелять за такой стиль
2. Договор это ссылка...
2 nebelung
 
15.03.14
20:31
в консоле запросов все работает, то есть в самом запросе все правильно
3 nebelung
 
15.03.14
20:34
ииии????
4 oleg_km
 
15.03.14
23:24
А у меня что-то тоже из шарпа запрос не отработал. Сейчас не помню, завтра-послезавтра посмотрю
5 hhhh
 
15.03.14
23:31
еще раз

ГДЕ ДоговорКонтрагента=&Nomer

договор никогда не будет равен номеру.
6 nebelung
 
16.03.14
05:21
hhhh, так как сделать?
В консоле ведь запрос выполняется. Как правильно задать параметр в C#?
7 Sj
 
16.03.14
07:49
(6) ГДЕ ДоговорКонтрагента.Номер =&Nomer
8 Kookish
 
16.03.14
12:04
(6) Или query.setParameter("Nomer", <СсылкаНаЭлементСправочникаДоговорыКонтрагентов>);
9 Sj
 
16.03.14
14:28
(8) а откуда в C# ссылка на элемент?
10 oleg_km
 
16.03.14
15:16
(9) Ну тоже объект dynamic
11 nebelung
 
16.03.14
17:39
Спасибо всем
Сделал так и заработало

dynamic connection = com1s.Connect("File='" + file + "';Usr='" + user + "';pwd='" + pas + "';");

            Console.WriteLine("Connected COM time:" + DateTime.Now);

            dynamic docNo2 = connection.Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("НомерДоговора", docNo);

            dynamic query = connection.NewObject("Запрос");

            //dynamic qO = new Query()

            string queryText =
                @" ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ВидОперации) КАК ВидОперации,
                 ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаВыписки) КАК ДатаВыписки,
                 ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент.ИдентификационныйКодЛичности) КАК BIN,
                 ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Номер) КАК Номер,
                 ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент.НаименованиеПолное КАК Контрагент,
                 ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа КАК СуммаРасхода,
                 ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств) КАК Статья,
                 ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручениеВходящееРасшифровкаПлатежа.ДоговорКонтрагента) КАК ДоговорКонтрагента,  
                 ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаНДС КАК СуммаНДС,  
                 ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Комментарий    
                 ИЗ Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
                  ГДЕ ПлатежноеПоручениеВходящееРасшифровкаПлатежа.ДоговорКонтрагента = &Nomer";

            query.Текст = queryText;

            query.УстановитьПараметр("Nomer", docNo2);

            dynamic e = query.Выполнить().Выбрать();
12 МихаилМ
 
16.03.14
17:46
(11)
а где проверка, что docNo2 найден ?
13 nebelung
 
16.03.14
18:19
МихаилМ, спасибо за замечение. Это сырой, но главное работающий вариант! Проверка конечно же будет
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.