Заполнение DBF и CDX с двумя индексами #507645


#0 by Марк_З
Господа, подскажите, плиз: (платформа 27) Создается дбф-файл с 2-мя индексами: Но когда я начинаю его заполнять то в дбф записывается только первая строка, остальные не записываются - создается строка с пустыми полями. Если дбф создается с одним индексом (только IDDOC), то в базу записывается все.
#1 by Марк_З
(пардон, рано нажал Отправить) Может кто подскажет - что не так? В ЖКК ведь написано, что 1С поддерживает 1 СDХ с несколькими индексами.
#2 by borozavr
Если дбф.Найти(ключПоиска1, 0) = 0 Тогда файл каждый раз пересоздается
#3 by Марк_З
Не согласен: каждый раз создается ссылка для обращения к дбф-файлу, а файл открывается один и тот же.
#4 by miki
можешь и не соглашаться, но вынеси за условие поиска
#5 by Марк_З
(2, 4) это я не правильно тут написал. В программе написано так:
#6 by miki
а где код, который отрабатывает, если ключ не найден?
#7 by miki
т.е. когда найден, соррри. или тогда ничего не пишем?
#8 by Марк_З
По отладчику смотрел - ключ НЕ находится. Ключ - это номер и дата документа, пока отлаживаю - все документы разные. Но код есть:
#9 by borozavr
1.В ключе еще и отдел, и попробуй использовать RTRIM при создании индекса 3. где выборка? по коду находит или не находит, затем закрывает файл по-любому отсюда и одна запись в файле.
#10 by miki
да, уточни: записывается только одна строка или несколько, но только первая непустая, а остальные пустые. +1 убери создать/открыть/закрыть за выборку. Один раз открыл - пробежался, добавил/подправил, один раз закрыл. на момент, когда добавляешь, переменные приходят не пустые?
#11 by Марк_З
Поясню: в дбф записываются данные о док.ПриходнаяНакладная, т.е. при проведении ПН смотрим в дбф: если такого записи об этом доке еще нет - записываем строку, если есть - проверяем не изменилась ли сумма документа. При тестировании проводятся несколько разных ПН, каждая из которых должна записать одну строку в дбф. Зачем RTRIM если поле S,1,0 ? В дбф попадает только первый док. После второго появляется пустая строка, данных о проведении следующих документов нет вообще.
#12 by Марк_З
Процедура передачи данных в дбф стоит в модуле проведения документа, после записи операции. Т.е. если док провелся - данные передаются.
#13 by borozavr
1.код формирования ключа поиска     2.Проводишь доки руками или обработкой?
#14 by Марк_З
мОтдел = "1" или "2" или "3" - там длинный текст. тестируется пока на одной базе, отдел = "1". Провожу вручную, как бухгалтер при обычной работе.
#15 by borozavr
Выведи в сообщить(Ключ) и сравни с тем что в CDX
#16 by Марк_З
В отладчике - при проведении разных документов отрабатвает ветка Т.е. нет одинаковых ключей.
#17 by Марк_З
Ладно, придется обойтись одним индексом.
#18 by Марк_З
Up. Второй индекс очень ускорил бы работу программы... Может, всё-таки, кто-нибудь делал обработку с 2-мя индексами?
#19 by borozavr
лет 5 назад я  писал обработку с 3 индексами, все работало отлично, но там были простые индексы-по одному полю. Я поэтому в и пишу, что надо сравнить ключ формируемый в модуле и ключ в CDX может быть модуль: 1000110.04.2010 в CDX 1000012010.04.10 поэтому индекс и не отрабатывает
#20 by Марк_З
Александр, ключ состоит из текстовых полей. В файле CDX ключ записанной - первой - строки такой же, как и по отладчику в модуле программы... Отладчик показывает, что новые записи в дбф создаются, заполняются и записываются, дбф закрывается. Смотрю потом в дбф - в ней только одна запись - первая, в cdx есть ключи как по первому, так и по второму индексу. Но больше строки-то не записываются    :-(((
#21 by Mikeware
Все нормально работает. Включи автосохранение. И, в принципе,код внимательно не смотрел, он у тебя мутный какой-то...
#22 by borozavr
послал на мыло демо-обработку
#23 by Shaman100M
уникальность индекса убери. При добавлении с предварительным поиском она лишняя.
#24 by Shaman100M
А количество индексов никакой роли не играет. По составному индексу из нескольких полей, - XBase составляет итоговый ключ по полной длине полей, без обрезания пробелов.
#25 by Марк_З
(22, 23) Да, СПАСИБО, ребята!. Именно в уникальности и была ошибка. А вот так - работает:
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С