8.х Отчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем slaay, 13 дек 2010.

  1. TopicStarter Overlay
    slaay
    Offline

    slaay Опытный в 1С

    Регистрация:
    27 мар 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!

    пытаюсь дописывать для себя УТ...проблема такого плана...

    есть два регистра накопления: Зарплата и Табель

    Зарплата:Период, Исполнитель, Трудоемкость, Сумма
    Табель: Период, Исполнитель, Время

    не могу вывести все это вот в такую форму:

    Отчет за Месяц

    Исполнитель Трудоемкость Время Процент Сумма
    Иванов 500 500 100 456456
    Петров 500 750 66 456456
    Сидоров 500 1000 50 12312

    все время какая-то билеберда получается...время сумирует не правильно почему-то...суммирует только различные...проценты соответственно не правильные...

    заранее спасибо большое за помощь...

    Код:
    "ВЫБРАТЬ
    |	ЗарплатаРаскройный.Исполнитель КАК ФИО,
    |	СУММА(ЗарплатаРаскройный.Сумма) КАК Сумма,
    |	СУММА(Табель.Время) КАК Время,
    |	СУММА(ЗарплатаРаскройный.СуммаТариф) КАК СуммаТариф
    |ИЗ
    |	РегистрНакопления.ЗарплатаРаскройный КАК ЗарплатаРаскройный
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Табель КАК Табель
    |		ПО ЗарплатаРаскройный.Исполнитель = Табель.Исполнитель
    |			И ЗарплатаРаскройный.Период = Табель.Период
    |ГДЕ
    |	ЗарплатаРаскройный.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    |	ЗарплатаРаскройный.Исполнитель";
    
    
    делаю вот так...
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    РН "Зарплата" - оборотный, правильно? Почему не обращаетесь к виртуальной таблице "Обороты"?
    "Табель" - точно регистр накопления? Это так и надо?
  3. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Код:
    "ВЫБРАТЬ
    |    ЗарплатаРаскройный.Исполнитель КАК ФИО,
    |    ЗарплатаРаскройный.Сумма КАК Сумма,
    |    Табель.Время КАК Время,
    |    ЗарплатаРаскройный.СуммаТариф КАК СуммаТариф
    |ИЗ
    |    РегистрНакопления.ЗарплатаРаскройный КАК ЗарплатаРаскройный
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Табель КАК Табель
    |        ПО ЗарплатаРаскройный.Исполнитель = Табель.Исполнитель
    |            И ЗарплатаРаскройный.Период = Табель.Период
    |ГДЕ
    |    ЗарплатаРаскройный.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗарплатаРаскройный.Исполнитель
    |
    |ИТОГИ
    |	СУММА(Сумма),
    |	СУММА(Время),
    |	СУММА(СуммаТариф),
    |ПО
    |	ОБЩИЕ,
    |	ФИО"; 
    
    
    Логичнее вроде так делать?
    Затем обход по группировкам...


    Ошибки в конфигураторе не проверял...
  4. TopicStarter Overlay
    slaay
    Offline

    slaay Опытный в 1С

    Регистрация:
    27 мар 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Да зарплата это обороты...

    Табель тоже регистр накопления...не знаю так надо не надо но так сделал)))

  5. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Раскройте полнее назначение: какие данные (что они обозначают) и какими документами пишутся в РН "Табель" и то же самое для РН "Зарплата". Назначение каждого измерения (кроме "Исполнитель", здесь понятно).
  6. TopicStarter Overlay
    slaay
    Offline

    slaay Опытный в 1С

    Регистрация:
    27 мар 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Сумма это трудоемкость в документе Зарплата вычисляется
    СуммаТариф это Сумма*Тариф в дкоументе Зарплата
    Время это время отработанное Исполнителем...


    Процент ещё должен вычисляться Сумма(трудоемкость/Время*100)
  7. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Вместо последней Вашей строки
    ВыборкаПоФамилии = ЗапросФамилии.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    попробуйте

    Код:
    ЗапросВыборка = ЗапросФамилии.Выполнить();
    Выборка=ЗапросВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ФИО");
    Пока Выборка.Следующий() Цикл
    Сумма= Выборка.Сумма;
    Время= Выборка.Время;
    СуммаТариф = Выборка.СуммаТариф;
    ФИО= Выборка.ФИО;
    Сообщить(" "+ ФИО + " "+ Сумма + " " + Время + " " + СуммаТариф);
    КонецЦикла;
    
    
    
    Если данные введены в регистры верно, должно выдать...
  8. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    попробуйте так

    Код:
    "ВЫБРАТЬ
    |    ЗарплатаРаскройный.Исполнитель КАК ФИО,
    |    СУММА(ЗарплатаРаскройный.Сумма) КАК Сумма,
    |    СУММА(Табель.Время) КАК Время,
    |    СУММА(ЗарплатаРаскройный.СуммаТариф) КАК СуммаТариф
    |ИЗ
    |    РегистрНакопления.ЗарплатаРаскройный КАК ЗарплатаРаскройный
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Табель КАК Табель
    |        ПО ЗарплатаРаскройный.Исполнитель = Табель.Исполнитель
    |            И ЗарплатаРаскройный.Период = Табель.Период
    |ГДЕ
    |    ЗарплатаРаскройный.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |ИТОГИ ПО
    |    ЗарплатаРаскройный.Исполнитель";
    
    ...
    
    ВыборкаИсполнитель = Запрос.Выполнить().Выбрать(ОбходрезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаИсполнитель.Следующий() Цикл
    Выборка = ВыборкаИсполнитель.Выбрать();
    Пока ВыборкаИсполнитель.Следующий() Цикл
    //здесь уже должны быть свои данные по каждому исполнителю
    ...
    КонецЦикла;
    КонецЦикла;
    
    
  9. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    опечатался

    Код:
    ...
    ВыборкаИсполнитель = Запрос.Выполнить().Выбрать(ОбходрезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаИсполнитель.Следующий() Цикл
    Выборка = ВыборкаИсполнитель.Выбрать();
    Пока Выборка.Следующий() Цикл
    //здесь уже должны быть свои данные по каждому исполнителю
    ...
    КонецЦикла;
    КонецЦикла;
    
    
    

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