Имя: Пароль:
1C
1С v8
Проблема с выгрузкой в dbf
0 Кир Пластелинин
 
07.05.13
13:59
Доброго! есть обработка по выгрузке в dbf определенных данных (реализации, сф и прочее). а теперь немного уличной магии. сама dbf-ка формируется, но! в dbf попадает только последняя запись. если еще раз сформировать, то попадут все записи (при том не всегда). либо может быть обратная ситуация. с первого раза все записи, а потом если делать выгрузку, то только одна. т.е. абсолютно хаотично и непредсказуемо. глюк платформы или что? обходное решение конечно нашел, но хотелось бы разобраться.
1 Wobland
 
07.05.13
14:01
это или что
2 shuhard
 
07.05.13
14:01
(0) [но хотелось бы разобраться.]
в херовом коде нужно и должно разобраться
3 Кир Пластелинин
 
07.05.13
14:04
(2)оооуукей. как объяснить то, что один и тот же код и срабатывает и не срабатывает?)
4 Кир Пластелинин
 
07.05.13
14:06
+(3)при том при тех же условиях
5 Wobland
 
07.05.13
14:08
(3) криворукостью автора
6 Кир Пластелинин
 
07.05.13
14:14
ОбъектХ = Новый XBase();

ОбъектХ.Кодировка = КодировкаXBase.OEM;

ОбъектХ.поля.Добавить("KOD_PUBLIC", "N", 6, 0);
ОбъектХ.поля.Добавить("OBJ_CODE", "S", 20);
ОбъектХ.поля.Добавить("N_DOG_P", "S", 40);
ОбъектХ.поля.Добавить("TTN_NO", "S", 20);
ОбъектХ.поля.Добавить("TTN_DATE", "D");
ОбъектХ.поля.Добавить("SUPPTNP_ID", "S", 38);
ОбъектХ.поля.Добавить("ZEN_PP", "N", 9, 2);
ОбъектХ.поля.Добавить("KOL_SH", "N", 12, 3);

ИмяФайла = "TTN" + Сред(Формат(ТекущаяДата(),"ДФ=yMMdd"), 2) + ".dbf";

Попытка
    ОбъектХ.СоздатьФайл("Тута путь к файлу" + ИмяФайла);
Исключение
    Сообщить("Файл не создан");
Возврат;
КонецПопытки;
   
//запрос
   
//обход выборки  
Пока Результат.Следующий() Цикл        
  ОбъектХ.Добавить();
 
  ОбъектХ.KOD_PUBLIC  = 111760;
  ОбъектХ.OBJ_CODE    = Результат.ПартнерКод;
  ОбъектХ.N_DOG_P     = "31352ТГ";
  ОбъектХ.TTN_NO      = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Результат.Номер, Ложь, Ложь);
  ОбъектХ.TTN_DATE    = Результат.Дата;
  ОбъектХ.SUPPTNP_ID  = Результат.НоменклатураАртикул;
  ОбъектХ.ZEN_PP      = Результат.Цена;
  ОбъектХ.KOL_SH      = Результат.Количество;
   
  ОбъектХ.Записать();

КонецЦикла;

ОбъектХ.ЗакрытьФайл();
7 Кир Пластелинин
 
07.05.13
14:15
(5) снизойдите и ткните своим божественным пальчиком - где тут криворукость.
8 Wobland
 
07.05.13
14:16
(7) Сред(Формат( как минимум
9 Wobland
 
07.05.13
14:17
//запрос как максимум
10 Кир Пластелинин
 
07.05.13
14:19
(8)(9) каким образом "сред(Формат" будет влиять на то что только последняя запись в дбфке есть?) а через некоторое время все с теми же параметрами и прочим - попадают все записи, какие должны) запрос как солдат дает один и тот же результат. проверено и не раз.
11 Wobland
 
07.05.13
14:20
(10) ты хотел криворукости? тебе её показали
12 palpetrovich
 
07.05.13
14:24
Обработка запускается из Файл-открыть или как "Внешняя"? Глюк проявляется при отладке или только при работе?
зы чудес не бывает
13 Кир Пластелинин
 
07.05.13
14:25
(11) особого криминала не вижу. можно было и по другому, но не мое это добро и, на сколько помню, дбф не любит длину имени файла больше чем 8 символов (или сколько там?), поэтому так и сделали. по теме есть что сказать, али только собственное чсв потешить?
14 Wobland
 
07.05.13
14:26
(13) исключительно потешить. начало диалога не располагает
15 Кир Пластелинин
 
07.05.13
14:29
(12) в отладке - как раз норм, а вот при работе - такие радости
(14) ну уж простите.
16 palpetrovich
 
07.05.13
14:29
(15) под любым пользователем?
17 Кир Пластелинин
 
07.05.13
14:31
(16) да. в общем немного прихожу к следующей закономерности. когда сервак загружен под завязку - такие глюки есть. после ребута - пропадают.
18 palpetrovich
 
07.05.13
14:32
в "ПолучитьНомерНаПечать(" нет случайно каких-то Отказ=Истина? :)

(17) хм, дык, срочно денег на апгрейд! :)
19 Кир Пластелинин
 
07.05.13
14:42
(19) с "получитьномернапечать" - точно нет. так как одна дбф - один документ, а точнее его тч. вот сегодня как раз смотрел. одна реализация с 4мя позициями - попадала только последняя строчка. сервак перезагрузили - работает как часы и все 4ры

з.ы. да вот как раз только новый сервак купили :)

все же хотелось бы найти какое то логическое объяснение происходящему - как связана запись в дбф с нагрузкой на сервер. при том ладно бы все скопом сразу писалось и нехренового размера, так построчно. а все эти "криворукость" - неадекватная болтология. не разобрались, но клеймо поставили на автомате. если в чем не прав - поправьте.
20 Wobland
 
07.05.13
14:48
(19) поправляю. говорить нужно больше, а не выдавливать из себя по чайной ложке
21 Шапокляк
 
07.05.13
14:57
(19) А что, когда ты так вот в цикле файл перезаписываешь, это меньшая нагрузка на сервер? Файловой системе не все равно, перезаписывать файл полностью измененный или вообще нетронутый?
22 Кир Пластелинин
 
07.05.13
15:03
(20) ладно. мир труд май.
(21) немного не понял вопроса. есть еще какой то вариант записи в dbf через XBase?)
23 Шапокляк
 
07.05.13
15:11
(22) XBase (XBase)
Записать (Save)
Синтаксис:
Записать()
Описание:
Записывает изменения в таблицу базы данных. До его вызова все изменения объекта производились только в памяти и будут потеряны при осуществлении перехода к другой записи или закрытии таблицы базы данных, если отключен режим автосохранения.
См. также:
XBase, свойство АвтоСохранение
Поставь свойство Автосохранение и не мучай сервер перезаписью своего файла после каждого добавления записи.
24 Кир Пластелинин
 
07.05.13
15:16
(23) хорошо. это я видел. практическим путем не пробовал, но меня лично смущает вот этот момент "будут потеряны при осуществлении перехода к другой записи", т.е. по логике, если я добавляю новую запись, то добавленные до этого будут потеряны. и если вернуться к прошлому вопросу - автосейв тоже пробовал. тот же результат.
25 Кир Пластелинин
 
07.05.13
15:17
*добавленные и не записанные до этого