Имя: Пароль:
1C
1С v8
Управляемые формы Запись реквизита элемента справочника табличной части
0 DenisVich
 
24.04.20
19:15
Здравствуйте уважаемые форумчане. Есть справочник физические лица в нем есть табличная часть контактная информация, пытаюсь записать через свою обработку, ничего не получается.Элемент справочника если смотреть через отладчик записан, но в элементе формы он не отображается. В чем может быть проблема? Спасибо.
Вот код:
"
&НаСервере
Процедура ИзвлечьФИОEMAIL(стр)
    Разделитель = СтрНайти(стр,Символы.Таб);
    ФИО = Лев(стр, Разделитель - 1);
    Стр1 = СтрЗаменить(стр,ФИО,"");
    Стр1 = СтрЗаменить(стр1," ","");
    Стр1 = СтрЗаменить(стр1,Символы.Таб,"");
    EMail = Стр1;
    СсылкаНаФизлицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФИО).ПолучитьОбъект();
    Для Каждого ЭлементСтроки Из СсылкаНаФизлицо.КонтактнаяИнформация Цикл
        Если СокрЛП(ЭлементСтроки.Вид) = "Email физ. лица" Тогда
            ЭлементСтроки.Представление = email;
            ЭлементСтроки.ЗначенияПолей = email;//            "value": "Представление="
            ЭлементСтроки.Значение = СтрЗаменить(ЭлементСтроки.Значение,"Представление=","");
        КонецЕсли;
    КонецЦикла;
    СсылкаНаФизлицо.Записать();    
КонецПроцедуры


&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
    //ЗагрузитьИзФайлаНаСервере();
       // Вставить содержимое обработчика.
        Перем Стр;

        Стр = "";

        //Открываем диалог выбора файла для чтения
        ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ВыборФайла.МножественныйВыбор = Ложь;
        ВыборФайла.Заголовок = НСтр("Выбор файла");
        ВыборФайла.Фильтр = НСтр( "Все файлы (*.*)|*.*");

        Если ВыборФайла.Выбрать()  Тогда
              ПолноеИмяФайла = ВыборФайла.ПолноеИмяФайла;
        Иначе
              Возврат;
        КонецЕсли;

        Текст = Новый ЧтениеТекста;
        Текст.Открыть(ПолноеИмяФайла);

        Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
                 Стр = Текст.ПрочитатьСтроку();
                 ИзвлечьФИОEMAIL(Стр);
                 Сообщить(Стр);
        КонецЦикла;

        Текст.Закрыть();    
КонецПроцедуры
"

содержимое текстового файла:
Иванов Иван Иванович    [email protected]
Сидоров Иван Иванович    [email protected]
1 RomanYS
 
24.04.20
19:19
Может в ЗначенияПолей что-то структурированное ожидается
2 DenisVich
 
24.04.20
19:22
ЭлементСтроки.Значение - там хранится в определенных тегах все
ЭлементСтроки.ЗначенияПолей - там просто строка
Повторюсь. Данные записываются. Они хранятся там. Можно запросом выборку сделать. Но на форме ничего нет.
3 DenisVich
 
24.04.20
19:22
Я знаю что особенность управляемых форм, но как это победить?
4 RomanYS
 
24.04.20
19:32
(2) Вот пример что должно быть
ЗначенияПолей
<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; Представление="[email protected]"><Состав xsi:type="ЭлектроннаяПочта" Значение="[email protected]"/></КонтактнаяИнформация>

АдресЭП
[email protected]

ДоменноеИмяСервера
test.ru

Значение
"{
""value"": ""[email protected]"",
""comment"": """",
""type"": ""АдресЭлектроннойПочты""
}"
5 RomanYS
 
24.04.20
19:33
(3) Если после переоткрытия не появляется значит проблема не в УФ, а в (4)
6 DenisVich
 
28.04.20
14:22
(5) Спасибо. Но не помоголо. Есть догадки, что все-таки дело в работе с функциями БСП, которые встроены в конфигурацию. Модули УправлениеКонтактной информацией. Подскажите пожалуйста какими методами нужно пользоваться при работе с УправлениеКонтактнойИнформацией.
"
&НаСервере
Процедура ИзвлечьФИОEMAIL(стр)
    Разделитель = СтрНайти(стр,Символы.Таб);
    ФИО = Лев(стр, Разделитель - 1);
    Стр1 = СтрЗаменить(стр,ФИО,"");
    Стр1 = СтрЗаменить(стр1," ","");
    EMail = СтрЗаменить(стр1,Символы.Таб,"");
   ЗначениеСтроки="{"+Символы.ПС+Символ(34)+Символ(34)+"value"+Символ(34)+Символ(34)+": "+Символ(34)+Символ(34)+EMail+Символ(34)+Символ(34)+","+
+Символы.ПС+Символ(34)+Символ(34)+"comment"+Символ(34)+Символ(34)+": "+Символ(34)+Символ(34)+Символ(34)+Символ(34)+","
+Символ(34)+Символ(34)+"type"+": "+Символ(34)+Символ(34)+"АдресЭлектроннойПочты"+Символ(34)+Символы.ПС+"}";

    ЗначенияПолей = "<КонтактнаяИнформация xmlns="+Символ(34)+"http://www.v8.1c.ru/ssl/contactinfo"+Символ(34)+";; xmlns:xs="+Символ(34)+"http://www.w3.org/2001/XMLSchema"+Символ(34)+";; xmlns:xsi="+Символ(34)+"http://www.w3.org/2001/XMLSchema-instance"+Символ(34)+";; Представление="+Символ(34)+EMail+Символ(34)+"><Состав xsi:type="+Символ(34)+"ЭлектроннаяПочта"+Символ(34)+ "Значение="+Символ(34)+Email+Символ(34)+"/></КонтактнаяИнформация>";

    СсылкаНаФизлицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФИО).ПолучитьОбъект();
    Для Каждого ЭлементСтроки Из СсылкаНаФизлицо.КонтактнаяИнформация Цикл
        Если СокрЛП(ЭлементСтроки.Вид) = "Email физ. лица" или СокрЛП(ЭлементСтроки.Вид) = "Электронная почта" Тогда
            ЭлементСтроки.Представление = email;
            ЭлементСтроки.ЗначенияПолей = ЗначенияПолей;//            "value": "Представление="
            ЭлементСтроки.Значение = ЗначениеСтроки;//СтрЗаменить(ЭлементСтроки.Значение,"Представление=","");
            ДанныеЗаполнения = УправлениеКонтактнойИнформацией.НоваяКонтактнаяИнформация(Ложь);
            
            СтрокаЗаполнения = ДанныеЗаполнения.Добавить();
              СтрокаЗаполнения.Вид            = ЭлементСтроки.Вид;
              СтрокаЗаполнения.Тип            = ЭлементСтроки.Тип;
              СтрокаЗаполнения.ЗначенияПолей  = ЭлементСтроки.ЗначенияПолей;
              СтрокаЗаполнения.Представление  = ЭлементСтроки.Представление;
              //СтрокаЗаполнения.Значение         = КИ.Значение;
            Попытка
              УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(Объект, ДанныеЗаполнения);
            Исключение
            КонецПопытки;                
        КонецЕсли;
    КонецЦикла;

    СсылкаНаФизлицо.Записать();

КонецПроцедуры
"