Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение электронного адреса программно

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

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

Должно заполняться в формате ХМЛ. Вопрос, как мне майл раскидать на ХМЛ и вообще по тегам как это будет выглядить?
   yyyuuu
 
16 - 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"/></КонтактнаяИнформация>

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

Сама функция 

Процедура УстановитьКонтактнуюИнформациюОбъекта(СсылкаИлиОбъект, Знач КонтактнаяИнформация, Замещать = Истина) Экспорт
    
    ЭтоСсылка = ОбщегоНазначения.ЗначениеСсылочногоТипа(СсылкаИлиОбъект);
    Объект =?(ЭтоСсылка, СсылкаИлиОбъект.ПолучитьОбъект(), СсылкаИлиОбъект);
    
    МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(СсылкаИлиОбъект));
    Если МетаданныеОбъекта = Неопределено
        Или МетаданныеОбъекта.ТабличныеЧасти.Найти("КонтактнаяИнформация") = Неопределено Тогда
        ВызватьИсключение НСтр("ru = 'Добавление контактной информации невозможно, у объекта нет таблицы с контактной информацией.'");;
    КонецЕсли;
    
    // Очистка контактной информации пустой таблицей.

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует