![]() |
|
Найти все реквизиты документа с ссылкой на объект. | ☑ | ||
---|---|---|---|---|
0
xipypg2012
23.09.20
✎
13:06
|
Подскажите у меня есть документ в нем в табличной части есть столбец "документ".
и в этом документе есть поле контрагент. Подскажите как реализовать теперь чтоб при смене контрагента в документе, Программа пробегала все реквизиты этих документов и если находила реквизит с таким же контрагентом меняла его. &НаСервере Процедура КонтрагентПриИзмененииНаСервере() Документ = РеквизитФормыВЗначение("Объект"); Для каждого стр из Документ.ДокументыЦепочки цикл Док = Стр.Документ.ПолучитьОбъект(); //////////ВОТ тут перебрать все реквизиты Док надо Если Док.Рекв = ПолучитьСтарогоКонтрагента("Контрагент") тогда Док.Рекв = Документ.Контрагент КонецЕсли; ///////////КонецПеребора КонецЦикла; Записать(); // Вставить содержимое обработчика. КонецПроцедуры &НаСервере Функция ПолучитьСтарогоКонтрагента(РеквизитВозврата) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦепочкиДокументов.Ссылка КАК Ссылка |ИЗ | Документ.ЦепочкиДокументов КАК ЦепочкиДокументов |ГДЕ | ЦепочкиДокументов.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Если выборка.Количество()>0 тогда Выборка.Следующий(); Если РеквизитВозврата = "Контрагент" тогда Возврат Выборка.Ссылка.Контрагент; КонецЕсли; КонецЕсли;; КонецФункции &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) Режим = РежимДиалогаВопрос.ДаНет; Ответ = Вопрос("Вы хотите изменить контрагента?", Режим, 0); Если Ответ =КодВозвратаДиалога.Да Тогда КонтрагентПриИзмененииНаСервере(); Иначе Объект.Контрагент = ПолучитьСтарогоКонтрагента("Контрагент"); КонецЕсли; КонецПроцедуры Интересует как - перебрать все реквизиты Стр.Документ , может кто-то чтото подскажет. Дальше будут идти изменения по аналогии с этим. |
|||
1
Ёпрст
гуру
23.09.20
✎
13:09
|
(0)
Документ = РеквизитФормыВЗначение("Объект"); это выкинуть из кода в первую очередь |
|||
2
xipypg2012
23.09.20
✎
13:10
|
//////////ВОТ тут перебрать все реквизиты Док надо
Если Док.Рекв = ПолучитьСтарогоКонтрагента("Контрагент") Для умников сразу скажу в цикле запроса не будет, это на скорую руку накидан код в блокноте чтоб можно было объяснить что именно хочется сделать. |
|||
3
xipypg2012
23.09.20
✎
13:10
|
(1) с этим согласен тут это не актуально, можно и выкинуть.
|
|||
4
Ёпрст
гуру
23.09.20
✎
13:32
|
вот это переписать:
&НаСервере Функция ПолучитьСтарогоКонтрагента(РеквизитВозврата) посмотреть хотя бы , как в типовой глЗначениеРеквизитаОбъекта слеплено |
|||
5
Ёпрст
гуру
23.09.20
✎
13:32
|
получать ссылку, чтоб с неё потом клиентоса тянуть, таща весь объект ?
|
|||
6
Ёпрст
гуру
23.09.20
✎
13:34
|
И... всю замену во всех доках, которые торчат в таб части нужно делать хотя бы приЗаписи этого документа, а не в ПриИзменении.
А то. клиентоса поменяешь, а документ не сохраншь |
|||
7
xipypg2012
23.09.20
✎
13:43
|
(6) Документ записывается при изменение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |