|
Как вам такой код работы с РС? | ☑ | ||
---|---|---|---|---|
0
Обработка
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
|
Зато гарантировано там ничего лишнего не будет...
|
|||
4
Mikeware
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"; Запись.Записать(); ИначеЕсли Строка(Статус) = "В обработке" Тогда |
|||
7
Ненавижу 1С
гуру
17.09.21
✎
08:54
|
Вы лучше скажите зачем платформа заставляет заполнять измерения, участвующие в отборе, если никаким другим образом (кроме как значениями отбора) их заполнить невозможно?
|
|||
8
ДенисЧ
17.09.21
✎
08:55
|
(6) "Я начал рефакторинг"
Надеюсь, у тебя 100% code testing coverage? |
|||
9
Ненавижу 1С
гуру
17.09.21
✎
08:55
|
(6) мотивация по количеству строк кода
|
|||
10
Mikeware
17.09.21
✎
08:56
|
(7) "так заведено в этом зоопарке"©
|
|||
11
Вафель
17.09.21
✎
08:57
|
Очистить не не нужно.
Можно сразу писать |
|||
12
Mikeware
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 В обсуждении пишут что для одной записи не принципиально.
|
|||
20
Megas
17.09.21
✎
10:22
|
(16) Наоборот норм, берёшь и исправляешь, даже думать не нужно. И сразу виден результат!
Очень приятные задачи, расслабляют! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |