|
|
|
Обновление Контактной информации для не записанных Черников, Prog_man, Мультук, lubitelxml, Хряк, KJlag, Михаил Козлов, Fish, dimasad, 2mugik, Dzenn, Kigo_Kigo, RVN, Timon1405, НоваяВолна, DimR_71, elka302, Гипервизор, RomanYS, Александр111, SleepyHead, A_G, denk32, vyaz
| ☑ | ||
|---|---|---|---|---|
|
0
dimasad
11.11.25
✎
17:41
|
Конфа ДО2.1, свой справочник с пристегнутым к нему механизмом КИ (по скрепным правилам БСП).
Задача: исходя из выбранного Контрагента на форме справочника, перенести соответствующие значения КИ контрагента в соответствующие поля КИ своего справочника (естественно Виды КИ и обязательные наборы - разные). Пример: &НаКлиенте Процедура ПеречитатьВсе() ОбновитьОтображениеДанных(); Прочитать(); КонецПроцедуры &НаСервере Процедура КонтрагентПриИзмененииНаСервере() ЮрАдресИзКонтрагента = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект.Контрагент.Ссылка, Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента, ТекущаяДата(), Ложь); ОбъектКИ = РеквизитФормыВЗначение("Объект"); ЮрАдресОбъекта = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектКИ, Справочники.ВидыКонтактнойИнформации.АЭС_Анк_ЮридическийАдрес, ТекущаяДата(), Ложь); Если ЗначениеЗаполнено(ЮрАдресИзКонтрагента[0].Представление) Тогда //Здесь тупо меняем на значения из ТЗ КИ Контрагента ЮрАдресОбъекта[0].Значение = ЮрАдресИзКонтрагента[0].Значение; ЮрАдресОбъекта[0].Представление = ЮрАдресИзКонтрагента[0].Представление; ЮрАдресОбъекта[0].ЗначенияПолей = ЮрАдресИзКонтрагента[0].ЗначенияПолей; УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(ОбъектКИ, ЮрАдресОбъекта, Истина); КонецЕсли; ОбъектКИ.Записать(); // вот без этой херни обновить данные на форме не получается ни при каких условиях ЗначениеВРеквизитФормы(ОбъектКИ,"Объект"); КонецПроцедуры Вопрос бывалым: каким образом программно поменять КИ, обновить его на форме при этом не записывать сам объект??? |
|||
|
1
formista2000
11.11.25
✎
17:50
|
УстановитьСсылкуНового(), ПолучитьСсылкуНового() и всё такое...
|
|||
|
2
dimasad
11.11.25
✎
17:53
|
(1) Не поможет... все методы из УправлениеКонтактнойИнформацией которые работают с ссылкой - записывают объект владелеца КИ...
А мне надо все без записи сделать - чисто на форме |
|||
|
3
Garykom
гуру
11.11.25
✎
17:56
|
КИ хранится внутри ТЧ
Работай напрямую без БСП |
|||
|
4
dimasad
11.11.25
✎
18:01
|
(3) В том то и прикол, что после метода УстановитьКонтактнуюИнформациюОбъекта(ОбъектКИ, ЮрАдресОбъекта, Истина)
- в объекте уже изменена ТЧ с КИ. Вопрос как на форме эту байду обновить? ps/ ОбновитьОтображениеДанных(); и Прочитать(); не помогает... |
|||
|
5
dimasad
11.11.25
✎
18:03
|
объекты на форме, связанные с КИ генеряться же динамически по средствам механизма БСП КИ
|
|||
|
6
Garykom
гуру
11.11.25
✎
18:07
|
Хрен его знает, придется повторять код из БСП
Сначала удалив лишние элементы на форме |
|||
|
7
dimasad
12.11.25
✎
12:14
|
Вопрос решили с помощью коллективного мозгового штурма с коллегой.
Оказывается методы КИ типа ОбновитьКонтактнуюИнформацию - работают не с Объектом и никак не с ТЧ Объекта. а только с "ДанныеФормыЭлементКоллекции" (правда там набор рекв-в немного отличается от типовой ТЗ отдаваемой стандартными методами БСП КИ). Сделали так: Для Каждого ИмяКонтактнойИнформации из ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов Цикл Если ИмяКонтактнойИнформации.Вид = Справочники.ВидыКонтактнойИнформации.Анк_ЮридическийАдрес Тогда Если ЮрАдресИзКонтрагента.Количество() > 0 Тогда ИмяКонтактнойИнформации.Значение = ЮрАдресИзКонтрагента[0].Значение; ИмяКонтактнойИнформации.Представление = ЮрАдресИзКонтрагента[0].Представление; ИмяКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; КонецЕсли; ИначеЕсли ИмяКонтактнойИнформации.Вид = Справочники.ВидыКонтактнойИнформации.Анк_ФактическийАдрес Тогда /// ИначеЕсли ИмяКонтактнойИнформации.Вид = Справочники.ВидыКонтактнойИнформации.Анк_Телефон Тогда /// ИначеЕсли ИмяКонтактнойИнформации.Вид = Справочники.ВидыКонтактнойИнформации.Анк_Email Тогда /// КонецЦикла; УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Новый Структура("Перечитать,ИмяЭлементаДляРазмещения",Истина,"ГруппаКонтактнаяИнформация")); По сути перебираем нужные нам элементы коллекции и меняем значения. А вот метод "ОбновитьКонтактнуюИнформацию" - как раз и меняет ТЗ Объекта в соответствии с данными коллекции. Короче изначально подход был не верен. Всем спасибо кто откликнулся. PS/ Плохо что логика БСП КИ не разжевана в документации. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |