Имя: Пароль:
1C
1С v8
КАК перезаписать часть регистра сведений
0 ЭЦ
 
20.01.12
13:57
ГОСПОДА !
имеется РегистрСведений
Измерения
- Дата
- Контрагент
Ресурс
- Количество отгрузок

Требуется перезаписать часть записей
удовлетворяющих условию :
Контрагент = ЗаданныйКонтрагент
И Дата >= НачДата
И Дата <= КонДата
-----------------------------------
Прошу подсказать как это лучше реализовать с учетом того, что
в регистре хранятся записи по 12000 контрагентов на каждый день с 2001 г
1 Господин ПЖ
 
20.01.12
13:59
покурить update в BOL...
2 Maxus43
 
20.01.12
14:07
Контрагент = ЗаданныйКонтрагент
И Дата >= НачДата
И Дата <= КонДата

ну дак запрос вернёт тебе записи нужные. дальше создаёш набор записей регистра с нужными отборами и перезаписываеш. Не вижу где будут тормоза, даже если столько много записей. Регистр какой? как понимаю непериодический независимый?
3 Maxus43
 
20.01.12
14:09
если даже весь период взять по одному контру - это 365*10 лет, 3,5 тыщи записей переписать даже для 1с это мелочи
4 1с-кин
 
20.01.12
14:11
(3) он говорит - 12000/день
т.е. 12000*365*10
5 ЭЦ
 
20.01.12
14:11
Проблема в том что Отбор для НаборЗаписейРегистра можно устанавливать только на СТРОГОЕ РАВЕНСТВО
Соответственно НаборЗаписейРегистра использовать не получится
Возможно только МенеджерЗаписи отдельно для каждой записи - а это долго.
6 1с-кин
 
20.01.12
14:12
+ это 43 млн 800 тыс записей
думаю, что даже для диаграммы, где бы отображалась такая производительность 1С, это будет многовато :)
7 Рэйв
 
20.01.12
14:13
Набор=РегистрСведений.Твой.СоздатьНаборЗаписей();
Набор.Отбор.Контрагент,Установить(Конт);
Набор.Прочитать();
Для Каждого Зап Из Набор Цикл
  Если Зап.Дата >= НачДата И Зап.Дата <= КонДата Тогда
       Зап.Реквизит1=ЧтоТо1;
       Зап.Реквизиит2=ЧтоТо2;
  КонецЕсли;

КонецЦикла;
Набор.Записать(Истина);
8 ЭЦ
 
20.01.12
14:17
(7) В Этом случае  в регистре будут убиты все записи по ЗаданномуКонтрагенту
не входящие в интервал.
А их надо сохранить.
9 Maxus43
 
20.01.12
14:20
(8) с чего вдруг? Прочитать() есть
10 Рэйв
 
20.01.12
14:21
не будут.  Они заменятся такими же.  А измененные заменятся измененными.  Из набора не удаляются записи.Просто нужные изменяються,а не нужные останутся старыми
11 ЭЦ
 
20.01.12
14:28
Согласен в таком случае не будут.
Плохо только то что придется позиционировать каждую запись в исходном наборе данных - т.е. получается практически тоже что и в случае использования МенеджерЗаписи.
Хочется очистить все записи отфильтрованного набора и записать туда новый.
12 Maxus43
 
20.01.12
14:36
(11) далеко не то же что и менеджер, тут читаеш и записываеш 1 раз а не 100500 раз, это главное
13 ЭЦ
 
20.01.12
14:45
Ну тогда спасибо.
так и будем действовать.