|
Эксель: ячейка не заполнена, то не обрабатывать | ☑ | ||
---|---|---|---|---|
0
dft2014
23.04.14
✎
12:42
|
Загружаю из Эксель адреса сотрудников. У некоторых сотрудников адрес не заполнен, и при выгрузке в Эксель, в ячейке у них пусто, только в строке формул одинарный верхний апостроф. Соответственно, надо как-то прописать условие, чтобы у таких сотрудников не обрабатывал адрес. Сейчас программа не видит, что адрес не заполнен (Если ТекСтрока.REG_ADDR_KLADR <> "" Тогда) и начинает его обрабатывать, естественно выдавая ошибку.
Вот код: Если ТекСтрока.REG_ADDR_KLADR <> "" Тогда л_СтруктураАдреса = РазобратьАдрес(ТекСтрока.REG_ADDR_KLADR); КонецЕсли; мНаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); Как прописать, что если в столбце верхний апостроф, то его не обрабатывать. Писала: Если (ТекСтрока.REG_ADDR <> "") ИЛИ (ТекСтрока.REG_ADDR <> "'") ИЛИ (ТекСтрока.REG_ADDR <> "<<Адрес не задан>>") Тогда Не помогает, все равно начинает обрабатывать как адрес!!! |
|||
1
Borometr
23.04.14
✎
12:44
|
Может ПустаяСтрока() поможет
|
|||
2
Borometr
23.04.14
✎
12:46
|
При работе с Экселем больше предпочитаю ExcelЛист.Cells(НомерСтроки, НомерКолонки).value
|
|||
3
Ёпрст
23.04.14
✎
12:47
|
(0) Или в условии замени на И
|
|||
4
dft2014
23.04.14
✎
13:43
|
(1), (2) REG_ADDR - это название столбца из таблицы значений.
(3) Пробовала - не помогает. |
|||
5
Eugene_life
23.04.14
✎
13:45
|
(4) посчитать кол-во символов в строке, которая вернулась из функции. Если вернулось менее 5 символов (при СокрЛП()), то явно "не то" - не обрабатывать.
|
|||
6
dk
23.04.14
✎
13:49
|
можно из ячеек читать не value а text, если все данные текстовые
|
|||
7
dft2014
23.04.14
✎
14:29
|
(5) Написала в начале:
КолСимволов = СокрЛП(СтрДлина(ТекСтрока.REG_ADDR_KLADR)); Сообщить (КолСимволов); Вернул 240. Хотя поле пустое! |
|||
8
salvator
23.04.14
✎
14:31
|
А так?
КолСимволов = СтрДлина(СокрЛП(ТекСтрока.REG_ADDR_KLADR)); Сообщить(КолСимволов); |
|||
9
dft2014
23.04.14
✎
14:38
|
(8) Так выдает 0
|
|||
10
dft2014
23.04.14
✎
14:43
|
Пишу:
КолСимволов = СтрДлина(СокрЛП(ТекСтрока.REG_ADDR_KLADR)); Если (ТекСтрока.REG_ADDR_KLADR <> "") ИЛИ КолСимволов <> 0 Тогда Не помогает! |
|||
11
Ёпрст
23.04.14
✎
15:11
|
Еще раз... Или замени на и
|
|||
12
dft2014
23.04.14
✎
15:44
|
(11) НЕ помогло...
|
|||
13
dft2014
23.04.14
✎
15:45
|
Если встречается сотрудник с незаполненным адресом, то пишет ошибку:
{Форма.Форма.Форма(448)}: Значение не является значением объектного типа (Индекс) ЗаписьНабора.Поле1 = л_СтруктураАдреса.Индекс; |
|||
14
Ёпрст
23.04.14
✎
15:49
|
(13) еще подумай
|
|||
15
Ёпрст
23.04.14
✎
15:49
|
и.. больше кода.
|
|||
16
Borometr
23.04.14
✎
15:51
|
Чё то ты не договариваешь. Пишешь, что КолСимволов = СтрДлина(СокрЛП(ТекСтрока.REG_ADDR_KLADR)) дает 0, а условие проверки
Если (ТекСтрока.REG_ADDR_KLADR <> "") ИЛИ КолСимволов <> 0 Тогда не проходить. И по совету Ёпрст ИЛИ заменил на И. |
|||
17
dft2014
23.04.14
✎
16:02
|
(15) Вот код:
КонтактИнформАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00001"); // адрес для информирования КонтактЮрАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002"); // адрес по прописке КонтактФактАдресФизЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00003"); // адрес проживания КонтактИнформАдресКонтактногоЛица = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00015"); // адрес регистрации КолСимволов = СтрДлина(СокрЛП(ТекСтрока.REG_ADDR_KLADR)); Сообщить(КолСимволов); // Если (ТекСтрока.REG_ADDR_KLADR <> "") ИЛИ (ТекСтрока.REG_ADDR_KLADR <> "<<Адрес не задан>>")Тогда Если (ТекСтрока.REG_ADDR_KLADR <> "") И (КолСимволов <> 0) Тогда л_СтруктураАдреса = РазобратьАдрес(ТекСтрока.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); КонецЕсли; мНаборЗаписей.Записать(Истина); |
|||
18
dft2014
23.04.14
✎
16:04
|
Вот ф-ция, на которую тоже есть ссылка в (17):
Функция РазобратьАдрес(л_Адрес) // 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,область,,город,,улица,дом,корпус,квартира КонецФункции |
|||
19
Ёпрст
23.04.14
✎
16:20
|
Ну и ? А где проверка на твой апострофф ?
|
|||
20
Ёпрст
23.04.14
✎
16:22
|
И так напиши, что ле..
Если Не ЗначениеЗаполнено(ТекСтрока.REG_ADDR_KLADR) Тогда |
|||
21
Ёпрст
23.04.14
✎
16:22
|
Точнее так :))
Если ЗначениеЗаполнено(ТекСтрока.REG_ADDR_KLADR) Тогда |
|||
22
dft2014
23.04.14
✎
16:50
|
(21) Написала так, все равно выдает ошибку (13).
(19) Она тоже была, убрала ее уже. |
|||
23
Ёпрст
23.04.14
✎
17:53
|
(21)
Ну напиши так што ле (тест на вшивость) Если Значениезаполнено(ТекСтрока.REG_ADDR_KLADR Тогда Попытка л_СтруктураАдреса = РазобратьАдрес(ТекСтрока.REG_ADDR_KLADR); Исключение Сообщить(ОписаниеОшибки()+"" ""+ТекСтрока.REG_ADDR_KLADR); КонецПопытки; КонецЕсли; результаты окна сообщений в студию |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |