Как программно создать контрагента с партнером и с контактной информацией в УТ 11.3
УТ 11.3;
На примере создадим клиента, который будет являться юридическим лицом. Для этого необходимо создать контрагента и партнера с привязкой между ними. Непосредственное их создание вынесем в функцию, и данную функцию будем вызывать с передачей в нее параметров для заполнения:
&НаСервере
Процедура СоздатьКлиентаНаСервере()
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Наименование", НаименованиеКлиента);
СтруктураПараметров.Вставить("ПолноеНаименование", ПолноеНаименованиеКлиента);
СтруктураПараметров.Вставить("ИНН", ИНН);
СтруктураПараметров.Вставить("КодПоОКПО", КодПоОКПО);
СтруктураПараметров.Вставить("КПП", КПП);
СтруктураПараметров.Вставить("Телефон", ТелефонКлиента);
СтруктураПараметров.Вставить("Email", EmailКлиента);
СтруктураПараметров.Вставить("Адрес", АдресКлиента);
//Следующие 2 параметра только для физ. лица, в нашем случае для юр. лица их не надо заполнять
СтруктураПараметров.Вставить("Пол", Перечисления.ПолФизическогоЛица.Мужской);
СтруктураПараметров.Вставить("ДатаРождения", ДатаРожденияКлиента);
СтруктураКлиента = СоздатьКлиента(СтруктураПараметров); // возвращает структуру, содержащую контрагента и партнера
КонецПроцедуры
&НаСервере
Функция СоздатьКлиента(СтруктураПараметров)
ПартнерОбъект = Справочники.Партнеры.СоздатьЭлемент();
ПартнерОбъект.Наименование = СтруктураПараметров.Наименование;
ПартнерОбъект.НаименованиеПолное = СтруктураПараметров.ПолноеНаименование;
ПартнерОбъект.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.Компания;
ПартнерОбъект.ДатаРегистрации = ТекущаяДата();
ПартнерОбъект.Клиент = Истина;
ПартнерОбъект.ИНН = СтруктураПараметров.ИНН;
ПартнерОбъект.КодПоОКПО = СтруктураПараметров.КодПоОКПО;
ПартнерОбъект.КПП = СтруктураПараметров.КПП;
//Следующие 2 параметра только для физ. лица, в нашем случае для юр. лица их не надо заполнять
ПартнерОбъект.ДатаРождения = СтруктураПараметров.ДатаРождения;
ПартнерОбъект.Пол = СтруктураПараметров.Пол;
НовСтрокаКИ = ПартнерОбъект.КонтактнаяИнформация.Добавить();
НовСтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПартнера;
НовСтрокаКИ.ВидДляСписка = НовСтрокаКИ.Вид;
НовСтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
НовСтрокаКИ.НомерТелефона = СтруктураПараметров.Телефон;
НовСтрокаКИ.НомерТелефонаБезКодов = НовСтрокаКИ.НомерТелефона;
НовСтрокаКИ.Представление = НовСтрокаКИ.НомерТелефона;
НовСтрокаКИ.ЗначенияПолей =
УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияXMLПоПредставлению(НовСтрокаКИ.Представление, НовСтрокаКИ.Вид);
НовСтрокаКИ = ПартнерОбъект.КонтактнаяИнформация.Добавить();
НовСтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.EmailПартнера;
НовСтрокаКИ.ВидДляСписка = НовСтрокаКИ.Вид;
НовСтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
НовСтрокаКИ.АдресЭП = СтруктураПараметров.Email;
НовСтрокаКИ.Представление = НовСтрокаКИ.АдресЭП;
НовСтрокаКИ.ЗначенияПолей =
УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияXMLПоПредставлению(НовСтрокаКИ.Представление, НовСтрокаКИ.Вид);
НовСтрокаКИ = ПартнерОбъект.КонтактнаяИнформация.Добавить();
НовСтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.АдресПартнера;
НовСтрокаКИ.ВидДляСписка = НовСтрокаКИ.Вид;
НовСтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НовСтрокаКИ.Представление = СтруктураПараметров.Адрес;
НовСтрокаКИ.ЗначенияПолей =
УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияXMLПоПредставлению(НовСтрокаКИ.Представление, НовСтрокаКИ.Вид);
Попытка
ПартнерОбъект.Записать();
Исключение
Сообщить("Не удалось создать партнера " + ПартнерОбъект.Наименование);
Возврат Неопределено;
КонецПопытки;
КонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент();
НоваяСсылка = Справочники.Контрагенты.ПолучитьСсылку();
КонтрагентОбъект.УстановитьСсылкуНового(НоваяСсылка);
КонтрагентОбъект.ГоловнойКонтрагент = КонтрагентОбъект.ПолучитьСсылкуНового();
КонтрагентОбъект.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
КонтрагентОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
КонтрагентОбъект.Партнер = ПартнерОбъект.Ссылка;
КонтрагентОбъект.Наименование = ПартнерОбъект.Наименование;
КонтрагентОбъект.НаименованиеПолное = ПартнерОбъект.НаименованиеПолное;
Для Каждого СтрокаКИПартнера Из ПартнерОбъект.КонтактнаяИнформация Цикл
Если СтрокаКИПартнера.Вид = Справочники.ВидыКонтактнойИнформации.EmailПартнера Тогда
ВидКиКонтрагента = Справочники.ВидыКонтактнойИнформации.EmailКонтрагента;
ИначеЕсли СтрокаКИПартнера.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПартнера Тогда
ВидКиКонтрагента = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ИначеЕсли СтрокаКИПартнера.Вид = Справочники.ВидыКонтактнойИнформации.АдресПартнера Тогда
ВидКиКонтрагента = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
Иначе
Продолжить;
КонецЕсли;
СтрокаКиКонтрагента = КонтрагентОбъект.КонтактнаяИнформация.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаКиКонтрагента, СтрокаКИПартнера);
СтрокаКиКонтрагента.Вид = ВидКиКонтрагента;
СтрокаКиКонтрагента.ВидДляСписка = СтрокаКиКонтрагента.Вид;
СтрокаКиКонтрагента.ЗначенияПолей =
УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияXMLПоПредставлению(СтрокаКиКонтрагента.Представление, СтрокаКиКонтрагента.Вид);
КонецЦикла;
Попытка
КонтрагентОбъект.Записать();
Исключение
Сообщить("Не удалось создать контрагента " + КонтрагентОбъект.Наименование);
Возврат Неопределено;
КонецПопытки;
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Контрагент",КонтрагентОбъект.Ссылка);
СтруктураВозврата.Вставить("Партнер",ПартнерОбъект.Ссылка);
Возврат СтруктураВозврата;
КонецФункции