![]() |
|
ЗагрузкаФЛ: адрес записывается как АдресЗаПределамиРФ | ☑ | ||
---|---|---|---|---|
0
dft2014
22.04.14
✎
19:34
|
Загружаю новых физ.лиц в спр.ФЛ. При записи адреса, данные записываются как АдресЗаПределамиРФ, хотя это не так. Подскажите, где ошибка? Вот код:
Функция СоздатьФЛ(ТекСтрока) СпрФЛ = Справочники.ФизическиеЛица.СоздатьЭлемент(); СпрФЛ.Наименование = ТекСтрока.FIO; СпрФЛ.ИНН = ТекСтрока.INN; СпрФЛ.Записать(); // АДРЕСА КонтактИнформАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00001"); // адрес для информирования КонтактЮрАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002"); // адрес по прописке КонтактФактАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00003"); // адрес проживания КонтактИнформАдресКонтактногоЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00015"); // адрес регистрации Если ТекСтрока.REG_ADDR_KLADR <> "" Тогда л_СтруктураАдреса = РазобратьАдрес(ТекСтрока.REG_ADDR_KLADR); КонецЕсли; мНаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); Если мНаборЗаписей.Количество() = 0 Тогда мНаборЗаписей.Отбор.Объект.Значение = СпрФЛ.Ссылка; мНаборЗаписей.Отбор.Объект.Использование = Истина; мНаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес; мНаборЗаписей.Отбор.Тип.Использование = Истина; мНаборЗаписей.Отбор.Вид.Значение = КонтактЮрАдресФизЛица; мНаборЗаписей.Отбор.Вид.Использование = Истина; ЗаписьНабора = мНаборЗаписей.Добавить(); ЗаписьНабора.Объект = СпрФЛ.Ссылка; ЗаписьНабора.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьНабора.Вид = КонтактЮрАдресФизЛица; Если Флаг_ФорматКЛАДР Тогда ЗаписьНабора.Поле1 = л_СтруктураАдреса.Индекс; ЗаписьНабора.Поле2 = л_СтруктураАдреса.Регион; ЗаписьНабора.Поле3 = л_СтруктураАдреса.Район; ЗаписьНабора.Поле4 = л_СтруктураАдреса.Город; ЗаписьНабора.Поле5 = л_СтруктураАдреса.НасПункт; ЗаписьНабора.Поле6 = л_СтруктураАдреса.Улица; ЗаписьНабора.Поле7 = СокрЛП(л_СтруктураАдреса.Дом); ЗаписьНабора.Поле8 = СокрЛП(л_СтруктураАдреса.Корпус); ЗаписьНабора.Поле9 = СокрЛП(л_СтруктураАдреса.Квартира); ЗаписьНабора.Представление = ЗаписьНабора.Поле1+?(СокрЛП(ЗаписьНабора.Поле2)="","",", "+ЗаписьНабора.Поле2)+ ?(СокрЛП(ЗаписьНабора.Поле3)="","",", "+ЗаписьНабора.Поле3)+ ?(СокрЛП(ЗаписьНабора.Поле4)="","",", "+ЗаписьНабора.Поле4)+ ?(СокрЛП(ЗаписьНабора.Поле5)="","",", "+ЗаписьНабора.Поле5)+ ?(СокрЛП(ЗаписьНабора.Поле6)="","",", "+ЗаписьНабора.Поле6)+ ?(СокрЛП(ЗаписьНабора.Поле7)="","",", дом № "+ЗаписьНабора.Поле7)+?(СокрЛП(ЗаписьНабора.Поле8)="","",", корпус "+ЗаписьНабора.Поле8)+?(СокрЛП(ЗаписьНабора.Поле9)="","",", кв."+ЗаписьНабора.Поле9); Иначе ЗаписьНабора.Представление = ТекСтрока.REG_ADDR_KLADR; КонецЕсли; мНаборЗаписей.Записать(Истина); КонецЕсли; СпрФЛ.Записать(); КонецФункции |
|||
1
Базис
naïve
22.04.14
✎
19:37
|
ВидыКонтактнойИнформации - предопределённые элементы.
Проверяй каждое поле на соответствие типа. И, ЕМНИП, есть флаг, определяющий - надо ли читать структурированные поля или только текстовое представление. Готовый вариант не искал в конфе? |
|||
2
Wobland
22.04.14
✎
19:37
|
>данные записываются как АдресЗаПределамиРФ
в куда записываются? |
|||
3
echo77
22.04.14
✎
19:39
|
По-моему, если индекса нет, то адрес трактуется как "за пределами РФ"
|
|||
4
echo77
22.04.14
✎
19:47
|
+(3) точнее проверяется что индекс содержит все цифры
//Функция для объекта редактирования определяет Российский это адрес или нет Функция ОпределитьДляОбъектаРоссийскийАдрес(ОбъектРедактирования) Экспорт Если (НЕ ПустаяСтрока(ОбъектРедактирования.Поле1)) Тогда // если хотя бы один символ не цифра, то это точно не индекс МожетБытьИностарнныйАдрес = ЕстьНеЦифрыВСтроке(ОбъектРедактирования.Поле1); // так, если есть хоть одна не цифра - это иностранный адрес, а если все цивры то Российский Возврат НЕ МожетБытьИностарнныйАдрес; КонецЕсли; // Сравниваем представления ЭтоРоссийскийАдрес = (ПолучитьПредставлениеАдреса(ОбъектРедактирования) = ОбъектРедактирования.Представление); Возврат ЭтоРоссийскийАдрес; КонецФункции |
|||
5
dft2014
22.04.14
✎
19:47
|
(3) Индекс есть.
|
|||
6
Wobland
22.04.14
✎
19:48
|
>МожетБытьИностарнныйАдрес
типовая? |
|||
7
dft2014
22.04.14
✎
19:53
|
Нет, наш российский адрес (г.Омск). ЗУП типовая.
|
|||
8
dft2014
22.04.14
✎
20:03
|
Сам адрес (который загружаю), до загрузки у меня записан так:
,305029,Курская обл,,Курск г,,Карла Маркса ул,33/41,,14 |
|||
9
dft2014
22.04.14
✎
20:10
|
В таком формате, тоже не загружает:
305029, Курская обл, Курск г, Карла Маркса ул, д. 33/41, кв. 14 |
|||
10
Wobland
22.04.14
✎
20:11
|
а почему я на мисте не могу точку останова поставить и посмотреть в переменные? миста поломалась?
|
|||
11
dft2014
22.04.14
✎
20:13
|
Все пишет в АдресЗаПределамиРФ, вот:
http://s020.radikal.ru/i716/1404/07/7be5226433ab.jpg |
|||
12
Wobland
22.04.14
✎
20:14
|
(11) не открываются свойства. не видно, по какому принципу оно так решает
|
|||
13
dft2014
22.04.14
✎
20:39
|
(10) Базовая конфигурация, не дает отладчик запустить...
|
|||
14
Wobland
22.04.14
✎
20:42
|
(13) думаешь, дело в базовости?
|
|||
15
Wobland
22.04.14
✎
20:45
|
на этом свете есть люди, я уверен, могущие разобраться в вопросе по одному лишь модулю формы, даже не запуская пофигуратор
|
|||
16
Zypse
22.04.14
✎
20:45
|
Вот как определяет:
ПроизвольныйАдрес = (УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(ЭтотОбъект) <> Представление); ЗЫ: что-то в твоем представлении не так... |
|||
17
Wobland
22.04.14
✎
20:48
|
ну ладно. с одним лишь модулем формы я погорячился. но без мозга всё равно ничего не выйдет
|
|||
18
Wobland
22.04.14
✎
20:49
|
(16) а вообще не похоже на русский/нерусский адрес
|
|||
19
dft2014
22.04.14
✎
20:50
|
Ничего не понимаю, что не так! Вот еще выкладываю код функции, она тоже вызывается в моем коде в (0):
Функция РазобратьАдрес(л_Адрес) // 1 поле - страна // 2 поле - индекс // 3 поле регион // 4 поле район // 5 поле город // 6 поле населенный пункт // 7 поле улица // 8 поле дом // 9 поле корпус // 10 поле квартира лСтр = Новый Структура; // страна Страна = "Россия"; Если Найти(л_Адрес,",")=1 Тогда лСтр.Вставить("Страна",Страна); ИначеЕсли Найти(л_Адрес,",")>0 Тогда Страна = Лев(л_Адрес,Найти(л_Адрес,",")-1); лСтр.Вставить("Страна",Страна); Иначе // не формат Возврат лСтр; КонецЕсли; // индекс Индекс = ""; л_Адрес1 = Сред(л_Адрес,Найти(л_Адрес,",")+1); Индекс = Лев(л_Адрес1,Найти(л_Адрес1,",")-1); лСтр.Вставить("Индекс",Индекс); // регион Регион = ""; л_Адрес2 = Сред(л_Адрес1,Найти(л_Адрес1,",")+1); Регион = Лев(л_Адрес2,Найти(л_Адрес2,",")-1); лСтр.Вставить("Регион",Регион); // район Район = ""; л_Адрес3 = Сред(л_Адрес2,Найти(л_Адрес2,",")+1); Район = Лев(л_Адрес3,Найти(л_Адрес3,",")-1); лСтр.Вставить("Район",Район); // Город Город = ""; л_Адрес4 = Сред(л_Адрес3,Найти(л_Адрес3,",")+1); Город = Лев(л_Адрес4,Найти(л_Адрес4,",")-1); лСтр.Вставить("Город",Город); // Насел. пункт НасПункт = ""; л_Адрес5 = Сред(л_Адрес4,Найти(л_Адрес4,",")+1); НасПункт = Лев(л_Адрес5,Найти(л_Адрес5,",")-1); лСтр.Вставить("НасПункт",НасПункт); // Улица Улица = ""; л_Адрес6 = Сред(л_Адрес5,Найти(л_Адрес5,",")+1); Улица = Лев(л_Адрес6,Найти(л_Адрес6,",")-1); лСтр.Вставить("Улица", Улица); // Дом Дом = ""; л_Адрес7 = Сред(л_Адрес6,Найти(л_Адрес6,",")+1); Дом = Лев(л_Адрес7,Найти(л_Адрес7,",")-1); лСтр.Вставить("Дом", Дом); // Корпус Корпус = ""; л_Адрес8 = Сред(л_Адрес7,Найти(л_Адрес7,",")+1); Корпус = Лев(л_Адрес8,Найти(л_Адрес8,",")-1); лСтр.Вставить("Корпус", Корпус); // Квартира Квартира = ""; л_Адрес9 = Сред(л_Адрес8,Найти(л_Адрес8,",")+1); Квартира = л_Адрес9; лСтр.Вставить("Квартира", Квартира); Возврат лСтр; // ,111111,область,,город,,улица,дом,корпус,квартира КонецФункции |
|||
20
Wobland
22.04.14
✎
20:52
|
(19) абыдно, правда? радиобаттон на форме есть, а когда он принимает то или иное значение, не понятно
|
|||
21
Zypse
22.04.14
✎
21:00
|
(19) я в (16) уже указал условие по которому меняется радиобатон. В (0) пиши
ЗаписьНабора.Представление = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(ЗаписьНабора) |
|||
22
Wobland
22.04.14
✎
21:05
|
(21) а это точно про радиобаттон а не про какой-нибудь адрес в формате КЛАДР?
|
|||
23
mdocs
22.04.14
✎
21:09
|
укурки из 1с когда-то решили что если адрес не по формату, то он за пределами РФ. Типичная логика методистов 1с. В новых конфах подход слегка по адекватнее вроде.
|
|||
24
Zypse
22.04.14
✎
21:10
|
(22) про радиобатон. Обработка "РедактированиеКонтактнойИнформации". Форма "ФормаЗаписиАдреса"
|
|||
25
Wobland
22.04.14
✎
21:12
|
(23) (24) вот и ладненько. уже прошло 26 минут ;)
|
|||
26
mdocs
22.04.14
✎
21:19
|
(19) Укурки когда писали способ хранения адреса забыли про страну, потом ее начали пихать в Поле1 если адрес за пределами и совсем не указывать если адрес российский (в этом случае в Поле1 находится Индекс).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |