Имя: Пароль:
1C
1C 7.7
v7: Выборка из 2 DBF
🠗 (Злопчинский 05.03.2016 10:35)
,
1 ДенисЧ
 
28.12.15
13:02
Файл.Перейти(н);
  Файл.Следующая();

Это что такое?
2 work92
 
28.12.15
13:04
Переходы в файле
3 work92
 
28.12.15
13:05
Как подправить чтобы заработало
4 ЧеловекДуши
 
28.12.15
13:09
(2) А зачем там переход?
Если вы считываете данные последовательно :)

И как вообще должен работать сей код в (0), когда ты все время перепрыгиваешь через запись :)
5 work92
 
28.12.15
13:10
Если можно примером напишите
6 Dump
 
28.12.15
13:11
"чтобы заработало" - надо на словах объяснить, ЧТО хочешь сделать?
А так - работает ведь, ошибку не дает... ;-)
7 Злопчинский
 
28.12.15
13:11
Новфайл - где позиционирование на очередную запись?
8 work92
 
28.12.15
13:13
Чтобы работал перебор значений если  значение из 2 дбф совпало тогда вывести сообщение
9 Злопчинский
 
28.12.15
13:13
если совсем тупо и просто
Файл.СтатьнаПервую
Цикл1 по записям Файл
  Новфайл.СтатьнаПервую
  Цикл2 по записям новФайл
     если СравнитьКоды = Ура Тогда прерватьЦикл2
  Цикл2
Цикл1
10 Злопчинский
 
28.12.15
13:14
(8) если правильно - то для второго файла сделать индекс по коду.
цикл по первому файлу и поиск по индексу во втором файле
11 ЧеловекДуши
 
28.12.15
13:15
(5)Я бы не стал, если вы не понимаете работу простого, что говорить об сложном? :)
12 Dump
 
28.12.15
13:16
Я бы выгрузил оба файла в одну ТЗ - "Сравнимое поле" и "1".
Свернул по Сравнимое поле, и где больше 1 - совпадение - выдавал сообщение.
13 ЧеловекДуши
 
28.12.15
13:17
Можно еще воспользоваться Найти


XBase.Найти (XBase.Find)
XBase (XBase)
Найти (Find)
Синтаксис:

Найти(<Ключ>, <Режим>)
Параметры:

<Ключ> (обязательный)

Тип: Строка.
Значение выражения текущего индекса.
<Режим> (обязательный)

Тип: Строка.
Режим поиска записей:
"=" - ищет запись на точное соответствие ключу;
">=" - ищет запись на точное соответствие с ключом или большую;
">" - ищет запись с большим ключом;
"<=" - ищет запись на точное соответствие с ключом или меньшую;
"<" - ищет запись с меньшим ключом.
Возвращаемое значение:

Тип: Булево.
Истина - запись найдена; Ложь - в противном случае.
Описание:

Осуществляет поиск записи, соответствующей указанному значению ключа по текущему индексу и режиму поиска, переданному в качестве параметра. Указатель устанавливается на найденную запись.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Следует отметить, что вычисление значения индекса при работе XBase-объекта с таблицей базы данных производится объектом самостоятельно на основании выражения, переданного ему при создании ключа. При вызове данного метода значение Ключ должно быть вычислено средствами встроенного языка, что может представлять определенные трудности, если индекс составной, поля, включенные в выражение индекса, отличны от строковых, и т.д. Поэтому применимость данного метода ограничена случаем использования простых строковых выражений индекса. В более сложных случаях следует применять универсальный метод НайтиПоКлючу.
Пример:

// Поиск записи по значению ключа
xB.ТекущийИндекс = xB.Индексы.IDXCODE; // индекс CODE
ЗаписьНайдена = xB.Найти("00001", ">=");


См. также:

XBase, свойство ТекущийИндекс
14 work92
 
28.12.15
13:20
файл.Первая();
Пока файл.ВКонце()=0 Цикл

Новфайл.Первая();  
Пока Новфайл.ВКонце()=0 Цикл

    
Если  СокрЛП(Файл.kod)=СокрЛП(Новфайл.Kod) Тогда
   Сообщить("найден"+Файл.name+"--"+Новфайл.Model) ;
   прервать
КонецЕсли;

  Файл.Следующая();
    Файл.Следующая();          
КонецЦикла;
15 work92
 
28.12.15
13:21
64)}: Перед выполнением операции установите объект на запись!
16 Dump
 
28.12.15
13:21
(13) Это 7-ка
17 work92
 
28.12.15
13:21
да
18 HawkEye
 
28.12.15
13:22
(0) а где Новфайл.Следующая();?
19 work92
 
28.12.15
13:24
файл.Первая();
Пока файл.ВКонце()=0 Цикл

Новфайл.Первая();  
Пока Новфайл.ВКонце()=0 Цикл

    
Если  СокрЛП(Файл.kod)=СокрЛП(Новфайл.Kod) Тогда
   Сообщить("найден"+Файл.name+"--"+Новфайл.Model) ;
   прервать
КонецЕсли;

  Файл.Следующая();
    Новфайл.Следующая();          
КонецЦикла;

   КонецЦикла;
20 ЧеловекДуши
 
28.12.15
13:24
(16) Дарю от 7.7

Найти(<?>,)
Синтаксис:
Найти(<Ключ>,<Режим>)
Назначение:
Найти запись по индексу.
Возвращает:
1 - если действие выполнено (запись найдена);
0 - если действие не выполнено.
Параметры:
<Ключ> - выражение со значением ключа текущего индекса
<Режим> - Режим поиска записей:
0 -  ищет запись на точное соответствие ключу (=);
1 -  ищет запись на точное соответствие с ключом или большую (>=);
2 -  ищет запись с большим ключом (>);
-1 (минус единица) -  ищет запись на точное соответствие с ключом или меньшую(<=);
-2 (минус два) -  ищет запись с меньшим ключом (<).
Подробнее см. в документации, глава ''Работа с базами данных DBF формата''
21 HawkEye
 
28.12.15
13:26
(19) файл.Следующая() надо за первый цикл вынести....

ты пытаешься угадать код?
22 HawkEye
 
28.12.15
13:26
(20) уверен, что этого будет достаточно? ))
23 Злопчинский
 
28.12.15
13:26
Прграммирование требует внимательности и постоянных пинков сосбтвенному мозгу.
.
типа
.
файл.Первая();
Пока файл.ВКонце()=0 Цикл

  Новфайл.Первая();  
  Пока Новфайл.ВКонце()=0 Цикл
    Если СокрЛП(Файл.kod)=СокрЛП(Новфайл.Kod) Тогда
      Сообщить("найден"+Файл.name+"--"+Новфайл.Model) ;
      Прервать;
    КонецЕсли;
    Новфайл.Следующая();          
  КонецЦикла;

  Файл.Следующая();
КонецЦикла;
24 vde69
 
28.12.15
13:27
ADO нормально джойнит 2 dbf файла
25 Злопчинский
 
28.12.15
13:27
(24) "папа, ты с кем это сейчас разговаривал?"
26 Dump
 
28.12.15
13:29
(20) Не, я через ТабЗначений сделал бы. Не люблю файлы долго открытыми держать. А так гарантированно по каждому файлу 1 проход. А дальше уже с табличкой делай что хочешь.
27 work92
 
28.12.15
13:29
СП
28 vde69
 
28.12.15
13:31
(25) dbf - это файл базы данных, поддерживается индексация, самый быстрый способ - это выполнить запрос через ADO.

по синтаксису ADO поддерживает джойн двух различных баз в скуле или двух файлов DBF, если в запросе более 2х файлов - тут уже проблемы будут...
29 HawkEye
 
28.12.15
13:33
(28) подозреваю, что Злопчинский в курсе что такое АДО, а автору для начала научиться алгоритмы угадывать, потом уже копать глубже  )))
30 HawkEye
 
28.12.15
13:34
(27) синтаксис-помощник в этом деле не поможет )
31 Злопчинский
 
28.12.15
13:35
(29) я - девелопер... ;-)
32 HawkEye
 
28.12.15
13:36
(31) хочешь поговорить об этом? ))
33 ЧеловекДуши
 
28.12.15
14:56
(30) Пшему? Очень даже помогает. Особенно Индексирование и поиск по строке. Да, согласен, 1С вообще убого использует DBF в XBase