Добавление контрагента по ИНН
Функционал использован в чат-боте
Функция ДобавлениеКонтрагентаПоИНННаСервере(ИНН) Экспорт
// Проверка на правильность ИНН
Если НЕ ЭтоИНН(ИНН)Тогда
Возврат "Неправильный ИНН. Пожалуйста, проверьте ИНН";
КонецЕсли;
// Проверка на существование в базе
Если Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ИНН) <> Справочники.Контрагенты.ПустаяСсылка() Тогда
Возврат "Контрагент с ИНН:"+ИНН+" уже существует. Создание невозможно";
КонецЕсли;
РеквизитыКонтрагента = РаботаСКонтрагентами.РеквизитыЮридическогоЛицаПоИНН(ИНН);
Если ЗначениеЗаполнено(РеквизитыКонтрагента.ОписаниеОшибки) Тогда
Возврат РеквизитыКонтрагента.ОписаниеОшибки;
КонецЕсли;
// Пробуем добавить контрагента
Попытка
УстановитьПривилегированныйРежим(Истина);
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
НовыйКонтрагент.Ответственный = ПараметрыСеанса.ТекущийПользователь;
НовыйКонтрагент.Комментарий = "Создано в чат-боте";
ЗаполнитьЗначенияСвойств(НовыйКонтрагент, РеквизитыКонтрагента);
НаименованиеКонтрагента = НовыйКонтрагент.Наименование;
// Адреса
Если РеквизитыКонтрагента.ЮридическийАдрес <> Неопределено Тогда
// Юридический адрес
КонтактнаяИнформация = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента;
КонтактнаяИнформация.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
КонтактнаяИнформация.Значение = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
// Почтовый адрес
КонтактнаяИнформация = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента;
КонтактнаяИнформация.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
КонтактнаяИнформация.Значение = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
// Фактический адрес
КонтактнаяИнформация = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.ФактическийАдресКонтрагента;
КонтактнаяИнформация.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
КонтактнаяИнформация.Значение = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
КонецЕсли;
// Телефон
Если РеквизитыКонтрагента.Телефон <> Неопределено Тогда
КонтактнаяИнформация = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
КонтактнаяИнформация.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
КонтактнаяИнформация.Представление = РеквизитыКонтрагента.Телефон.Представление;
КонтактнаяИнформация.Значение = РеквизитыКонтрагента.Телефон.КонтактнаяИнформация;
КонецЕсли;
НовыйКонтрагент.Записать();
УстановитьПривилегированныйРежим(Ложь);
// Контактное лицо
Если РеквизитыКонтрагента.Руководитель <> Неопределено Тогда
Руководитель = РеквизитыКонтрагента.Руководитель;
ПредставлениеКонтактногоЛица = Руководитель.Фамилия
+ " " + Руководитель.Имя
+ " " + Руководитель.Отчество;
ДанныеКонтактногоЛица = РеквизитыКонтрагента.Руководитель;
УстановитьПривилегированныйРежим(Истина);
ДанныеКонтактногоЛица.Должность = Справочники.Должности.НайтиСоздатьДолжностьПоНаименованию(
РеквизитыКонтрагента.Руководитель.Должность);
НовоеКонтактноеЛицо = Справочники.КонтактныеЛица.СоздатьЭлемент();
НовоеКонтактноеЛицо.Владелец = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ИНН);
ЗаполнитьЗначенияСвойств(НовоеКонтактноеЛицо, ДанныеКонтактногоЛица);
НовоеКонтактноеЛицо.Наименование = ПредставлениеКонтактногоЛица;
НовоеКонтактноеЛицо.Записать();
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат "Создан контрагент "+ НаименованиеКонтрагента;
Исключение
Возврат ОписаниеОшибки();
КонецПопытки;
КонецФункции
Функция ЭтоИНН(СтрокаИНН)
Возврат ЗначениеЗаполнено(СтрокаИНН)
И ТипЗнч(СтрокаИНН) = Тип("Строка")
И (СтрДлина(СтрокаИНН) = 10 ИЛИ СтрДлина(СтрокаИНН) = 12)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаИНН);
КонецФункции