Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как вам такой код работы с РС?

Как вам такой код работы с РС?
Я
   Обработка
 
17.09.21 - 08:28
Вот таких записей у меня много оказалось.
Постарался кто-то из предыдущих...

НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(ДокЗаказаПокупателя);
НаборЗаписей.Отбор.Свойство.Установить(СтатусCOF000047);
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
    
Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
Запись.Объект = ДокЗаказаПокупателя;
Запись.Свойство = СтатусCOF000047;
Запись.Значение = Справочники.А_СтатусыЗаказов.НайтиПоНаименованию("Возврат");
Запись.Записать();
   Обработка
 
1 - 17.09.21 - 08:28
Нафига набором отбирать и чистить запись потом менеджером писать еще?
   Галахад
 
2 - 17.09.21 - 08:33
(0) Ну что сказать. Старательный программист...
   ДенисЧ
 
3 - 17.09.21 - 08:42
Зато гарантировано там ничего лишнего не будет...
   Mikeware
 
4 - 17.09.21 - 08:47
(3) для гарантии надо минимум три раза очистить-записать... а потом еще прочитать и проверить...
   ДенисЧ
 
5 - 17.09.21 - 08:51
(4) Ну, я так понимаю, ТС не в ФСБ работает, это там такие способы практикуются... Да ещё с перезаписью 19ю паттернами...
   Обработка
 
6 - 17.09.21 - 08:53
Я начал рефакторинг делать даже статусы были через найти . Я вытащил их в переменные.
И тут я увидел такой расклад )))

СтатусCOF000050 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("COF000050");//Строка 28 - [N] Новый 

    СтатусCOF000047 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("COF000047");//СпрСтатус 29 - Новый

    СтатусCOF000027 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("COF000027");//Строка 30 - N

    
    Если Строка(Статус) = "Новый" Тогда
        
        //28 строка

        НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(ДокЗаказаПокупателя);
        НаборЗаписей.Отбор.Свойство.Установить(СтатусCOF000050);
        НаборЗаписей.Очистить();
        НаборЗаписей.Записать();

        Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        Запись.Объект = ДокЗаказаПокупателя;
        Запись.Свойство = СтатусCOF000050;
        Запись.Значение = "[N] Новый";
        Запись.Записать();
        
        //29 строка

        НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(ДокЗаказаПокупателя);
        НаборЗаписей.Отбор.Свойство.Установить(СтатусCOF000047);
        НаборЗаписей.Очистить();
        НаборЗаписей.Записать();
        
        Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        Запись.Объект = ДокЗаказаПокупателя;
        Запись.Свойство = СтатусCOF000047;
        Запись.Значение = Справочники.А_СтатусыЗаказов.НайтиПоНаименованию("Новый");
        Запись.Записать();
        
        //30 строка

        НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(ДокЗаказаПокупателя);
        НаборЗаписей.Отбор.Свойство.Установить(СтатусCOF000027);
        НаборЗаписей.Очистить();
        НаборЗаписей.Записать();
        
        Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        Запись.Объект = ДокЗаказаПокупателя;
        Запись.Свойство = СтатусCOF000027;
        Запись.Значение = "N";
        Запись.Записать();
        
    ИначеЕсли Строка(Статус) = "В обработке" Тогда
   Ненавижу 1С
 
7 - 17.09.21 - 08:54
Вы лучше скажите зачем платформа заставляет заполнять измерения, участвующие в отборе, если никаким другим образом (кроме как значениями отбора) их заполнить невозможно?
   ДенисЧ
 
8 - 17.09.21 - 08:55
(6) "Я начал рефакторинг"
Надеюсь, у тебя 100% code testing coverage?
   Ненавижу 1С
 
9 - 17.09.21 - 08:55
(6) мотивация по количеству строк кода
   Mikeware
 
10 - 17.09.21 - 08:56
(7) "так заведено в этом зоопарке"©
   Вафель
 
11 - 17.09.21 - 08:57
Очистить не не нужно.
Можно сразу писать
   Mikeware
 
12 - 17.09.21 - 09:00
(11) а зачем двойное отрицание?
   Широкий
 
13 - 17.09.21 - 09:02
(11) ладно что хоть не читает записи
   Обработка
 
14 - 17.09.21 - 09:03
Кодеры нынче не читают мануалы.

https://its.1c.ru/db/metod8dev/content/2486/hdoc

НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Объект.Установить(ПолеВводаНоменклатура); 

Для Каждого СтрокаТаблицы Из ТаблицаСвойств Цикл 
   
   НоваяЗапись = НаборЗаписей.Добавить(); 
   
   НоваяЗапись.Объект = ПолеВводаНоменклатура; 
   НоваяЗапись.Свойство = СтрокаТаблицы.Свойство; 
   НоваяЗапись.Значение = СтрокаТаблицы.ЗначениеСвойства; 
КонецЦикла; 

НаборЗаписей.Записать(); 
В результате выполнения этого кода новые записи будут добавлены в регистр, или, если регистр уже содержит записи с указанным значением измерения "Объект" (по которому установлен отбор в наборе записей), - существующие записи будут заменены новыми.
   Галахад
 
15 - 17.09.21 - 09:04
(14) Покажешь свой код после рефакторинга? :-)
   Обработка
 
16 - 17.09.21 - 09:06
(15) Да тут куда не плюнь везде засада.
Просто руки опускаются.
Коллега говорит - забей. Работает и не трожь, пока нам поддержать работу баз до перехода в КА2. ...
   Галахад
 
17 - 17.09.21 - 09:07
(16) Коллега не прав. Наверное часть функционала придется переносить и в КА2.
   Обработка
 
18 - 17.09.21 - 09:08
Кстати как лучше набором отобрать и записать или просто тупо менеджером записать?
   Обработка
 
19 - 17.09.21 - 09:09
+ 18 В обсуждении пишут что для одной записи не принципиально.
   Megas
 
20 - 17.09.21 - 10:22
(16) Наоборот норм,  берёшь и исправляешь, даже думать не нужно. И сразу виден результат!
Очень приятные задачи, расслабляют!

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.