Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/120: Рейтинг темы: голосов - 120, средняя оценка - 4.55
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463

Поиск в dbf файле

30.07.2018, 14:12. Показов 23077. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Можно ли в 1с7 реализовать поиск в dbf файле по 2 полям? Желательно не перебором всех данных
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2018, 14:12
Ответы с готовыми решениями:

Максимальная длина записи в файле Dbf
Может, неточно сформулировал - имею в виду суммарную длину всех полей Подскажите, кто знает

Проверить на наличие колонки в DBF файле
При загрузке файлов формата DBF в нескольких файлах существует колонка ДБФ.PR_DDK, а в некоторых нет, есть условие с этой колонкой. При...

Поиск по DBF 1C77
Привет, ребята. Не могу разобраться с обращением к DBF в 1С77. Задача проста, но я не сильно обладаю 1С. Вобщем, есть таблица Table.dbf с...

13
Модератор
Эксперт 1С
 Аватар для Yulunga
4134 / 941 / 265
Регистрация: 22.04.2013
Сообщений: 6,568
Записей в блоге: 1
30.07.2018, 14:22
http://1czone.ru/code/12-primer-dbf.html
только непонятно - а как не перебором? вам же надо его из дбф загрузить куда-то в 1с. то есть все строчки прочитать. и записать.
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
30.07.2018, 14:35  [ТС]
Я выгружаю данные в файл. Суть в том, что мне надо найти есть ли такая запись в файле(по тем самым двум полям) или нет, если она в файле есть, то мне нужно в третье поле записать данные, если нет, то полностью создать новую запись. А если я каждый раз буду заново перебирать, это получится очень долго.

Добавлено через 4 минуты
Попробую так объяснить: Выгружаю данные из 1с7. Выгружается всё хорошо, но есть записи в которых код и дата одинаковые(но разные другие поля) вот их мне и нужно объединить в одну запись.
Например:
Код___Дата_______Реквизит1___Реквизит2
1_____200101_____"Что-то"
1_____200101________________"Тут что-то"


Должна получиться одна запись : 1 200101 "Что-то" "Тут что-то"
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
30.07.2018, 14:47
Загрузить файл себе в таблицу значений, потом Через НайтиСтроки() искать твои повторные строки, если их нет, создать, потом тз обратно в файл загнать.
0
212 / 185 / 32
Регистрация: 24.10.2011
Сообщений: 762
30.07.2018, 16:07
Через XBase по НайтиПоКлючу().
ПС
Ээээ парень, ты не поиск ищешь, а объединение записей, тут только самому писать код.
1
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
30.07.2018, 16:11  [ТС]
Так чтобы объединить нужно сначала найти что объединять.
Вообще объединение я сделал в 8ке, я просто немного зашёл в тупик и не знаю что дальше делать. В 8ку загрузил так как я написал выше, один код одна дата, Но дело в том, что не всегда есть дата, код и оба заполненных реквизита, а для этого случая нужно найти запись сделанную раньше и где этот реквизит заполнен и взять значение оттуда. Поэтому я и решил с 7ке выгружать уже всё готовое, но и там путаница
0
212 / 185 / 32
Регистрация: 24.10.2011
Сообщений: 762
30.07.2018, 16:12
Цитата Сообщение от Александр321321 Посмотреть сообщение
Так чтобы объединить нужно сначала найти что объединять.
Тогда ищи как выше написал.
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
30.07.2018, 16:13
Цитата Сообщение от Александр321321 Посмотреть сообщение
Код___Дата_______Реквизит1___Реквизит2
1_____200101_____"Что-то"
1_____200101________________"Тут что-то"
а вот это я не читал)
только кодом отбирать, объединять, лишнее удалять.
Как и написали выше
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
30.07.2018, 16:16  [ТС]
Вот именно такой вариант меня и не устраивает. Ибо для 50к+ записей искать похожую перебором очень долго,а я пытаюсь более-менее оптимизированную программу написать
0
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
30.07.2018, 16:39
Александр321321,
код и дата одинаковые
Делаем запрос
Загрузить в ТЗ (Пакет 0);

Код и дату сгруппировать, а номер строки максимум (пакет 1);

Выбрать те строки из пакета 0, которых нет в (пакете 1) - повторные записи (пакет 2)

теперь у нас есть ключи повторных объектов (код и Дата) - тут может быть 2,3,4 и т.д элемента с одинаковым кодом и Датой, но разными номерами строк, поэтому это дело ещё раз группируем аналогично пакету 1 и обходим его уже в цикле
И через
Цитата Сообщение от Phil Посмотреть сообщение
НайтиСтроки()
сгоняем всё в одну строку

так мы обработаем все повторные строки

Добавлено через 1 минуту
при этом в цикле не будем обходить всю таблицу бесчисленное количество раз
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
01.08.2018, 13:10
Александр321321, не мучайся...
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Mode=Read;Extended Properties=""DSN=Файлы dBASE;Collate=Russian;DBQ="+СокрЛП(КаталогФайлаБД)+";Collate=Russian;Null=Yes;Deleted=Yes;""";
    Соединение.Open();
    
   //получим количество записей в выборке 
 
    Команда = Новый COMОбъект("ADODB.Command");
    Команда.ActiveConnection = Соединение;
ТекстЗапроса = "SELECT DB1.*, DB2.* FROM DB1 LEFT JOIN DB2";
    Команда.CommandText = ТекстЗапроса;
    Команда.CommandType = 1;
    Запрос = Новый COMОбъект("ADODB.RecordSet");
    Запрос = Команда.Execute();
 //здесь обходишь результат 
 
Пока Запрос.EOF() = 0 Цикл
 //твои действия... 
 
Запрос.MoveNext();
КонецЦикла;
Запрос.Close();
Добавлено через 1 минуту

Не по теме:

на источник дать ссылку не могу, форум не разрешает

1
Эксперт 1С
 Аватар для Phil
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,246
01.08.2018, 14:36
Цитата Сообщение от Dethmontt Посмотреть сообщение
ТекстЗапроса = "SELECT DB1.*, DB2.* FROM DB1 LEFT JOIN DB2";
Выбираем все строки из столбца DB1 и DB2
Левым соединением по полю DB2 соединяем?

Как должна отработать конструкция?

Добавлено через 1 минуту
Код___Дата_______Реквизит1___Реквизит2
1_____200101_____"Что-то"
1_____200101________________"Тут что-то"
2_____200101________________"Значение 1"
3_____200101______"Значение 2___"Значение 1"
0
212 / 185 / 32
Регистрация: 24.10.2011
Сообщений: 762
01.08.2018, 14:55
Цитата Сообщение от Phil Посмотреть сообщение
Как должна отработать конструкция?
Как полное присоединение отработает.
Важно, что написав нужный запрос автор выдернет всю нужную информацию одной операцией без циклов и прочей лабуды.
0
So much heresy...
 Аватар для Эксмет
24 / 16 / 11
Регистрация: 30.07.2018
Сообщений: 114
01.08.2018, 14:59
Цитата Сообщение от Phil Посмотреть сообщение
Выбираем все строки из столбца DB1 и DB2
Левым соединением по полю DB2 соединяем?
Как должна отработать конструкция?
Сдается мне, что это просто полное соединение, но через опу)

P.S. пока писал, уже ответили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2018, 14:59
Помогаю со студенческими работами здесь

Создание целочисленного поля в dbf файле
Здравствуйте, столкнулся с проблемой: в создаваемый файл dbf пытаюсь включить новое целочисленное поле с размером в 14 символов, но когда...

Замена значений колонки в dbf файле
Добрый день, начал изучать Python и возникла задача по работе привести в порядок номенклатурные позиции, которую попробовал решить с...

Как определить тип полей в DBF-файле?
Есть DBF-файл (DOS). Как на Clipper 5.01 узнать каких типов все поля в этом DBF? Имена полей известны. Строковые поля могут в качестве...

Поиск в dbf
Суть в чём, есть 2 dbf файла, из которых select'ом я выбираю определённые поля и вывожу их в dbgrid. Из полученной таблицы нужно искать по...

Неправильная кодировка при чтении memo-поля в файле dbf
Суть в том, что обычные строковые поля читаются нормально, а вот memo-поле, которое ссылается на строку в dbt-файле, возвращает китайские...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru