helpf.pro
Регистрация

Отбор в регистрах сведений

mov68
06.10.2010 14:12Прочитано: 27476
Есть непериодический регистр сведений, одно из измерений имеет тип Дата (Дата и время), выполняю:
НаборЗаписейЗаписьНаПрием = РегистрыСведений.ЗаписьНаПрием.СоздатьНаборЗаписей();
НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.ВидСравнения = ВидСравнения.Меньше;
НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.Значение=КонецДня(ДокументСсылка.Дата);
НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.Использование = Истина;
- ругается недопустимый тип сравнения, при НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.ВидСравнения = ВидСравнения.Равно; - проходит,
При НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.ИнтервалВключаяОкончание - неопустимо.
Как мне проверить на меньше? в чем засада? по документации не нашел описания ограничений, для измерения перепробывал все комбинации свойств.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
06.10.2010 15:33Ответ № 1
(0) mov68, попробуй использовать ВидСравнения.МеньшеИЛИРавно или задать через интервал
mov68
06.10.2010 15:47Ответ № 2
Нашел в инете подсказку, смог реализовать только так:
Код 1C v 8.х
 НаборЗаписейЗаписьНаПрием = РегистрыСведений.ЗаписьНаПрием.СоздатьНаборЗаписей();
НаборЗаписейЗаписьНаПрием.Отбор.Автомобиль.Установить(Автомобиль);
НаборЗаписейЗаписьНаПрием.Отбор.ВидЗаписи.Установить(Перечисления.ВидЗаписиПрием.Прием);
//НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.ВидСравнения = ВидСравнения.Меньше;
//НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.Значение=КонецДня(ДокументСсылка.Дата);
//НаборЗаписейЗаписьНаПрием.Отбор.ДатаПриема.Использование = Истина;
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЗаписьНаПрием.Контрагент,
| ЗаписьНаПрием.Автомобиль,
| ЗаписьНаПрием.ВидЗаписи,
| ЗаписьНаПрием.Докум,
| ЗаписьНаПрием.ДатаПриема,
| ЗаписьНаПрием.ГосНомер,
| ЗаписьНаПрием.Цех
|ИЗ
| РегистрСведений.ЗаписьНаПрием КАК ЗаписьНаПрием
|ГДЕ
| ЗаписьНаПрием.Автомобиль = &Автомобиль
| И ЗаписьНаПрием.ДатаПриема > &ДатаПриема
| И ЗаписьНаПрием.ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидЗаписиПрием.Прием)";
Запрос.УстановитьПараметр("Автомобиль", Автомобиль);
Запрос.УстановитьПараметр("ДатаПриема", КонецДня(ДокументСсылка.Дата));
Результат=Запрос.Выполнить();
НаборЗаписейЗаписьНаПрием.Загрузить(Результат.Выгрузить());
НаборЗаписейЗаписьНаПрием.Записать();


Кто предложит проще?
mov68
06.10.2010 15:50Ответ № 3
Перепробовал все виды сравнения и интервал, а потом нашел в инете, что регистр срабатывает только сравнение равно с датой (оказывается старая ошибка), хотя в формах работают все типы сравнения
mov68
06.10.2010 15:52Ответ № 4
Повторюсь: все виды сравнения работают в формах, с записями регистра дата - только на равно (в 1С8.1, в 1С8.2 не знаю)
mov68
06.10.2010 15:55Ответ № 5
Цитирую чужое:
Примечание: в запросе, естественно, нужно инвертировать условие на вхождение в период, "НЕ МЕЖДУ".
Также в списке полей выборки необходимо перечислять не только измерения, но и ресурсы, иначе их значения обнуляются.
E_Migachev
06.10.2010 16:12Ответ № 6
(5) ого *09 так дело в платформе *11 значит...
не сталкивался с таким еще *18
SOBOLEV
08.10.2010 13:20Ответ № 7
почему немагу задать вопрос???
E_Migachev
11.10.2010 21:48Ответ № 8
(7) SOBOLEV, исправлено ! *09
Mokey
12.10.2010 14:43Ответ № 9
Отбор (Filter)
Использование:
Только чтение.
Описание:
Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи "Подчинение регистратору", отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических - только по значению измерений.
Важно! Отбор может устанавливаться только на равенство.

Вот почему нельзя. Тоже упёрся в это ограничение в своё время.
Mokey
12.10.2010 14:47Ответ № 10
Поэтому теперь везде использую метод Установить(ЗначениеОтбора, Использование) элемента отбора, дабы не писать три строки кода.
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.