Имя: Пароль:
1C
 
Как лучше сделать. Есть данные, хранить в регистре, перезапись?
,
0 Sasha_Rapira
 
10.12.14
06:08
Всем привет. 1С 8. Конфа самопис.


Получаю данные ежедневные, в таком формате
1) День 2) Количество

Вся суть в том что эти данные нужно хранить в регистре, какой регистр выбрать?

Эти данные нужны для отчета, что бы выводить ежедневную динамику.

Так вот! Эти данные могут быть полученные опять и по второму кругу занесены в регистр.

Как сделать так что бы данные в регистре или перезаписывались, или он не менял те данные (смотря день) которые уже есть?

Как по мне лучше регистр сведений.
1 Рэйв
 
10.12.14
06:11
регистр сведений периодический, независимый.
Период= день
2 Sasha_Rapira
 
10.12.14
06:13
(1) это понятно, но не выходит.

            НаборЗаписей = РегистрыСведений.ОбщиеПросмотры.СоздатьНаборЗаписей();

            Для Каждого Строка Из Ответ["rows"] Цикл
                Запись = НаборЗаписей.Добавить();
                Запись.Период = Дата(СтрЗаменить(Строка[0], "-", ""));
                Запись.Просмотры = Число(Строка[1]);
                
                а=1;
            КонецЦикла;
            
            НаборЗаписей.Записать();


Он очищает старые записи регистра. А если делать отбор то непонечему(пзцд слово)
3 Sasha_Rapira
 
10.12.14
06:15
(2) то-есть так он очистит весь регистр, за всё время
4 Галахад
 
гуру
10.12.14
06:18
Прикольно.
5 Лодырь
 
10.12.14
06:18
А зачем регистр периодический? Нафига? Имхо измерение дата - куда логичнее.
6 Sasha_Rapira
 
10.12.14
06:19
(5) мне нужен лучший вариант. А что с измерением? Если такое измерение уже есть и я буду опять записывать он будет выдавать ошибки )) глушить исключением?
7 mergan
 
10.12.14
06:23
получить количество в день ... добавить/отнять нужное количество ... записать
8 Sasha_Rapira
 
10.12.14
06:40
Так как сделать что бы он не удалял записи? То-есть есть записи за 100 дней, я получаю данные с 90-95 день и записываю, в итоге он всё удаляет и оставляет только 90-95
9 mergan
 
10.12.14
06:44
тебе рассказать про отбор, прочитать и записать?
10 Sasha_Rapira
 
10.12.14
07:11
(9) на что отбор? на дату?
11 Лодырь
 
10.12.14
10:08
(10) Если измерение, то на значения измерений )
12 Sasha_Rapira
 
11.12.14
02:22
Реализовал так.

            НаборЗаписей = РегистрыСведений.ОбщиеПросмотры.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.День.Использование = Истина;


            Для Каждого Строка Из Ответ["rows"] Цикл
                
                ФорматДата = Дата(СтрЗаменить(Строка[0], "-", ""));
                НаборЗаписей.Отбор.День.Значение = ФорматДата;
                НаборЗаписей.Прочитать();
                
                Если НаборЗаписей.Количество() > 0 Тогда
                    
                    НаборЗаписей[0].Просмотры = Число(Строка[1]);
                    
                Иначе
                    
                    Запись = НаборЗаписей.Добавить();
                    Запись.День = ФорматДата;
                    Запись.Период = ФорматДата;
                    Запись.Просмотры = Число(Строка[1]);
                    
                КонецЕсли;
                
                НаборЗаписей.Записать();
                                
            КонецЦикла;



В итоге он получает не все записи, а только дни которые нам нужны, далее проверяет если день уже есть в базе, то просто обновляет данные этого дня. Работает быстро. Проблема  решена =)
13 Злопчинский
 
11.12.14
03:34
Я не спец совсем в восьмерке но беглый осмотр кода моему чувству прерасного говорит что я вижу некузявое чтото
14 Sasha_Rapira
 
11.12.14
04:01
(13) просто я профи, смирись брат
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан