| 
    
            
         
         | 
    
  | 
ЗагрузкаФЛ: адрес записывается как АдресЗаПределамиРФ | ☑ | ||
|---|---|---|---|---|
| 
    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 находится Индекс).     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |