Разложить адрес на структуру

1. NatalkaBal 28 10.05.18 15:48 Сейчас в теме
Добрый день! Подскажите пожалуйста в почему не удается получить значения структуры Улица. ЗУП 3.1.6.5

АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(Выборка.Организация);
ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(АдресаОрганизаций, Выборка.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
СтруктураАдресаОрганизации = ЗарплатаКадры.СтруктураАдресаИзXML(ОписаниеЮридическогоАдреса.Представление, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);

Улица = СтруктураАдресаОрганизации.Улица;
По теме из базы знаний
Найденные решения
18. NatalkaBal 28 11.05.18 07:58 Сейчас в теме
Спасибо всем.
АдресаОрганизаций          = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(Выборка.Организация);
ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(АдресаОрганизаций, Выборка.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
СтруктураАдресаОрганизации = ЗарплатаКадры.СтруктураАдресаИзXML(ОписаниеЮридическогоАдреса.ЗначенияПолей, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);

Улица = СтруктураАдресаОрганизации.Улица;



Надо было вот это значение ОписаниеЮридическогоАдреса.ЗначенияПолей раскладывать по структуре
гаврюша; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Voffka 10.05.18 16:00 Сейчас в теме
Я бы в отладчике посмотрел.
3. Healer 1 10.05.18 16:13 Сейчас в теме
А зачем пересоздавать структуру адреса из представления, когда у Вас уже есть структура с адресом "ОписаниеЮридическогоАдреса "?
5. NatalkaBal 28 10.05.18 16:16 Сейчас в теме
(3)Там нет улицы. Вот какую структуру передает ОписаниеЮридическогоАдреса
Функция СтруктураПустогоАдресаОрганизации()
	
	Возврат Новый Структура("Представление,Город,ЗначенияПолей", "", "", "");
	
КонецФункции
6. Healer 1 10.05.18 16:19 Сейчас в теме
(5) Что-то не то... сейчас гляну, сек.
4. Healer 1 10.05.18 16:15 Сейчас в теме
Я думаю можно так:

АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(Выборка.Организация);
ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(АдресаОрганизаций, Выборка.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);

Улица = ОписаниеЮридическогоАдреса.Поле6;
11. NatalkaBal 28 10.05.18 16:38 Сейчас в теме
7. Healer 1 10.05.18 16:26 Сейчас в теме
Сама функция:
// Функция возвращает юридический и фактический адреса, указанной организации.
//
// Параметры:
//			Организации			- Массив ссылок или ссылка на элемент справочника Организации.
//			ДатаАктуальности	- Дата
//
// Возвращаемое значение:
//			Соответствие:
//				Ключ 		- СправочникСсылка.Организации
//				Значение 	- Соответствие
//					Ключ - СправочникСсылка.ВидыКонтактнойИнформации
//					Значение - Структура
//						Представление
//						Город
//						ЗначенияПолей
//
Функция АдресаОрганизаций(Организации, Знач ДатаАктуальности = '00010101') Экспорт
	
	ВозвращаемоеЗначение = Новый Соответствие;
	
	Если Не ЗначениеЗаполнено(ДатаАктуальности) Тогда
		ДатаАктуальности = ТекущаяДатаСеанса();
	КонецЕсли;
	
	ТипСправочникСсылкаОрганизации = Тип("СправочникСсылка.Организации");
	
	// Определение соответствия видов контактной информации в зависимости от 
	// типа объекта, содержащего контактную информацию.
	СоответствиеАдресовОрганизаций = Новый Соответствие;
	
	СоответствиеВидов = Новый Соответствие;
	СоответствиеВидов.Вставить(Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации, Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации);
	СоответствиеВидов.Вставить(Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
	
	СоответствиеАдресовОрганизаций.Вставить(ТипСправочникСсылкаОрганизации, СоответствиеВидов);
	
	ЗарплатаКадрыПереопределяемый.ДополнитьСоответствиеАдресовОрганизаций(СоответствиеАдресовОрганизаций);
	
	// Деление организаций по типу объекта, содержащего контактную информацию.
	КоллекцияПоТипам = Новый Соответствие;
			
	Если ТипЗнч(Организации) = ТипСправочникСсылкаОрганизации Тогда
		КоллекцияПоТипам.Вставить(ТипСправочникСсылкаОрганизации, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Организации));
	Иначе
		КоллекцияПоТипам.Вставить(ТипСправочникСсылкаОрганизации, Организации);
	КонецЕсли;
	
	ЗарплатаКадрыПереопределяемый.ОпределитьТипыВладельцевАдресовОрганизаций(КоллекцияПоТипам);
	
	// Получение адресов
	Для каждого КоллекцияПоТипу Из КоллекцияПоТипам Цикл
		
		Если КоллекцияПоТипу.Ключ = Тип("СправочникСсылка.Организации") Тогда
			МассивСсылок = КоллекцияПоТипу.Значение;
			СоответствиеВидовКИ = СоответствиеАдресовОрганизаций.Получить(ТипСправочникСсылкаОрганизации);
		Иначе
			МассивСсылок = ОбщегоНазначения.ВыгрузитьКолонку(КоллекцияПоТипу.Значение, "Ключ");
			СоответствиеВидовКИ = СоответствиеАдресовОрганизаций.Получить(КоллекцияПоТипу.Ключ);
		КонецЕсли;
		
		ВидыАдресов = ОбщегоНазначения.ВыгрузитьКолонку(СоответствиеВидовКИ, "Ключ");
		
		Запрос = Новый Запрос;
		Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
		
		УправлениеКонтактнойИнформацией.СоздатьВТКонтактнаяИнформация(Запрос.МенеджерВременныхТаблиц, МассивСсылок, , ВидыАдресов, ДатаАктуальности);
		
		Запрос.Текст =
			"ВЫБРАТЬ
			|	КонтактнаяИнформация.Объект КАК Объект,
			|	КонтактнаяИнформация.Вид,
			|	КонтактнаяИнформация.Представление,
			|	КонтактнаяИнформация.ЗначенияПолей
			|ИЗ
			|	ВТКонтактнаяИнформация КАК КонтактнаяИнформация
			|ИТОГИ ПО
			|	Объект";
			
		ВыборкаОрганизаций = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаОрганизаций.Следующий() Цикл
			
			СоответствиеАдресовОрганизации = Новый Соответствие;
			ВыборкаПоВидам = ВыборкаОрганизаций.Выбрать();
			Пока ВыборкаПоВидам.Следующий() Цикл
				
				СтруктураАдреса = СтруктураПустогоАдресаОрганизации();
				ЗаполнитьЗначенияСвойств(СтруктураАдреса, ВыборкаПоВидам);
				
				АдресСтруктура = ЗарплатаКадры.СтруктураАдресаИзXML(
					ВыборкаПоВидам.ЗначенияПолей, ВыборкаПоВидам.Вид);
					
				Сокращение = "";
				Если АдресСтруктура.Свойство("Город") И НЕ ПустаяСтрока(АдресСтруктура.Город) Тогда
					СтруктураАдреса.Город = АдресСтруктура.Город;
					АдресСтруктура.Свойство("ГородСокращение", Сокращение);
				ИначеЕсли АдресСтруктура.Свойство("НаселенныйПункт") И НЕ ПустаяСтрока(АдресСтруктура.НаселенныйПункт) Тогда
					СтруктураАдреса.Город = АдресСтруктура.НаселенныйПункт;
					АдресСтруктура.Свойство("НаселенныйПунктСокращение", Сокращение);
				ИначеЕсли АдресСтруктура.Свойство("Регион") И НЕ ПустаяСтрока(АдресСтруктура.Регион) Тогда
					СтруктураАдреса.Город = АдресСтруктура.Регион;
					АдресСтруктура.Свойство("РегионСокращение", Сокращение);
				КонецЕсли; 
				
				Если НЕ ПустаяСтрока(СтруктураАдреса.Город) И НЕ ПустаяСтрока(Сокращение) Тогда
					СтруктураАдреса.Город = Сокращение + ". " + Лев(СтруктураАдреса.Город, СтрДлина(СтруктураАдреса.Город) - СтрДлина(Сокращение) - 1);
				КонецЕсли; 
				
				ВидАдреса = СоответствиеВидовКИ.Получить(ВыборкаПоВидам.Вид);
				СоответствиеАдресовОрганизации.Вставить(ВидАдреса, СтруктураАдреса);
				
			КонецЦикла; 
			
			Если КоллекцияПоТипу.Ключ = Тип("СправочникСсылка.Организации") Тогда
				СсылкаНаОрганизацию = ВыборкаОрганизаций.Объект;
			Иначе
				СсылкаНаОрганизацию = КоллекцияПоТипу.Значение.Получить(ВыборкаОрганизаций.Объект);
			КонецЕсли;
			ВозвращаемоеЗначение.Вставить(СсылкаНаОрганизацию, СоответствиеАдресовОрганизации);
			
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат ВозвращаемоеЗначение;
	
КонецФункции
Показать
8. Healer 1 10.05.18 16:27 Сейчас в теме
Посмотрите, в регистре сведений "КонтактнаяИнформация" поля заполнены корректно (в частности, "Поле6")?
10. NatalkaBal 28 10.05.18 16:35 Сейчас в теме
(8)нет такова регистра в 3.1
12. Healer 1 10.05.18 16:59 Сейчас в теме
(10) А, точно, ради возможности сериализации в ЗУП 3.1 вместо регистра сведений "КонтактнаяИнформация" сделали таб. части "КонтактнаяИнформация". Соответственно, посмотрите, корректно ли заполнена колонка "ЗначенияПолей" этой таб. части.
9. Voffka 10.05.18 16:28 Сейчас в теме
Вы весь модуль не выкладывайте? )
13. Healer 1 10.05.18 17:00 Сейчас в теме
(9) Я аккуратненько, только маленькую функция О;-)
14. Healer 1 10.05.18 17:02 Сейчас в теме
В общем, втыкайте точку остановки в функцию "АдресаОрганизаций", смотрите внимательно и морщите мозг! %)
15. NatalkaBal 28 10.05.18 17:11 Сейчас в теме
(14)ОписаниеЮридическогоАдреса .Представление дает полный юридический адрес строкой, но когда хочу ее через ЗарплатаКадры.СтруктураАдресаИзXML прогнать, не дает
16. Healer 1 10.05.18 17:38 Сейчас в теме
(15) Ну, правильно не даёт: Вы же на передаёте на парсинг простую строку педставления адреса, а не XML-структуру.
NatalkaBal; +1 Ответить
17. Healer 1 10.05.18 17:40 Сейчас в теме
(15) У Вас при трассировке в "ЗначенияПолей" что? В самом элементе (к которому адрес относится) эта колонка заполнена?
NatalkaBal; +1 Ответить
18. NatalkaBal 28 11.05.18 07:58 Сейчас в теме
Спасибо всем.
АдресаОрганизаций          = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(Выборка.Организация);
ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(АдресаОрганизаций, Выборка.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
СтруктураАдресаОрганизации = ЗарплатаКадры.СтруктураАдресаИзXML(ОписаниеЮридическогоАдреса.ЗначенияПолей, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);

Улица = СтруктураАдресаОрганизации.Улица;



Надо было вот это значение ОписаниеЮридическогоАдреса.ЗначенияПолей раскладывать по структуре
гаврюша; +1 Ответить
Оставьте свое сообщение

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