|
Хочется уйти от запроса в цикле | ☑ | ||
---|---|---|---|---|
0
mataranga
02.04.14
✎
08:22
|
Добра всем.
Есть Excel файлик с колонкой в которой СНИЛС ( маска 999-999-999 99 ) где только цифры. Для R=2 По КоличествоСтрокExcel Цикл Если НЕ ПроверкаСНИЛС(Лист.Cells(R,столбик.СНИЛС).value) Тогда ТекстОшибки=ТекстОшибки+"Некорректо написан СНИЛС в ячейке R["+R+"]C["+столбик.СНИЛС+"]."+Символы.ПС; КонецЕсли КонецЦикла &НаСервере Функция ПроверкаСНИЛС(Знач СтрокаПараметр) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | &Стр |ГДЕ | &Стр ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Стр",СтрокаПараметр); Запрос.УстановитьПараметр("Шаблон","[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9][0-9]"); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла; КонецФункции Как вариант передать массивом на сервер и там проверять, но опять же запрос в цикле будет. или только через RegExp |
|||
1
butterbean
02.04.14
✎
08:24
|
(0) нет обращения к базе так что пох на запрос в цикле, а вот 100500 обращений к серверу — это не гуд
|
|||
2
vde69
модератор
02.04.14
✎
08:25
|
перегоняем ексель в ТЗ
ТЗ помещаем во временную таблицу одним запросом проверяем |
|||
3
Andy13
02.04.14
✎
08:27
|
(1)+ Пакет, две таблицы - правильно, неправильно.
|
|||
4
mataranga
02.04.14
✎
08:28
|
(1) То есть если я массив кину на сервер и там в цикле переберу это норма?
(2) как в запросе сделать перебор строк? |
|||
5
Kurbash
02.04.14
✎
08:29
|
пока результат.следующий()
|
|||
6
mataranga
02.04.14
✎
08:30
|
(5) Эм... может я где то Вашу мысль не уловил...
у меня идет сравнение на маску запросом "ВЫБРАТЬ | &Стр |ГДЕ | &Стр ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Стр",СтрокаПараметр); Запрос.УстановитьПараметр("Шаблон","[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9][0-9]"); Мне все равно для каждого надо будет выполнить это запрос |
|||
7
butterbean
02.04.14
✎
08:35
|
(6)
1. можно сервер передать весь файл и его разбирать там 2. можно сделать из файла структуру (адрес ячейки, значение), ее на сервер и там разбирать уже на сервере — собираешь таблицу значений, ее в запрос, в запросе твое условие, перебираешь результат запроса и лепишь таб документ или что там у тебя |
|||
8
butterbean
02.04.14
✎
08:36
|
(7)+
* 1. можно НА сервер передать... я за второй вариант |
|||
9
mataranga
02.04.14
✎
09:53
|
перебираешь результат запроса (С)
дак я переберу, только у меня будет Цикл для Каждого Стр и в цикле уже будет "ВЫБРАТЬ | &Стр |ГДЕ | &Стр ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Стр",СтрокаПараметр); Запрос.УстановитьПараметр("Шаблон","[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9][0-9]"); где СТР это |
|||
10
StanleyMarsh
02.04.14
✎
09:54
|
(2) +1
|
|||
11
mataranga
02.04.14
✎
10:01
|
окей, предположим что ТЗ у меня состоит из одной колонки (ячейки)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Таблица.Ячейка как ячейка |ИЗ | &Таблица КАК Таблица"; Запрос.УстановитьПараметр("Таблица",ТЗ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | &Стр |ГДЕ | &Стр ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Стр",Выборка.ячейка); Запрос.УстановитьПараметр("Шаблон","[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9][0-9]"); КонецЦикла; накидал от руки могут быть ошибки. все равно в цикле будет... Или я вообще не о том? |
|||
12
butterbean
02.04.14
✎
10:05
|
(11)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Таблица.Ячейка как ячейка |ПОМЕСТИТЬ ВрТабл |ИЗ | &Таблица КАК Таблица; |ВЫБРАТЬ | Ячейка |ИЗ | ВрТабл КАК ВрТабл; |ГДЕ | Ячейка ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Таблица",ТЗ); Запрос.УстановитьПараметр("Шаблон","[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] [0-9][0-9]"); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // тут вывод на печать или куда надо КонецЦикла; |
|||
13
mataranga
02.04.14
✎
10:06
|
ой точно, простите за потраченное время... совсем затупил
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |