8.х Помогите с отчетом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем E}|{uk, 11 авг 2010.

  1. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Помогите,пожалуйста, кто может! Если вам мой вопрос покажется очень легким, не смейтесь =) Недавно взялась за 1с поэтому многого не знаю..
    Сама задача состоит в том, чтобы в отчете были колонки оклад и надбавки(они в свою очередь разбиты на несколько колонок по видам надбавок)..делается всё с помощью скд. Проблема в том, что если у человека 2 надбавки,то его оклад выводится как 2*оклад...а так быть не должно..
    Используются вложенные запросы

    Для оклада

    ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Оклад,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"


    Для надбавок

    ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Процент,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Надбавк%"
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%")
    И (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &Период)


    Связь по Сотруднику...

    Подскажите как сделать,чтобы избегать неправильного оклада....
    Ещё делала с помощью разных наборов данных. Там выдается всё отлично,но проблема появляется когда надо посчитать Оклад+(Оклад*Процент/100)... Может есть ещё какие то способы подсчёта значений полей из разных наборов данных кроме выч.полей...

    Помогите!!!
  2. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    У Вас в СКД один набор данных или несколько вообще как вы эти 2 выборки соедеинете каким соедеинением и по чем и можно примерный вид отчета(в экселе) а то по описанию не совсем понятно
  3. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Пробовала и 2 наборами и одним... Запросы приведены из одного набора данных... 2 вложенных запроса...
    Связаны две выборки по сотруднику...вид соединений никак не влиет на результат((

    Вот примерный вид отчета
    Посмотреть вложение 5042

    Вложения:

    • Отчет.jpg
      Отчет.jpg
      Размер файла:
      118,9 КБ
      Просмотров:
      79
  4. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ выкладите отчет, посмотрим. или запрос, где все в одном запросе делаете
  5. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    ВЫБРАТЬ
    Надбавки.ВидРасчета,
    Надбавки.Процент,
    Надбавки.Сотрудник.Физлицо,
    Надбавки.Сотрудник,
    Зарплата.Оклад
    ИЗ
    (ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Оклад,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням") КАК Зарплата
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Процент,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Надбавк%"
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%")
    И (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &Период)) КАК Надбавки
    ПО Надбавки.Сотрудник.Физлицо.Ссылка = Зарплата.Сотрудник.Физлицо.Ссылка
    ГДЕ
    Надбавки.Сотрудник.Актуальность
  6. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    У Вас получается какя ситуация что в резултатах 2х выборок

    есть

    иванов Оклад 10 000 | Иванов Надбавка 1 10%
    __________________ | Иванов Надбавка 2 10%
    И когда вы соеденяете левым соеденением то и во вторую строчку добавляется оклад.
    по этому и двоит.
  7. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Так а как правильно сделать,чтобы такого не было? Я убирала вообще галочки в связи..ничего не менялось..
  8. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Тут не в связях то дело тут надо что бы оклад и надбавка были одним реквизитом в выборке.

    Что бы было
    Иванов Оклад 100
    Иванов Надбавка1 10
    Иванов Надбавка2 10


    Используйет для этого оператор ВЫБОР КОГДА
  9. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Знать бы где и про что =(
  10. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Выбирайте срезом последних все начисления что стоят в плановых.
    но потом сами определяете поле типа такого

    ВЫБРАТЬ
    Надбавки.Процент,
    Надбавки.Сотрудник.Физлицо,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням ТОГДА "Оклад"
    ИНАЧЕ "Надбавка"
    КОНЕЦ КАК ВидРасчета,
    Надбавки.Сотрудник,


    вот как то так
  11. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Что-то я видно не то делаю... ещё хуже становится... и проценты удваиваются.. =(
  12. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Выкладывайте запрос, который получили....
  13. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Кажется я поняла почему проблемы... Если выводить с помощью ФизЛицо, Оклад и процент, то выдается
    Иванов 5000 10%
    Иванов 5000 20%

    Поскольку я вывожу основной отчет в виде таблицы, то получается группировка по ФизЛицо, поэтому оклад выводится 10000

    Как избежать это?

    Делала так

    ВЫБРАТЬ
    Надбавки.Процент,
    Надбавки.Сотрудник.Физлицо,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    ИНАЧЕ Надбавка.Процент
    КОНЕЦ КАК Оклад
    ....
  14. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Нужен весь запрос...так сказать сложно когда только элементы выборки..
  15. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    ВЫБРАТЬ
    Надбавки.Процент КАК Процент,
    Зарплата.Оклад КАК Оклад,
    Зарплата.Сотрудник КАК Сотрудник,
    Надбавки.ВидРасчета,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА Зарплата.ВидРасчета
    ИНАЧЕ Надбавки.ВидРасчета
    КОНЕЦ КАК Расчет,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Оклад,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням") КАК Зарплата
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Процент,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Надбавк%"
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%")
    И (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)
    ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &Период)) КАК Надбавки
    ПО Зарплата.Сотрудник.Ссылка = Надбавки.Сотрудник.Ссылка
    ПО ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Ссылка = Зарплата.Сотрудник.Ссылка
    ГДЕ
    Надбавки.Сотрудник.Актуальность
  16. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Сегодня уже наврятли успею посмотреть, т.к сейчас планерка, а после я в отпуск уезжаю на неделю. Напомните завтра в личку, если будет доступ я гляну...
  17. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Кстати Доброе утро =)


    ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета
    ИНАЧЕ 0
    КОНЕЦ КАК Расчет,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    ИНАЧЕ ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    ИНАЧЕ 0
    КОНЕЦ
    КОНЕЦ КАК Процент,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    КОНЕЦ КАК Оклад,
    ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    КОНЕЦ * ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование ПОДОБНО "Доплата%"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    ИНАЧЕ 0
    КОНЕЦ / 100 КАК Руб
    ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо.Наименование ПОДОБНО "Ми%"


    вот такой запрос выводит оклад и проценты правильно, но косяк в том что операции над ними сделать не получается... оклад*процент/100... выдает пусто... Кто знает что делать?


    Draco хорошего вам отпуска =)
  18. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Не разбирался, но:
    Код:
    "ВЫБОР
    КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.Наименование = "Оклад по дням"
    ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
    КОНЕЦ КАК Оклад,"
    
    здесь, и ниже, в следущем выражении где у вас конструкция "ИНАЧЕ 0"?
  19. TopicStarter Overlay
    E}|{uk
    Offline

    E}|{uk

    Регистрация:
    11 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Вроде отсутствие иначе это всё равно что Иначе = 0... Проблема в другом.. при группировке с помощью таблицы выдается корректно и оклад и проценты, но поле рубли пустое...
    Если рассматривать тоже самое с помощью обычной группировки, то получается

    Фамилия \ Оклад \ Процент\Руб
    Иванов \10000 \ \
    Иванов \ \ 10 \

    По скольку надбавки физЛица и его оклад находятся на разных строках, то результат руб = Оклад*Процент/100 он посчитать не может....


    Для того чтобы надбавки и оклад были на одной строке советовали использовать вложенные запросы...они работают,но с дублированием оклада...

    Есть идеи как ещё?
  20. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Нет. Если у вас отсутствует "ИНАЧЕ 0", при выборке данное поле будет равняться пустое значение (NULL). NULL ни на что умножить или поделить не получится.

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