Имя: Пароль:
1C
1С v8
Стандартный реквизит "Период" регистра сведений. Какой формат?
,
0 Ly_Alena
 
14.08.15
06:44
Доброе утро! Понимаю что все должно быть просто, но застряла.
Задача такая. Если период из регистра сведений совпадает с текущей датой - то выбираем эту запись.

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РегистрСведений.Период,
        |    РегистрСведений.ТехнологическаяОперация,
        |    РегистрСведений.Подразделение,
        |    РегистрСведений.Должность,
        |    РегистрСведений.ТарифныйРазряд,
        |    РегистрСведений.Размер КАК Размер
        |ИЗ
        |    РегистрСведений.РегистрСведений КАК РазмерТарифныхСтавок";

    

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

Если ВыборкаДетальныеЗаписи.Период = ТекущаяДата() Тогда

выдает ошибку на несоответствие типов. Если отдельно вывожу
Сообщить("Период = ",ВыборкаДетальныеЗаписи.Период);
выводит пустое сообщение. Хотя если запрос через скд засобачить - все записи выдает с периодом. С ТекущаяДата() тоже проблема. Когда ее в сообщение вывожу выдает ошибку "Несоответствие типов"
1 Мимохожий Однако
 
14.08.15
06:45
Возьми текущую дату на начало дня, например.
2 sFAQer
 
14.08.15
06:46
Периодичность регистра какая?
3 1Сергей
 
14.08.15
06:47
Сообщить("Период = " + ВыборкаДетальныеЗаписи.Период);
4 Mankubus
 
14.08.15
06:47
ВыборкаДетальныеЗаписи.Следующий() не хватает
5 Ly_Alena
 
14.08.15
06:48
(2) в пределах дня. (4) есть цикл - сюда не вставила
6 Ly_Alena
 
14.08.15
06:50
(1) на начало дня на конец дня - все пробовала - ошибка несоответствие типов. Ну и все же непонятно почему период пустой возвращает...
7 1Сергей
 
14.08.15
06:51
(6) ты (3) попробовала?
8 SeraFim
 
14.08.15
06:54
а кто мешает сделать отбор сразу в запросе?

        "ВЫБРАТЬ
        |    РегистрСведений.Период,
        |    РегистрСведений.ТехнологическаяОперация,
        |    РегистрСведений.Подразделение,
        |    РегистрСведений.Должность,
        |    РегистрСведений.ТарифныйРазряд,
        |    РегистрСведений.Размер КАК Размер
        |ИЗ
        |    РегистрСведений.РегистрСведений КАК РазмерТарифныхСтавок
        |ГДЕ
        |    РегистрСведений.Период = &ПараметрТекущаяДата";
9 Ly_Alena
 
14.08.15
06:54
(3) Да! Так работает! И что это значит?
10 Ly_Alena
 
14.08.15
06:55
(8) С этого и начала - не работает. начала условия после запроса ставить - не работает. решила просто вывести хотя бы значение периода - не работает. Сейчас сработало с Сообщить("Период = " + ВыборкаДетальныеЗаписи.Период);
11 1Сергей
 
14.08.15
06:56
(9) Это значит, что надо чаше CTRL+F1 нажимать :)
12 1Сергей
 
14.08.15
06:56
*чаще
13 Ly_Alena
 
14.08.15
06:57
(11) дело ведь не в выводе периода, а в его сравнении. В запросе сравниваю с началом и концом дня текущей даты - выдает ошибку
14 SeraFim
 
14.08.15
06:58
а вообще, запрос странный. Как регистр называется-то?
Почему в запросе: "РегистрСведений КАК РазмерТарифныхСтавок"
А поля выбираются из "РегистрСведений"
15 SeraFim
 
14.08.15
06:59
Может, все-таки так:
        "ВЫБРАТЬ
        |    РазмерТарифныхСтавок.Период,
        |    РазмерТарифныхСтавок.ТехнологическаяОперация,
        |    РазмерТарифныхСтавок.Подразделение,
        |    РазмерТарифныхСтавок.Должность,
        |    РазмерТарифныхСтавок.ТарифныйРазряд,
        |    РазмерТарифныхСтавок.Размер КАК Размер
        |ИЗ
        |    РегистрСведений.РазмерТарифныхСтавок КАК РазмерТарифныхСтавок
        |ГДЕ
        |    РазмерТарифныхСтавок.Период = &ПараметрТекущаяДата";
16 Ly_Alena
 
14.08.15
07:02
ДатаНачала = НачалоДня(ТекущаяДата());
    ДатаКонца = КонецДня(ТекущаяДата());
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РазмерТарифныхСтавокСрезПоследних.Период,
        |    РазмерТарифныхСтавокСрезПоследних.ТехнологическаяОперация,
        |    РазмерТарифныхСтавокСрезПоследних.Подразделение,
        |    РазмерТарифныхСтавокСрезПоследних.Должность,
        |    РазмерТарифныхСтавокСрезПоследних.ТарифныйРазряд,
        |    РазмерТарифныхСтавокСрезПоследних.Действующая,
        |    РазмерТарифныхСтавокСрезПоследних.Размер,
        |    РазмерТарифныхСтавокСрезПоследних.Валюта
        |ИЗ
        |    РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(, ) КАК РазмерТарифныхСтавокСрезПоследних
        |ГДЕ
        |    РазмерТарифныхСтавокСрезПоследних.Период > &ДатаНачала
        |    И РазмерТарифныхСтавокСрезПоследних.Период < &ДатаКонца";

    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);


    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить("Период = " + ВыборкаДетальныеЗаписи.Период);
        Если ВыборкаДетальныеЗаписи.Период = ТекущаяДата() Тогда
            Сообщить("Период = ", + ВыборкаДетальныеЗаписи.Период);
            Сообщить("Текущая дата = ", конецдня(текущаядата()));
        КонецЕсли;
    КонецЦикла;


Вот так уже ничего не выдает. (15) да - название регистра заменила, не совсем везде
17 1Сергей
 
14.08.15
07:04
(16) срез последних делается на одну точку времени, а не на период
18 Ly_Alena
 
14.08.15
07:06
(17) логично тогда что на текущую запись уж точно должен сработать, если последняя запись с текущей датой?
19 Ly_Alena
 
14.08.15
07:08
(17) да и не на срез последних тоже пробовала
20 Feunoir
 
14.08.15
07:10
(16) Скажи, пожалуйста, а что выдаст сравнение '01.01.2015 00:00:00' > '01.01.2015 00:00:00' ?
21 Ly_Alena
 
14.08.15
07:12
(20) ВРОТМНЕНОГИ!
22 1Сергей
 
14.08.15
07:13
23 Feunoir
 
14.08.15
07:13
(21) Уже хорошо :) Только правильный ответ всё-равно в (15), как мне кажется.
24 Ly_Alena
 
14.08.15
07:20
(23) как я понимаю текущаядата() берет и время текущее и если будет проверять Период = '01.01.2015 00:00:00' и текущаядата() = 01.01.2015 20.00.00' тогда что?
25 Ly_Alena
 
14.08.15
07:21
(22) омномномном
26 1Сергей
 
14.08.15
07:21
(24) используй НачалоДня()
27 Ly_Alena
 
14.08.15
07:30
(26) Спасибо всем большое! Столько времени та это потратила сама - даже стыдно. Нужно было сразу сюда идти! Всем спасибо! Все получилось.
28 1Сергей
 
14.08.15
07:33
Ура! :)
29 osa1C
 
14.08.15
08:35
Периодичность Регистра День, если правильно понял ТС. Использовать функции НачалоДня() КонецДня()... смотря из того что хотим получить
30 osa1C
 
14.08.15
08:37
упсссссс не дочитал до конца (26)