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