Имя: Пароль:
1C
1С v8
Как сделать так чтобы при выборе определенной цены на форме отчета в печатную...
0 nikitka55
 
31.05.12
13:00
Здравствуйте
Есть объект конфигурации Документы -> Смета, в котором имеется два заполненных документа
в документе присутствует реквизит (ЭтоОрганизация) который отвечает за подстановку определенной цены (цена на предприятие или цена на население) из регистра сведений в данный документ, если флажок стоит у этого реквизита то цена подставляется на предприятие, если нет то на население (это все работает)
http://www.pictureshack.ru/images/34494_5.jpg
Документ может содержать только цену на население или на предприятие.

На данный момент отчет выводит все работы и материалы за определенный период
http://www.pictureshack.ru/images/40106_4.jpg
http://www.pictureshack.ru/images/59273_7.jpg


На форме отчета добавил тоже реквизит ЭтоОрганизация, для того чтобы можно было в отчете просмотреть отдельно сколько работ и материалов было выполнено для предприятия или для населения.
Пример (как нужно сделать):
Выбрали дату в данном случае с 01.04.12 по 02.04.12
дальше - если нет галочки на форме отчета http://www.pictureshack.ru/images/40106_4.jpg
у  реквизита ЭтоОрганизация, то он должен вывести услуги и материалы только тех документов
http://www.pictureshack.ru/images/34494_5.jpg
у которых галочки нету (и наоборот соответсвенно)
И в отчете должно получится так чтобы он вывел данные по первому документу ( в данном случае)
http://www.pictureshack.ru/images/7900_6.jpg

Как это можно сделать?
помогите пожалуйста

Данный код выводит все услуги и материалы , как его можно исправить под данный случай

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

  ТабДок.Вывести(ОбластьВерх);        
 
   Дата=ЭтаФорма.Отчет.Дата;      
  ОбластьШапка.Параметры.Дата=Дата;      
       
   Дата1=ЭтаФорма.Отчет.Дата1;      
  ОбластьШапка.Параметры.Дата1=Дата1;        
 
   ТабДок.Вывести(ОбластьШапка);  
  ТабДок.Вывести(ОбластьЗагТаб);  
   ТабДок.Вывести(ОбластьШапкаТаб);  
   СуммаИтог=0;      
  СуммаИтог1=0;  
 
   ВставлятьРазделительСтраниц = Ложь;      
   НомерСтроки = 0;
   НомерСтроки1 = 0;  
     
     //Заполняю табличную часть Док смета у документа Смета
   Пока ВыборкаУслуга.Следующий() цикл      
       Если ВставлятьРазделительСтраниц Тогда      
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();      
       КонецЕсли;            
     НомерСтроки = НомерСтроки + 1;            
     ОбластьТаблСмета.Параметры.Заполнить(ВыборкаУслуга);      
     ОбластьТаблСмета.Параметры.НомерСтроки = НомерСтроки;      
      ТабДок.Вывести(ОбластьТаблСмета);            
     СуммаИтог=СуммаИтог+ВыборкаУслуга.СуммаРуб;  
   КонецЦикла;
 


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


          ЗапросНачальникИОтЛиц= Новый Запрос;
       ЗапросНачальникИОтЛиц.Текст=
          "ВЫБРАТЬ        
            |      Константы.НачальникУчастка,      
            |      ОтветственныеЛица.Наименование            
            |ИЗ            
            |      Константы КАК Константы,      
            |      Справочник.ОтветственныеЛица КАК ОтветственныеЛица";  
         ВыборкаНачальникИОтЛиц=ЗапросНачальникИОтЛиц.Выполнить().Выбрать();      
 
     Пока ВыборкаНачальникИОтЛиц.Следующий() Цикл        
             ОбластьНиз.Параметры.Заполнить(ВыборкаНачальникИОтЛиц);      
       КонецЦикла;        
       
     Лицо=ЭтаФорма.Отчет.ОтветственноеЛицо;      
     ОбластьНиз.Параметры.Наименование=Лицо;

     ТабДок.Вывести(ОбластьИтогоРабот);    
         ТабДок.Вывести(ОбластьИтогоМатериалов);    
     ТабДок.Вывести(ОбластьВсегоРаботИМатериалов);  
           ТабДок.Вывести(ОбластьНДС);      
         ТабДок.Вывести(ОбластьНиз);  
         Возврат (ТабДок);
КонецФункции
1 Buster007
 
31.05.12
13:02
ГДЕ        
    |      ДокСмета.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ДокСмета.Ссылка.ЭтоОрганизация = &ЭтоОрганизация
запрос.УстановитьПараметр("ЭтоОрганизация", ЭтоОрганизация);
2 nikitka55
 
31.05.12
13:04
Сейчас попробую
3 nikitka55
 
31.05.12
13:09
Спасибо большое работает)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой