8.х Отчет среднего заработка

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

  1. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!!! подскажите как исправить ошибку {Форма.РасчетСреднегоЗаработка.Форма(29)}: Значение не является значением объектного типа (Количество)
    Кол = ДопСписок.Количество();

    При формирование отчета, выскакивает ошибка. В конфигураторе когда код проверяешь на ошибки, пишет ошибок не обнаружено!!!

    1С:Предприятие 8.2 (8.2.15.301) Конфигурация Зарплата и Управление Персоналом.

    Код:
    Процедура РасчетСреднегоЗаработка(ТабДок, КонецПериодаРегистрации, Орг, ПериодРегистрации, ПодОрг) Экспорт
    Если Не ЗначениеЗаполнено(Список) Тогда
    
    СписокИскл = ЗаполнитьСписокИскл(ОбщегоНазначения.ПустоеЗначение(СписокИскл), "");
    Иначе СписокИскл = Список;					
    КонецЕсли;
    
    Макет = ОтчетОбъект.ПолучитьМакет("РасчетСреднегоЗаработка");
    //Найти список исключаемых фамилий, т.е. те которые были уволены до заданного числа
    СписокИсклФИО = Новый СписокЗначений;
    СписокИсклФИО.Добавить(Справочники.ФизическиеЛица.ПустаяСсылка());
    Если ИсключатьУволенных Тогда
    
    Запрос = Новый Запрос;
    
    Если Подразделение Тогда
    ДопУсловие =	" И ПодразделениеОрганизации = &ПодОрг)";
    Иначе ДопУсловие = ")";
    КонецЕсли;
    
    запрос.Текст = "ВЫБРАТЬ
    | РаботникиОрганизацийСрезПоследних.Физлицо
    |ИЗ
    | РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    |  ,
    |  ПричинаИзмененияСостояния = &Уволен
    |	  И Организация = &Орг"+ДопУсловие+
    "	   КАК РаботникиОрганизацийСрезПоследних
    |ГДЕ
    | РаботникиОрганизацийСрезПоследних.Период <= &Период";
    запрос.УстановитьПараметр("Уволен",Перечисления.ПричиныИзмененияСостояния.Увольнение);
    запрос.УстановитьПараметр("Период", КонецДня(ДатаИскл));
    запрос.УстановитьПараметр("Орг", Орг);
    запрос.УстановитьПараметр("ПодОрг", ПодОрг);
    Выборка = запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    СписокИсклФИО.Добавить(Выборка.Физлицо);
    КонецЦикла;
    КонецЕсли;
    
    //Отбор по подразделением. Выбор тех фамилей которые работают на заданном подразделении предприятия
    УсловияОснНач ="";
    УсловияДопНач ="";
    Если Подразделение Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | РаботникиОрганизацийСрезПоследних.Физлицо КАК Физлицо
    |ИЗ
    | РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних
    |ГДЕ
    | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = &ПодОрг
    |
    |УПОРЯДОЧИТЬ ПО
    | Физлицо
    |АВТОУПОРЯДОЧИВАНИЕ";
    Запрос.УстановитьПараметр("ПодОрг", ПодОрг);
    Выборка = Запрос.Выполнить().Выбрать();
    ФамилииПоПодразделениям = Новый СписокЗначений;
    Пока Выборка.Следующий() Цикл
    
    ФамилииПоПодразделениям.Добавить(Выборка.Физлицо);
    
    КонецЦикла;
    УсловияОснНач = " И ОсновныеНачисленияРаботниковОрганизации.ФизЛицо в (&ФИО)";
    УсловияДопНач = " И ДополнительныеНачисленияРаботниковОрганизации.ФизЛицо в (&ФИО)";КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ВложенныйЗапрос.ФизЛицо КАК ФизЛицо,
    | ВложенныйЗапрос.ПодразделениеОрганизации,
    | ВложенныйЗапрос.ПериодРегистрации КАК РасчетныйПериод,
    | ВложенныйЗапрос.ВидРасчета,
    | ВложенныйЗапрос.ОтработаноДней КАК ОтработаноДней,
    | ВложенныйЗапрос.ОтработаноЧасов КАК ОтработаноЧасов,
    | ВложенныйЗапрос.Начисления КАК Начисления
    |ИЗ
    | (ВЫБРАТЬ
    |  ОсновныеНачисленияРаботниковОрганизации.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    |  ОсновныеНачисленияРаботниковОрганизации.ФизЛицо КАК ФизЛицо,
    |  ОсновныеНачисленияРаботниковОрганизации.ПериодРегистрации КАК ПериодРегистрации,
    |  ОсновныеНачисленияРаботниковОрганизации.ВидРасчета КАК ВидРасчета,
    |  ОсновныеНачисленияРаботниковОрганизации.ОтработаноДней КАК ОтработаноДней,
    |  ОсновныеНачисленияРаботниковОрганизации.ОтработаноЧасов КАК ОтработаноЧасов,
    |  ОсновныеНачисленияРаботниковОрганизации.ОтработаноДней + ОсновныеНачисленияРаботниковОрганизации.УчитываемыеДни КАК УчитываемыеДни,
    |  ОсновныеНачисленияРаботниковОрганизации.ОтработаноЧасов + ОсновныеНачисленияРаботниковОрганизации.УчитываемыеЧасы КАК УчитываемыеЧасы,
    |  ОсновныеНачисленияРаботниковОрганизации.Результат КАК Начисления
    | ИЗ
    |  РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации
    | ГДЕ
    |  ОсновныеНачисленияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации
    |  И ОсновныеНачисленияРаботниковОрганизации.Организация = &Орг
    | "+УсловияОснНач+
    
    "
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    |  ДополнительныеНачисленияРаботниковОрганизации.ПодразделениеОрганизации,
    |  ДополнительныеНачисленияРаботниковОрганизации.ФизЛицо,
    |  НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации, МЕСЯЦ),
    |  ДополнительныеНачисленияРаботниковОрганизации.ВидРасчета,
    |  0,
    |  0,
    |  0,
    |  0,
    |  ДополнительныеНачисленияРаботниковОрганизации.Результат
    | ИЗ
    |  РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизации
    | ГДЕ
    |  ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации
    |  И ДополнительныеНачисленияРаботниковОрганизации.Организация = &Орг
    |"+УсловияДопНач+
    
    "
    | ) КАК ВложенныйЗапрос
    |ГДЕ
    | ВложенныйЗапрос.Начисления > 0
    | И (НЕ ВложенныйЗапрос.ВидРасчета В (&СписокИскл))
    | И (НЕ ВложенныйЗапрос.ФизЛицо В (&СписокИсклФИО))
    |
    |
    |УПОРЯДОЧИТЬ ПО
    | ФизЛицо,
    | РасчетныйПериод
    |ИТОГИ
    | СУММА(ОтработаноДней),
    | СУММА(ОтработаноЧасов),
    | СУММА(Начисления)
    |ПО
    | ФизЛицо
    |АВТОУПОРЯДОЧИВАНИЕ";
    Запрос.УстановитьПараметр("КонецПериодаРегистрации", КонецДня(КонецПериодаРегистрации));
    Запрос.УстановитьПараметр("Орг", Орг);
    Запрос.УстановитьПараметр("ПериодРегистрации", НачалоДня(ПериодРегистрации));
    Запрос.УстановитьПараметр("СписокИскл", СписокИскл);
    Запрос.УстановитьПараметр("СписокИсклФИО", СписокИсклФИО);
    
    Если Подразделение Тогда
    Запрос.УстановитьПараметр("ФИО", ФамилииПоПодразделениям);
    КонецЕсли;Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьФизЛицо = Макет.ПолучитьОбласть("ФизЛицо");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаФизЛицо = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);Пока ВыборкаФизЛицо.Следующий() Цикл
    ОбластьФизЛицо.Параметры.Заполнить(ВыборкаФизЛицо);
    Если ВыборкаФизЛицо.ОтработаноЧасов > 0 Тогда
    ОбластьФизЛицо.Параметры.Средний = ВыборкаФизЛицо.Начисления / ВыборкаФизЛицо.ОтработаноЧасов;
    ОбластьФизЛицо.Параметры.Средний_8 = ВыборкаФизЛицо.Начисления / ВыборкаФизЛицо.ОтработаноЧасов * 8;
    КонецЕсли;
    ТабДок.Вывести(ОбластьФизЛицо, ВыборкаФизЛицо.Уровень());
    ВыборкаДетали = ВыборкаФизЛицо.Выбрать();  Пока ВыборкаДетали.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
    ОбластьДетальныхЗаписей.Параметры.РасчетныйПериод = Формат(ВыборкаДетали.РасчетныйПериод, "ДЛФ=DD");
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
    КонецЦикла;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
    КонецПроцедуры
    
    С Уважением!!!
  2. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    вот код функции

    Код:
    Функция ЗаполнитьСписокИскл(ДопСписок, Текст) Экспорт;
    
    СписокИскл = Новый СписокЗначений;
    СписокИскл.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднему);
    СписокИскл.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуБЛ);
    СписокИскл.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтп);
    СписокИскл.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоБеременностиИРодам);
    СписокИскл.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоУходуЗаРебенкомДо3ЛетБезОплаты);
    СписокИскл.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпуска);
    СписокИскл.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоНаименованию("Возмещение за выпуск платежных карт"));
    
    Если ЗначениеЗаполнено(ДопСписок) Тогда
    [b]  Кол = ДопСписок.Количество();       <------ //вот где ошибка!
    
    Для л=0 по кол-1 цикл
    СписокИскл.Добавить(ДопСписок[л].Значение);
    КонецЦикла;
    КонецЕсли;
    Список = СписокИскл;
    ЭлементыФормы.ПолеВвода2.Значение = Текст;
    Возврат Список;
    КонецФункции
    
  3. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вот тут чего у вас возвращается ОбщегоНазначения.ПустоеЗначение(СписокИскл)???
  4. TopicStarter Overlay
    ls600
    Offline

    ls600 Опытный в 1С

    Регистрация:
    14 май 2012
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Закрывайте тему!

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