|
Универсальный подбор-обработка. Произвольный алгоритм | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
12.11.12
✎
11:50
|
Привет всем. Опять пытаюсь для каждого элемента справочника создать элемент в регистре сведений. И создается запись лишь для одного из элементов.
Конфигурация - УТ 11. Справочник - Партнеры. Регистр сведений - ПартнерыСегмента. Запросом в УниверсальныеПодборИОбработкаОбъектов.epf отбираю партнеров. Пишу произвольный алгоритм: ПС = РегистрыСведений.ПартнерыСегмента.СоздатьНаборЗаписей(); НовЗап = ПС.Добавить(); НовЗап.Партнер = Объект.Ссылка; НовЗап.Сегмент = Справочники.СегментыПартнеров.НайтиПоНаименованию("19 л."); НовЗап.Активность = 1; ПС.Записать(); Выполняю. В результате из регистра сведений удаляются все старые записи. И создается одна новая - для последнего из выбранных мною элементов. |
|||
1
mikecool
12.11.12
✎
11:50
|
отбора нет
|
|||
2
acsent
12.11.12
✎
11:50
|
зачем набор? запись нужна
|
|||
3
ZanderZ
12.11.12
✎
11:52
|
ПС.Записать(Ложь);
|
|||
4
ssh2006
12.11.12
✎
11:52
|
(1) + 1
(2) +1 Менеджер записи |
|||
5
PiotrLoginov
12.11.12
✎
11:57
|
отбор уже выполнен.
В результате вижу список партнеров, дял которых надо создать записи в РС ПартнерыСегмента. С этим порядок. Перехожу на вкладку Обработки. Выбираю Произвольный алгоритм. Пишу код (см. выше). Выполняю. Результат плачевен. |
|||
6
Romich1981
12.11.12
✎
11:57
|
Может так?:
ПС = РегистрыСведений.ПартнерыСегмента.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл НовЗап = ПС.Добавить(); НовЗап.Партнер = Выборка.Объект.Ссылка; НовЗап.Сегмент = Справочники.СегментыПартнеров.НайтиПоНаименованию("19 л."); НовЗап.Активность = 1; КонецЦикла; ПС.Записать(); |
|||
7
PiotrLoginov
12.11.12
✎
11:57
|
(3) ? Не понял...
|
|||
8
Romich1981
12.11.12
✎
11:58
|
(5) Имелся ввиду отбор набора записей
|
|||
9
PiotrLoginov
12.11.12
✎
11:59
|
(6) Насколько я понимаю, если алгоритм выполняется из обработки УниверсальныеПодборИОбработкаОбъектов.epf , организовывать цикл не нужно. Она сама выполнит код для каждого из выбранных объектов.
|
|||
10
Romich1981
12.11.12
✎
11:59
|
(7) А это, чтоб не затирался регистр...
|
|||
11
Romich1981
12.11.12
✎
12:01
|
(9) а, сорри... с этой обработкой не работал. Тогда, наверно, (2), (3) и (4) =)
|
|||
12
hhhh
12.11.12
✎
12:07
|
(9) если нет отбора в наборе записей регистра, ваша команда ПС.Записать(); полностью стирает весь регистр и потом добавляет вашу одну запись.
|
|||
13
PiotrLoginov
12.11.12
✎
12:12
|
(12) как же правильно написать, чтобы после указания значений измерений записать новую запись в РС для текущего выбранного обработкой Объекта и при этом не стереть уже существующие записи?
|
|||
14
hhhh
12.11.12
✎
12:17
|
ПС = РегистрыСведений.ПартнерыСегмента.СоздатьНаборЗаписей();
ПС.Отбор.Партнер.Установить(Объект.Ссылка); ПС.Отбор.Сегмент.Установить(Справочники.СегментыПартнеров.НайтиПоНаименованию("19 л.")); НовЗап = ПС.Добавить(); НовЗап.Партнер = Объект.Ссылка; НовЗап.Сегмент = Справочники.СегментыПартнеров.НайтиПоНаименованию("19 л."); НовЗап.Активность = 1; ПС.Записать(); |
|||
15
PiotrLoginov
12.11.12
✎
12:28
|
(14) чудесным образом создались записи в РС для каждого из выбранных обработкой объектов. И при этом старые записи в порядке. Спасибо огромное. Учту, что перед записью в регистр сведений необходимо отобрать записи, которые будут заменены на новые.
|
|||
16
PiotrLoginov
12.11.12
✎
12:29
|
Теперь я понимаю: у меня раньше для каждого нового объекта записывалась одна запись, но запись для следующего объекта стирала её. Еще раз спасибо.
|
|||
17
Romich1981
12.11.12
✎
12:44
|
(16) точнее для каждого нового объекта записывался набор записей, который затирал все предыдущие
|
|||
18
PiotrLoginov
12.11.12
✎
12:48
|
(17) угу, я понял
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |