|   |   | 
| 
 | Запрос: условие по начислениям | ☑ | ||
|---|---|---|---|---|
| 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 | 
        СведенияОДоходахНДФЛ.Начисление.Ссылка и СведенияОДоходахНДФЛ.Начисление 
 и там и там ссылка. одно и то же в этих полях. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |