7.7 Задать условие построения отчета?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем anton, 12 фев 2010.

  1. TopicStarter Overlay
    anton
    Offline

    anton Опытный в 1С

    Регистрация:
    3 авг 2009
    Сообщения:
    187
    Симпатии:
    0
    Баллы:
    26
    Ребята подскажите как задать условие построения отчета??? Нужно чтобы в отчет попадали документы которые по категории Б/нал это вот здесь
    Код:
    Безнал = Дока.Категория;
    
    строка выводит категории (наличными,Б/нал,по направлению)
    Пнонимаю что тут всего две строчки нужно добавить а что именно не знаю!!!
    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ПоПроцедурам");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Дока = СоздатьОбъект("Документ.ПриемСтоматолога");
    Дока.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    ИтогоПоВсем = 0;
    КолвоПац = 0;
    Безнал = 0;
    Пока Дока.ПолучитьДокумент() = 1 Цикл
    Если Дока.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;	
    Дока.ВыбратьСтроки();
    Пациент = Дока.Пациент;
    ИтоговаяСумма = 0;
    Таб.ВывестиСекцию("Плательщик");
    Пока Дока.ПолучитьСтроку()=1 Цикл 
    Безнал = Дока.Категория;
    Проц = Дока.мПроцедура.Наименование;
    Колво = Дока.Колво;
    Цена = Дока.Цена;
    Сумма = Дока.Сумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    ИтоговаяСумма = ИтоговаяСумма + Сумма;
    КонецЦикла;
    Таб.ВывестиСекцию("ИтогоПоПац");
    ИтогоПоВсем = ИтогоПоВсем + ИтоговаяСумма;
    КолвоПац = КолвоПац + 1;
    КонецЦикла;
    Если КолвоПац>0 Тогда
    Среднее = ИтогоПоВсем/КолвоПац;
    Иначе Среднее = 0;
    КонецЕсли;	
    Таб.ВывестиСекцию("Итого");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПоПроцедурам", "");
    КонецПроцедуры 
    
    Подскажите пожалуйста!!!!
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Что-то типа этого (не знаю как точно называется перечисление, если это перечисление):
    Код:
    		 Пока Дока.ПолучитьСтроку()=1 Цикл 
    Безнал = Дока.Категория;
    Если Безнал <> Перечисления.КатегорииОплаты.БезНал Тогда
    Продолжить;
    КонецЕсли;
    Проц = Дока.мПроцедура.Наименование;
    Колво = Дока.Колво;
    Цена = Дока.Цена;
    Сумма = Дока.Сумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    ИтоговаяСумма = ИтоговаяСумма + Сумма;
    КонецЦикла;
    
    
  3. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Перечисление (Enum)
  4. TopicStarter Overlay
    anton
    Offline

    anton Опытный в 1С

    Регистрация:
    3 авг 2009
    Сообщения:
    187
    Симпатии:
    0
    Баллы:
    26
    А если это справочник то как должно выглядеть условие????
  5. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Код:
    oRef = CreateObject("Справочник.Такой-то");
    oRef.FindByDescr("безнал");
    pRef = oRef.CurrentItem();
    ...
    Если Безнал <> pRef Тогда
    Продолжить;	
    КонецЕсли;
    
  6. TopicStarter Overlay
    anton
    Offline

    anton Опытный в 1С

    Регистрация:
    3 авг 2009
    Сообщения:
    187
    Симпатии:
    0
    Баллы:
    26
    Спасобо работает только остальные позиции тоже выпадают и проставляются 0,00 по ним как сделать так что бы они не выводились вообще

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      47,1 КБ
      Просмотров:
      23
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Код:
        Пока Дока.ПолучитьДокумент() = 1 Цикл
    Если Дока.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;    
    Дока.ВыбратьСтроки();
    Пациент = Дока.Пациент;
    ИтоговаяСумма = 0;
    Таб.ВывестиСекцию("Плательщик");
    Пока Дока.ПолучитьСтроку()=1 Цикл 
    Flag = 0; 
    Безнал = Дока.Категория;
    Если Безнал <> pRef <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span> 	
    Flag = 1;
    Продолжить;
    КонецЕсли;
    Проц = Дока.мПроцедура.Наименование;
    Колво = Дока.Колво;
    Цена = Дока.Цена;
    Сумма = Дока.Сумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    ИтоговаяСумма = ИтоговаяСумма + Сумма;
    КонецЦикла;
    Если Flag = 1 Then
    Продолжить;
    КонецЕсли;
    Таб.ВывестиСекцию("ИтогоПоПац");
    ИтогоПоВсем = ИтогоПоВсем + ИтоговаяСумма;
    КолвоПац = КолвоПац + 1;
    КонецЦикла;
    
    возможно так
  8. TopicStarter Overlay
    anton
    Offline

    anton Опытный в 1С

    Регистрация:
    3 авг 2009
    Сообщения:
    187
    Симпатии:
    0
    Баллы:
    26
    Ну получилось вот так вот!!!! Как фамилии то убрать???

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      54,3 КБ
      Просмотров:
      21
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    тут уж на твое усмотрение.. можно так:
    Код:
    Пока Дока.ПолучитьДокумент() = 1 Цикл
    Если Дока.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;    
    Дока.ВыбратьСтроки();
    Пациент = Дока.Пациент;
    ИтоговаяСумма = 0;
    oVT2 = CreateObject("ValueTable");
    Дока.UnloadTable(oVT2);
    If FindValue(pRef,0,"Категория") = 1 Then
    Таб.ВывестиСекцию("Плательщик");      
    EndIf;
    Пока Дока.ПолучитьСтроку()=1 Цикл 
    Flag = 0; 
    Безнал = Дока.Категория;
    Если Безнал <> pRef <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span> 	
    Flag = 1;
    Продолжить;
    КонецЕсли;
    Проц = Дока.мПроцедура.Наименование;
    Колво = Дока.Колво;
    Цена = Дока.Цена;
    Сумма = Дока.Сумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    ИтоговаяСумма = ИтоговаяСумма + Сумма;
    КонецЦикла;
    Если Flag = 1 Then
    Продолжить;
    КонецЕсли;
    Таб.ВывестиСекцию("ИтогоПоПац");
    ИтогоПоВсем = ИтогоПоВсем + ИтоговаяСумма;
    КолвоПац = КолвоПац + 1;
    КонецЦикла;
    Если КолвоПац>0 Тогда
    Среднее = ИтогоПоВсем/КолвоПац;
    Иначе Среднее = 0;
    КонецЕсли;    
    Таб.ВывестиСекцию("Итого");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПоПроцедурам", "");
    КонецПроцедуры 
    
    а я бы изначально делал немножко по другому.. в таком ключе:

    Код:
    oVT = CreateObject("ValueTable");
    oVT.InsertColumn("Дока");
    oVT.InsertColumn("Пациент");
    oVT.InsertColumn("Проц");
    oVT.InsertColumn("Колво");
    oVT.InsertColumn("Цена");
    oVT.InsertColumn("Сумма");
    ИтогоПоВсем = 0;
    КолвоПац = 0;
    Безнал = 0;
    Пока Дока.ПолучитьДокумент() = 1 Цикл
    Если Дока.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;    
    Дока.ВыбратьСтроки();
    Пока Дока.ПолучитьСтроку()=1 Цикл 
    If Дока.Категория = pRef <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span> 	
    oVT.NewLine();
    oVT.Дока = Дока;                        
    oVT.Пациент = Дока.Пациент;
    oVT.Проц = Дока.мПроцедура.Наименование;
    oVT.Колво = Дока.Колво;
    oVT.Цена = Дока.Цена;
    oVT.Сумма = Дока.Сумма;
    EndIf;
    КонецЦикла;
    КонецЦикла;
    oVT.SelectLines();
    pДока = "";
    Flag = 0;
    While oVT.GetLine() = 1 Do
    ИтоговаяСумма = 0;
    If oVT.Дока <> pДока Then
    If Flag = 1 Then
    Таб.ВывестиСекцию("ИтогоПоПац");
    Else
    Flag = 1;                       
    EndIf;
    pДока = oVT.Дока;
    Таб.ВывестиСекцию("Плательщик"); 
    ИтоговаяСумма = 0;
    EndIf;
    ИтоговаяСумма = ИтоговаяСумма + oVT.Сумма;
    КолвоПац = КолвоПац + 1;
    ИтогоПоВсем = ИтогоПоВсем + ИтоговаяСумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    EndDo;	
    Таб.ВывестиСекцию("Итого");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПоПроцедурам", "");
    
  10. TopicStarter Overlay
    anton
    Offline

    anton Опытный в 1С

    Регистрация:
    3 авг 2009
    Сообщения:
    187
    Симпатии:
    0
    Баллы:
    26
    Спасибо Огромное за ответ!!!
    Ну тут решил немного усовершенствовать отчет путем разбеение его на отдельных контрагентов(Типо АктаСверки)

    Есть документ "ПриемСтамотолога" там мы выбираем пациента из справочника "АмбулаторныеКарты",(выбирается только ФИО), но в самом справочнике "АмбулаторныеКарты"есть справочник "СтраховыеФирмы" там есть типо контрагенты!!! Подскажите как в этом коде увязать выбор процедур по этим контрагентам?????
    Код:
    Процедура ПоПроцедурам()  
    Если ВыбКонПериода>ПолучитьДатуТА() Тогда
    ВыбКонПериода=ПолучитьДатуТА();
    КонецЕсли;	  
    Если ВыбНачПериода>ВыбКонПериода Тогда
    ВыбНачПериода=ВыбКонПериода;
    КонецЕсли;	  
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ПоПроцедурам");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Дока = СоздатьОбъект("Документ.ПриемСтоматолога");
    Дока.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    ИтогоПоВсем = 0;
    КолвоПац = 0;
    Безнал = 0;
    Пока Дока.ПолучитьДокумент() = 1 Цикл   
    
    Если Дока.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;      
    Дока.ВыбратьСтроки();
    Пациент = Дока.Пациент;
    ИтоговаяСумма = 0;
    Пока Дока.ПолучитьСтроку()=1 Цикл  
    oRef = CreateObject("Справочник.Категории");
    oRef.FindByDescr("Б/нал");
    pRef = oRef.CurrentItem();
    Flag = 0; 
    Безнал = Дока.Категория;  
    Если Безнал <> pRef <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span> 	
    Flag = 1;
    Продолжить;
    КонецЕсли;
    Датыдок= Дока.ДатаДок;
    Проц = Дока.мПроцедура.Наименование;
    Колво = Дока.Колво;
    Цена = Дока.Цена;
    Сумма = Дока.Сумма;
    Таб.ВывестиСекцию("ТекущийДокумент");
    ИтоговаяСумма = ИтоговаяСумма + Сумма;
    КонецЦикла;
    Если Flag = 1 Then
    Продолжить;
    КонецЕсли;
    Таб.ВывестиСекцию("ИтогоПоПац");
    ИтогоПоВсем = ИтогоПоВсем + ИтоговаяСумма;
    КолвоПац = КолвоПац + 1;
    КонецЦикла;
    Если КолвоПац>0 Тогда
    Среднее = ИтогоПоВсем/КолвоПац;
    Иначе Среднее = 0;
    КонецЕсли;	
    Таб.ВывестиСекцию("Итого");
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПоПроцедурам", "");
    КонецПроцедуры 
    
    ??????

Поделиться этой страницей