Имя: Пароль:
1C
1С v8
Непонятки с КЛАДРом - индекс теряется
0 SeraFim
 
27.03.12
08:10
ЗИКБУ
Ввожу адрес сотрудника - регион, город, улица - автоматом ставится правильный индекс.
Ввожу номер дома - индекс меняется на индекс главпочтамта.

в коде:
   Улица = ПолучитьАдресныйЭлемент(НазваниеУлицы, 5, РодительИндекса.Код);
   Если Улица.Код > 0 Тогда
       ИндексУлицы = ПолучитьИндексПоУлицеДомуКорпусу(Улица, НомерДома, НомерКорпуса);
       Если НЕ ПустаяСтрока(ИндексУлицы) Тогда
           Индекс = ИндексУлицы;
       КонецЕсли;
   КонецЕсли;
   
   Если Город.Код > 0 И ЗначениеЗаполнено(НомерДома) Тогда
       ИндексДомаКорпуса = ПолучитьИндексПоГородуДомуКорпусу(Город, НомерДома, НомерКорпуса);
       Если НЕ ПустаяСтрока(ИндексДомаКорпуса) Тогда
           Индекс = ИндексДомаКорпуса;
       КонецЕсли;
   КонецЕсли;

То есть, если первая часть (ПоУлицеДомуКорпусу) все верно нашла, все равно включается вторая(ПоГородуДомуКорпусу), и "затирает" правильный индекс.
Закомментировал её от греха подальше.

Я чего-то не понимаю? Просто не верится, что такая подсистема, исследованная вдоль и поперек, используемая в десятках типовых, может быть работать неправильно.
1 andrewks
 
27.03.12
08:11
кладр кривой?
2 SeraFim
 
27.03.12
08:12
нет, проблема в коде 1Ски
3 andrewks
 
27.03.12
08:14
дело в том, что есть такие улицы, где индекс разный для разных номеров домов. это заложено в кладре
4 SeraFim
 
27.03.12
08:17
(3)да, такое есть, и оно работает:

   Улица = ПолучитьАдресныйЭлемент(НазваниеУлицы, 5, РодительИндекса.Код);
   Если Улица.Код > 0 Тогда
       ИндексУлицы = ПолучитьИндексПоУлицеДомуКорпусу(Улица, НомерДома, НомерКорпуса);
       Если НЕ ПустаяСтрока(ИндексУлицы) Тогда
           Индекс = ИндексУлицы;
       КонецЕсли;
   КонецЕсли;

Вот этот код всё определяет правильно!!! но потом:

   Если Город.Код > 0 И ЗначениеЗаполнено(НомерДома) Тогда
       ИндексДомаКорпуса = ПолучитьИндексПоГородуДомуКорпусу(Город, НомерДома, НомерКорпуса);
       Если НЕ ПустаяСтрока(ИндексДомаКорпуса) Тогда
           Индекс = ИндексДомаКорпуса;
       КонецЕсли;
   КонецЕсли;

и индекс становится 672000
5 andrewks
 
27.03.12
08:17
можешь озвучить проблемный адрес?
6 yra77
 
27.03.12
08:19
может переключатель стоит на формате 2002 года?
7 SeraFim
 
27.03.12
08:30
(5)Забайкальский край
город Чита
ул. Журавлева (для для разных домов - разные индексы)
дом № 100 - индекс должен быть - 672038
8 ЧеловекДуши
 
27.03.12
08:32
Все там нормально, просто вы неправильно это готовите :)
Нечего галочки трогать :)
9 SeraFim
 
27.03.12
08:32
какие галочки? где?
10 SeraFim
 
27.03.12
08:35
в БГУ все правильно делает :)
11 andrewks
 
27.03.12
08:37
это в кладре глюк. в 7-ке на новом кладре тоже индекс очищается
12 SeraFim
 
27.03.12
08:39
сравнил тексты БГУ и ЗикБУ - различие именно в этом:
   Если Город.Код > 0 И ЗначениеЗаполнено(НомерДома) Тогда
       ИндексДомаКорпуса = ПолучитьИндексПоГородуДомуКорпусу(Город, НомерДома, НомерКорпуса);
       Если НЕ ПустаяСтрока(ИндексДомаКорпуса) Тогда
           Индекс = ИндексДомаКорпуса;
       КонецЕсли;
   КонецЕсли;
13 SeraFim
 
27.03.12
10:57
ладно, пойду тогда пну разработчиков)