|   |   | 
| 
 | Регистры сведений - Набор записей - Менеджер записей | ☑ | ||
|---|---|---|---|---|
| 0
    
        Eugeneer 07.09.22✎ 09:40 | 
        Смотрю типовую УТ 11.5 регистр сведений Распределение товаров. Теперь в нем вся фигня - все что было в 11.4 пять регистрами остатков, теперь регистр сведений - и туда пишутся свободные остаткиЮ резервы, все что касается заказов, графиков и прочее...
 И вот смотрю модуль проведения Общий модуль Распределение запасов - тут все движение. И что я вижу - 1С для того чтобы записывать в этот регистр точесные записи использует не менеджер записи, а набор записи. НО!! прикол в том что все идет циклом - т.е построчная выборка. И в ней в набор запихивается ОДНА СТРОКА, записывается. Далее НАБОР ОЧИЩАЕТСЯ. и по новой. Еще и каждая строка стоит код с ТРАНЗАКЦИЕЙ. т.е. на одну строку записи... Кто то может разьяснить глубокий смысл всего этого? Почему не использовали менеджер записи для построчного изменения. А использовали набор - с построчным изменением и всем что я написал. | |||
| 1
    
        mikecool 07.09.22✎ 09:48 | 
        отборы, Женя, отборы     | |||
| 2
    
        mikecool 07.09.22✎ 09:49 | 
        менеджер хаписи - это частный случай набора записей     | |||
| 3
    
        H A D G E H O G s 07.09.22✎ 09:52 | 
        Чтобы не словить ожидание на блокировке.     | |||
| 4
    
        Eugeneer 07.09.22✎ 09:53 | 
        Ну например я использую
 ТекЗапись = РегистрыСведений.РаспределениеЗапасов.СоздатьМенеджерЗаписи(); ТекЗапись.Состояние = Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе; ТекЗапись.Номенклатура = ВыборкаСтрока.Номенклатура; ТекЗапись.Характеристика = ВыборкаСтрока.Характеристика; ТекЗапись.Склад = ВиртуальныйСклад; ТекЗапись.Прочитать(); ТекЗапись.Состояние = Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе; ТекЗапись.ТипЗаписиРаспределенияЗапасов = 1; ТекЗапись.Номенклатура = ВыборкаСтрока.Номенклатура; ТекЗапись.Характеристика = ВыборкаСтрока.Характеристика; ТекЗапись.Склад = ВиртуальныйСклад; ТекЗапись.ВНаличии = ВыборкаСтрока.МегапрайсКоличество; ТекЗапись.Свободно = ВыборкаСтрока.МегапрайсКоличество; ТекЗапись.Запас = ВыборкаСтрока.МегапрайсКоличество; ТекЗапись.Записать(); | |||
| 5
    
        Eugeneer 07.09.22✎ 09:53 | 
        А вот 1С
 Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей(); Набор.Отбор.ТипЗаписиРаспределенияЗапасов.Установить(1); Набор.Отбор.Состояние.Установить(Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе); Пока Выборка.Следующий() Цикл Набор.Отбор.Номенклатура.Установить(Выборка.Номенклатура); Набор.Отбор.Характеристика.Установить(Выборка.Характеристика); Набор.Отбор.Склад.Установить(Выборка.Склад); Набор.Отбор.Назначение.Установить(Выборка.Назначение); Если Выборка.Запас <> 0 Или Выборка.Резерв <> 0 Или Выборка.Свободно <> 0 Или Выборка.ВНаличии <> 0 Тогда НоваяСтрока = Набор.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); КонецЕсли; Набор.Записать(); Набор.Очистить(); КонецЦикла; | |||
| 6
    
        Eugeneer 07.09.22✎ 09:54 | 
        (1) так в менеджере мы тоже до конкретной записи доковыриваемся через Прочитать (если такая уже есть)     | |||
| 7
    
        Eugeneer 07.09.22✎ 09:55 | 
        (2) блин да я вижу что там отборы. на набор. чтобы получить 1 запись. Но запись идет постоянным созданием набора для 1 строки и запись 1 строки. Тот же менеджер записи.
 Неужели это быстрее и так нужно. | |||
| 8
    
        НафНаф 07.09.22✎ 10:01 | 
        (5) заметь, в отличие от тебя, они даже не читают текущие записи     | |||
| 9
    
        Eugeneer 07.09.22✎ 10:01 | 
        (80) т.е. хочешь сказать это в разы быстрее.     | |||
| 10
    
        mikecool 07.09.22✎ 10:02 | 
        (7) надо читать две толстые книжки проф разработки ))     | |||
| 11
    
        НафНаф 07.09.22✎ 10:02 | 
        (5) если условие не выполнится, то запишется пустой набор, с менеджером надо было бы отдельную ветку про Удалить     | |||
| 12
    
        НафНаф 07.09.22✎ 10:02 | 
        (9) хочу сказать, что это и быстрее и универсальнее     | |||
| 13
    
        НафНаф 07.09.22✎ 10:03 | 
        Вы с гением прямо один краше другого     | |||
| 14
    
        rozer76 07.09.22✎ 10:09 | 
        (6) выше уже сказали что Прочитать вызывает блокировку и чтобы небыло дедлока еще перед чтением упр. блокировку надо ставить     | |||
| 15
    
        Eugeneer 07.09.22✎ 10:26 | 
        (14) понял. буду знать. Спасибо!     | |||
| 16
    
        Eugeneer 07.09.22✎ 10:28 | 
        сделал у себя все через набор     | |||
| 17
    
        НафНаф 07.09.22✎ 10:30 | 
        (16) очень хотелось бы посмотреть     | |||
| 18
    
        Eugeneer 07.09.22✎ 10:35 | 
        а чо там смотреть. почти тоже самое что (5)     | |||
| 19
    
        Eugeneer 07.09.22✎ 10:35 | 
        тестить у меня особо не на чем я один в базе. и работает все мгновенное. у клиентов проверим. у которых тупило     | |||
| 20
    
        СеменовСемен 07.09.22✎ 11:09 | 
        можно просто убрать из (4) Прочитать() и будет тоже самое     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |