|  0
            - 06.09.2012 - 18:06
         | Решила вот обратиться к коллективному мозгу. в 8-ке создаю дбф файл с индексами, записываю в него данные. В 7-ке открываю этот файл и он не находит значение по индексу (в 8-ке сделала проверку, вроде находит). Ниже приведен код, может где что-то забыла. =====выгрузка из 8-ки БД = Новый XBase; БД.Поля.Добавить("CODE", "N", 10,0); БД.Поля.Добавить("OST", "N", 19,7); БД.СоздатьФайл(Путь + "ost.dbf", Путь + "ost.cdx"); БД.Индексы.Добавить("IDXCODE", "CODE"); ФлИБД = БД.СоздатьИндексныйФайл(Путь + "ost.cdx"); БД.АвтоСохранение = Истина; //**тут типо запрос Пока Выборка.Следующий() Цикл БД.Добавить(); БД.CODE = Выборка.Код; БД.OST = Выборка.КоличествоОстаток; КонецЦикла; БД.ЗакрытьФайл(); =====в 7-ке База = СоздатьОбъект("XBase"); База.ОткрытьФайл(Путь+"OST.DBF",Путь+"OST.CDX",1); База.ТекущийИндекс("IDXCODE"); Сообщить(База.Найти(691,0)); //// В 8-ке код 691 находиться, в 7-ке нет. |  | 
|  1
            - 06.09.2012 - 18:59
         | а почему бы в 7.7 не создавать свой индекс? |  | 
|  2
            - 06.09.2012 - 19:45
         | 1)  "находитЬся"  - Не сочтите за розжиг, но мне реально непонятно, почему все, кто получал среднее образование в РФ так пишут? "приЙшёл", "приЙдётся" ет цетера... Реально аццки выносит мосх иностранцам всем... Россияне, вы свои мессиджи в спелл-чекере проверяйте, что-ли? 2) По поводу индексов, ИМХО, - тут тяжкая проблема стандартов DBaseII и DBaseIV. И Блондинка, скорее всего, права. Однако, чтобы проверить правы мы с Блондинкой или нет - создай этот ДБФ с индексами в 7.7 - и попробуй считать его из 7.7. |  | 
|  3
            - 06.09.2012 - 20:05
         | (0) Миссис Маус?! |  | 
|  4
            - 06.09.2012 - 20:14
         | 3-Ткачик > Онжелина Шо-ли и Томми Хрусь-хрусть. |  | 
|  5
            - 06.09.2012 - 20:40
         | *стыдно* как к уже созданой дбф создать индексный файл в 7-ке 3-Ткачик >нет |  | 
|  6
            - 06.09.2012 - 20:45
         | 5-мыша1с > Средствами любой СУБД. FoxBase, Clipper, FoxPro. |  | 
|  7
            - 06.09.2012 - 20:56
         | Возможно ли в 7-ке создать индексный файл к уже существующему дбф? Без подключение внешних компонент? ЖК не предлагать, мои глазки там не увидели метода. |  | 
|  8
            - 06.09.2012 - 20:57
         | 7-мыша1с >  Легко! Читай (6). |  | 
|  9
            - 06.09.2012 - 20:57
         | Не надо сохранять индексный файл. Просто в модуль инициализации файла запсочить индексирование. Сия процедура достаточно быстрая, и проблем не доставит. А надежность - добавит. Кроме того, в техпроцессе один файл - это лучше, чем два ;) |  | 
|  10
            - 06.09.2012 - 20:59
         | 8-DeiMos > Лучше добавлять cdx средством под названием 1Cv7.exe. Проверено. |  | 
|  11
            - 06.09.2012 - 21:05
         | 9-VZ >милый, милый ВЗ. КАк? |  | 
|  12
            - 06.09.2012 - 21:14
         | Сказанное в (10) относится к файлам, созданным в 1С. Но эти файлы не годятся для FoxPro (и утилам на его основе, вроде поделок БухСофта)! Но сами файлы прелестно очищаются, записываются, и читаются, естественно. Главное, не обращаться к полям типа MEMO. В том числе и косвенно (например, нельзя читать список полей). CDX использовать можно (MEMO-поля не индексируются. |  | 
|  13
            - 06.09.2012 - 21:15
         | 11-мыша1с > Щаз, покопаюсь в завалах, может, найду образец... |  | 
|  14
            - 06.09.2012 - 21:20
         | 11-мыша1с > http://bugalt.narod.ru/dbf.htm |  | 
|  15
            - 06.09.2012 - 21:23
         | 14-Синегурочка >ключевое слово к существующему. ДобавитьИндекс - Метод можно использовать только перед созданием новой базы. |  | 
|  16
            - 06.09.2012 - 21:31
         | 15-мыша1с > открыть файл, добавить индекс и пересоздать файл уже с индексом? |  | 
|  17
            - 06.09.2012 - 21:35
         | 16-Синегурочка > Бредишь?   Передозировка селёдки? Запомни: Всегда должен быть создан файл, а потом уже - создавай любые индексы к нему. |  | 
|  18
            - 06.09.2012 - 21:41
         | 16- ну в общем думаю способ один: открывать файл, перечитывать полностью и записывать в новый с индексами. Просто жду кто подскажет способ легче. Этот мне видно с первого ответа. |  | 
|  19
            - 06.09.2012 - 21:42
         | (15) Глядишь, я успею раньше VZ? ФайлDBF=СоздатьОбъект("XBase"); ФайлDBF.ОткрытьФайл("ost.dbf",,0); Если ФайлDBF.Открыта()=0 Тогда Предупреждение("Не удается открыть файл ost.dbf!",60); Возврат; КонецЕсли; ФайлDBF.ДобавитьИндекс("IDXCODE","CODE",0,0,""); ФайлDBF.СоздатьИндексныйФайл("ost.cdx"); ФайлDBF.ТекущийИндекс("IDXCODE"); Где-то так, на основе работающего кода. (16), (17) Теоретики... |  | 
|  20
            - 06.09.2012 - 21:44
         | Пример 1: //Инициализация ДБФ ФС.УдалитьФайл(СтрЗаменить(СокрЛП(ПутьКБазе)+ИмяФа йлаУИД,"DBF","CDX")); фУИД = СоздатьОбъект("XBASE"); фУИД.ОткрытьФайл(СокрЛП(ПутьКБазе)+ИмяФайлаУИД); фУИД.Сжать(); фУИД.ДобавитьИндекс("UID","UID",1,0,".NOT.Deleted( )"); фУИД.СоздатьИндексныйФайл(СтрЗаменить(СокрЛП(ПутьК Базе)+ИмяФайлаУИД,"DBF","CDX")); фУИД.Переиндексировать(); фУИД.ТекущийИндекс("UID"); фУИД.АвтоСохранение(0); .......................................... //Закрытие файлов фУИД.ЗакрытьФайл(); Пример 2. фУИД = СоздатьОбъект("XBASE"); Если ФС.СуществуетФайл(СокрЛП(Каталог)+ИмяФайлаУИД) = 0 Тогда фУИД.ДобавитьПоле("ID7","S",24,); фУИД.ДобавитьПоле("NAME7","S",128,); фУИД.ДобавитьПоле("MARK","S",1,); фУИД.ДобавитьПоле("UID","S",36,); фУИД.ДобавитьПоле("NAME8","S",128,); фУИД.ДобавитьИндекс("ID7","ID7",0,0,".NOT.Deleted( )"); фУИД.ДобавитьИндекс("UID","UID",0,0,".NOT.Deleted( )"); фУИД.СоздатьФайл(СокрЛП(Каталог)+ИмяФайлаУИД,СтрЗа менить(СокрЛП(Каталог)+ИмяФайлаУИД,"DBF","CDX")); фУИД.ЗакрытьФайл(); Иначе ФС.УдалитьФайл(СтрЗаменить(СокрЛП(Каталог)+ИмяФайл аУИД,"DBF","CDX")); фУИД.ОткрытьФайл(СокрЛП(Каталог)+ИмяФайлаУИД); Пока фУИД.ВКонце() = 0 Цикл Если ПустаяСтрока(фУИД.UID) = 1 Тогда фУИД.Удалить(); КонецЕсли; фУИД.Следующая(); КонецЦикла; фУИД.Сжать(); фУИД.ДобавитьИндекс("ID7","ID7",0,0,".NOT.Deleted( )"); фУИД.ДобавитьИндекс("UID","UID",0,0,".NOT.Deleted( )"); фУИД.СоздатьИндексныйФайл(СтрЗаменить(СокрЛП(Катал ог)+ИмяФайлаУИД,"DBF","CDX")); фУИД.Переиндексировать(); фУИД.ЗакрытьФайл(); КонецЕсли; Аккуратнее с составными индексами! Помни, что из БД поле читается целиком, с конечными пробелами. Для смешанных выражений, где есть и числа и даты не применяй автопреобразование: напиши преобразование к строковому виду самостоятельно. И ради Бога: год только четырьмя символами!! |  | 
|  21
            - 06.09.2012 - 21:48
         | 19-Ткачик > ну да. это азы. а как еще то? |  | 
|  22
            - 06.09.2012 - 21:51
         | 19-Ткачик > Почему теоретики, зачем теоретики? Почему не практики? Нипанимаю... |  | 
|  23
            - 06.09.2012 - 22:01
         | Школота... :[ |  | 
|  24
            - 07.09.2012 - 15:34
         | 23-VZ >19-Ткачик >Огромное, просто большущие спасибо. |  | 
|  25
            - 08.09.2012 - 12:54
         | А maus то проспал подружку;) |  | 
| Интернет-форум Краснодарского края и Краснодара |