|
Изменить реквизиты дочерних контрагентов | ☑ | ||
---|---|---|---|---|
0
evgenius-inc
18.07.14
✎
13:55
|
Всем привет!
Есть Справочник Контрагенты. Необходимо чтобы при изменении реквизита основнойМенеджер Головного контрагента, менялся ОсновнойМенеджер и в дочерних контрагентах. Делаю так Функция ПолучитьДочернихКонтрагентов(Контрагент) Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Контрагенты.ГоловнойКонтрагент КАК Контрагент |ПОМЕСТИТЬ Голова |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Ссылка = &Контрагент |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка, | Голова.Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, | Голова КАК Голова |ГДЕ | Контрагенты.Ссылка.ГоловнойКонтрагент В (Голова.Контрагент) | И Контрагенты.ГоловнойКонтрагент <> Контрагенты.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Контрагенты.Ссылка, | Голова.Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, | Голова КАК Голова |ГДЕ | Контрагенты.Ссылка В (Голова.Контрагент) |"; Запрос.УстановитьПараметр("Контрагент", Контрагент); //Контрагенты РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); Возврат РезультатЗапроса; Процедура ПриЗаписи(Отказ) Если ГоловнойКонтрагент <> Ссылка Тогда Контр = Ссылка.ПолучитьОбъект(); Контр.ОсновнойМенеджер = ГоловнойКонтрагент.ОсновнойМенеджер; Записать(); КонецЕсли; Но при записи получается рекурсия и все уходит в бесконечность. Как можно избавиться от этого? |
|||
1
vicof
18.07.14
✎
13:58
|
выборку по шагам обойти, обмен данными.загрузка=истина
|
|||
2
evgenius-inc
18.07.14
✎
14:06
|
up
|
|||
3
mehfk
18.07.14
✎
14:10
|
Это зачем?
|ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Контрагенты.Ссылка, | Голова.Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, | Голова КАК Голова |ГДЕ | Контрагенты.Ссылка В (Голова.Контрагент) С вас 500 рублей |
|||
4
evgenius-inc
18.07.14
✎
14:25
|
(3)Чтобы и сам головной контрагент попадал в список
Прошу прощения код процедуры При Записи не тот вставил: Процедура ПриЗаписи(Отказ) Контр = ПолучитьДочернихКонтрагентов(Ссылка); Для Каждого стр ИЗ Контр Цикл Если стр.Ссылка<>стр.Ссылка.ГоловнойКонтрагент Тогда КонтрагентОбъект = стр.Ссылка.ПолучитьОбъект(); КонтрагентОбъект.ОсновнойМенеджер = стр.Ссылка.ГоловнойКонтрагент.ОсновнойМенеджер ; КонтрагентОбъект.Записать(); КонецЦикла; КонецПроцедуры (3)Пятихатку-то за что? |
|||
5
mehfk
18.07.14
✎
14:33
|
>> Чтобы и сам головной контрагент попадал в список
>> Контр = ПолучитьДочернихКонтрагентов(Ссылка); >> стр.Ссылка<>стр.Ссылка.ГоловнойКонтрагент бу-га-га |
|||
6
evgenius-inc
18.07.14
✎
15:00
|
(5) Да без разницы, даже и без условия - все равно рекурсия
|
|||
7
evgenius-inc
18.07.14
✎
15:08
|
Ну все-таки, как быть?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |