Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Запрос: условие по начислениям

Запрос: условие по начислениям
Я
   dft2014
 
14.05.18 - 11:48
Ставлю условие в запросе, чтобы не попадали определенные премии, но выдает ошибку, что:
“Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И СведенияОДоходахНДФЛ.Начисление.Наименование <<?>> <> &Начисление ”

Вот запрос:


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

Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник.ФизическоеЛицо);

Начисление = Новый Массив;
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая"));
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги"""));
Запрос.УстановитьПараметр("Начисление", Начисление);
 
 
   piter3
 
1 - 14.05.18 - 11:49
не СведенияОДоходахНДФЛ.Начисление в ( &Начисление).
   xXeNoNx
 
2 - 14.05.18 - 11:59
Что тут "&Начисление"?
   xXeNoNx
 
3 - 14.05.18 - 12:00
(0) Этот запрос - мина замедленного действия
   dft2014
 
4 - 14.05.18 - 12:04
(1) Спасибо!

Но теперь не видит начисление, если наименование в кавычках:
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги"""));

Как правильно кавычки в наименовании поставить?
   catena
 
5 - 14.05.18 - 12:15
(4)Правильно не сравнивать строки и ссылки. Если ты уверен в уникальности своих наименований, делай массив из наименований.
   dft2014
 
6 - 14.05.18 - 12:18
(5) Я собственно массив и делаю, разве нет?

Но в отладчике, видит:
Премия разовая "За особые заслуги""

Вместо:
Премия разовая "За особые заслуги"
   фросия
 
7 - 14.05.18 - 12:19
засуньте все исключаемые(или включаемые) премии в регистр или в справочник и оттуда получайте, что ж вы при добавлении новой премии код заново переписывать будете каждый раз?
   dft2014
 
8 - 14.05.18 - 12:21
(7) У нас разовые премии всего две, на протяжении уже 15-ти лет. Поэтому проще их тянуть в запросе. Но вот как кавычки побороть?
   catena
 
9 - 14.05.18 - 12:21
СведенияОДоходахНДФЛ.Начисление.__Наименование__ <> &Начисление

Начисление = Новый Массив;
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая"));

(6)Не смущает, что это будут разные типы? Или ладно, ищи по наименованию. Дождемся следующего вопроса "почему запрос не возвращает, хотя ано там есть"
   dft2014
 
10 - 14.05.18 - 12:23
(9) Почему разные типы? В запросе я сравниваю Наименования начислений и в параметрах ищу начисления по Наименованию, разве не так?
 
 Рекламное место пустует
   фросия
 
11 - 14.05.18 - 12:25
(10) поиск по наименованию возвращает ссылку на объект.
если не получается искать по наименованию- ищите по коду
   catena
 
12 - 14.05.18 - 12:25
(10)Забей. Потом дойдет.
   dft2014
 
13 - 14.05.18 - 12:28
(11) Поиск по коду - не устраивает. Как тогда искать правильно в запросе по наименованию, если в наименовании есть кавычки (Премия разовая "За особые заслуги") без создания вспомогательных регистров/справочников?
   фросия
 
14 - 14.05.18 - 12:31
зачем в запросе искать по наименованию?
   dft2014
 
15 - 14.05.18 - 12:33
Исправила запрос, вроде теперь показывает верно (не включает мои премии-исключения):

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

Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник.ФизическоеЛицо);

Начисление = Новый Массив;
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая"));
Начисление.Добавить(ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия разовая ""За особые заслуги"""));
Запрос.УстановитьПараметр("Начисление", Начисление);
   dft2014
 
16 - 14.05.18 - 12:35
(14) А как еще дать понять запросу, что определенные премии не надо включать? Без создания вспомогательных регистров/справочников?
   фросия
 
17 - 14.05.18 - 12:39
(16) доп регистр- справочник- оптимален т.к. можно изменять список не переписывая код;
можно в самом виде расчета добавить признак Не включения данного начисления в какой-то отчет;
можно в форме отчета добавить табличку, в которую воткнуть список исключаемых видов расчета и заполнять её вручную или при открытии.

а ситуация, когда пользователю, для того что бы добавить начисление в список или исключить его из списка, необходимо обращаться к программисту- не самое красивое решение, в народе именуется "говнокодом"
   xXeNoNx
 
18 - 14.05.18 - 12:40
(15) "СведенияОДоходахНДФЛ.Начисление.Ссылка" - левое соединение зачем?
Убирайте ".Ссылка"
   dft2014
 
19 - 14.05.18 - 12:47
(18) Если речь идет об этой строчке:
|    И НЕ СведенияОДоходахНДФЛ.Начисление.Ссылка В (&Начисление)

то если убрать Ссылка, опять будет не находить премии-исключения. Как мне подсказала Фросия в (11): поиск по наименованию возвращает ссылку на объект. Поэтому я добавила Ссылку.
   фросия
 
20 - 14.05.18 - 12:49
СведенияОДоходахНДФЛ.Начисление.Ссылка и СведенияОДоходахНДФЛ.Начисление 
и там и там ссылка.
одно и то же в этих полях.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует