Программное создание физлица с данными ФИАС (1С.Документооборот)

1. ovadia 02.12.20 13:00 Сейчас в теме
Прошу помочь разобраться. Хотелось бы при программном создании физлица в справочнике физлиц заполнить программно данные его адреса в формате ФИАС. Даже не представляю, как это сделать. Релиз 1С.Документооборот КОРП (2.1.25.5).
Найденные решения
15. laperuz 47 03.12.20 05:10 Сейчас в теме
(14) А почему
Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента
?

Должно быть
Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 26 02.12.20 13:05 Сейчас в теме
а где программа должна взять данные его адреса?
3. ovadia 02.12.20 13:13 Сейчас в теме
(2) Сейчас пока данные адреса содержатся в обычном текстовом файле (просто строка, через запятую). Потом планируется будет xml.
4. user633533_encantado 11 02.12.20 13:20 Сейчас в теме
(3) Вот статья о том, как строку в код фиас раскладывают. https://habr.com/ru/company/hflabs/blog/333736/
5. ovadia 02.12.20 13:23 Сейчас в теме
(4) Допустим я разложил строку в формат ФИАС. В самой конфигурации, где это хранится, куда мне записывать строку фиас?
6. laperuz 47 02.12.20 13:31 Сейчас в теме
(5) Курите модули РаботаСАдресами и УправлениеКонтактнойИнформацией. Сохраняется обычно в ТЧ Контактная информация справочника.
Я бы на вашем месте руками записал адрес у физлица и запросом к этой ТЧ посмотрел в каком виде там все хранится.
7. laperuz 47 02.12.20 13:36 Сейчас в теме
(5)Например см. УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению() - из строки во внутренний JSON преобразует, а потом УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию() - добавляет контактную информацию из JSON объекту
8. ovadia 02.12.20 13:45 Сейчас в теме
9. ovadia 02.12.20 16:59 Сейчас в теме
(7)
УправлениеКонтактнойИнформацией


Немного разобрался, но не совсем. Получилось программно добавить контактный телефон физлица. Однако после открытия формы этого физлица, поле с номером телефона пусто!

Смотрю в отладчике:

При открытии вызывается метод УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект) и далее ПриЧтенииНаСервере(Форма, Объект, ИмяЭлементаДляРазмещения = "ГруппаКонтактнаяИнформация").

Находясь в теле ПриЧтенииНаСервере смотрю Объект.КонтактнаяИнформация и Форма.Объект.КонтактнаяИнформация. Там всё заполнено, то есть контакты существуют.

В самом начале ПриЧтенииНаСервере идет такой код:

СписокРеквизитовФормы = Форма.ПолучитьРеквизиты();
	
	ПервыйЗапуск = Истина;
	Для Каждого Реквизит Из СписокРеквизитовФормы Цикл
		Если Реквизит.Имя = "ПараметрыКонтактнойИнформации" И ТипЗнч(Форма.ПараметрыКонтактнойИнформации) = Тип("Структура") Тогда
			ПервыйЗапуск = Ложь;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ПервыйЗапуск Тогда
		Возврат;
	КонецЕсли;
	
	Параметры = ПараметрыКонтактнойИнформацииФормы(Форма.ПараметрыКонтактнойИнформации, ИмяЭлементаДляРазмещения);
Показать


СписокРеквизитовФормы почему-то не содержит контактной информации -- "ПараметрыКонтактнойИнформации". Поэтому происходит выход из процедуры. И наверное поэтому параметры формы не заполняются при её открытии.

Не понимаю, как открыть форму с заполненными полями контактов?
10. laperuz 47 02.12.20 17:03 Сейчас в теме
(9) А у справочника вызываются при создании формы методы из этих общих модулей?
Например вот ЗУП 3.1, там все реквизиты работы с контактной информацией создаются программно в ПриСозданииНаСервере():

	// СтандартныеПодсистемы.КонтактнаяИнформация
	ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации();
	ДополнительныеПараметры.ИмяЭлементаДляРазмещения = "ГруппаКонтактнаяИнформация";
	ДополнительныеПараметры.ПоложениеЗаголовкаКИ = ПоложениеЗаголовкаЭлементаФормы.Лево;
	
	УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, ФизическоеЛицо, ДополнительныеПараметры);
	УправлениеКонтактнойИнформациейЗарплатаКадры.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация


Единственное, что есть на форме, это Группа с именем ГруппаКонтактнаяИнформация
11. user_2010 954 02.12.20 17:06 Сейчас в теме
(9) с адресом два поля - Представление и XML - чтобы отображалось - нужно оба поля заполнить. Возможно и с телефоном также.
12. ovadia 02.12.20 17:27 Сейчас в теме
(11) Представление заполнено. См. скрин.
Прикрепленные файлы:
13. user_2010 954 02.12.20 17:43 Сейчас в теме
(12) давно тоже загружала контактные данные, в частности адреса... там какая-то особенность есть...
ХML правильно заполнен? Если открыть, нажав на три точки - там все корректно отображается? Важно правильно заполнить - чтобы соответствовало структуре.
Заполните руками кому-нибудь телефон/адрес и посмотрите как программа заполнит эти поля/реквизиты.
14. ovadia 02.12.20 22:04 Сейчас в теме
Не знаю. Может я что-то сделал не так или недоделал, когда создавал новый элемент справочника физлиц. Посмотрите. Как я уже писал выше, потом при открытии формы, контакты можно найти в Объект.КонтактнаяИнформация и Форма.Объект.КонтактнаяИнформация. И там вроде всё корректно (в xml и json строках). Однако в самой форме данных нет, то есть поля формы пустые.

   
newФЛ = Справочники.ФизическиеЛица.СоздатьЭлемент();
		newФЛ.Наименование	= s_FIO;
		newФЛ.ГруппаДоступа	= Cправочники.ГруппыДоступаФизическихЛиц.НайтиПоНаименованию("Контрагенты");
		newФЛ.Записать(); //записываем сейчас, чтобы получить Ссылку
		
		////////////////////////////////////////
		//START работа с контактной информацией
		////////////////////////////////////////
		
		//добавление телефона в контакты
		ТелефонСтруктура = Новый Структура;
		ТелефонСтруктура.Вставить("Представление",  "+7 (123) 456-78-95");
		ТелефонСтруктура.Вставить("Комментарий",  	"тестовый номер 2");
		ТелефонСтруктура.Вставить("КодСтраны",     	"7");
		ТелефонСтруктура.Вставить("КодГорода",     	"123");
		ТелефонСтруктура.Вставить("НомерТелефона", 	"456-78-95");
			
		ТелефонXML 	= УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ТелефонСтруктура,"", Перечисления.ТипыКонтактнойИнформации.Телефон);
		ТелефонJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонXML);

		УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(newФЛ.Ссылка, ТелефонJSON, Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента, ТекущаяДата(), Ложь);

Показать
15. laperuz 47 03.12.20 05:10 Сейчас в теме
(14) А почему
Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента
?

Должно быть
Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица
Прикрепленные файлы:
16. ovadia 03.12.20 14:05 Сейчас в теме
(15)
Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица

Спасибо за подсказку. Только в 1С.Документооборот КОРП чуть по другому называется реквизит. Нужно:
Справочники.ВидыКонтактнойИнформации.МобильныйТелефонФизическогоЛица

Теперь работает ))
17. laperuz 47 03.12.20 14:22 Сейчас в теме
(16) Отлично) Только совсем маленькое замечание по коду для оптимизации, ДобавитьКонтактнуюИнформацию в качестве первого параметра может принимать как ссылку, так и объект, я бы передавал туда объект newФЛ, а после этого уже newФЛ.Записать(); иначе получается запись объекта 2 раза происходит)
18. ovadia 03.12.20 14:26 Сейчас в теме
(17) Правильно понимаю, что достаточно передать в качестве параметра newФЛ и тогда уже не надо вообще строки newФЛ.Записать(). Вроде бы ДобавитьКонтактнуюИнформацию содержит внутри запись объекта. Так?
19. laperuz 47 03.12.20 14:35 Сейчас в теме
(18)Нет, там в описании метода сказано:
Если передан объект, то контактная
// информация будет добавлена без записи. Для сохранения изменений объект
// необходимо будет записать отдельно.
20. ovadia 03.12.20 14:38 Сейчас в теме
(19) Ах, да. Увидел. Спасибо!
21. ovadia 03.12.20 18:34 Сейчас в теме
(17) Еще такой вопрос. Если добавлять подобным способом сведения об адресе, то оказывается, что он будет введен в свободной форме. Его нельзя будет проверить по кнопке "Проверить заполнение". А нужно, чтобы осуществлялась проверка на соответствие адреса формату ФИАС. Как быть в этом случае?
22. laperuz 47 03.12.20 18:57 Сейчас в теме
(21) У меня работает например так.
Адрес вот в таком формате:
РОССИЯ, 334038, Иркутская обл, Иркутский муниципальный район, Молодежный п, Ангарская ул, дом 15, квартира 2


АдресJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Адрес, Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица);
	УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ФЛ, АдресJSON, Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица, ТекущаяДата(), Истина);
23. ovadia 03.12.20 21:47 Сейчас в теме
(22) В том и дело, что у Вас показан пример ввода адреса в свободной форме, а не в фиксированном формате ФИАС.

В Вашем примере адрес будет введен в общее поле. При нажатии на кнопку "Проверить заполнение" будет информационное окно о невозможности провести проверку. Это говорит о том, что предложенным способом адрес введен не корректно, согласно ФИАС. См. скрин 1.

Корректный же адрес будет отображаться в форме по другому (все данные адреса -- город, улица, дом и т.д. будут в отдельных полях). И такой адрес пройдет проверку. См. скрин 2.

Видите разницу?

Мне как раз то и нужно сделать по второму варианту, т.е. ввести корректный адрес.
Прикрепленные файлы:
24. laperuz 47 04.12.20 04:50 Сейчас в теме
(23)Хм, забавно, действительно, я проверял не на самой свежей ЗУП, там все работало, а на актуальной не хочет
25. laperuz 47 04.12.20 09:05 Сейчас в теме
(23) Если есть подписка ИТС и подключен веб-сервис проверки адресов, можно попробовать поработать через Обработки.РасширенныйВводКонтактнойИнформации.СписокАвтоподбораНаселенногоПункта()

Для адреса выше он возвращает 2 варианта(муниципальный и административный). Муниципальный после этого проверку почему-то не проходит, а административный вроде работает нормально, но для адреса
194292, Санкт-Петербург г, 1-й Верхний пер, дом 10
например там несколько десятков вариантов подходящих.

Правда, судя по всему, наиболее подходящий всегда идет первым.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот