Очень часто сталкивался с тем, что в базах Альфа-Авто 6, Альфа-Авто 5 неверно заполнены данные по контрагентам, особенно формы собственности - Юр.лицо или Индивидуальный предприниматель.
Обработка позволяет заполнять реквизиты контрагента из сервиса DaData.ru без использования подписки ИТС.
Краткие инструкции:
Обе обработки практически идентичны, и это относится к обеим.
Сначала необходимо зарегистрироваться на DaData.ru и получить API ключ ("APIКлючDaData").
ВрТокен = ЗаявкиПО.гтсКонстантыЕдинственноеЗначениеПоИмениПредопределенного("APIКлючDaData");
"APIКлючDaData" - хранится в специальном справочнике "Константы" и получается оттуда. Можно/нужно изменить на собственный код получения.
Подключение к Альфа-Авто 5 - загружаем в конфигурацию, в раздел "Обработки".
В справочник "Контрагенты" добавляем реквизит "ПрошелПроверкуИНН".
Подключение к Альфа-Авто 6 - создаем расширение, загружаем в раздел "Обработки".
В расширение добавляем справочник "Контрагенты" и добавляем реквизит "ПрошелПроверкуИНН".
Это необходимо для групповой обработки, чтобы повторно не запрашивать данные. А также для сотрудников, чтобы было видно, что контрагент проверен.
Как это работает.
Групповая обработка.
Вызывается:
- для Альфа-Авто 5 - "Сервис" -> "Все операции" -> "Обработка",
- для Альфа-Авто 6 - "Функции технического специалиста" -> "Обработки"
=> "_Проверка Контрагентов по ИНН".

Если заполнено количество - получаются первые N контрагентов для проверки и перезаполнения. Полезно для отладки/тестирования. Если не заполнен - все.
При нажатии кнопки "Получить данные" получаются данные из сервиса DaData и перезаписываются в карточку контрагента.
Не забываем учитывать, что при бесплатной регистрации DaData ограничение - 10000 обращений в сутки.
Колонка "Ответ JSON" содержит полные "сырые" данные ответа сервиса.
Колонка "Данные контрагента" - нормализованные для Альфа-Авто.

Кнопка в карточке контрагента.
Проверка/перезаполнение данных, сохранение контактных данных.
До:

Вопрос по заполнению:

После:

Аналогично для новых Контрагентов, нужно внести ИНН и нажать кнопку.

Чтобы работало, на форме элемента необходимо добавить кнопку и прописать соответствующий код:
&НаКлиенте
Процедура ПроверитьЗаполнитьПоИНННажатие(Элемент)
РезультатПроверкиСтрукт = АА5_ПроверитьЗаполнитьПоИННПослеНаСервере();
Если РезультатПроверкиСтрукт.Ошибка <> "" Тогда
ПроцедурыОбщегоНазначенияКлиентСервер.СообщитьПользователю(РезультатПроверкиСтрукт.Ошибка);
Возврат;
Иначе
РезультатСтрукт = РезультатПроверкиСтрукт.Результат;
КонецЕсли;
Если РезультатСтрукт <> Неопределено Тогда
Режим = РежимДиалогаВопрос.ДаНетОтмена;
тхтДанные = "";
Для каждого КлючИЗначение Из РезультатСтрукт Цикл
тхтДанные = тхтДанные + КлючИЗначение.Ключ + " : " + КлючИЗначение.Значение + Символы.ПС;
КонецЦикла;
тхтДанные = тхтДанные + Символы.ПС + "`ДА` - Заменить всё." + Символы.ПС + "`НЕТ` - Заменить всё, кроме `Наименования`."+ Символы.ПС + "`Отмена` - Ничего не заменять.";
Оповещение = Новый ОписаниеОповещения("АА5_ПослеЗакрытияВопросаПосле", ЭтаФорма, РезультатСтрукт);
ПоказатьВопрос(Оповещение, тхтДанные, Режим, 0,,"Сделайте выбор.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АА5_ПроверитьЗаполнитьПоИННПослеНаСервере()
ИНН = СокрЛП(ЭтотОбъект.ИНН);
Если ПустаяСтрока(ИНН) Тогда
РезультатПроверкиСтрукт = Новый Структура;
РезультатПроверкиСтрукт.Вставить("Ошибка","ИНН не заполнен!");
Иначе
ОбработкаПроверки = Обработки.ПроверкаКонтрагентовПоИНН.Создать();
РезультатПроверкиСтрукт = ОбработкаПроверки.РезультатПроверкиПоИННСтруктура(ИНН);
ОбработкаПроверки = Неопределено;
КонецЕсли;
Возврат РезультатПроверкиСтрукт;
КонецФункции
&НаКлиенте
Процедура АА5_ПослеЗакрытияВопросаПосле(Результат, Параметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда
Если ЗначениеЗаполнено(ЭтотОбъект.Наименование) Тогда
Параметры.Удалить("Наименование");
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
Если ЭтотОбъект.Ссылка.Пустая() Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры);
ПроцедурыОбщегоНазначенияКлиентСервер.СообщитьПользователю("Контрагент не записан, адрес и контактная информция не заполнены. После записи нажмите кнопку проверки ещё раз.");
Иначе
Если Параметры.ФормаСобственности = ПредопределенноеЗначение("Перечисление.ФормыСобственности.ЮридическоеЛицо") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект,Параметры,,"ИНН, КПП");
Иначе
ЗаполнитьЗначенияСвойств(ЭтотОбъект,Параметры,,"ИНН");
КонецЕсли;
АдресЮридический = "";
Если Параметры.Свойство("ПолныйАдрес") Тогда
АдресЮридический = Параметры.ПолныйАдрес;
КонецЕсли;
КонтИнформация = "";
Если Параметры.Свойство("Фио") Тогда
КонтИнформация = Параметры.Фио;
Если Параметры.Свойство("Должность") И ЗначениеЗаполнено(КонтИнформация) Тогда
КонтИнформация = Параметры.Должность + " " + КонтИнформация;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(АдресЮридический) Тогда
АА5_ЗаписатьВРегистрКонтИнфоАА5После(АдресЮридический, "Адрес Юридический")
КонецЕсли;
Если ЗначениеЗаполнено(КонтИнформация) Тогда
АА5_ЗаписатьВРегистрКонтИнфоАА5После(КонтИнформация, "Контактная информация")
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АА5_ЗаписатьВРегистрКонтИнфоАА5После(ДанныеЗаписи, ВидДанных)
РегЗапись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
РегЗапись.Объект = ЭтотОбъект.Ссылка;
Если ВидДанных = "Адрес Юридический" Тогда
РегЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
РегЗапись.Вид = Справочники.ВидыКонтактнойИнформации.АдресЮридический;
Иначе
РегЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Другое;
РегЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ПрочаяИнформация;
КонецЕсли;
РегЗапись.Представление = ДанныеЗаписи;
РегЗапись.Комментарий = "По результатам проверки через интернет сервис.";
Попытка
РегЗапись.Записать(Истина);
ПроцедурыОбщегоНазначенияКлиентСервер.СообщитьПользователю("Записан " + ВидДанных + ", см. на вкладке `Контактная информация`");
Исключение
ПроцедурыОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось записать " + ВидДанных + ".");
КонецПопытки;
КонецПроцедуры
В Альфа-Авто 6 в коде заменить "ЭтотОбъект" на "Объект".
Процедура "АА5_ЗаписатьВРегистрКонтИнфоАА5После" для Альфа-Авто 6 не подойдет (можно удалить), т.к. не использовалось.
Уверен, что при небольших модификациях, подойдёт и для других конфигураций.
Проверено и работает на следующих конфигурациях и релизах:
- Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5.0, релиз 5.1.12.02
- Альфа-Авто: Автосалон+Автосервис+Автозапчасти Корп. Редакция 6, релиз 6.1.15.14