Имя: Пароль:
1C
1С v8
v8: Как получить измерение регистра сведений на определенную дату?
0 Надежда25
 
19.08.11
14:45
Если коротко:
Как получить значение измерения регистра сведений на определенную дату?
Регистр сведений - в пределах дня, подчинен регистратору.
Если более подробно:
В документе при выборе водителя надо проверять в регистре сведений, есть на него записи на нужную дату, или нет.
&НаКлиенте
Процедура МашинаПриИзменении(Элемент)
    ПроверитьМашину();
КонецПроцедуры

&НаСервере
Процедура ПроверитьМашину();
Отбор = Новый Структура("Период", Объект.ДатаИВремяДоставки);
Запись = РегистрыСведений.БригадыИМашины.Получить(Объект.ДатаИВремяДоставки, Отбор);
Машина = Запись.Машина;
   Если Объект.Машина <> Машина Тогда
       Сообщение = Новый СообщениеПользователю;
       Сообщить ("На машину " + Машина + "не определена бригада! Сделайте другой выбор.");
       Сообщение.Сообщить();
       Объект.Машина = "";
   КонецЕсли;
КонецПроцедуры
1 Господин ПЖ
 
19.08.11
14:47
ужос...
2 Reset
 
19.08.11
14:52
Вероятно, вместо
Отбор = Новый Структура("Период", Объект.ДатаИВремяДоставки);

нужно делать отбор по водителю (т.к. "надо проверять в регистре сведений, есть на него записи на нужную дату")
наверное, типа Отбор = Новый Структура("Водитель",ВодительСсылка);

Точнее сказать не могу, структура регистра неясна
3 Надежда25
 
19.08.11
15:01
Извините, на самом деле в документе при выборе Машины надо проверять в регистре сведений БригадыИМашины, есть на нее записи на нужную дату, или нет.
Измерение - машина, ресурсы - Водитель, Грузчик. Ресурсы достать получается, а как получить измерение?
4 Рэйв
 
19.08.11
15:05
(0)Как то так:

ВЫБРАТЬ
   ДанныеРег.Машина,
   ДанныеРег.Водятел
   
ИЗ
   РегистрСведений.Машины КАК Машины
ГДЕ
   Машины.Период МЕЖДУ &Дата1 И &Дата2
   И Машины.Машина= &Валюта
5 Рэйв
 
19.08.11
15:05
ДанныеРег=Машины
6 Рэйв
 
19.08.11
15:07
ну и валюта тоже:)   скопипастил с учебной
7 Надежда25
 
19.08.11
15:10
Попробую, а Отбором можно?
8 Рэйв
 
19.08.11
15:12
(7)Отбором ты получаешь состояние НА ДАТУ.  То есть это состояние могло установиться неделю назад.Я так понял, тебе надо не это.
9 Defender aka LINN
 
19.08.11
15:12
(0) Значение ИЗМЕРЕНИЯ регистра? О_о
10 Надежда25
 
19.08.11
15:20
При выборе в документе машины надо проверить, есть ли запись на такую машину на текущий день в регистре сведений (машина - это измерение). Хотелось бы Отбором.
11 Рэйв
 
19.08.11
15:23
(10) Ну тогда создай набор записей, ставь свой любимый отбор, читай и перебирай.
12 Злобный Фей
 
19.08.11
15:23
(10) Мало ли что тебе хотелось бы.
PS: фотки нет, безобразие!
13 Reset
 
19.08.11
15:32
(8) Получить() <> СрезПоследних()
Ты говоришь про срез


(10) Тогда отбор на машину. Если запись есть - получишь водителя и грузчика. Если записи нет - получишь пустые поля, из чего можно будет сделать вывод что данная машина в данную датиу не использовалась
14 Reset
 
19.08.11
15:34
как так, видимо
Отбор=Новый Структура("Машина",Объект.Машина);
15 Рэйв
 
19.08.11
15:35
(13)>>РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
Получить (Get)
Вариант синтаксиса: Для периодического регистра

Синтаксис:

Получить(<Период>, <Отбор>)
Параметры:

<Период> (обязательный)

Тип: Дата; МоментВремени.
Определяет момент времени, НА КОТОРЫЙ необходимо получить значения ресурсов
(С)
СП
16 Reset
 
19.08.11
15:37
(15) Прочитай сам что ты процитировал, ок?
17 Надежда25
 
19.08.11
15:38
(11)Сделала:
Отбор = Новый Структура("Машина", Объект.Машина);
Запись = РегистрыСведений.БригадыИМашины.Получить(Объект.Дата, Отбор);
Машина = Запись.Машина;
Если Объект.Машина <> Машина Тогда
В Записи машины нет, только Водитель и Грузчик, строка
Машина = Запись.Машина; выдает: "Поле объекта не обнаружено (Машина)". Видно, надо как сказано в (13), проверять не пустые ли поля.
18 Рэйв
 
19.08.11
15:39
(16)А что "момент времени, на который" можно как то двояко истолковать?
19 Reset
 
19.08.11
15:39
(17) Вот так:

Отбор = Новый Структура("Машина", Объект.Машина);
Запись = РегистрыСведений.БригадыИМашины.Получить(Объект.Дата, Отбор);
Если Не ЗначениеЗаполнено(Запись.Водитель)Тогда
// Нет бригады
20 Reset
 
19.08.11
15:42
(18) Нельзя двояко. Ну елки, ты не новичок вроде. Ну прочитай описание полностью.
21 Reset
 
19.08.11
15:43
(15) +
"Если указанный момент времени не совпадает с периодом ни одной записи регистра, то будет возвращена структура, содержащая пустые значения"
22 Reset
 
19.08.11
15:43
Это запрос к физической таблице
23 Надежда25
 
19.08.11
15:45
(17) Получилось! Спасибо большое! То, что надо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший