7.7 внешняя обработка по надбавкам

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Katu_cha, 5 мар 2010.

  1. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Сделала внешнюю обработку по надбавкам сотрудникам.Собирает данные с двух документов "НачисленияУдержанияСотрудника" и "НачислениеУдержаниеСписком".Вставила эту обработку в конфу в отчеты.В тестовой базе все прокатило,отчетик работает прекрасно,проделала такие же операции в живой базе - ни в какую не хочет, выдает ошибку:Значение не представляет агрегатный объект(ВходитВГруппу):14 Тестовая и живая база идентичны,решила объединением загрузить тестовую конфу.Такая же проблема..((Что делать ,ума не приложу...Помогите пожалуйста!!
    Код:
    Процедура НачисленияУдержанияСотрудника()
    
    Перем Запрос, ТекстЗапроса, Таб, Запрос1, ТекстЗапроса1;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос"); 
    Запрос1= СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(НачисленияУдержанияСотрудника)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление; 
    |Подразделение = Документ.НачисленияУдержанияСотрудника.Сотрудник.Подразделение;
    |Сотрудник = Документ.НачисленияУдержанияСотрудника.Сотрудник.Наименование; 
    |СостояниеФизЛица =  Документ.НачисленияУдержанияСотрудника.Сотрудник.СостояниеФизЛица;
    |Должность = Документ.НачисленияУдержанияСотрудника.Сотрудник.Должность.Наименование;
    |Тариф = Документ.НачисленияУдержанияСотрудника.Сотрудник.ТарифКоэффЕМТС;
    |Оклад = Документ.НачисленияУдержанияСотрудника.Сотрудник.Оклад;
    |Расчет = Документ.НачисленияУдержанияСотрудника.Расчет;
    |Начало = Документ.НачисленияУдержанияСотрудника.Начало;
    |Окончание = Документ.НачисленияУдержанияСотрудника.Окончание;
    |Величина = Документ.НачисленияУдержанияСотрудника.Величина; 
    |Группировка Подразделение; 
    |Группировка Сотрудник;
    |Группировка Должность;
    |Группировка Тариф;
    |Группировка Оклад;
    |Группировка Величина;
    |Без итогов;  
    |Условие (СостояниеФизлица = Перечисление.СостояниеФизлица.Сотрудникосновной);
    |Условие (ПустоеЗначение(Начало)<>1); 
    |Условие (ПустоеЗначение(Окончание)<>1); 
    |Условие (Окончание >= ВыбКонПериода);
    |Условие (Расчет.ВходитВГруппу(ГруппаРасчетов.НадбавкаСотрудникам)=1); 
    |Условие (Подразделение = ВыбПодразделение);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;   
    
    ВременнаяТаблицаСотрудника = СоздатьОбъект("ТаблицаЗначений");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Должность");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Тариф");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Подразделение");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Оклад","Справочник.Сотрудники");
    ВременнаяТаблицаСотрудника.НоваяКолонка("Величина"); 
    Запрос.Выгрузить(ВременнаяТаблицаСотрудника);
    
    
    ТекстЗапроса1 = 
    "//{{ЗАПРОС(НачисленияУдержанияСписком)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление; 
    |Подразделение = Документ.НачисленияУдержанияСписком.Сотрудник.Подразделение;
    |Сотрудник1 = Документ.НачисленияУдержанияСписком.Сотрудник.Наименование;
    |Должность = Документ.НачисленияУдержанияСписком.Сотрудник.Должность.Наименование;
    |Оклад = Документ.НачисленияУдержанияСписком.Сотрудник.Оклад;
    |Тариф = Документ.НачисленияУдержанияСписком.Сотрудник.ТарифКоэффЕМТС;
    |СостояниеФизЛица =  Документ.НачисленияУдержанияСписком.Сотрудник.СостояниеФизЛица;
    |Расчет = Документ.НачисленияУдержанияСписком.Расчет;
    |Начало = Документ.НачисленияУдержанияСписком.Начало;
    |Окончание = Документ.НачисленияУдержанияСписком.Окончание;
    |Величина = Документ.НачисленияУдержанияСписком.Величина; 
    |Группировка Подразделение;
    |Группировка Сотрудник1;
    |Группировка Должность;
    |Группировка Тариф;
    |Группировка Оклад;
    |Группировка Величина; 
    |Без итогов;
    |Условие(СостояниеФизлица = Перечисление.СостояниеФизлица.Сотрудникосновной);
    |Условие (ПустоеЗначение(Начало)<>1);
    |Условие (ПустоеЗначение(Окончание)<>1); 
    |Условие (Окончание >= ВыбКонПериода);
    |Условие (Расчет.ВходитВГруппу(ГруппаРасчетов.НадбавкаСотрудникам)=1);
    |Условие(Подразделение = ВыбПодразделение);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос1.Выполнить(ТекстЗапроса1) = 0 Тогда
    Возврат;
    КонецЕсли;  
    
    ВременнаяТаблицаСписком = СоздатьОбъект("ТаблицаЗначений");
    ВременнаяТаблицаСписком.НоваяКолонка("Сотрудник","Справочник.Сотрудники"); 
    ВременнаяТаблицаСписком.НоваяКолонка("Подразделение"); 
    ВременнаяТаблицаСписком.НоваяКолонка("Должность"); 
    ВременнаяТаблицаСписком.НоваяКолонка("Тариф");
    ВременнаяТаблицаСписком.НоваяКолонка("Оклад","Справочник.Сотрудники");
    ВременнаяТаблицаСписком.НоваяКолонка("Величина");  
    Запрос1.Выгрузить(ВременнаяТаблицаСписком); 
    
    ТаблицаНачислений = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаНачислений.НоваяКолонка("Сотрудник"); 
    ТаблицаНачислений.НоваяКолонка("Подразделение");
    ТаблицаНачислений.НоваяКолонка("Должность");
    ТаблицаНачислений.НоваяКолонка("Тариф");
    ТаблицаНачислений.НоваяКолонка("Оклад");
    ТаблицаНачислений.НоваяКолонка("Величина"); 
    ТаблицаНачислений.НоваяКолонка("Сумма","Число",15,2,,); 
    
    ВременнаяТаблицаСотрудника.ВыбратьСтроки();
    Пока ВременнаяТаблицаСотрудника.ПолучитьСтроку()=1 Цикл
    ТаблицаНачислений.НоваяСтрока();
    ТаблицаНачислений.Сотрудник = ВременнаяТаблицаСотрудника.Сотрудник;
    ТаблицаНачислений.Подразделение = ВременнаяТаблицаСотрудника.Подразделение;
    ТаблицаНачислений.Должность = ВременнаяТаблицаСотрудника.Должность; 
    ТаблицаНачислений.Тариф = ВременнаяТаблицаСотрудника.Тариф; 
    ТаблицаНачислений.Оклад = ВременнаяТаблицаСотрудника.Оклад;
    ТаблицаНачислений.Величина = ВременнаяТаблицаСотрудника.Величина;
    ТаблицаНачислений.Сумма = (ТаблицаНачислений.Оклад*ТаблицаНачислений.Величина)/100;		
    
    КонецЦикла;
    
    ВременнаяТаблицаСписком.ВыбратьСтроки();
    Пока ВременнаяТаблицаСписком.ПолучитьСтроку()=1 Цикл
    ТаблицаНачислений.НоваяСтрока();
    ТаблицаНачислений.Сотрудник = ВременнаяТаблицаСписком.Сотрудник1;
    ТаблицаНачислений.Подразделение = ВременнаяТаблицаСписком.Подразделение;
    ТаблицаНачислений.Должность = ВременнаяТаблицаСписком.Должность;
    ТаблицаНачислений.Тариф = ВременнаяТаблицаСписком.Тариф;
    ТаблицаНачислений.Оклад = ВременнаяТаблицаСписком.Оклад;
    ТаблицаНачислений.Величина = ВременнаяТаблицаСписком.Величина; 
    ТаблицаНачислений.Сумма = (ТаблицаНачислений.Оклад*ТаблицаНачислений.Величина)/100;		
    КонецЦикла; 
    ТаблицаНачислений.Сортировать("+Сотрудник");
    Итог = ТаблицаНачислений.Итог("Сумма"); 
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("НачисленияУдержанияСотрудника");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); 
    ТаблицаНачислений.ВыбратьСтроки();
    Пока ТаблицаНачислений.ПолучитьСтроку()=1 Цикл
    Если ПустоеЗначение(ТаблицаНачислений.Сотрудник)=0 Тогда
    // Заполнение полей Сотрудник
    Таб.ВывестиСекцию("ТаблицаНачислений"); 
    КонецЕсли;
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("НачисленияУдержанияСотрудника", "");
    КонецПроцедуры
    
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ошибки:
    1 СостояниеФизЛица реквизит периодический. К нему нельзя обращаться в запросе
    2 Обрабатывать документы не логично, т.к. начисление/удержание могло быть введено НЕ В ЭТОМ МЕСЯЦЕ а допустим год назад и оно пролжает действовать (если не стоит что носит разовый характер).
    Шерстите справочик НачисленияУдержания (но опять же не через запрос, а через выборку, т.к. присутствует периодический реквизит)

    А ошибка возникает потому что пустое значение ВР

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