Имя: Пароль:
1C
1С v8
Передача параметров в запрос через массив, как это сделать?
0 kasazanov
 
24.10.12
10:40
ЭтотОбъект.Материалы.Очистить();
   Запрос = Новый Запрос(
   "ВЫБРАТЬ
   |    ХозрасчетныйОстатки.Счет КАК Счет,
   |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
   |    ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток,
   |    ХозрасчетныйОстатки.Субконто2
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , , ) КАК ХозрасчетныйОстатки
   |ГДЕ
   |    (ХозрасчетныйОстатки.Счет = &Счет
   |            ИЛИ ХозрасчетныйОстатки.Счет = &Счет1
   |            ИЛИ ХозрасчетныйОстатки.Счет = &Счет2
   |            ИЛИ ХозрасчетныйОстатки.Счет = &Счет3)
   |    И ХозрасчетныйОстатки.Субконто2 = &Субконто2");
   
   Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.01"));
   Запрос.УстановитьПараметр("Счет1", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
   Запрос.УстановитьПараметр("Счет2", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
   Запрос.УстановитьПараметр("Счет3", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.09"));

   Запрос.УстановитьПараметр("Субконто2", ЭтотОбъект.Склад);
   Запрос.УстановитьПараметр("ДатаОтчета", ЭтотОбъект.Дата);
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() цикл
   СтрокаТЧ = ЭтотОбъект.Материалы.Добавить();
   СтрокаТЧ.Номенклатура = Выборка.Субконто1;
   СтрокаТЧ.Количество = Выборка.КоличествоОстаток;
   СтрокаТЧ.Счет = Выборка.Счет;
   КонецЦикла;

При нажатии на кнопку в ТЧ заполняется вся таблица, а нужно чтобы пользователь мог выбрать например 10.01 и 10.03 как это сделать? может кто подскажет
1 salvator
 
24.10.12
10:41
ХозрасчетныйОстатки.Счет В (&МассивСчетов)
2 1Сергей
 
24.10.12
10:41
.Счет В (СписокЗначений)
3 lxndr
 
24.10.12
10:43
только условия все в параметрах виртуальной таблицы.
4 1Сергей
 
24.10.12
10:46
(1) Садись, два
5 Cube
 
24.10.12
10:47
(4) В смысле? В (1) правильно, в (2) не правильно.
6 1Сергей
 
24.10.12
10:52
(5) Запрос Массив не поймёт
7 YF
 
24.10.12
10:53
(6) О как. Все типовые в топку!
8 sanja26
 
24.10.12
10:53
(6) давно запросы писал?
9 Cube
 
24.10.12
10:54
(6) И ты уверен в этом?)
10 1Сергей
 
24.10.12
10:54
хм, ошибся... можно и то и то
11 Cube
 
24.10.12
10:55
(10) Садись, два.
12 Reset
 
24.10.12
10:56
И Сальватору пусть свою исправит на пятерку! Нет, четверку
13 1Сергей
 
24.10.12
10:56
(11) СЗ можно, атвичайу!
14 butterbean
 
24.10.12
10:57
(13) но не нужно
15 1Сергей
 
24.10.12
10:57
(12) я ему в журнал не ставил
16 Cube
 
24.10.12
10:57
(13) СЗ, конечно можно, но без "&" не взлетит, атвичайу!
17 1Сергей
 
24.10.12
10:58
(16) Я специально написал ошибку, чтобы у ТС это засело в голове
18 Reset
 
24.10.12
10:58
(16) Он вывернется, скажет, что имел в виду В(&Счет1,&Счет2,&Счет3)
19 kasazanov
 
24.10.12
10:59
ЭтотОбъект.Материалы.Очистить();
   Запрос = Новый Запрос(
   "ВЫБРАТЬ
   |    ХозрасчетныйОстатки.Счет КАК Счет,
   |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
   |    ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток,
   |    ХозрасчетныйОстатки.Субконто2
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , , ) КАК ХозрасчетныйОстатки
   |ГДЕ
   |    ХозрасчетныйОстатки.Счет В (&Счет)
   |    И ХозрасчетныйОстатки.Субконто2 = &Субконто2");
   
   Счет = Новый Массив;
   Счет.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.01"));
   Счет.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
   Счет.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
   Счет.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.09"));
   Запрос.УстановитьПараметр("Счет", Счет);
   //Запрос.УстановитьПараметр("Счет1", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
   //Запрос.УстановитьПараметр("Счет2", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
   //Запрос.УстановитьПараметр("Счет3", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.09"));
   

   Запрос.УстановитьПараметр("Субконто2", ЭтотОбъект.Склад);
   Запрос.УстановитьПараметр("ДатаОтчета", ЭтотОбъект.Дата);
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() цикл
   СтрокаТЧ = ЭтотОбъект.Материалы.Добавить();
   СтрокаТЧ.Номенклатура = Выборка.Субконто1;
   СтрокаТЧ.Количество = Выборка.КоличествоОстаток;
   СтрокаТЧ.Счет = Выборка.Счет;
   КонецЦикла;

Сделал вот так, вроде все запустилось, теперь вопрос как передать параметры чтобы пользователь смог выбрать нужные ему счета? Создать какую то форму?
20 1Сергей
 
24.10.12
10:59
(18) Завтра в школу с родителями
21 Reset
 
24.10.12
11:00
(19) К (3) присмотрись, там дело говорят
22 Reset
 
24.10.12
11:05
Если только выбрать, можно так

   Счета = Новый СписокЗначений;
   Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.01"));
   Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
   Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
   Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.09"));
   Счета.ОтметитьЭлементы();
   МассивСчетов=Новый Массив;
   Для каждого Элемент из Счета цикл
       Если Элемент.Пометка тогда
           МассивСчетов.Добавить(Элемент.Значение);
       КонецЕсли;
   КонецЦикла;
   Если МассивСчетов.Количество()=0 тогда
       Предупреждение("Не Выбраны счета");
       Возврат;
   КонецЕсли;
   Запрос.УстановитьПараметр("МассивСчетов", МассивСчетов);
23 del123
 
24.10.12
11:14
(19) добавить форму на нее поле ввода с типом СписокЗначений и  типом значения списка ПланСчетовСсылка.Хозрасчетный
24 kasazanov
 
24.10.12
11:15
Reset, мужиг ! Огромное спасибо!
25 х86
 
24.10.12
11:18
(22)построитель + отбор на форму