Имя: Пароль:
1C
1С v8
Менеджер Записи и Набор Записей РС
0 eddy_n
 
26.04.23
09:22
1. Лучше набор, чем менеджер 50% (3)
2. Набор и менеджер 33% (2)
3. Лучше менеджер, чем набор 17% (1)
4. Не различаю 0% (0)
5. Другое 0% (0)
Всего мнений: 6

Есть такое мнение: Набор отрабатывает быстрее, набором чистится легче. Плюс менеджер всегда переводится в набор записей. Есть у кого комментарии на этот счёт. Тема избитая, но всё же...
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С крутить циклы не нужно с установкой отбора, чтением и записью на каждой итерации, это ж муть какая была бы, если через менеджер
Независимо от того, куда вы едете — это в гору и против ветра!