Ошибка в запросе отчета 1c

1. user1587645 14.12.21 09:57 Сейчас в теме
Добрый день! Как правильно задать условие в запросе отчета, чтобы выводилось то что нужно (функция ВЫБОР)?
ВЫБРАТЬ
    ОсновныеНачисленияДанныеГрафика.Сотрудник КАК Сотрудник,
    ОсновныеНачисленияДанныеГрафика.Результат КАК Сумма,
    ОсновныеНачисленияДанныеГрафика.ВидРасчета КАК ВидРасчета,
    ВЫБОР 
КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = "Отпуск"
            ТОГДА ОсновныеНачисленияДанныеГрафика.КалендарныеДниФактическийПериодДействия
        ИНАЧЕ ОсновныеНачисленияДанныеГрафика.ЗначениеДниФактическийПериодДействия
    КОНЕЦ КАК Дни
ИЗ
    РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(ПериодДействия = &ПериодДействия) КАК ОсновныеНачисленияДанныеГрафика
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
    ДополнительныеНачисления.Сотрудник,
    ДополнительныеНачисления.Результат,
    ДополнительныеНачисления.ВидРасчета,
    NULL
ИЗ
    РегистрРасчета.ДополнительныеНачисления КАК ДополнительныеНачисления
ГДЕ
    ДополнительныеНачисления.ПериодРегистрации = &ПериодДействия
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
    Удержания.Сотрудник,
    Удержания.Результат,
    Удержания.ВидРасчета,
    NULL
ИЗ
    РегистрРасчета.Удержания КАК Удержания
ГДЕ
    Удержания.БазовыйПериодНачало = &ПериодДействия
Показать
По теме из базы знаний
Найденные решения
4. Pacmanius 14.12.21 10:12 Сейчас в теме
(3) У Вас 2 варианта:
1. ОсновныеНачисленияДанныеГрафика.ВидРасчета.Наименование = "Отпуск" - Плохой вариант.
2. ОсновныеНачисленияДанныеГрафика.ВидРасчета = &Отпуск - в параметрах запроса передайте необходимое значение.
niyaz040801; +1 Ответить
17. nomad_irk 81 14.12.21 10:50 Сейчас в теме
(16)в таком случае сделайте условие

КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.<НужныйПлан>.<НужныйВидРасчета>)


и не морочьте голову с передачей параметров в запрос и поиском по наименованию нужного вида расчета.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Pacmanius 14.12.21 10:03 Сейчас в теме
(1)
ОсновныеНачисленияДанныеГрафика.ВидРасчета = "Отпуск"

А разве тип значения у ОсновныеНачисленияДанныеГрафика.ВидРасчета Строка?
3. user1587645 14.12.21 10:08 Сейчас в теме
(2) Наверное, нет. Только учусь. Пока не до конца понимаю. Как тогда сделать правильно?
4. Pacmanius 14.12.21 10:12 Сейчас в теме
(3) У Вас 2 варианта:
1. ОсновныеНачисленияДанныеГрафика.ВидРасчета.Наименование = "Отпуск" - Плохой вариант.
2. ОсновныеНачисленияДанныеГрафика.ВидРасчета = &Отпуск - в параметрах запроса передайте необходимое значение.
niyaz040801; +1 Ответить
8. nomad_irk 81 14.12.21 10:33 Сейчас в теме
(4)1. вполне себе хороший вариант, в том случае, когда вид расчета не выбран на форме.
2. вполне себе плохой вариант, в случае, когда вид расчета не выбран на форме.
13. Pacmanius 14.12.21 10:39 Сейчас в теме
(8) Предложенный мною первый вариант считаю плохим по двум причинам:
- добавляется лишнее соединение, так как идет дальнейшее обращение к реквизиту через точку;
- Сравнивать Строку вместо ссылки работает куда медленнее;
- ВидРасчета могут переименовать например в "Основной отпуск" и тогда очет опять начнет работать не правильно.
14. nomad_irk 81 14.12.21 10:42 Сейчас в теме
(13)
1.в лишнем соединение нет ничего плохого, если оно оправдано. По крайней мере оно лучше отдельного запроса в виде ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Отпуск")
2. нет, если значения индексированы
3. в таком случае, вид расчета необходимо выводить на форму для выполнения выбора пользователем.
5. user1587645 14.12.21 10:21 Сейчас в теме
(4) А параметр вот так передать ВидРасчета=&Отпуск?
9. Pacmanius 14.12.21 10:35 Сейчас в теме
(5) Нужно предавать в параметр тот же тип данных, т.е. ВидРасчета.
Скорее всего Запрос.Установитьпараметр("Отпуск", ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Отпуск")) - (могу ошибиться в синтаксисе, так как нет нужной конфигурации под рукой).
А получить Ссылку на ВидРасчета имеет множество вариантов:
ПланыВидовРасчета.Начисления.НайтиПоНаименованию
ПланыВидовРасчета.Начисления.НайтиПоКоду
ПланыВидовРасчета.Начисления.ПолучитьСсылку
и.т.д.
6. user1587645 14.12.21 10:23 Сейчас в теме
(4) Первый вариант работает. Второй пока нет, если вот так передать параметр а парметрах виртуальной таблицы
7. dmbarchenkov 14.12.21 10:29 Сейчас в теме
(6)
|КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета =  &ВидРасчета
.....

Запрос.УстановитьПараметр("ВидРасчета", ....);
10. nomad_irk 81 14.12.21 10:38 Сейчас в теме
(6)Если вид расчета уникальный по наименованию и коду элемента, то используйте первый вариант.
Если вид расчета указывается на форме, то используйте 2-ой вариант
11. user1587645 14.12.21 10:38 Сейчас в теме
(9) это отчет. Передаем значение в параметрах. Что написать в колонке "Выражение"?
12. user1587645 14.12.21 10:38 Сейчас в теме
15. nomad_irk 81 14.12.21 10:44 Сейчас в теме
(12)не важно где работает запрос, важно понимать, как вы будете определять нужный(-е) вам вид(-ы) расчета.
Хороший вариант с предопределенным значением, но если оно не предопределено, то назвать его могут как угодно и отчет перестанет работать(будет пустым) в другой базе(читай в других условиях выполнения).
16. user1587645 14.12.21 10:46 Сейчас в теме
(15) значение предопредленно
17. nomad_irk 81 14.12.21 10:50 Сейчас в теме
(16)в таком случае сделайте условие

КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.<НужныйПлан>.<НужныйВидРасчета>)


и не морочьте голову с передачей параметров в запрос и поиском по наименованию нужного вида расчета.
18. user1587645 14.12.21 11:06 Сейчас в теме
(17) Большая благодарность Всем!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот