Имя: Пароль:
1C
1С v8
Проверка соответствия адресов КЛАДР
0 slaaay
 
05.10.12
09:34
Есть ли такая обработка?
1 slaaay
 
05.10.12
09:35
для 8, извините не написал...
2 dva1c
 
05.10.12
09:35
(0) Соответствия - чему?
3 slaaay
 
05.10.12
09:36
ну вот есть адреса, коряво вбитые, надо проверить соответсвие с КЛАДР.
4 slaaay
 
05.10.12
09:36
мне не саму обработку, а хотя бы принцип сравнения.
5 Aleksey
 
05.10.12
09:36
(3) А что встроенной процедуры не достаточно?
6 Aleksey
 
05.10.12
09:37
(4) Открой типовую и посмотри
7 dva1c
 
05.10.12
09:38
+(6) все верно. Смотри в типовой.
8 Aleksey
 
05.10.12
09:39
например БП

СтруктураАдресаДляПроверки = РегламентированнаяОтчетность.РазложитьАдрес(ДанныеФизЛица.АдресРФ);
Если Не РегламентированнаяОтчетность.АдресСоответствуетТребованиям(СтруктураАдресаДляПроверки) Тогда
 СтрОшибки = СтрОшибки + Символы.ПС + Символы.Таб + " - указанный адрес регистрации не соответствует требованиям ФНС! Возможно, в адресе присутствуют латинские или недопустимые символы";
КонецЕсли;
9 dva1c
 
05.10.12
09:43
...или, например ЗуП

   Если ЗначениеЗаполнено(ДанныеФизЛица.АдресРФ) Тогда
       СтруктураАдресаДляПроверки = РегламентированнаяОтчетность.РазложитьАдрес(ДанныеФизЛица.АдресРФ);
       Если ПустаяСтрока(СтруктураАдресаДляПроверки.Индекс) тогда
           СтрОшибки = СтрОшибки + Символы.ПС + Символы.Таб + " - в адресе регистрации не указан индекс!";
           СтруктураАдресаДляПроверки.Индекс = "000000";
       КонецЕсли;
       Если Не РегламентированнаяОтчетность.АдресСоответствуетТребованиям(СтруктураАдресаДляПроверки) Тогда
           СтрОшибки = СтрОшибки + Символы.ПС + Символы.Таб + " - указанный адрес регистрации не соответствует требованиям ФНС! Возможно, в адресе присутствуют латинские или недопустимые символы";
       КонецЕсли;
   КонецЕсли;
   
   Если ЗначениеЗаполнено(ДанныеФизЛица.АдресЗарубежом) Тогда
       СтруктураАдреса = УправлениеКонтактнойИнформацией.ПолучитьСтруктуруАдресаИзСтроки(ДанныеФизЛица.АдресЗарубежом);
       Если Не ОбщегоНазначения.ТолькоЦифрыВСтроке(СоответствиеИменСтран[СтруктураАдреса.Страна]) Тогда
           СтрОшибки = СтрОшибки + Символы.ПС + Символы.Таб + " - неверно указана страна проживания нерезидента (возможно, не заполнен справочник ""Классификатор стран мира"")!";
       КонецЕсли;
   КонецЕсли;
10 Aleksey
 
05.10.12
09:44
Аналогично, я просто про индексы вырезал
11 slaaay
 
05.10.12
09:47
ДанныеФизЛица.АдресРФ соответствует РегистрыСведений.КонтактнаяИнформация.Представление?
12 dva1c
 
05.10.12
09:53
(10) Поэтому и привел свой пример, чтобы показать (0), что все делается по аналогии.
13 dva1c
 
05.10.12
09:54
(11) Да. Все так.
14 tomvlad
 
05.10.12
10:01
(0) Обработка "Технологический анализ учета для конфигурации 1С:Зарплата и Управление персоналом" включает 30 проверок различных разделов учета, в т.ч. и проверку соответствия адресов КЛАДР и более 10 инструментов для исправления наиболее типичных ошибок, в т.ч. и обновление КЛАДР по загруженным в информационную базу регионам.

http://o-systems.ru/soft/?ELEMENT_ID=150

Можно воспользоваться и бесплатной обработкой (более ранняя версия одного из инструментов, входящих в Технологический анализ учета) - http://infostart.ru/public/70463/
15 dva1c
 
05.10.12
10:03
(14) Это реклама? О_о
16 slaaay
 
05.10.12
10:16
Ещё один вопрос ребят. Почему он в поле Страна берет индекс и в условии если Индекс > 3 Тогда не правильный адрес...
17 slaaay
 
05.10.12
10:19
ТО есть индекс по классификатору должен быть не больше 3 символов?
18 slaaay
 
05.10.12
10:33
Не правильно раскладывает он адрес...

РегламентированнаяОтчетность.РазложитьАдрес(ДанныеФизЛица.АдресРФ) вот здесь вот
19 dva1c
 
05.10.12
10:43
(18) Не совсем понятно про какие 3-и символа ты пишешь?

   МассивАдрес    =    ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаАдрес);
   ЭлементовВМассиве = МассивАдрес.Количество();  

   Если ЭлементовВМассиве    >    0    тогда
       Страна    =    СокрЛП(МассивАдрес[0]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    1    тогда
       Индекс    =    СокрЛП(МассивАдрес[1]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    2    тогда
       Регион    =    СокрЛП(МассивАдрес[2]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    3    тогда
       Район    =    СокрЛП(МассивАдрес[3]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    4    тогда
       Город    =    СокрЛП(МассивАдрес[4]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    5    тогда
       НаселенныйПункт    =    СокрЛП(МассивАдрес[5]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    6    тогда
       Улица    =    СокрЛП(МассивАдрес[6]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    7    тогда
       Дом    =    СокрЛП(МассивАдрес[7]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    8    тогда
       Корпус    =    СокрЛП(МассивАдрес[8]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    9    тогда
       Квартира    =    СокрЛП(МассивАдрес[9]);
   КонецЕсли;
   
   //Расширенное представление
   Если ЭлементовВМассиве    >    10    тогда
       ТипДома        = СокрЛП(МассивАдрес[10]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    11    тогда
       ТипКорпуса    = СокрЛП(МассивАдрес[11]);
   КонецЕсли;
   Если ЭлементовВМассиве    >    12    тогда
       ТипКвартиры = СокрЛП(МассивАдрес[12]);
   КонецЕсли;
   
   СтруктураВозврата = Новый Структура;
   СтруктураВозврата.Вставить("Страна",Страна);
   СтруктураВозврата.Вставить("Индекс",Индекс);
   СтруктураВозврата.Вставить("Регион",Регион);
   СтруктураВозврата.Вставить("Район",Район);
   СтруктураВозврата.Вставить("Город",Город);
   СтруктураВозврата.Вставить("НаселенныйПункт",НаселенныйПункт);
   СтруктураВозврата.Вставить("Улица",Улица);
   СтруктураВозврата.Вставить("Дом",Дом);
   СтруктураВозврата.Вставить("Корпус",Корпус);
   СтруктураВозврата.Вставить("Квартира",Квартира);
   СтруктураВозврата.Вставить("ТипДома",ТипДома);
   СтруктураВозврата.Вставить("ТипКорпуса",ТипКорпуса);
   СтруктураВозврата.Вставить("ТипКвартиры",ТипКвартиры);
20 dva1c
 
05.10.12
10:46
+(19) Функция РазложитьАдрес расположена в ОбщемМодуле. В коментах встречается такое:
//Функция раскладывает строку с данными об адресе (в формате 9 запятых) на элементы структуры
Про какие 3-и символа ты пишешь?
21 slaaay
 
05.10.12
10:47
Он не правильно адрес раскладывает:

в поле Страна попадает например 480683

в поле Индекс попадает например Респ Башкортостан
22 dva1c
 
05.10.12
10:49
(21) "Он" - это кто? Пиши конфу и версию.
23 slaaay
 
05.10.12
10:53
РегламентированнаяОтчетность.РазложитьАдрес(ДанныеФизЛица.АдресРФ) вот кто

конфа КА 25.2
24 dva1c
 
05.10.12
11:19
(23) Если конфа не "перепаханная", то должно быть нормально. Смотри, как заполняются реквизиты из обработки "РедактированиеКонтактнойИнформации".
Другими словами, F11 и отладка тебе в помощь.
PS если нет такой обработки, то смотри: как заполняются реквизиты или раскладывается строка.
25 dva1c
 
05.10.12
11:42
+(24) Вот как выглядит эта обработка http://s58.radikal.ru/i161/1210/c1/9f9b60d5557c.jpg
26 slaaay
 
05.10.12
11:50
конфа не перепаханная...ну вот у тебя на картинке где поле страна?
27 dva1c
 
05.10.12
11:59
(26) Поле страна - нет. Там, как ты видишь, переключатель: "Российский адрес", "Адрес за пределами РФ".
28 slaaay
 
05.10.12
12:54
ну а он раскладывает адрес и берет поле страна как индекс и ещё на него ругается
29 Aleksey
 
05.10.12
17:17
(28) Бывает если в адресе стоят ",", например пишут дом №9, кв.5