Заполнение дополнительных свойств абонентов с помощью сервиса 1С:Контрагент

Оглавление

1. Общие сведения

В настоящей инструкции описывается пример настройки заполнения дополнительных сведений об абонентах в облачном сервисе Фреш на основании:

  • данных сервиса 1С:Контрагент по указанному ИНН (индивидуальному номеру налогоплательщика);
  • данных, указанных в приглашении в сервис.

С помощью сервиса 1С:Контрагент заполняются следующие дополнительные свойства абонентов-организаций:

  • ИНН абонента
  • КПП 
  • Наименование организации 
  • Индекс 
  • Город (ДополнительныеСведения)
  • Улица 
  • Дом 
  • Корпус 
  • Контактное лицо абонента 

И следующие свойства абонентов-физических лиц:

  • ИНН абонента
  • КПП 
  • Наименование организации

На основании данных приглашения заполняются следующие дополнительные свойства абонентов:

  • Код города

  • Телефон  
  • Электронная почта

2. Системные требования

Для использования настроек заполнения требуются:

  • менеджер сервиса версии 1.0.90.8 или более новой;
  • действительные логин и пароль Портала 1С:ИТС для доступа  к сервису  1С:Контрагент. Их необходимо использовать в правилах трансляции (см. разделы 3.3 и 3.4 ниже)  вместо строк login и password

3. Порядок действий

3.1. Настройка состава дополнительных сведений об абонентах

Администратор сервиса должен настроить состав дополнительных сведений об абонентах, как описано в документе «1С:Облачная подсистема Фреш», раздел «Дополнительные сведения об абонентах». И включить в состав дополнительных сведений сведения, указанные выше в разделе 1 «Общие сведения».

3.2. Наименование публичного идентификатора абонента

Зададим для публичного идентификатора абонента наименование ИНН:

  1. Администратор сервиса должен в менеджере сервиса вызвать настройки конфигурации: Главное → Настройки конфигурации.
  2. Перейти на вкладку Абоненты, а в ней на вложенную вкладку Регистрация.
  3. В поле Заголовок публичного идентификатора абонента указать значение ИНН.
  4. Нажать кнопку Записать и закрыть.

3.3. Правило для заполнения сведений о юридических лицах на основе данных сервиса 1С:Контрагент

  1. Администратор сервиса должен в менеджере сервиса выполнить команду: Интеграция → Правила трансляции объектов.
  2. Нажать кнопку Создать и создать правило трансляции объектов с параметрами:
    • Наименование = Заполнение с помощью 1С:Контрагент (ЮЛ)
    • Тип объекта = Абоненты (Справочник)
    • Операция = Загрузка
    • Перед обработкой =

      Если СтрДлина(Источник.public_id) = 10 Тогда
          Соединение = Новый HTTPСоединение("api.orgregister.1c.ru", 443, "login", "password", , 60, Новый ЗащищенноеСоединениеOpenSSL);
          Запрос = Новый HTTPЗапрос(СтрШаблон("rest/corporation/v1/find-corporation-by-inn?inn=%1", Источник.public_id));
          ИменаСвойствДат = СтрРазделить("registrationDate,fromDate,effectiveDate", ",");
          РезультатЗапроса = Соединение.ВызватьHTTPМетод("GET", Запрос);
          Если РезультатЗапроса.КодСостояния = 200 Тогда
              Источник = УниверсальнаяИнтеграция.СтруктураИзСтрокиJSON(РезультатЗапроса.ПолучитьТелоКакСтроку(), ИменаСвойствДат);
          Иначе
              СтандартнаяОбработка = Ложь;
          КонецЕсли;
      Иначе
          СтандартнаяОбработка = Ложь;
      КонецЕсли;;

      (здесь вместо login и password надо указать действительные логин и пароль Портала 1С:ИТС для доступа  к сервису  1С:Контрагент).

  3. На вкладке Правила обработки задать следующие правила:
    • ИНН абонента
      • Из свойства JSON-объекта:
      • inn
    • КПП 
      • Из свойства JSON-объекта:
      • kpp.value
    • Наименование организации
      • Из свойства JSON-объекта:
      • name.fullName
    • Город

      • Из выражения на встроенном языке:

        Заполнение поля "Город"  Развернуть
        Если Источник.Свойство("address") Тогда
          Если Источник.address.Свойство("city") Тогда
            Значение = Источник.address.city;
          Иначе
            Значение = ""; Запятая = ", ";
            СоставЗначения = СтрРазделить("area,areaType,comma,district,districtType,comma,city,locality,localityType", ",");
            Для Каждого Элемент из СоставЗначения Цикл
              Если Элемент = "comma" И ЗначениеЗаполнено(Значение) И Не Прав(Значение, 2) = Запятая Тогда
                Значение = Значение + Запятая;
              ИначеЕсли Источник.address.Свойство(Элемент) Тогда
                ЧастьЗначения = Источник.address[Элемент];
                Если Элемент = "area" Тогда
                  ЧастьЗначения = ТРег(ЧастьЗначения);
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Поселок Городского Типа", " пгт");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Рабочий Поселок", " рп");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Заводской Поселок", " рп");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Поселок", " п");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Республика", " Респ");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Область", " обл");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Район", " р-н");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Город", "");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Деревня", " д");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Село", " с");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Аул", " а");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Населенный Пункт", " нп");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Станица", " ст-ца");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " Улус", " у");
                  ЧастьЗначения = СтрЗаменить(ЧастьЗначения, " /Якутия/", " (Якутия)");
                КонецЕсли;
                Значение = СокрЛ(Значение + " " + ЧастьЗначения);
              КонецЕсли;
            КонецЦикла;
            Если Прав(Значение, 2) = Запятая Тогда
              Значение = Лев(Значение, СтрДлина(Значение) - 2);
            КонецЕсли;
          КонецЕсли;
          Если ЗначениеЗаполнено(Значение) Тогда
            Владелец = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Город");
            Результат = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(Значение, Истина, , Владелец);
            Если Не ЗначениеЗаполнено(Результат) Тогда
              НовоеСвойство = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
              НовоеСвойство.Наименование = Значение;
              НовоеСвойство.Владелец = Владелец;
              НовоеСвойство.Записать();
              Значение = НовоеСвойство.Ссылка;
            Иначе
              Значение = Результат;
            КонецЕсли;
          КонецЕсли;
        КонецЕсли;
    • Индекс

      • Из свойства JSON-объекта:

      • address.postalCode

    • Улица

      • Из выражения на встроенном языке:

        Если Источник.Свойство("address") И Источник.address.Свойство("street") Тогда
          Значение = Источник.address.street + " " + Источник.address.streetType;
        КонецЕсли;
    • Дом

      • Из выражения на встроенном языке:

        Если Источник.Свойство("address") И Источник.address.Свойство("house") Тогда
          Значение = ?(Источник.address.houseType = "дом", "",  Источник.address.houseType + " ") + Источник.address.house;
        КонецЕсли;
    • Корпус

      • Из выражения на встроенном языке:

        Если Источник.Свойство("address") И   Источник.address.Свойство("buildings") И Источник.address.buildings.Количество() > 0 Тогда
          Здание =  Источник.address.buildings[0];
          Значение = ?(Здание.type = "корпус", "", Здание.type  + " ") + Здание.number;
        КонецЕсли;
    • Квартира
      • Из выражения на встроенном языке:

        Если Источник.Свойство("address") И
          Источник.address.Свойство("apartments") И Источник.address.apartments.Количество() > 0 Тогда
          Апартаменты =  Источник.address.apartments[0];
          Значение = ?(Апартаменты.type = "квартира", "", Апартаменты.type + " ") + Апартаменты.number;
        КонецЕсли;
    • Контактное лицо абонента

      • Из выражения на встроенном языке:

        Если Источник.Свойство("headPersonInfo") И Источник.headPersonInfo.Свойство("director") Тогда
          ФИО = Источник.headPersonInfo.director;
          Значение = ФИО.lastName + " " + ФИО.name + ?(ФИО.Свойство("patronymic"), " " + ФИО.patronymic, "");
        КонецЕсли;

Должен получиться следующий результат:

3.4. Правило для заполнения сведений о физических лицах на основе данных сервиса 1С:Контрагент

  1. Администратор сервиса должен в менеджере сервиса выполнить команду: Интеграция → Правила трансляции объектов.
  2. Нажать кнопку Создать и создать правило трансляции объектов с параметрами:
    • Наименование =  Заполнение с помощью 1С:Контрагент (ФЛ)
    • Тип объекта = Абоненты (Справочник)
    • Операция = Загрузка
    • Перед обработкой =

      Если СтрДлина(Источник.public_id) = 12 Тогда
          Соединение = Новый HTTPСоединение("api.orgregister.1c.ru", 443, "login", "password", , 60, Новый ЗащищенноеСоединениеOpenSSL);
          Запрос = Новый HTTPЗапрос(СтрШаблон("rest/person/v1/find-person-by-inn?inn=%1", Источник.public_id));
          ИменаСвойствДат = СтрРазделить("registrationDate,fromDate,effectiveDate", ",");
          РезультатЗапроса = Соединение.ВызватьHTTPМетод("GET", Запрос);
          Если РезультатЗапроса.КодСостояния = 200 Тогда
              Источник = УниверсальнаяИнтеграция.СтруктураИзСтрокиJSON(РезультатЗапроса.ПолучитьТелоКакСтроку(), ИменаСвойствДат);
          Иначе
              СтандартнаяОбработка = Ложь;
          КонецЕсли;
      Иначе
          СтандартнаяОбработка = Ложь;
      КонецЕсли;

      (здесь вместо login и password надо указать действительные логин и пароль Портала 1С:ИТС для доступа  к сервису  1С:Контрагент).

  3. На вкладке Правила обработки задать следующие правила:
    • ИНН абонента
      • Из свойства JSON-объекта:
      • inn
    • Контактное лицо абонента
      • Из свойства JSON-объекта:
      • person.fio
    • Наименование организации
      • Из выражения на встроенном языке:

        Если Источник.Свойство("person") Тогда
          Значение = Источник.person.fio;
          Если Источник.registrationInfo.typeCode = "1" Тогда
            Значение = "ИП " + Значение;
          КонецЕсли;
        КонецЕсли;

Должен получиться следующий результат:

3.5. Правило для заполнения сведений об абонентах на основе данных приглашений

  1. Администратор сервиса должен в менеджере сервиса выполнить команду: Интеграция → Правила трансляции объектов.
  2. Нажать кнопку Создать и создать правило трансляции объектов с параметрами:
    • Наименование = Заполнение по данным приглашения
    • Тип объекта = Абоненты (Справочник)
    • Операция = Загрузка
    • Перед обработкой =

      Запрос = Новый Запрос;
      Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Т.ПриглашениеДляРегистрации ИЗ Справочник.Абоненты КАК Т ГДЕ Т.Код = &КодАбонента";
      Запрос.УстановитьПараметр("КодАбонента", Приемник.Код);
      Данные = Запрос.Выполнить().Выгрузить();
      Если Данные.Количество() > 0 Тогда
      	Приемник.ПриглашениеДляРегистрации = Данные[0].ПриглашениеДляРегистрации;
      КонецЕсли;
  3. На вкладке Правила обработки задать следующие правила:
    • Код города

      • Из выражения на встроенном языке:

        Если Приемник.ПриглашениеДляРегистрации.КонтактнаяИнформация.Количество() > 0 Тогда
          Значение = Приемник.ПриглашениеДляРегистрации.КонтактнаяИнформация[0].Представление;
          Числа = СтроковыеФункцииКлиентСервер.ЧислаИзСтроки(Значение);
          Если Числа.Количество() = 1 Тогда
            Значение = Сред(Числа[0], 2, 3);
          ИначеЕсли Числа.Количество() > 1 Тогда 
            Числа.Удалить(0);
            Значение = Лев(СтрСоединить(Числа, ""), 3);
          КонецЕсли;
        КонецЕсли;
    • Телефон
      • Из выражения на встроенном языке:

        Если Приемник.ПриглашениеДляРегистрации.КонтактнаяИнформация.Количество() > 0 Тогда
          Значение = Приемник.ПриглашениеДляРегистрации.КонтактнаяИнформация[0].Представление;
        КонецЕсли;
    • Электронная почта
      • Из выражения на встроенном языке:

        Если Не ПустаяСтрока(Приемник.ПриглашениеДляРегистрации.АдресЭлектроннойПочты) Тогда
          Значение = Приемник.ПриглашениеДляРегистрации.АдресЭлектроннойПочты;
        КонецЕсли;

Должен получиться следующий результат:

3.6. Добавление источников заполнения абонентов

  1. Администратор сервиса должен в менеджере сервиса выполнить команду: Интеграция → Источники заполнения абонентов.
  2. Нажимая кнопку Создать, добавить источники заполнения абонентов:

4. Проверка

Для проверки правил заполнения администратор сервиса может:

  1. Открыть справочник Абоненты (команда меню Обслуживание → Абоненты).
  2. Открыть любой элемент этого справочника.
  3. Перейти на вкладку Свойства
  4. Заполнить значение поля ИНН , например  7714017115
  5. Нажать кнопку Заполнить сведения.
  6. Свойства абонента будут заполнены данными организации.
  7. Закрыть элемент справочника Абоненты, не записывая сделанные изменения.
  8. Повторить действия п.п. 2–7, указав любой ИНН физического лица — индивидуального предпринимателя.

5. Порядок возврата к исходному состоянию

Для возврата к исходному состоянию достаточно удалить добавленные источники заполнения абонентов (см. раздел 3.6).