|
XBase не все строки не записывает. | ☑ | ||
---|---|---|---|---|
0
ГдеСобака Зарыта
25.02.13
✎
15:30
|
Делаю выгрузку в ДБФ. Код такой. Многоточием пропущены не относящиеся к делу участки кода
ДБ = Новый XBase; ДБ.поля.Добавить("Vid", "N", 1, 0); ДБ.поля.Добавить("NomDoc", "S", 15, 0); ДБ.поля.Добавить("DatDoc", "D", 10, 0); ... ДБ.СоздатьФайл(Файл.ПолноеИмя); ДБ.АвтоСохранение = Истина; Для Каждого СтрТабДок Из ЭтотОбъект.ТабДок Цикл ... ТаблицаТовары = Док.Продажи.Выгрузить(); Для Каждого СтрТоваров Из ТаблицаТовары Цикл ДБ.Добавить(); ДБ.Vid = Vid; ДБ.NomDoc = NomDoc; ДБ.DatDoc = DatDoc; ДБ.Sum = СтрТоваров.Сумма; ... КонецЦикла; ДБ.Записать(); КонецЦикла; ДБ.Записать(); ДБ.ЗакрытьФайл(); Не записывается последняя строка Табличной части некоторых документов. Из 100 доков ~ в 15 не будет будет хватать посл. строки в ДБФ-файле. Причем это все рандомно. Если убрать первый ДБ.Записать(); то вообще почти все доки будут выгружены без последней строки ЧЯДНТ? |
|||
1
1Сергей
25.02.13
✎
15:32
|
//ДБ.АвтоСохранение = Истина;
|
|||
2
NS
25.02.13
✎
15:32
|
Сделай ДБ.Записать(); после добавления каждой записи.
|
|||
3
NS
25.02.13
✎
15:35
|
А как ты узнал что нет последней строчки? Каким кодом?
ИМХО ошибка у тебя не в записи, а в чтении. |
|||
4
pumbaEO
25.02.13
✎
15:45
|
Межу этими строками
Для Каждого СтрТабДок Из ЭтотОбъект.ТабДок Цикл ... ТаблицаТовары = Док.Продажи.Выгрузить(); Есть Продолжить |
|||
5
ГдеСобака Зарыта
25.02.13
✎
15:57
|
(3) Визуально проверял). Ну и кодом тоже. Счетчик сравнивал в ДБ.КоличествоЗаписей().
(4) Продолжить; нет |
|||
6
ГдеСобака Зарыта
25.02.13
✎
16:00
|
(1) Так ваще по одной строке на документ
|
|||
7
NS
25.02.13
✎
16:01
|
(6) ДБ.Записать() перед первым Конеццикла добавь.
|
|||
8
ГдеСобака Зарыта
25.02.13
✎
16:06
|
(2), (7) Так уже лучше. Все записи кроме первой. Что с первой не так?
|
|||
9
NS
25.02.13
✎
16:07
|
(8) Чем смотришь? Как узнал что первой нет?
|
|||
10
Oleg_Kag
25.02.13
✎
16:07
|
мням... массив строк начинается с нуля... там ни где нету индексов?
|
|||
11
Mafoni
25.02.13
✎
16:14
|
ИМХО - добавь в этот кусок
Для Каждого СтрТоваров Из ТаблицаТовары Цикл ДБ.Добавить(); ДБ.Vid = Vid; ..... Сообщить(СтрТоваров.Номенклатура); КонецЦикла; таким образом ты увидиш те у тя проблема при выборке данных или при запихивании в DBF и еще момент - если я пишу - ДБ.АвтоСохранение = Истина; то ДБ.Записать(); делаю один раз в конце процедуры |
|||
12
ГдеСобака Зарыта
25.02.13
✎
16:14
|
А нет, все норм. Проверял ДБ.КоличествоЗаписей() почему то сообщает на единицу меньше. А записи все в файле присутствуют.
А это нормально на каждую запись делать ДБ.Записать()? В клюшках вроде одного раза хватало в конце формирования файла |
|||
13
Mafoni
25.02.13
✎
16:14
|
(8) а вообще покажи полный код - думаю проблема де то там
|
|||
14
Mafoni
25.02.13
✎
16:15
|
(12) - смотри (11)
|
|||
15
ГдеСобака Зарыта
25.02.13
✎
16:15
|
+12 и это с ДБ.АвтоСохранение = Истина;
|
|||
16
ГдеСобака Зарыта
25.02.13
✎
16:21
|
А если ДБ.АвтоСохранение = Истина; убрать, то 0 записей в файле
|
|||
17
Mafoni
25.02.13
✎
16:31
|
(16) если убрать ДБ.АвтоСохранение = Истина; то после каждого
ДБ.Добавить(); необходимо сделать ДБ.Записать(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |