Имя: Пароль:
 
1C
1С v8
Заполнение электронного адреса программно
0 yyyuuu
 
01.11.18
03:25
Здравствуйте.
1С:Предприятие 8.3 (8.3.12.1595)
Зарплата и управление персоналом, редакция 3.1 (3.1.8.113)
Программно хочу заполнить вкладку личные данные в карточки сотрудника а именно электронный адрес.


Сообщить(ИмяФамилия);
        Сотрудники123 = Справочники.ФизическиеЛица.НайтиПоНаименованию(НайденныйСотрудник).ПолучитьОбъект();
        КонтактнаяИнформация = Сотрудники123.КонтактнаяИнформация.Добавить();
        КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.EmailПользователя;
        КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
        КонтактнаяИнформация.Представление = Майл;
        КонтактнаяИнформация.ЗначенияПолей = Майл;
        КонтактнаяИнформация.ДоменноеИмяСервера = "@mail";
        КонтактнаяИнформация.АдресЭП = майл;
        Сотрудники123.Записать();  


В карточке сотрудника в физическом лице пусто. Но если обратится запросом то вижу что адреса присвоились. Почему в интерфейсе невижу, или что то делаю не так?

ВЫБРАТЬ
    ФизическиеЛицаКонтактнаяИнформация.АдресЭП КАК АдресЭП,
    ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК Ссылка
ИЗ
    Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация

[url=https://radikal.ru][img]https://c.radikal.ru/c36/1811/4e/6995c43dc8e1.jpg[/img][/url]

Может Я не там смотрю, или не там заполняю? Но хочу заполнить как поле электронный адрес
1 Случайный прохожий
 
01.11.18
04:49
Что-то было подобное. Вроде реквизит ЗначенияПолей заполнять еще нужно
2 yyyuuu
 
01.11.18
05:00
Заполнил
3 Случайный прохожий
 
01.11.18
05:09
(2) И? Как заполнил?
4 Случайный прохожий
 
01.11.18
05:14
Заполни какой-нибудь email ручками в программе и через консольку сравни значения реквизитов с теми, которые программно заполняешь
5 yyyuuu
 
01.11.18
05:28
(3)
На отвали.
КонтактнаяИнформация.ЗначенияПолей = Майл;
майл это параметр с функции приходит
6 yyyuuu
 
01.11.18
05:31
(4)
Бахнул ручками, в консоле вижу, в интерфейсе вижу, что програмнно пишу не вижу)
7 Случайный прохожий
 
01.11.18
05:37
(5) это неправильное заполнение. Там строку в xml раскладывать нужно. Через консоль глянь какое значение принимает этот реквизит у правильно созданной КИ.
8 yyyuuu
 
01.11.18
08:44
(7)  Строка
Есть пример глянуть как это должно быть в идеале?
9 Cyberhawk
 
01.11.18
08:53
Кончай уже *овнокодить. Пользуйся программным интерфейсом нужной подсистемы БСП.
10 yyyuuu
 
01.11.18
09:04
(9)
Ну мне уже прям хочется разобраться как оно все таки делаеться. Ну или подскажи как пользоваться БСП)
11 Cyberhawk
 
01.11.18
09:07
Документацию на ИТС открой, раздел 4 - программный интерфейс. Найди там нужную подсистему и посмотри.
12 yyyuuu
 
02.11.18
03:33
(11)
Что то Я прям толкового не нашел ничего
13 yyyuuu
 
02.11.18
03:58
Но сделал так, и заработало

КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица;
14 yyyuuu
 
02.11.18
03:58
Пользуйтесь ребята :))
Может кому поможет
15 yyyuuu
 
02.11.18
04:20
Нашел кое что.
Оказывается

КонтактнаяИнформация.Представление =

Должно заполняться в формате ХМЛ. Вопрос, как мне майл раскидать на ХМЛ и вообще по тегам как это будет выглядить?
16 yyyuuu
 
02.11.18
05:29
<КонтактнаяИнформация 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"; Представление="mail.maill@oilgazholding.ru"><Состав xsi:type="ЭлектроннаяПочта" Значение="mail.maill@oilgazholding.ru"/></КонтактнаяИнформация>

Если руками бахнуть вот так заполняеться. Ну на костылях можно вставить строку да туда переменных напихать. Мысли по умнее есть ребят?)
17 Cyberhawk
 
02.11.18
07:33
Херово искал
18 dnab
 
02.11.18
08:11
КИ = УправлениеКонтактнойИнформацией.НоваяКонтактнаяИнформация(Ложь);
        Нов = КИ.Добавить();
        Нов.Вид = Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица;
        Нов.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;        
        Нов.Представление = Мейл;    
        УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(ФЛ,КИ, Истина);
19 yyyuuu
 
02.11.18
10:31
(18)
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(498)}: Добавление контактной информации невозможно, у объекта нет таблицы с контактной информацией.
        ВызватьИсключение НСтр("ru = 'Добавление контактной информации невозможно, у объекта нет таблицы с контактной информацией.'");;

Сама функция

Процедура УстановитьКонтактнуюИнформациюОбъекта(СсылкаИлиОбъект, Знач КонтактнаяИнформация, Замещать = Истина) Экспорт
    
    ЭтоСсылка = ОбщегоНазначения.ЗначениеСсылочногоТипа(СсылкаИлиОбъект);
    Объект =?(ЭтоСсылка, СсылкаИлиОбъект.ПолучитьОбъект(), СсылкаИлиОбъект);
    
    МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(СсылкаИлиОбъект));
    Если МетаданныеОбъекта = Неопределено
        Или МетаданныеОбъекта.ТабличныеЧасти.Найти("КонтактнаяИнформация") = Неопределено Тогда
        ВызватьИсключение НСтр("ru = 'Добавление контактной информации невозможно, у объекта нет таблицы с контактной информацией.'");;
    КонецЕсли;
    
    // Очистка контактной информации пустой таблицей.
    Если КонтактнаяИнформация.Количество() = 0 Тогда
        Если Замещать Тогда
            Объект.КонтактнаяИнформация.Очистить();
            Если ЭтоСсылка Тогда
                Объект.Записать();
            КонецЕсли;
        КонецЕсли;
        Возврат;
    КонецЕсли;
    
    Периодическая = МетаданныеОбъекта.ТабличныеЧасти.КонтактнаяИнформация.Реквизиты.Найти("ДействуетС") <> Неопределено;
    
    Для каждого СтрокаКонтактнойИнформации Из КонтактнаяИнформация Цикл
        ВосстановитьПустыеЗначениеПредставление(СтрокаКонтактнойИнформации);
    КонецЦикла;
    
    Если Замещать Тогда
        Если Периодическая Тогда
            Для каждого СтрокаКонтактнойИнформацииОбъекта Из КонтактнаяИнформация Цикл
                НайденныеСтроки = НайтиСтрокиКонтактнойИнформации(СтрокаКонтактнойИнформацииОбъекта.Вид, СтрокаКонтактнойИнформацииОбъекта.Дата, Объект.КонтактнаяИнформация);
                Для каждого Строка Из НайденныеСтроки Цикл
                    Объект.КонтактнаяИнформация.Удалить(Строка);
                КонецЦикла;
            КонецЦикла;
        Иначе
            Объект.КонтактнаяИнформация.Очистить();
        КонецЕсли;
    КонецЕсли;
    
    Для каждого СтрокаКонтактнойИнформацииОбъекта Из КонтактнаяИнформация Цикл
        
        ХранитьИсториюИзменений = Периодическая И СтрокаКонтактнойИнформацииОбъекта.Вид.ХранитьИсториюИзменений;
        
        Если Замещать Тогда
            
            Если ЗапрещенВводНесколькихЗначений(СтрокаКонтактнойИнформацииОбъекта.Вид, Объект.КонтактнаяИнформация, СтрокаКонтактнойИнформацииОбъекта.Дата) Тогда
                Продолжить;
            КонецЕсли;
            СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Добавить();
            
        Иначе
            
            Отбор = Новый Структура();
            Отбор.Вставить("Вид", СтрокаКонтактнойИнформацииОбъекта.Вид);
            
            Если ХранитьИсториюИзменений Тогда
                Отбор.Вставить("ДействуетС", СтрокаКонтактнойИнформацииОбъекта.Дата);
                НайденныеСтроки = Объект.КонтактнаяИнформация.НайтиСтроки(Отбор);
            ИначеЕсли ЗначениеЗаполнено(СтрокаКонтактнойИнформацииОбъекта.Значение) Тогда
                Отбор.Вставить("Значение", СтрокаКонтактнойИнформацииОбъекта.Значение);
                НайденныеСтроки = Объект.КонтактнаяИнформация.НайтиСтроки(Отбор);
            Иначе
                Отбор.Вставить("ЗначенияПолей", СтрокаКонтактнойИнформацииОбъекта.ЗначенияПолей);
                НайденныеСтроки = Объект.КонтактнаяИнформация.НайтиСтроки(Отбор);
            КонецЕсли;
            
            Если НЕ ХранитьИсториюИзменений
                 И ЗапрещенВводНесколькихЗначений(СтрокаКонтактнойИнформацииОбъекта.Вид, Объект.КонтактнаяИнформация, СтрокаКонтактнойИнформацииОбъекта.Дата)
                 ИЛИ НайденныеСтроки.Количество() > 0 Тогда
                    Продолжить;
            КонецЕсли;
            
            СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Добавить();
            
        КонецЕсли;
        
        ЗаполнитьКонтактнуюИнформациюОбъектаИзСтроки(СтрокаКонтактнойИнформацииОбъекта, ХранитьИсториюИзменений, СтрокаКонтактнойИнформации);
        
    КонецЦикла;
    
    Если ЭтоСсылка Тогда
        Объект.Записать();
    КонецЕсли;
    
КонецПроцедуры
20 yyyuuu
 
08.11.18
03:47
Сам пока не разобрался, но разбираюсь. Как что решу, сразу напишу. Если когда нибудь кто то наткнется на мои темы и останутся вопросы. То пишите https://t.me/Nikitaje
21 Случайный прохожий
 
08.11.18
07:46
(19) В первый параметр что передаешь? Есть у него табличная часть "КонтактнаяИнформация"?
22 bolder
 
08.11.18
07:50
(0) Тест на знание БСП не прошёл.
23 yyyuuu
 
08.11.18
10:38
(21) На мысль натолкнул, передавал параметр функции (ИмяФамилия) а не :

НайденныйСотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(ИмяФамилия);

    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(НайденныйСотрудник,КИ, Истина);
Передал, заработало)
24 yyyuuu
 
08.11.18
10:40
(22)
Похоже что да)
В общем вроде сделал. Работает хмл заполняется
25 yyyuuu
 
08.11.18
10:45
Детально все посмотрел, очень все хорошо работает. Всего то передать надо, ссылку на сотрудника и таблицу значений а функция сама уже все что надо сделает)
Ошибка? Это не ошибка, это системная функция.