7.7 Отчет по возрастной категории

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Time dont wait, 29 дек 2009.

  1. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Задача отчета подсчитать кол. сотрудником, с возрастом, промежуток задается на форме:
    ВыбВозврС, ВыбВозврПо. Также определенно выбор производится с работающих, уволенных, гр.декрет, ошибка в том , что при подсчете возвраст сводится к нулю, не считается, функция правильная, была проверена другим способом. Вот код:
    Код:
    сотр=создатьобъект("Справочник.Співробітники");
    
    Фильтр_по_сотр = ТипСотр.ПолучитьЗначение(ТипСотр.ТекущаяСтрока());
    Родит = СоздатьОбъект("Справочник.Співробітники");
    
    Если  Фильтр_по_сотр = "працюючі" тогда
    Если сотр.НайтиПоНаименованию("Працюючі",0,1)=1 Тогда
    ТекРод = Родит.ТекущийЭлемент(); 
    иначе сообщить("не найдена група");
    КонецЕсли; 
    ИначеЕсли Фильтр_по_сотр = "звільнені" тогда
    Если сотр.НайтиПоНаименованию("Звільнені",0,1)=1 Тогда
    ТекРод = Родит.ТекущийЭлемент();
    иначе сообщить("не найдена група");
    КонецЕсли; 
    ИначеЕсли Фильтр_по_сотр = "декрет" тогда
    Если сотр.НайтиПоНаименованию("Декрет",0,1)=1 Тогда
    ТекРод = Родит.ТекущийЭлемент();
    иначе сообщить("не найдена група");
    КонецЕсли; 
    КонецЕсли;
    
    колсотр=0;
    сотр.выбратьэлементы();
    
    Пока Сотр.Получитьэлемент()=1 цикл
    _дата=сотр.ТекущийЭлемент().ДатаНародження;
    Если дата(_дата)="" тогда сообщить("лет=0") конецесли;
    зн = ВозрастСотрудника(сотр.ТекущийЭлемент(),_дата);
    лет=Цел(зн); 	      
    Если лет=0 тогда сообщить("лет=0") конецесли;
    Если Сотр.ПринадлежитГруппе(ТекРод)=1 тогда
    Если (лет<ВыбВозврС) И (лет>ВыбВозврПо) тогда
    продолжить 
    Иначе 
    колсотр=колсотр+1; 
    КонецЕсли;
    КонецЕсли;
    статус = СокрЛП(""+колсотр+" людей");
    КонецЦикла;
    
  2. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    с виду все должно работать.. а где за функция ВозрастСотрудника()? и поставьте пропуск для групп..
    и эта проверка не нужна "Если Сотр.ПринадлежитГруппе(ТекРод)=1 тогда" можно использовать метод ИспользоватьРодителя() при выборке - меньше элементов лопатить.. ну и половину функции можно срезать будет..)
  3. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Все-равно, подсчитывает сотрудников, несмотря на выбранное ограничение, а вот функция:
    Код:
    Функция ВозрастСотрудника(Співробітник, наДату=0) Экспорт
    Если наДату=0 Тогда
    ДатаОтсчета = РабочаяДата();
    Иначе
    ДатаОтсчета = наДату;
    КонецЕсли;
    
    Если (Співробітник.Выбран()=1) И (Число(Співробітник.ДатаНародження)<>0) Тогда
    Возврат Цел((ДатаОтсчета - Співробітник.ДатаНародження)/365.25);
    Иначе
    Возврат "";
    КонецЕсли;
    КонецФункции
    
    
  4. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если (лет<ВыбВозврС) И (лет>ВыбВозврПо) тогда
    продолжить 
    Иначе 
    колсотр=колсотр+1; 
    КонецЕсли;
    
    
    всё, ошибка в условии.
  5. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Тогда если не трудно подскажи, каким другим образом можно подать условие, создать спзнач?
  6. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    ИЛИ вместо И :unsure:
  7. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Заработался я, спасибо

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