| 
    
        
     
     | 
    
  | 
СтруктураОтбора для ТаблицыЗначений | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        yavasya    
     26.07.14 
            ✎
    08:50 
 | 
         
        НомерСтроки = 1;
 
        Пока НомерСтроки < 30000 Цикл Х1 = Sheet.Cells(НомерСтроки, 1).Value; Х2 = Sheet.Cells(НомерСтроки, 2).Value; Х3 = Sheet.Cells(НомерСтроки, 3).Value; Х4 = Sheet.Cells(НомерСтроки, 4).Value; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("НаименованиеДокумента", Х1); СтруктураОтбора.Вставить("НомерДокумента", Х2); НайденнаяСтрока = ТаблицаЗначенийЭксель.Найти(СтруктураОтбора); попытка ТекстДляПроверки=""+НайденнаяСтрока.НаименованиеДокумента; попытка НайденнаяСтрока.НаименованиеДокумента=Х1 и НайденнаяСтрока.НомерДокумента=Х2 и НайденнаяСтрока.ДатаДокумента=Х3 и НайденнаяСтрока.СуммаДокумента=Х4 исключение Сообщить(НомерСтроки); ТекстСообщения=""+ "Есть различия"+ НайденнаяСтрока.НаименованиеДокумента+НайденнаяСтрока.НомерДокумента+НайденнаяСтрока.ДатаДокумента+ НайденнаяСтрока.СуммаДокумента; Сообщить(ТекстСообщения); конецпопытки; исключение ТекстСообщения=""+ "Новый документ"+ Х1+Х2+Х3+Х4; КонецПопытки; НомерСтроки = НомерСтроки +1; КонецЦикла;  | 
|||
| 
    1
    
        yavasya    
     26.07.14 
            ✎
    08:50 
 | 
         
        СтруктураОтбора = Новый Структура;
 
        СтруктураОтбора.Вставить("НаименованиеДокумента", Х1); СтруктураОтбора.Вставить("НомерДокумента", Х2); НайденнаяСтрока = ТаблицаЗначенийЭксель.Найти(СтруктураОтбора);  | 
|||
| 
    2
    
        yavasya    
     26.07.14 
            ✎
    08:51 
 | 
         
        нужно найти строку в ТаблицеЗначений по двум полям .
 
        Проще запрос сделать ? Что будет работать быстрее?  | 
|||
| 
    3
    
        Drac0    
     26.07.14 
            ✎
    08:53 
 | 
         
        (2) запоос дольше. У ТЗ есть свои индексы.     
         | 
|||
| 
    4
    
        yavasya    
     26.07.14 
            ✎
    08:55 
 | 
         
        (2)в данной конструкции я получу массивСтрок, а как получить одну строку ?     
         | 
|||
| 
    5
    
        Drac0    
     26.07.14 
            ✎
    08:59 
 | 
         
        (4) Найтм возвращает строку. Но там нельзя использовать структуру ,вроде. Чем тнбе НайтиСтроки и массив не устраивает?     
         | 
|||
| 
    6
    
        yavasya    
     26.07.14 
            ✎
    08:59 
 | 
         
        потом массивстрок обойти циклом ?
 
        для каждого найденнаястрока из массивстрок цикл конецЦикла;  | 
|||
| 
    7
    
        yavasya    
     26.07.14 
            ✎
    09:00 
 | 
         
        в структуре вид и номер дока , то есть тока одна строка , попробую выбрать     
         | 
|||
| 
    8
    
        yavasya    
     26.07.14 
            ✎
    09:04 
 | 
         
        взлетело. но думаю написал коряво код , можете поправить?
 
        НомерСтроки = 1; Пока НомерСтроки < 30000 Цикл Х1 = Sheet.Cells(НомерСтроки, 1).Value; Х2 = Sheet.Cells(НомерСтроки, 2).Value; Х3 = Sheet.Cells(НомерСтроки, 3).Value; Х4 = Sheet.Cells(НомерСтроки, 4).Value; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("НаименованиеДокумента", Х1); СтруктураОтбора.Вставить("НомерДокумента", Х2); НайденныйМассивСтрок = ТаблицаЗначенийЭксель.НайтиСтроки(СтруктураОтбора); Для каждого НайденнаяСтрока из НайденныйМассивСтрок цикл попытка ТекстДляПроверки=""+НайденнаяСтрока.НаименованиеДокумента; попытка НайденнаяСтрока.НаименованиеДокумента=Х1 и НайденнаяСтрока.НомерДокумента=Х2 и НайденнаяСтрока.ДатаДокумента=Х3 и НайденнаяСтрока.СуммаДокумента=Х4 исключение Сообщить(НомерСтроки); ТекстСообщения=""+ "Есть различия"+ НайденнаяСтрока.НаименованиеДокумента+НайденнаяСтрока.НомерДокумента+НайденнаяСтрока.ДатаДокумента+ НайденнаяСтрока.СуммаДокумента; Сообщить(ТекстСообщения); конецпопытки; исключение ТекстСообщения=""+ "Новый документ"+ Х1+Х2+Х3+Х4; КонецПопытки; КонецЦикла; НомерСтроки = НомерСтроки +1; КонецЦикла;  | 
|||
| 
    9
    
        Drac0    
     26.07.14 
            ✎
    09:08 
 | 
         
        (7) Тогда синтаксис другой Найти (х1, "НаименованиеДокумента"). Но он вернет первую такую строку. (6) зачем циклом? Массив[0] после проверки на количество ().     
         | 
|||
| 
    10
    
        Drac0    
     26.07.14 
            ✎
    09:08 
 | 
         
        (8) не, лень.     
         | 
|||
| 
    11
    
        yavasya    
     26.07.14 
            ✎
    09:09 
 | 
         
        (9) нужночтобы 2 условия совпадали, тип дока и номердока     
         | 
|||
| 
    12
    
        Drac0    
     26.07.14 
            ✎
    09:25 
 | 
         
        (11) Тогда только НайтиСтроки()     
         | 
|||
| 
    13
    
        alle68    
     26.07.14 
            ✎
    09:35 
 | 
         
        (8) Зачем так много "Попытка"?
 
        Почему ограничение 30000 строк? Не удобней ли выгрузить в ТЗ, а не в Excel?  | 
|||
| 
    14
    
        yavasya    
     26.07.14 
            ✎
    09:37 
 | 
         
        я из эксель загружаю и сравниваю с таблицей значений, 
 
        попытка проверяет только одно условие?  | 
|||
| 
    15
    
        alle68    
     26.07.14 
            ✎
    09:47 
 | 
         
        (14) Функция "ЗначениеВФайл(,)" знакома?
 
        "Попытка проверяет условие." Это как? Что в СП про неё сказано?  | 
|||
| 
    16
    
        yavasya    
     26.07.14 
            ✎
    10:01 
 | 
         
        сверяю две базы . из одной в эксель, затем читаю файл     
         | 
|||
| 
    17
    
        alle68    
     26.07.14 
            ✎
    10:31 
 | 
         
        (16) И задача, и её решение мне известны.
 
        Не получено ответа ни на один наводящий вопрос.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |