Имя: Пароль:
1C
1С v8
не срабатывает набор записей по регистру
0 mephistos
 
15.05.14
16:27
добрый день, друзья.
сижу туплю второй час.
есть регистр сведений, периодический, периодичность - 1 секунда, 1 измерение - документ.
нужно получить наборы записей, соответствующие условию: документ равен конкретному и, соответственно, по дате.

делаю так:

Если ТипЗнч(Строка.Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
             ОбработкаПрерыванияПользователя();
             СтатусыЗаказов = РегистрыСведений.СтатусыЗаказовДоп;
             НаборЗаписей = СтатусыЗаказов.СоздатьНаборЗаписей();
             НаборЗаписей.Отбор.Документ.Установить(Выборка.Ссылка);
             НаборЗаписей.Отбор.Период.Установить(Выборка.Ссылка.Дата);
НаборЗаписей.Прочитать();
            
Для Каждого Запись Из НаборЗаписей Цикл

//пошли действия
            
КонецЦикла;

КонецЕсли;


Смотрю отладчиком - на момент чтения записей из набора - набор пустой :( Почему так ? Записей в регистре миллион. в чем я неправ?
1 Крошка Ру
 
15.05.14
16:30
А Выборка - это что?
2 Крошка Ру
 
15.05.14
16:31
В смысле,может она пустая?
3 mephistos
 
15.05.14
16:32
(2) Выборка - выборка документов с запроса. Нет, не пустая. Выборка.Ссылка - ссылка на документ того же типа, что является измерением в регистре. Я тоже проверял. И дата, естественно, есть
4 ale-sarin
 
15.05.14
16:35
Может период в записях регистра не равен дате документа?
5 Крошка Ру
 
15.05.14
16:35
Если точку остановки поставить на

НаборЗаписей.Прочитать();

НаборЗаписей.Отбор что показывает?
6 Крошка Ру
 
15.05.14
16:36
(4) Кстати, да, может в период не попадаешь
7 mephistos
 
15.05.14
16:36
Ребята, кажется, нашел. Только не понимаю причину: если в отладке shift f9 набор записей, то показано, что в Отборе не установлен ЗаказПокупателя. Соответственно, не срабатывает строчка установки отбора. Но почему такое может быть ? Я, вроде, синтаксически правильно все написал. И значение в установку передается..
8 Крошка Ру
 
15.05.14
16:37
Делай срез последних
9 Enders
 
15.05.14
16:37
Так как регистр не подчинен регистратору, а просто периодический, то период скорее всего - это дата и время записи в регистр, а не дата документа.
10 Крошка Ру
 
15.05.14
16:38
А может надо НаборЗаписей.Отбор.Регистратор.Установить(...)?
11 mephistos
 
15.05.14
16:38
(9) Не-не, с датами все нормально, это я смотрел. Запись пишется в регистр по записи документа, это как раз дата создания, выходит. Ну, практически.
12 mephistos
 
15.05.14
16:38
(10) Сейчас попробую, минуточку
13 Крошка Ру
 
15.05.14
16:39
(9) А, да, может и не подчинен..
14 mephistos
 
15.05.14
16:39
(10) Не, поле не обнаружено ..
15 mephistos
 
15.05.14
16:39
НаборЗаписей.Отбор.Документ.Установить(Выборка.Ссылка); - что не так с этой строчкой .. Измерение именно так и называется, и значение в выборка.ссылка есть ..
16 Enders
 
15.05.14
16:40
(15) А если убрать отбор по дате, набор пустой или заполненный?
17 Крошка Ру
 
15.05.14
16:41
При отладке в НаборЗаписей.Отбор поле как называется? "Документ"?
18 mephistos
 
15.05.14
16:41
(17) Ага, так точно
19 mephistos
 
15.05.14
16:41
(16) Сейчас гляну
20 mephistos
 
15.05.14
16:42
(16) очень забавно, кстати. сделал период пустым - встал отбор по ДОкументу ..
как так ?
21 mephistos
 
15.05.14
16:43
(16) Охренеть, сработало, и цикл по записям пошёл. Как так ?)
22 Enders
 
15.05.14
16:46
(21)Что значит пустым? поставил пустую дату или удалил строчку отбора?
23 Крошка Ру
 
15.05.14
16:46
(21) Просто интересно...
А если отборы по документу и по периоду местами поменять(в смысле строки) отбор будет только по документу?
24 mephistos
 
15.05.14
16:49
(23) (22) Я закомментил строчку, где устанавливается период в отбор, и оставил только отбор по документу. И всё заработало.
25 Крошка Ру
 
15.05.14
16:50
(24) Так может действительно не совпадали период и дата документа?
26 Enders
 
15.05.14
16:50
(24) Тогда бока с датами. Подозреваю что ответ: "Запись пишется в регистр по записи документа, это как раз дата создания, выходит."(с)
А дата документа не равна дате его создания/записи :)
27 mephistos
 
15.05.14
16:53
(25) (26) Скорее всего, ребята ! Но мне достаточно отбора по документу.

Спасибо вам большое, что помогли прекратить тупить ;)
28 Enders
 
15.05.14
16:53
+ к (26)
Скорее всего вы пишите данные в регистр при создании документа
и там есть строчка
"Период = ТекущаяДата()" и получается что период у вас близок к дате создания документа, различается на секунды, но всё равно разный

или же "Период = ДокОбъект.Дата", тогда при оперативном проведении и изменении даты вручную у вас опять же не будут совпадать даты, так как скорее всего вы смотрите сделал этот документ движения по регистру, если нет - добавляете, да - ничего не делаете.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой