Имя: Пароль:
1C
1С v8
Как сделать выборку по текущему документу
0 pin4er
 
08.04.13
12:30
Добрый день! 8.2 УП конф.

есть Отчет http://gifok.net/images/2013/04/08/OpZWt.jpg

Работает так: открываю отчет, выбираю заявку, и по ней он ищет документы поступления (в кассу и на РС) и расхода.

Процедура СформироватьОтчет()
   
   ТаблицаПриход = Новый ТаблицаЗначений;
   ТаблицаПриход.Колонки.Добавить("Содержание");
   ТаблицаПриход.Колонки.Добавить("Сумма");
   
   ТаблицаРасход = ТаблицаПриход.СкопироватьКолонки();
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    навВзаиморасчетыСКонтрагентами.СодержаниеОперации,
                  |    СУММА(навВзаиморасчетыСКонтрагентами.Сумма) КАК Сумма,
                  |    навВзаиморасчетыСКонтрагентами.Регистратор
                  |ИЗ
                  |    РегистрНакопления.навВзаиморасчетыСКонтрагентами КАК навВзаиморасчетыСКонтрагентами
                  |ГДЕ
                  |    навВзаиморасчетыСКонтрагентами.Документ = &Документ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    навВзаиморасчетыСКонтрагентами.СодержаниеОперации,
                  |    навВзаиморасчетыСКонтрагентами.Регистратор";
   Запрос.УстановитьПараметр("Документ", Отчет.Заявка);
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Если ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.ПоступлениеВКассу") Или ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.ПоступлениеНаСчет") Тогда
           НоваяСтрока = ТаблицаПриход.Добавить();
       ИначеЕсли ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.РасходИзКассы") Или ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.РасходСоСчета") Тогда
           НоваяСтрока = ТаблицаРасход.Добавить();
       Иначе
           Продолжить;
       КонецЕсли;
       НоваяСтрока.Содержание = Результат.СодержаниеОперации;
       НоваяСтрока.Сумма = Результат.Сумма;            
   КонецЦикла;
   
   ТабДок.Очистить();
   Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(ОбластьШапка);
   наибКоличествоСтрок = ?(ТаблицаПриход.Количество()>ТаблицаРасход.Количество(), ТаблицаПриход.Количество(), ТаблицаРасход.Количество());
   ИтогоПриход = 0;
   ИтогоРасход = 0;
   Для Шаг = 0 По наибКоличествоСтрок - 1 Цикл
       ОбластьСтрока = макет.ПолучитьОбласть("Строка");
       ОбластьСтрока.Параметры.Приход = ?(Шаг<ТаблицаПриход.Количество(), ТаблицаПриход[Шаг].Содержание, "");
       ПриходСумма = ?(Шаг<ТаблицаПриход.Количество(), ТаблицаПриход[Шаг].Сумма, "");
       ОбластьСтрока.Параметры.ПриходСумма = ПриходСумма;
       ОбластьСтрока.Параметры.Расход = ?(Шаг<ТаблицаРасход.Количество(), ТаблицаРасход[Шаг].Содержание, "");
       РасходСумма = ?(Шаг<ТаблицаРасход.Количество(), -ТаблицаРасход[Шаг].Сумма, "");
       ОбластьСтрока.Параметры.РасходСумма = РасходСумма;
       ИтогоПриход = ИтогоПриход + ?(ПриходСумма="", 0, ПриходСумма);
       ИтогоРасход = ИтогоРасход + ?(РасходСумма = "", 0, РасходСумма);
       ТабДок.Вывести(ОбластьСтрока);
   КонецЦикла;
   
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьПодвал.Параметры.ПриходИтог = ИтогоПриход;
   ОбластьПодвал.Параметры.РасходИтог = ИтогоРасход;
   ОбластьПодвал.Параметры.Прибыль = ИтогоПриход + ИтогоРасход;
   ОбластьПодвал.Параметры.СуммаПоСчету = Отчет.Заявка.СуммаДокумента;
   Если  Отчет.Заявка.СуммаДокумента <> 0 Тогда
       ОбластьПодвал.Параметры.Рентабельность = (ИтогоПриход + ИтогоРасход)*100/Отчет.Заявка.СуммаДокумента;
   КонецЕсли;    
   ОбластьПодвал.Параметры.Долг = ИтогоПриход - Отчет.Заявка.СуммаДокумента;
   ТабДок.Вывести(ОбластьПодвал);
   
КонецПроцедуры


а мне надо при печати из документа "Заявка" вывести суммы поступления в http://gifok.net/images/2013/04/08/ui3wa.jpg  (помечено синим)

т.е. в отчете я выбирал по какой формировать заявке
а надо чтобы при открытии заявки и вывод на печать он сам находил документы прихода..
Помогите пожалуйста разобраться, а то только вникаю в азы программирования, а задачу выполнить надо...
1 pin4er
 
08.04.13
12:31
2 pin4er
 
08.04.13
13:06
Даже вот так:
Процедура СформироватьОтчет()
   
   ТаблицаПриход = Новый ТаблицаЗначений;
   ТаблицаПриход.Колонки.Добавить("Содержание");
   ТаблицаПриход.Колонки.Добавить("Сумма");
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    навВзаиморасчетыСКонтрагентами.СодержаниеОперации,
                  |    СУММА(навВзаиморасчетыСКонтрагентами.Сумма) КАК Сумма,
                  |    навВзаиморасчетыСКонтрагентами.Регистратор
                  |ИЗ
                  |    РегистрНакопления.навВзаиморасчетыСКонтрагентами КАК навВзаиморасчетыСКонтрагентами
                  |ГДЕ
                  |    навВзаиморасчетыСКонтрагентами.Документ = &Документ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    навВзаиморасчетыСКонтрагентами.СодержаниеОперации,
                  |    навВзаиморасчетыСКонтрагентами.Регистратор";
   Запрос.УстановитьПараметр("Документ", Отчет.Заявка);
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Если ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.ПоступлениеВКассу") Или ТипЗнч(Результат.Регистратор) = Тип("ДокументСсылка.ПоступлениеНаСчет") Тогда
           НоваяСтрока = ТаблицаПриход.Добавить();
       Иначе
           Продолжить;
       КонецЕсли;
       НоваяСтрока.Содержание = Результат.СодержаниеОперации;
       НоваяСтрока.Сумма = Результат.Сумма;            
   КонецЦикла;
   
   ТабДок.Очистить();
   Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(ОбластьШапка);
   наибКоличествоСтрок = ТаблицаПриход.Количество();
   ИтогоПриход = 0;
   Для Шаг = 0 По наибКоличествоСтрок - 1 Цикл
       ОбластьСтрока = макет.ПолучитьОбласть("Строка");
       ОбластьСтрока.Параметры.Приход = ?(Шаг<ТаблицаПриход.Количество(), ТаблицаПриход[Шаг].Содержание, "");
       ПриходСумма = ?(Шаг<ТаблицаПриход.Количество(), ТаблицаПриход[Шаг].Сумма, "");
       ОбластьСтрока.Параметры.ПриходСумма = ПриходСумма;
       ИтогоПриход = ИтогоПриход + ?(ПриходСумма="", 0, ПриходСумма);
       ТабДок.Вывести(ОбластьСтрока);
   КонецЦикла;
   
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьПодвал.Параметры.ПриходИтог = ИтогоПриход;
   ТабДок.Вывести(ОбластьПодвал);
   
КонецПроцедуры


и как то вывести это в печать, чтобы поиск происходил по открытому документу "Заявки"