| 
    
        
     
     | 
    
  | 
Хочется уйти от запроса в цикле | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        ой точно, простите за потраченное время... совсем затупил     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |