Имя: Пароль:
1C
1С v8
Как получить структуру адреса?
,
0 extrim-style
 
26.12.12
15:29
Использую подсистему КонтактнаяИнформация из БСП. Подскажите, как программно получить структуру адреса из строки ЮридическийАдрес? ОбщаяФорма.ВводАдреса открывается модально, экспортных функций не нашел.
1 extrim-style
 
26.12.12
15:45
Неужели нет готовой функции?
2 kumena
 
26.12.12
15:47
штатно никак, надо же с кладром состыковывать.
3 extrim-style
 
26.12.12
15:54
(2) спасибо. Очень странно звучит - т.к. нужно состыковывать с кладром, поэтому нет штатных средств).
4 kumena
 
26.12.12
15:57
(3) если я правильно понял то надо из строки адреса понять поля в которые попадет адрес. таких типовых задач нет, есть только обратные, поэтому и нет такой функции.

я такое делал, давно. пришлось повозиться поскольку не все так просто и однозначно.
5 extrim-style
 
26.12.12
16:05
(4) я заметил, что не всё так просто. Подстава от 1С...
6 extrim-style
 
26.12.12
16:07
(4) так 1ска как раз и восстанавливает адрес из строки в форме ВводАдреса.
7 kumena
 
26.12.12
16:45
(6) так она восстанавливает не из строки, а из полей регистра.
"Подстава от 1С..." - думаю что 1с тут ни при чем.
8 extrim-style
 
27.12.12
08:42
(7) восстанавливает из строки, связывая с регистром
9 extrim-style
 
27.12.12
08:45
// Получить значение определенного вида контактной информации у объекта.
//
// Параметры
//  Ссылка                  - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
//  ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации
//
// Возвращаемое значение:
//  Строка - строковое представление значения.
//
Функция ПолучитьКонтактнуюИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт
10 extrim-style
 
27.12.12
11:09
Вроде разобрался. Как-то так:

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    КонтрагентыКонтактнаяИнформация.ЗначенияПолей
       |ИЗ
       |    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
       |ГДЕ
       |    КонтрагентыКонтактнаяИнформация.Ссылка = &Спр
       |    И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)";

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

Только нужно еще в ЗначенияПолей поменять местами КодРегиона и Регион, а то он Регион неправильно ищет. Вобщем у меня задача немного другого рода, а это по сабжу.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой