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

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Inkvirg, 15 окт 2012.

  1. TopicStarter Overlay
    Inkvirg
    Offline

    Inkvirg

    Регистрация:
    15 окт 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    В общем, люди сдают молоко. В отчете формируются кто и сколько сдал за неделю. А мне же нужно сформировать, кто НЕ сдавал в конкретную неделю.
    Кнопка формирующая отчет.
    Код:
    [/size][/font][/color]Процедура Сформировать()
    НашЗапрос= СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{Запрос(Сформировать)
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Сдатчик=Регистр.Молоко.Сдатчик;
    
    |Док=Регистр.Молоко.ТекущийДокумент;
    |ФизВес=Регистр.Молоко.ФизВес;
    |ЗачВес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);
    Т.Показать("-----","");
    КонецПроцедуры[color=#293851][font=Verdana][size=3]

    Если расскажите на пальцах, буду благодарен финансово, не сильно конечно, но благодарен [​IMG]
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    ну, я так понимаю должен быть список тех, кто должен был сдать. Вот и смотри кто из списка не попал в запрос
  3. TopicStarter Overlay
    Inkvirg
    Offline

    Inkvirg

    Регистрация:
    15 окт 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Оно то можно. Но не 5+ тысяч человек же?)
  4. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    хмм, есть кто сдает, есть кто не сдает, либо те либо другие должны попасть в отчет, или что ты хочешь непонятно
  5. TopicStarter Overlay
    Inkvirg
    Offline

    Inkvirg

    Регистрация:
    15 окт 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Раз в неделю идет забивка всех сдавших. Т.е. у несдавшего на неделе нет никаких записей. Мне нужно, что бы он выдавал таких людей. Например: берется дата 1 - 7 сентября, и выводятся те, у кого в этом промежутке нет никаких записей. Для тех кто сдает, уже есть кнопка, её код я и привел, теперь нужна обратная процедура, что бы выводил только не сдающих.
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ну есть запрос, который выводит тех, кто сдал. Выгружай его в список.
    Потом формируй простой запрос на всех сотрудников, но добавь условие НЕ(... В...).
  7. TopicStarter Overlay
    Inkvirg
    Offline

    Inkvirg

    Регистрация:
    15 окт 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    А теперь учтем, что я вижу код 1с второй раз в жизни. Потому и сказал, что на пальцах надо бы :D
  8. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    На пальцах, да еще не видя конфигурацию (а она по ходу еще и не типовая), да еще человеку, который видит код 1С второй раз в жизни..... смею предположить, что это не возможно.

    Проще, быстрее, правильнее - предложить на доработку.

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