Имя: Пароль:
1C
1С v8
СтруктураОтбора для ТаблицыЗначений
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) И задача, и её решение мне известны.
Не получено ответа ни на один наводящий вопрос.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн