8.х потерял отпуск

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

  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    /// Ежегодный, учебный и отпуск БСЗП
    ЕжегодныйОтпуск = Новый СписокЗначений();
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты);
    
    Если ФлажокОтпускБезСохраненияЗарплаты и ФлажокЕжегодныйОтпуск и ФлажокУчебныйОтпуск
    Тогда
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    |   И ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия В (&ЕжегодныйОтпуск)
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", ЕжегодныйОтпуск);
    Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация),Организация, Неопределено));
    Результат = Запрос.Выполнить();
    
    КонецЕсли;
    
    выбираю три флажка (ежегодный, учебный, отпуск без сохранения зарплаты) выводит только два. у мня ощущение, что он путает с выбранным значением двух флажков, такое возможно? просто у меня больой код получается
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    В результат выводит только 2 вида отпуска? или что? а у Вас в вашем периоде точно есть все три вида?
  3. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    да выводит только два, в период попадает точно. вот пример того же отпуска раброчего, только где два флажка
    Код:
    /// Дополнительный отпуск и БСЗП
    
    Если ФлажокОтпускБезСохраненияЗарплаты и ФлажокДополнительныйОтпуск
    Тогда
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    |   И ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия В (&ЕжегодныйОтпуск)
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)
    |
    |   ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    |ОтпускаОрганизацийРаботникиОрганизации.ВидДополнительногоОтпуска КАК ВидОтпуска,
    |ОтпускаОрганизацийРаботникиОрганизации.ДатаНачалаДоп КАК ДатаНачала,
    |ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    |ОтпускаОрганизацийРаботникиОрганизации.КоличествоДнейДоп,
    |ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС,
    |ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |    ИЗ
    |Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |   ГДЕ
    |ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    |И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачалаДоп >= &ДатаНачала
    |И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания";
    
    
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты);
    Запрос.УстановитьПараметр("ДополнительныйОтпуск", ПланыВидовРасчета.ОсновныеНачисленияОрганизаций);
    Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация),Организация, Неопределено));
    Результат = Запрос.Выполнить();
    
    КонецЕсли;
    
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну тут у Вас и запросы разные вверху один внизу на обединение 2х таблиц.
  5. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    это мне три одинаковых запроса обединять чтоли, так получается?
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Смотря что вы хотите. Проверка на Ваши виды отпусков есть только в первом запросе. Покажите мне таблицу с данными что бы я мог проверить, что запрос отрабатывает правильно?
  7. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    что за таблицу с данными, имеете ввиду заполненность документа?
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну в вашем случае мне нужно 3 скрина ТЧ документа отпуск, где есть все три вида отпуска. Затем нужен скрин результата отчета за этот период. что бы я видел результат, данные и что то смг проанализировать.
  9. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    /

    Вложения:

    • 56856.JPG
      56856.JPG
      Размер файла:
      59,7 КБ
      Просмотров:
      30
    • впва.JPG
      впва.JPG
      Размер файла:
      151 КБ
      Просмотров:
      18
    • ро.JPG
      ро.JPG
      Размер файла:
      57,2 КБ
      Просмотров:
      16
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну первый запрос впринципе должен все данные выдавать. Значит у Вас с выводом что то
    Вы после Результат = Запрос.Выполнить();
    поствьте
    ТЗ=Результат.Выгрузить();
    И посмотрите все ли данные в ТЗ
  11. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    вот с этим такая же канитель ((
    Код:
    /// Ежегодный, отпуск по уходу за ребёнком и БСЗП
    ЕжегодныйОтпуск = Новый СписокЗначений();
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты);
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускПоУходуЗаРебенком);
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    Если ФлажокОтпускБезСохраненияЗарплаты и ФлажокОтпускПоУходуЗаРебёнком и ФлажокЕжегодныйОтпуск
    Тогда
    Запрос = Новый Запрос;
    Запрос.Текст =
    "   ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия В (&ЕжегодныйОтпуск)
    | И ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)
    |ОБЪЕДИНИТЬ
    |   ВЫБРАТЬ
    | ОтпускПоУходуЗаРебенком.Номер КАК Номер,
    | ОтпускПоУходуЗаРебенком.Дата КАК Дата,
    | ОтпускПоУходуЗаРебенком.Организация КАК Организация,
    | ОтпускПоУходуЗаРебенком.Сотрудник КАК Сотрудник,
    | ""Отпуск по уходу за ребёнком"" КАК ВидОтпуска,
    | ОтпускПоУходуЗаРебенком.ДатаНачала,
    | ОтпускПоУходуЗаРебенком.ДатаОкончания,
    | ""-"" КАК КоличествоДней,
    | ""-"" КАК РабочийГодС,
    | ""-"" КАК РабочийГодПо,
    | ОтпускПоУходуЗаРебенком.Сотрудник.Должность КАК Должность,
    | ОтпускПоУходуЗаРебенком.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
    |ГДЕ
    | (ОтпускПоУходуЗаРебенком.ДатаНачала >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускПоУходуЗаРебенком.ДатаОкончания >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаОкончания <= &ДатаОкончания)
    | И ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускПоУходуЗаРебенком.Организация = &Организация КОНЕЦ";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", ЕжегодныйОтпуск);
    Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация),Организация, Неопределено));
    Результат = Запрос.Выполнить();
    КонецЕсли;
    

    Вложения:

    • ир.JPG
      ир.JPG
      Размер файла:
      59,3 КБ
      Просмотров:
      16
  12. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    а прикрепите мне отчет - я у себя попробую
  13. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

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

    Вложения:

  14. Draco
    Offline

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

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

    У Вас сначала по коду идет
    Если БезСохранени и Ежегодный и Ученический Тогда
    .....
    Выполнить

    КонецЦесли

    и программа идет дальше
    и Дальше попадает на

    Если Ежегодный и Ученический Тогда
    .....
    Выполнить

    КонецЕсли

    И сюда она у Вас заходит т.к. на обоих то стоит галочка..... И результат ЭТО последний

    Перенесите эту проверку на 2 отпуска выше трех и все будет ок. А вообще надо пересматривать механизм ваш Если....
  15. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    все же немного был прав, но найти не мог ошибку) спасибо за помощь
  16. Draco
    Offline

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

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

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