|
Менеджер Записи и Набор Записей РС | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
eddy_n
26.04.23
✎
09:22
|
Есть такое мнение: Набор отрабатывает быстрее, набором чистится легче. Плюс менеджер всегда переводится в набор записей. Есть у кого комментарии на этот счёт. Тема избитая, но всё же...
|
||||||||||||||||
1
mikecool
26.04.23
✎
09:24
|
зачем ворошить снова? каждый имеет право на жизнь
|
||||||||||||||||
2
НафНаф
26.04.23
✎
09:26
|
(0) набор универсальнее однозначно. Менеджер действительно это надстройка над набором из одной строки. Вызываются события все равно набора при работе с менеджером.
Еще можно получить ошибку - например в событии перед записью вы удаляете строки, которые не хотите записывать. Если при этом сама использовался менеджер и удаляется единственная строка - будет ошибка рантайм. |
||||||||||||||||
3
Волшебник
26.04.23
✎
09:42
|
Никогда не пользуйтесь наборами, можно похерить весь регистр.
Допустим, вы установили отбор, а он не установился, потому что типы не совпали. Минус регистр |
||||||||||||||||
4
vicof
26.04.23
✎
09:45
|
(3) Никогда не пользуйтесь газовыми плитами, допустим вы не закрыли газ и все взорвалось к чертям.
|
||||||||||||||||
5
lEvGl
26.04.23
✎
09:46
|
всегда использую набор, кроме когда надо просто запись добавить, тогда менеджер, потому что писать меньше
(3) каждый должен пройти этот путь |
||||||||||||||||
6
lEvGl
26.04.23
✎
09:49
|
(3) думаю у каждого было, у умных один раз, не очень умным с первого раза могло не дойти
помню как один таким образом потер регистр, экстремальное программирование на полчаса для переноса данных из копии, никто не заметил |
||||||||||||||||
7
Волшебник
26.04.23
✎
09:51
|
(4) При поиске недвижимости я исключаю дома с газом из рассмотрения.
|
||||||||||||||||
8
CepeLLlka
26.04.23
✎
09:52
|
(7)А в лес ходите, или волка боитесь? :)
|
||||||||||||||||
9
lEvGl
26.04.23
✎
09:53
|
(8) та он глумится
|
||||||||||||||||
10
butterbean
26.04.23
✎
09:57
|
(0) 1. Набор быстрее и универсальнее
2. Менеджер - это какая-то нашлепка видимо для интерактивной работы с одной(!!) записью 3. Нужна голосовалка |
||||||||||||||||
11
Гипервизор
26.04.23
✎
09:58
|
(0) Основное назначение менеджера записи - обеспечить без дополнительных сложностей редактирование отдельных записей в интерактивных режимах.
|
||||||||||||||||
12
magicSan
26.04.23
✎
10:04
|
Менеджер работает с записью, которую обычно получают через запрос.
|
||||||||||||||||
13
eddy_n
26.04.23
✎
10:10
|
(12) Не обязательно.
|
||||||||||||||||
14
eddy_n
26.04.23
✎
10:14
|
(11) Не обязательно
|
||||||||||||||||
15
eddy_n
26.04.23
✎
10:15
|
Просто с менеджером проще. Не надо в коде городить огород в отдельных случаях.
|
||||||||||||||||
16
eddy_n
26.04.23
✎
10:27
|
(6) У меня тоже было. Но успели заметить.
|
||||||||||||||||
17
Гипервизор
26.04.23
✎
10:32
|
(14) Что именно не обязательно? И это было не моё личное мнение. Видимо вы лучше разработчиков знаете основное назначение менеджера записи.
|
||||||||||||||||
18
eddy_n
26.04.23
✎
10:37
|
(17) Интерактивный режим - на мой взгляд приоритета не имеет.
|
||||||||||||||||
19
НафНаф
26.04.23
✎
10:47
|
(11) в общем согласен, для редактирования единственной записи - это самое оно
|
||||||||||||||||
20
Волшебник
26.04.23
✎
10:49
|
На прошлой работе программист записал данные набором и снёс регистр прав. Пользователи как начали звонить, а я нихера не понимаю, вроде всё работало, только роль добавили. Смотрю, роль добавлена. Только остальные похерились!
|
||||||||||||||||
21
Волшебник
26.04.23
✎
10:50
|
(20) Да, отбор был. Но по одному измерению типы не совпали. Платформа промолчала и не установила отбор.
Если пользуетесь набором, то надо установить отбор и потом ещё проверить, что он установлен! |
||||||||||||||||
22
Прапорщик
26.04.23
✎
10:51
|
https://its.1c.ru/db/pubapplied#content:34:hdoc
Обратите внимание: ... непосредственные операции обмена информацией с базой данных менеджер записи реализует посредством все тех же объектов манипулирования данными – наборов записей регистра. Их два. Один набор записей – пустой. Он используется для удаления записи со старыми ключевыми значениями. А второй набор записей содержит одну запись – ту, которую нужно записать в регистр. При необходимости у разработчика есть возможность «вмешиваться» в процесс модификации данных регистра посредством использования обработчиков событий. В случае записи новой записи (то есть записи с такими ключевыми полями еще не было) обработчики событий набора записей ПередЗаписью и ПриЗаписи отработают только один раз - для набора записей с новой записью (с количеством записей = 1). В случае модификации уже существующей записи регистра посредством менеджера записи могут быть изменены значения ключевых полей. А значит, запись набора с новыми ключевыми полями сама по себе не заместит «старый» набор. Поэтому здесь система работает в два этапа: сначала удаляет «старый» набор записей (состоящий из одной «старой» записи), потом уже записывает «новый» (состоящий из «новой» записи).... ... удаление «старого» набора записей производится посредством записи пустого набора записей. При этом получается, что обработчики событий (ПередЗаписью и ПриЗаписи) модуля набора записей будут вызываться дважды. |
||||||||||||||||
23
НафНаф
26.04.23
✎
10:52
|
(20) (21) 1С она такая, доступно и всерьёз!
|
||||||||||||||||
24
Волшебник
26.04.23
✎
10:52
|
Запомните правило: сначала всегда и везде используем менеджер.
И только если Вы абсолютно уверены, то можно рискнуть с набором. Лучше менеджер, чем набор |
||||||||||||||||
25
НафНаф
26.04.23
✎
10:53
|
(21) вообще странно, что именно не установила, по идеи должна привести к значение что-то типа Неопределено или пустой ссылки. Что-то не договариваете
|
||||||||||||||||
26
Волшебник
26.04.23
✎
10:54
|
(25) Найдите любой независимый регистр сведений и поэкспериментируйте на нём. Только убедитесь, что вы в рабочей базе, которая в продакшене.
|
||||||||||||||||
27
SleepyHead
26.04.23
✎
11:22
|
(22) Хм.. у меня есть регистр, в котором измерение - строка из 10 знаков. Ресурсов, реквизитов - нет.
Правильно ли понимаю, что записывать его набором (пусть даже состоящим из одной записи) будет быстрее, чем менеджером записи? |
||||||||||||||||
28
BeerHelpsMeWin
26.04.23
✎
11:30
|
НаборЗаписей - записывать весь регистр целиком.
МенеджерЗаписи - записывать изменения. |
||||||||||||||||
29
НафНаф
26.04.23
✎
11:33
|
(26) поэкспериментировал
НЗ = РегистрыСведений.РезервыТоваровПоДням.СоздатьНаборЗаписей(); НЗ.Отбор.Номенклатура.Установить(42); НЗ.Записать(); Отбор устанавливается как пустая ссылка, а так как таких записей нет, то ничего не теряем |
||||||||||||||||
30
Прапорщик
26.04.23
✎
11:56
|
(27) Вряд ли тут имеет смысл говорить о скорости записи.
Разница если и есть, то она минимальна. И она может стать, если вы в цикле записываете менеджером тысячи записей. А часто ли вы токе практикуете? Ну может загрузка курсов валют за последние 10 лет.... Но не ежедневно же вы по несколько раз на дню вы это делаете?... Опять таки дважды будет выполнена запись наборов только в том случае, когда речь идёт об изменении ключевых полей. Когда надо удалить старую запись и добавить новую.
Если речь о добавлении новой записи, то никакой двойной записи набора не будет. |
||||||||||||||||
31
Волшебник
26.04.23
✎
12:40
|
(29) Теперь найдите регистр с несколькими измерениями.
Кажется, у нас был РолиПользователей: измерения Пользователь, Роль в ролях возможно был составной тип и вот что-то с ролью не срослось |
||||||||||||||||
32
НафНаф
26.04.23
✎
13:01
|
(31) думаю там было всё несколько сложнее
|
||||||||||||||||
33
lEvGl
26.04.23
✎
14:02
|
Дает возможность получить бесценнейший опыт, действует как антищелкательный лицом препарат, концентрирует внимание, развивает память и зрение
Лучше набор, чем менеджер |
||||||||||||||||
34
lEvGl
26.04.23
✎
14:05
|
менеджером тоже пользуюсь, хоть и меньше
Набор и менеджер |
||||||||||||||||
35
butterbean
26.04.23
✎
15:00
|
менеджер для слабаков
Лучше набор, чем менеджер |
||||||||||||||||
36
Hmster
26.04.23
✎
16:31
|
Всё зависит от задачи.
Например, решили сделать РС логи. Если надо добавить 1 запись, то быстрее менеджер, если 500, то быстрее набор. Опять же с набором блокировок больше, вдруг кто-то еще в него что-то пишет. Набор и менеджер |
||||||||||||||||
37
Timon1405
26.04.23
✎
16:53
|
У менеджера нет дополнительных свойств, например, НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения") и ОбменаДанными.Загрузка тоже нет
чтобы ничего не сломалось очень нравится как сделано в постобработке запроса ИР(надеюсь, его можно цитировать): выбрать * из РС ГДЕ отборы и в обработке регистра // В результате запроса должны присутствовать все колонки для отбора НаборДвижений = РегистрыСведений.Регистр1.СоздатьНаборЗаписей(); Для Каждого ЭлементОтбора Из НаборДвижений.Отбор Цикл ЭлементОтбора.Использование = Истина; ЭлементОтбора.Значение = СтрокаРезультата[ЭлементОтбора.Имя]; КонецЦикла; НаборДвижений.Прочитать(); // В таком наборе записей будет 0 или 1 строка Для Каждого ДвижениеРегистра Из НаборДвижений Цикл // Обработка строки ДвижениеРегистра.Реквизит1 = ; КонецЦикла; //НаборДвижений.ОбменДанными.Загрузка = Истина; НаборДвижений.Записать(); |
||||||||||||||||
38
Волшебник
26.04.23
✎
16:50
|
(37) Не хватает проверки установленного отбора. Если он не установился, то Прочитать() может засосать весь регистр и сервер просто обрушится.
|
||||||||||||||||
39
ptiz
26.04.23
✎
17:09
|
Только набор! Менеджер - всего лишь костыль над набором.
Лучше набор, чем менеджер |
||||||||||||||||
40
Волшебник
26.04.23
✎
17:11
|
(39) Только набор, только хардкор!
|
||||||||||||||||
41
Simod
26.04.23
✎
18:13
|
Детально разбирается работа Регистра сведений, в том числе и отличие Набора записей от Менеджера записи - https://infostart.ru/1c/articles/527518/
|
||||||||||||||||
42
Волшебник
26.04.23
✎
18:16
|
(41)👍 Превосходно!
|
||||||||||||||||
43
RomanYS
26.04.23
✎
18:24
|
(38) Не установиться он может только, если Вы его забыли установить. В случае неправильной установки (например (3)) вы получите 0 записей в регистре и удаляться буде нечему
|
||||||||||||||||
44
Волшебник
26.04.23
✎
18:36
|
(43) После тех случаев я всё время вздрагиваю, когда вижу НаборЗаписей в программном коде. Иногда просыпаюсь в холодном поту. Да, мне такое снится только в кошмарах.
Я на этих наборах очень много багов словил. Уничтожение регистров... Торможения на Прочитать()... Был сорван запуск в промышленную эксплуатацию одной системы в крупном франче... Уж поверьте моему опыту. Или Вы начинаете осторожно обращаться с наборами, со всем уважением к их отбору, или Вы рушите свою карму и набиваете шишки. |
||||||||||||||||
45
RomanYS
26.04.23
✎
18:40
|
>>Или Вы начинаете осторожно обращаться с наборами
Тут безусловно не поспоришь, но это не значит, что нужно дуть на воду. С другой стороны сам любые изменения в проде данных бэкаплю в XML, если нет под рукой копии базы. |
||||||||||||||||
46
Волшебник
26.04.23
✎
18:41
|
(45) Да, я только про это. Многие устанавливают отбор безалаберно. Потом у измерения сменится тип, запускают старую обработку и минус регистр.
|
||||||||||||||||
47
Волшебник
26.04.23
✎
18:43
|
Теперь у программистов 1С появилась костыльная привычка: НаборЗаписей.Прочитать() перед Записать(). По крайней мере всё зависнет на Прочитать() и обратно будет записан весь массив + новые записи.
Привычка похвальная, но костыльная. |
||||||||||||||||
48
RomanYS
26.04.23
✎
18:46
|
(46) Да не будет "минус регистр", будут затерты только записи с пустым измерением. Их наличие и ценность уже вызывает вопросы к архитектуре.
(47) Вот кстати никогда не понимал, зачем некоторые делают Прочитать-Очистить-Записать |
||||||||||||||||
49
Волшебник
26.04.23
✎
18:49
|
(48) Да, наверное были проблемы с архитектурой в моих случаях. Главное, что я предупредил.
|
||||||||||||||||
50
ДедМорроз
27.04.23
✎
18:44
|
По поводу записи.
Можно в отладочном режиме вместо записать сделать прочитать и узнать,что мы хотим заместить. Очень помогает и не только с регистрами. Но тут чаще другие грабли - галочку реальной записи не поставить,и вся обработка отработает в холостую. |
||||||||||||||||
51
lEvGl
27.04.23
✎
19:04
|
спор ни о чем, кмк
добавлять/удалять/менять записи по одной через менеджер это сверх сил человека. набор прочитал в одно действие, что надо сделал, жахнул обратно. могут быть проблемы при больших объемах, но где их нет, проблем этих |
||||||||||||||||
52
SleepyHead
28.04.23
✎
10:52
|
(30) " И она может стать, если вы в цикле записываете менеджером тысячи записей. А часто ли вы токе практикуете? "
Раз в квартал примерно 150 миллионов. Ну что поделать, я 1с-крестьянин и делаю, как умею. За 18 часов пишутся все записи. Но хотелось бы быстрее. |
||||||||||||||||
53
SleepyHead
28.04.23
✎
10:53
|
(30) "Опять таки дважды будет выполнена запись наборов только в том случае, когда речь идёт об изменении ключевых полей. Когда надо удалить старую запись и добавить новую."
Я всегда пишу в чистый регистр, так что идею вашу понял, спасибо, быстрее вряд ли будет. |
||||||||||||||||
54
НафНаф
28.04.23
✎
14:12
|
(51) фишка в том, что набор записей может только удалить записи одной командой DELETE, а вот вставлять INSERT оно все равно будет построчно, хот уже на внутреннем уровне платформы
оператор UPDATE для регистров вообще не используется |
||||||||||||||||
55
lEvGl
28.04.23
✎
14:29
|
(54) а точно так, трассировали?
в любом случае в 1С крутить циклы не нужно с установкой отбора, чтением и записью на каждой итерации, это ж муть какая была бы, если через менеджер |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |