Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:34

[ТиС 7.70.878] Вывод в отчете не сдающих молоко людей

Автор Inkvirg, 15 окт 2012, 11:33

0 Пользователей и 1 гость просматривают эту тему.

Inkvirg

В общем, люди сдают молоко. В отчете формируются кто и сколько сдал за неделю. А мне же нужно сформировать, кто НЕ сдавал в конкретную неделю.
Кнопка формирующая отчет.
Процедура Сформировать()
          НашЗапрос= СоздатьОбъект("Запрос");
  ТекстЗапроса=
  "//{{Запрос(Сформировать)
  |Период с НачДата по КонДата;
  |ОбрабатыватьДокументы Проведенные;
  |Сдатчик=Регистр.Молоко.Сдатчик;
 
  |Док=Регистр.Молоко.ТекущийДокумент;
  |ФизВес=Регистр.Молоко.ФизВес;
  |ЗачВес1=Регистр.Молоко.ЗачВес1;
  |ЗачВес2=Регистр.Молоко.ЗачВес2;
  |ЗачВес3=Регистр.Молоко.ЗачВес3;";
 
  ТекстЗапроса=ТекстЗапроса+"
  |Группировка Сдатчик Без Групп;";
 
  Если ПоДокументам=1 Тогда
  ТекстЗапроса=ТекстЗапроса+"
  |Группировка Док;";
          КонецЕсли;     

  ТекстЗапроса=ТекстЗапроса+"
  |Функция Физ=Сумма(ФизВес);
  |Функция Зач1=Сумма(ЗачВес1);
  |Функция Зач2=Сумма(ЗачВес2);
  |Функция Зач3=Сумма(ЗачВес3); ";
  Спр=СоздатьОбъект("Справочник.Контрагенты");
  Спр.НайтиЭлемент(ВыбКонтрагенты);
  Гр=Спр.ТекущийЭлемент();
  Если (Спр.ЭтоГруппа()=1) И (СокрЛП(""+ВыбКонтрагенты+"")<>"") Тогда
   ТекстЗапроса=ТекстЗапроса+"
   |Условие (Сдатчик.ПринадлежитГруппе(Гр)=1); ";
      ИначеЕсли (Спр.ЭтоГруппа()<>1) И (СокрЛП(""+ВыбКонтрагенты+"")<>"") Тогда
   ТекстЗапроса=ТекстЗапроса+"
   |Условие (Сдатчик=ВыбКонтрагенты); ";
  КонецЕсли;
 
  ТекстЗапроса=ТекстЗапроса+"
  |"//}}Запрос
  ;

  Если НашЗапрос.Выполнить(ТекстЗапроса)=0 Тогда
  Сообщить("Запрос не выполнен");
  Возврат;
  КонецЕсли;
   Т = СоздатьОбъект("Таблица");
            Т.ИсходнаяТаблица( "Таблица" );
Т.ВывестиСекцию("Шапка");
   Зач=НашЗапрос.Зач1;
       Если ВыбВесМолока=Перечисление.ВесМолока.Зач2 Тогда
       Зач=НашЗапрос.Зач2;
   ИначеЕсли ВыбВесМолока=Перечисление.ВесМолока.Зач3 Тогда
       Зач=НашЗапрос.Зач3;
   КонецЕсли;
Т.ВывестиСекцию("Итого");
Ном=0;
   Пока НашЗапрос.Группировка(1)=1 Цикл
        Ном=Ном+1;
   
       Зач=НашЗапрос.Зач1;
       Если ВыбВесМолока=Перечисление.ВесМолока.Зач2 Тогда
       Зач=НашЗапрос.Зач2;
   ИначеЕсли ВыбВесМолока=Перечисление.ВесМолока.Зач3 Тогда
       Зач=НашЗапрос.Зач3;
   КонецЕсли;
   
         Т.ВывестиСекцию("Строка");
       
    Если ПоДокументам=1 Тогда
   
             Пока НашЗапрос.Группировка(2)=1 Цикл

             
         Зач=НашЗапрос.Зач1;
             Если ВыбВесМолока=Перечисление.ВесМолока.Зач2 Тогда
             Зач=НашЗапрос.Зач2;
         ИначеЕсли ВыбВесМолока=Перечисление.ВесМолока.Зач3 Тогда
             Зач=НашЗапрос.Зач3;
             КонецЕсли;
             
         Т.ВывестиСекцию("СтрокаДок");
       
             КонецЦикла;

    КонецЕсли;
   
        КонецЦикла;
        Если ВыводитьГрафик=1 Тогда
    Если ВыбВидДиаграммы=Перечисление.ВидДиаграммы.Гистограмма Тогда
             Т.ВывестиСекцию("ДиаграммГистограмма");
    ИначеЕсли ВыбВидДиаграммы=Перечисление.ВидДиаграммы.Круговая Тогда
             Т.ВывестиСекцию("ДиаграммаКруговая");
    ИначеЕсли ВыбВидДиаграммы=Перечисление.ВидДиаграммы.График Тогда
             Т.ВывестиСекцию("График");
    КонецЕсли;
        КонецЕсли;
        Т.ТолькоПросмотр(1);
            Т.Опции(0,0,5,0);
        Т.Показать("-----","");
КонецПроцедуры

Если расскажите на пальцах, буду благодарен финансово, не сильно конечно, но благодарен  :D
Если нужен весь код, скажите, просто он превышает допустимое количество символов =\

Herby

Сначала формируешь список контрагентов, которые сдавали.

потом пишешь  простой запрос:

|Контр = Справочник.Контрагенты.ТекущийЭлемент;
|Группировка Контр без групп;
|Условие Не(Контр в сзСдавшихМолоко);


где сзСдавшихМолоко - список значений в котором все контрагенты, сдавшие молоко.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск