|   |   | 
| 
 | КАК перезаписать часть регистра сведений | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Ну тогда спасибо.
  так и будем действовать. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |