Имя: Пароль:
1C
1C 7.7
v7: Запрос
0 NemeL
 
09.02.12
12:35
подскажите как лучше решить задачу: есть документ, надо по двум столбцам таблицам передать параметры для запросы, что бы вывести остаток.
1 Джинн
 
09.02.12
12:36
А в переводе на русский как вопрос звучит?
2 ЧеловекДуши
 
09.02.12
12:37
Увольняйся.
3 povar
 
09.02.12
12:44
(0) шифровальщиком подрабатываете ?
5 andrewks
 
11.02.12
22:26
(4) а что, на русском тоже программировать надо?
6 NemeL
 
11.02.12
22:26
а мне нужно было в запрос передать параметры двух столбцов таблицы чтоб показать  остаток, решил эту задачу так
[CODE]
Процедура Выводостатка()
   СпНаименования=СоздатьОбъект("СписокЗначений");
   ВыгрузитьТабличнуюЧасть(СпНаименования,"Наименование,Цвет" );
   ВыбратьСтроки();
Пока ПолучитьСтроку()>0 Цикл
    Сообщить(Наименование);
КонецЦикла;
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса=
   "
   |Материал = Регистр.ОстаткиМатериалов.Материал;
   |Цвет = Регистр.ОстаткиМатериалов.ЦветТкани;
   |Количество = Регистр.ОстаткиМатериалов.Количество;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Группировка Материал;
   |Группировка Цвет без групп;    
   |Условие (Материал в СпНаименования);  
     |Условие (Цвет в СпНаименования);  
   |";
  Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка("Материал") = 1 Цикл
       Пока Запрос.Группировка("Цвет")=1 Цикл            
       Таб.ВывестиСекцию("Строка");
   КонецЦикла;
КонецЦикла;
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры
[/CODE]
7 Злой Бобр
 
12.02.12
12:49
(6) Неправильно. Думай сам почему.
[CODE]
Процедура Выводостатка()
   СпНаименования=СоздатьОбъект("ТаблицаЗначений");
   ВыгрузитьТабличнуюЧасть(СпНаименования,"Наименование, Цвет, Количество" );// Количество меняешь как у тебя в документе
   СпНаименования.Свернуть("Наименование, Цвет","Количество");// И тут тоже
   СпНаименования.ВыбратьСтроки();
   Пока СпНаименования.ПолучитьСтроку()>0 Цикл
      Сообщить("Материал - "+СпНаименования.Наименование+"; Цвет - "+СпНаименования.Цвет+"; Остаток "+Регистр.ОстаткиМатериалов.Остаток(СпНаименования.Наименование, СпНаименования.Цвет, "Количество"));
   КонецЦикла;
КонецПроцедуры
[/CODE]
А так в принципе ответ (2) в самый раз.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший