Имя: Пароль:
1C
1С v8
Не заполняется контактная информация при вводе контрагента через помощника.
0 Смотрящий от 1С
 
09.06.20
18:55
УТ 11.4.11.93 Обратились менеджеры. Пропадают контакты при вводе контрагентов. При вводе заказа заносят нового партнера с помощью помощника.
Выбирают галку одновременного создания контрагента. (В конфе стоит настройка "независимо вести партнеров и контрагентов"). Поля емейл и телефон обязательны к заполнению. Заносят наименование, емейл и телефон. Далее прощелкивают все окна.

После записи партнера в него записывается только почта. Телефон пропадает.  Для телефона на его форме даже поля нет для добавления.  
Смотрим созданного контрагента. У него вообще никакие контакты не добавляются.
Посмотрел код.  При создании контрагента в контакты пытаются добавить "ТелефонКонтрагента". Такого реквизита даже на форме нет! Поменял на ТелефонПартнера и телефон записался.
Почту контрагенту даже и не пытались добавить!!.

Дописал добавление почты контрагенту.
Хотел заодно добавить телефон партнеру, но не получилось. В коде при создании партнера по аналогии с почтой заполняю строчку ТЧ контактной информации с телефоном. О отладчике один в один как и почта. На форму вытащил ТЧ с контактной информацией. При открытии телефон есть.
После повторного открытия его уже нет. Только почта. Похоже он где то при записи дальше режется как ненужный контакт.

Я в недоумении. Как то криво все выглядит. Почту тупо выбрасывают из контрагента. Партнеру не дают записать телефон.  Все с этим живут или я что то просмотрел и все работает великолепно?
1 DJ Anthon
 
09.06.20
19:37
там много косяков, я переписывал. контактные лица могут быть не только у юрлиц. кое-что блочится. не вводится много нужных данных. но это наша специфика, не знаю, как у других.
2 DJ Anthon
 
09.06.20
19:41
там мало добавлять на форму, там надо всю логику понять, а она адовая.
например, вот код добавления ввода должности у физлиц через расширение

&НаСервере
&Вместо("ЗаполнитьИтоговуюИнформацию")
Процедура А_ЗаполнитьИтоговуюИнформацию()
    // Вставить содержимое метода.
    ПродолжитьВызов();

    Если УказатьДанныеКонтактногоЛица И ЭтоКомпания = 1 Тогда
        ИтоговаяИнформация = ИтоговаяИнформация + "<p><br><strong>Данные контакного лица:</strong><br>Отношение: <em>#Отношение#<br></em>ФИО: <em>#ФИО#<br></em>E-mail: <em>#АдресЭПКЛ#<br></em>Телефон: <em>#ТелефонКЛ#</em><br>Мобильный телефон: <em>#МобильныйТелефонКЛ# #РКЛ#</em><br>Роль:<em> #Роль# #РКЛ#<br></em></p>";
        ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ФИО#",ФИО_ОднойСтрокой(ФамилияКЛ, ИмяКЛ, ОтчествоКЛ));
        ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#АдресЭПКЛ#" ,АдресЭПКЛ);
        ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ТелефонКЛ#", ТелефонКЛ);
        ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Отношение#", Отношение);
        ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#МобильныйТелефонКЛ#", МобильныйТелефонКЛ);
        Если ПолучитьФункциональнуюОпцию("ИспользоватьРолиКонтактныхЛицПартнеров") Тогда
            ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Роль#", Роль);
            ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#РКЛ#", "");
        Иначе
            ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#РКЛ#");
        КонецЕсли;
        Если НЕ ПустаяСтрока(Отношение) Тогда
            ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "Отношение: ", ?(ЭтоКомпания = 0, "Должность: ", "Отношение: "));
        КонецЕсли;
    КонецЕсли;    

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

&НаСервере
&Вместо("ЗаписатьПартнераИСвязанныеДанные")
Процедура А_ЗаписатьПартнераИСвязанныеДанные(СписокСозданных)
    // Вставить содержимое метода.
    ПродолжитьВызов(СписокСозданных);
    
    Если ЭтоКомпания = 1 И УказатьДанныеКонтактногоЛица И НЕ ПустаяСтрока(ФамилияКЛ) Тогда
        
        ОбъектКонтактноеЛицо = Справочники.КонтактныеЛицаПартнеров.СоздатьЭлемент();
        ОбъектКонтактноеЛицо.Владелец               = ПартнерВыбор;
        ОбъектКонтактноеЛицо.ДатаРегистрацииСвязи   = ТекущаяДатаСеанса();
        ОбъектКонтактноеЛицо.Наименование           = ФИО_ОднойСтрокой(ФамилияКЛ, ИмяКЛ, ОтчествоКЛ);
        ОбъектКонтактноеЛицо.Автор                  = Пользователи.ТекущийПользователь();
        ОбъектКонтактноеЛицо.ДолжностьПоВизитке        = Отношение;
        Если Не Роль.Пустая() Тогда
            СтрокаРоли = ОбъектКонтактноеЛицо.РолиКонтактногоЛица.Добавить();
            СтрокаРоли.РольКонтактногоЛица = Роль;
        КонецЕсли;
        
        Если Не ПустаяСтрока(АдресЭПКЛ) Тогда
            НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
            НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
            НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.EmailКонтактногоЛица;
            НоваяСтрокаКИ.Представление     = АдресЭПКЛ;
            НоваяСтрокаКИ.Значение            = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
            НоваяСтрокаКИ.ЗначенияПолей     = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(НоваяСтрокаКИ.Значение, НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
            НоваяСтрокаКИ.АдресЭП           = АдресЭПКЛ;
            Поз = СтрНайти(АдресЭПКЛ, "@");
            Если Поз <> 0 Тогда
                НоваяСтрокаКИ.ДоменноеИмяСервера = Сред(АдресЭПКЛ, Поз+1);
            КонецЕсли;
        КонецЕсли;
        
        Если ЗначенияПолейВСписокЗначений(ТелефонКЛЗначенияПолей).Количество()> 0 Тогда
            НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
            НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Телефон;
            НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица;
            НоваяСтрокаКИ.Представление     = ТелефонКЛ;
            НоваяСтрокаКИ.ЗначенияПолей     = ТелефонКЛЗначенияПолей;
            НоваяСтрокаКИ.Значение             = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонКЛЗначенияПолей);
        КонецЕсли;
        
        Если ЗначенияПолейВСписокЗначений(МобильныйТелефонКЛЗначенияПолей).Количество()> 0 Тогда
            НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
            НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Телефон;
            НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.МобильныйТелефонКонтактногоЛица;
            НоваяСтрокаКИ.Представление     = МобильныйТелефонКЛ;
            НоваяСтрокаКИ.ЗначенияПолей     = МобильныйТелефонКЛЗначенияПолей;
            НоваяСтрокаКИ.Значение             = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(МобильныйТелефонКЛЗначенияПолей);
        КонецЕсли;
        
        ОбъектКонтактноеЛицо.Записать();
        СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(ОбъектКонтактноеЛицо.Ссылка), ОбъектКонтактноеЛицо.Наименование);
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
&Вместо("УстановитьДоступностьДанныхКонтактногоЛица")
Процедура А_УстановитьДоступностьДанныхКонтактногоЛица(Форма)
    // Вставить содержимое метода.
    ПродолжитьВызов(Форма);
    
    МассивЭлементов = Новый Массив;
    МассивЭлементов.Добавить("Отношение");
    ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Форма.Элементы, МассивЭлементов, "Доступность",
        Форма.УказатьДанныеКонтактногоЛица);
КонецПроцедуры