Имя: Пароль:
1C
1С v8
Смена периода в регистрах сведений.
,
0 KuJIT
 
01.08.14
12:10
Есть регистр сведений. Есть ДАта1. Нужно вытащить самые последние регистры, если их период (дата2) больше, чем ДАта1, тогда дата2 нужно заменить на ДАта1. Как это сделать? ПРостым запросом проблема не решается?
1 Лефмихалыч
 
01.08.14
12:13
"вытащить самые последние регистры" - это что? регистрАТОРЫ?
2 Godofsin
 
01.08.14
12:14
решается, чо нет то? Получай записи, потом меняй
3 KuJIT
 
01.08.14
12:21
(1) нене, нафига мне регистраторы менять? Мне нужно запись в регистре просто поменять
4 KuJIT
 
01.08.14
12:21
(2) А как к ним обращаться? Как запросом их вытащить? Там же нет ссылок, как в доках или справочниках
5 Один С
 
01.08.14
12:24
не пойму, чо происходит? порог вхождения снизился штоле?
6 KuJIT
 
01.08.14
12:24
(3) К тому же регистратор у этого регистра не используется
7 KuJIT
 
01.08.14
12:25
(5) Ты о чем?
8 m-serg74
 
01.08.14
12:27
(7) к "дубовости вопрошающего"
9 KuJIT
 
01.08.14
12:30
Ок. Может быть я дубовый. Только эта тема не с обсуждениями дубовости автора. Лучше бы помог советом, пусть и очевидным для тебя. Или тебе формулировка вопроса не понятна? (8)
10 Godofsin
 
01.08.14
12:32
Выборка = РегистрыСведений.КурсыВалют.Выбрать('20130101',
        '20131231');//, Отбор);
    Пока Выборка.Следующий() Цикл

        // изменение существующей
        МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Курс = 25;
        // МенеджерЗаписи.Записать();

        // удаление существующей
        //Выборка.ПолучитьМенеджерЗаписи().Удалить();

    КонецЦикла;
11 m-serg74
 
01.08.14
12:32
(9) в (2) все популярно написали
12 KuJIT
 
01.08.14
12:41
(10) А как именно все последние вытащить можно?
13 KuJIT
 
01.08.14
17:04
Пришел к такому варианту:

    ГосНомер = Перечисления.ДополнительнаяИнформацияАвтомобилей.ГосНомер;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    АвтомобилиСрезПервых.Период,
                   |    АвтомобилиСрезПервых.Автомобиль,
                   |    АвтомобилиСрезПервых.Значение
                   |ИЗ
                   |    РегистрСведений.Автомобили.СрезПервых КАК АвтомобилиСрезПервых
                   |ГДЕ
                   |    АвтомобилиСрезПервых.ВидЗначения = &ВидЗначения"
                   ;
    Запрос.УстановитьПараметр("ВидЗначения", ГосНомер);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Если Выборка.Период > ЭтотОбъект.дата Тогда
             НаборЗаписей = РегистрыСведений.Автомобили.СоздатьНаборЗаписей();
             НаборЗаписей.Отбор.Автомобиль.Установить(Выборка.Автомобиль);
             НаборЗаписей.Отбор.ВидЗначения.Установить(ГосНомер);
             НаборЗаписей.Прочитать();
             Для Каждого запись из НаборЗаписей Цикл
                 Если запись.Период = Выборка.Период Тогда
                     запись.Период = ЭтотОбъект.дата;
                 КонецЕсли;
                
             КонецЦикла;
             НаборЗаписей.Записать();
            
         КонецЕсли;
        
        
    КонецЦикла;
14 Лефмихалыч
 
01.08.14
17:08
не, ну логично, чо. Последние же нужны, по этому срез первых...
15 KuJIT
 
01.08.14
17:17
Не придирайся к мелочам. -_-
Очевидно же, что задача незначительно поменялась. Сути то не меняет. (14)
16 hhhh
 
01.08.14
17:20
(15) вообще срез убери
17 KuJIT
 
01.08.14
17:26
Зачем? Мне нужно первые же найти. (16)
18 hhhh
 
01.08.14
17:32
(17) ну ты поменяешь первые, которые больше дата1, а окажется и вторые тоже больше дата1. Они станут первыми. То есть не решишь вопрос. В базе останутся записи больше дата1.
19 KuJIT
 
01.08.14
17:41
Мне не нужно, чтобы их не было. Задача звучит теперь так: Если нет записей в регистре на ДАта1 (но есть позже), то самую древнюю запись устанавливаем на ДАта1.
Как-то так. (18)
20 KuJIT
 
01.08.14
17:42
А вообще, это не важно все. Важно то, что в названии темы.
21 hhhh
 
01.08.14
17:50
ну и что? ваш вариант не работает?
22 KuJIT
 
01.08.14
17:53
Да, вроде, работает. (21)