Имя: Пароль:
1C
1С v8
Как сделать отбор по реквизиту подчиненого период-го РС, а не по регистратору?
0 snegovik
 
14.12.12
08:36
В ЗУП есть периодический регистр сведений "Состояние работников организаций", подчиненный регистратору. Меня же интересует состояние выбранного работника на определенную дату, а регистратор не нужен. По методичке такой код:

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


А хотелось бы что-то типа такого:


НаборЗаписей = РегистрыСведений.СостояниеРаботниковОрганизаций.СоздатьНаборЗаписей();
   НаборЗаписей.Отбор.Сотрудник.Установить(Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(ВыбСотрудник));
   НаборЗаписей.Прочитать();
   Для Каждого Запись Из НаборЗаписей Цикл
       Сообщить(Запись.Состояние);
   КонецЦикла;
1 Александр_
Тверь
 
14.12.12
08:37
(0) а тупо запрос сделать?
2 Александр_
Тверь
 
14.12.12
08:38
а... ты записывать хочешь.
3 snegovik
 
14.12.12
08:40
(2) Нет, только прочитать данные, писать не буду.
4 НЕА123
 
14.12.12
08:40
(2)
а запрос-то нужен.
5 Александр_
Тверь
 
14.12.12
08:41
скорее всего тебе придется запросом получить все документы в которых есть интересующий тебя пациент, а после уже каждый по записям каждого отдельного документа менять то, что ты хочешь.
6 Александр_
Тверь
 
14.12.12
08:42
(3) если читать то 100% запрос. Какие еще сомнения?
7 НЕА123
 
14.12.12
08:42
ОФФ
>НаборЗаписей.Отбор.Сотрудник.Установить(Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(ВыбСотрудник));

ВыбСотрудник - Кто это?
8 snegovik
 
14.12.12
08:44
(6) Ладно, буду мастрячить запрос. Просто не силён в них:-)
Ну и чисто теоретически стало интересно - почему нельзя простым отбором выбрать записи из регистра, если есть подчинение регистратору.
9 snegovik
 
14.12.12
08:45
(7) ВыбСотрудник - переменная с типом значения "справочник сотрудников".
10 Defender aka LINN
 
14.12.12
08:50
(7) А что, были сомнения? :)
11 snegovik
 
14.12.12
08:53
(7), (10) Пардон, была такая строчка, разумеется:
НаборЗаписей.Отбор.Сотрудник.Установить(ВыбСотрудник);
12 НЕА123
 
14.12.12
08:56
(10)
да.
думал, что такое невозможно. просто додуматься до такого...
13 snegovik
 
14.12.12
08:57
(12) Ну, не так скопировал, не издевайтесь)
14 snegovik
 
14.12.12
09:17
Давайте покритикуем запрос:

Известно, что у этого сотрудника в РС есть запись с датой 28.01.2012. Так вот, когда ВыбПериод = Дата(2012, 01, 28), то запрос выдает результат, а когда ВыбПериод = Дата(2012, 01, 29) - то результата нет.

ТекСотрудник = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию("Иванов Иван Иванович");
   ВыбПериод = Дата(2012, 01, 29);
   
   Запрос = Новый Запрос;
   Запрос.Текст =

   "ВЫБРАТЬ
   |    СостояниеРаботниковОрганизацийСрезПоследних.Период,
   |    СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник,
   |    СостояниеРаботниковОрганизацийСрезПоследних.Состояние
   |ИЗ
   |    РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ВыбПериод) КАК СостояниеРаботниковОрганизацийСрезПоследних
   |ГДЕ
   |    СостояниеРаботниковОрганизацийСрезПоследних.Период = &ВыбПериод
   |    И СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник.Ссылка = &ВыбСотрудник";
   
   Запрос.УстановитьПараметр("ВыбСотрудник", ТекСотрудник);
   Запрос.УстановитьПараметр("ВыбПериод", ВыбПериод);
   
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Сообщить(Выборка.Сотрудник);
       Сообщить(Выборка.Состояние);
   КонецЦикла;
15 h_miha
 
14.12.12
09:19
"|ГДЕ
   |    СостояниеРаботниковОрганизацийСрезПоследних.Период = &ВыбПериод"  убери
16 snegovik
 
14.12.12
09:27
(15) Спасибо, заработало)
17 НЕА123
 
14.12.12
09:30
да и сотрудника неплохо в параметры засунуть.
18 НЕА123
 
14.12.12
09:31
параметры = параметры таблицы
19 snegovik
 
14.12.12
09:32
(17)  Запрос.УстановитьПараметр("ВыбСотрудник", ТекСотрудник);
Не оно?
20 НЕА123
 
14.12.12
09:32
(17)
хотя... может и не надо.
21 Sammo
 
14.12.12
09:43
(20) Можно, тогда отбор будет перед срезом.
22 НЕА123
 
14.12.12
09:47
(21)
я к тому, что может ему надо несколько состояний.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn