|
Запрос: условие по начислениям | ☑ | ||
---|---|---|---|---|
0
dft2014
14.05.18
✎
11:48
|
Ставлю условие в запросе, чтобы не попадали определенные премии, но выдает ошибку, что:
“Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И СведенияОДоходахНДФЛ.Начисление.Наименование <<?>> <> &Начисление ” Вот запрос: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СведенияОДоходахНДФЛ.ФизическоеЛицо КАК ФизическоеЛицо, | СУММА(СведенияОДоходахНДФЛ.СуммаДохода) КАК СуммаДохода |ИЗ | РегистрНакопления.СведенияОДоходахНДФЛ КАК СведенияОДоходахНДФЛ |ГДЕ | СведенияОДоходахНДФЛ.МесяцНалоговогоПериода >= &ДатаНач | И СведенияОДоходахНДФЛ.МесяцНалоговогоПериода <= &ДатаКон | И СведенияОДоходахНДФЛ.ФизическоеЛицо = &ФизическоеЛицо | И СведенияОДоходахНДФЛ.Начисление.Наименование <> &Начисление | |СГРУППИРОВАТЬ ПО | СведенияОДоходахНДФЛ.ФизическоеЛицо"; Запрос.УстановитьПараметр("ДатаКон", ДатаКон); Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник.ФизическоеЛицо); Начисление = Новый Массив; Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая")); Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги""")); Запрос.УстановитьПараметр("Начисление", Начисление); |
|||
1
piter3
14.05.18
✎
11:49
|
не СведенияОДоходахНДФЛ.Начисление в ( &Начисление).
|
|||
2
xXeNoNx
14.05.18
✎
11:59
|
Что тут "&Начисление"?
|
|||
3
xXeNoNx
14.05.18
✎
12:00
|
(0) Этот запрос - мина замедленного действия
|
|||
4
dft2014
14.05.18
✎
12:04
|
(1) Спасибо!
Но теперь не видит начисление, если наименование в кавычках: Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги""")); Как правильно кавычки в наименовании поставить? |
|||
5
catena
14.05.18
✎
12:15
|
(4)Правильно не сравнивать строки и ссылки. Если ты уверен в уникальности своих наименований, делай массив из наименований.
|
|||
6
dft2014
14.05.18
✎
12:18
|
(5) Я собственно массив и делаю, разве нет?
Но в отладчике, видит: Премия разовая "За особые заслуги"" Вместо: Премия разовая "За особые заслуги" |
|||
7
фросия
14.05.18
✎
12:19
|
засуньте все исключаемые(или включаемые) премии в регистр или в справочник и оттуда получайте, что ж вы при добавлении новой премии код заново переписывать будете каждый раз?
|
|||
8
dft2014
14.05.18
✎
12:21
|
(7) У нас разовые премии всего две, на протяжении уже 15-ти лет. Поэтому проще их тянуть в запросе. Но вот как кавычки побороть?
|
|||
9
catena
14.05.18
✎
12:21
|
СведенияОДоходахНДФЛ.Начисление.__Наименование__ <> &Начисление
Начисление = Новый Массив; Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая")); (6)Не смущает, что это будут разные типы? Или ладно, ищи по наименованию. Дождемся следующего вопроса "почему запрос не возвращает, хотя ано там есть" |
|||
10
dft2014
14.05.18
✎
12:23
|
(9) Почему разные типы? В запросе я сравниваю Наименования начислений и в параметрах ищу начисления по Наименованию, разве не так?
|
|||
11
фросия
14.05.18
✎
12:25
|
(10) поиск по наименованию возвращает ссылку на объект.
если не получается искать по наименованию- ищите по коду |
|||
12
catena
14.05.18
✎
12:25
|
(10)Забей. Потом дойдет.
|
|||
13
dft2014
14.05.18
✎
12:28
|
(11) Поиск по коду - не устраивает. Как тогда искать правильно в запросе по наименованию, если в наименовании есть кавычки (Премия разовая "За особые заслуги") без создания вспомогательных регистров/справочников?
|
|||
14
фросия
14.05.18
✎
12:31
|
зачем в запросе искать по наименованию?
|
|||
15
dft2014
14.05.18
✎
12:33
|
Исправила запрос, вроде теперь показывает верно (не включает мои премии-исключения):
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СведенияОДоходахНДФЛ.ФизическоеЛицо КАК ФизическоеЛицо, | СУММА(СведенияОДоходахНДФЛ.СуммаДохода) КАК СуммаДохода |ИЗ | РегистрНакопления.СведенияОДоходахНДФЛ КАК СведенияОДоходахНДФЛ |ГДЕ | СведенияОДоходахНДФЛ.МесяцНалоговогоПериода >= &ДатаНач | И СведенияОДоходахНДФЛ.МесяцНалоговогоПериода <= &ДатаКон | И СведенияОДоходахНДФЛ.ФизическоеЛицо = &ФизическоеЛицо | И НЕ СведенияОДоходахНДФЛ.Начисление.Ссылка В (&Начисление) | |СГРУППИРОВАТЬ ПО | СведенияОДоходахНДФЛ.ФизическоеЛицо"; Запрос.УстановитьПараметр("ДатаКон", ДатаКон); Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник.ФизическоеЛицо); Начисление = Новый Массив; Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая")); Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги""")); Запрос.УстановитьПараметр("Начисление", Начисление); |
|||
16
dft2014
14.05.18
✎
12:35
|
(14) А как еще дать понять запросу, что определенные премии не надо включать? Без создания вспомогательных регистров/справочников?
|
|||
17
фросия
14.05.18
✎
12:39
|
(16) доп регистр- справочник- оптимален т.к. можно изменять список не переписывая код;
можно в самом виде расчета добавить признак Не включения данного начисления в какой-то отчет; можно в форме отчета добавить табличку, в которую воткнуть список исключаемых видов расчета и заполнять её вручную или при открытии. а ситуация, когда пользователю, для того что бы добавить начисление в список или исключить его из списка, необходимо обращаться к программисту- не самое красивое решение, в народе именуется "говнокодом" |
|||
18
xXeNoNx
14.05.18
✎
12:40
|
(15) "СведенияОДоходахНДФЛ.Начисление.Ссылка" - левое соединение зачем?
Убирайте ".Ссылка" |
|||
19
dft2014
14.05.18
✎
12:47
|
(18) Если речь идет об этой строчке:
| И НЕ СведенияОДоходахНДФЛ.Начисление.Ссылка В (&Начисление) то если убрать Ссылка, опять будет не находить премии-исключения. Как мне подсказала Фросия в (11): поиск по наименованию возвращает ссылку на объект. Поэтому я добавила Ссылку. |
|||
20
фросия
14.05.18
✎
12:49
|
СведенияОДоходахНДФЛ.Начисление.Ссылка и СведенияОДоходахНДФЛ.Начисление
и там и там ссылка. одно и то же в этих полях. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |