Имя: Пароль:
1C
 
Значение поля IDJOURNAL в 1SJOURN.DBF
0 jk3
 
16.05.11
23:04
Как вычислить ID-шник журнала документа, чтобы записать новую строку в этот файл?
1 МегаБум
 
16.05.11
23:10
зачем
2 Torquader
 
16.05.11
23:27
А не проще ли его "подсмотреть" в том же файле или путём разбора MD-файла - ведь это внутренний ID метаданых журнала ?
3 jk3
 
17.05.11
09:30
(1) Таинственным образом исчезло половина файла 1SJOURN.DBF, нужно восстановить в том числе и это поле.

(2) Насчет "подсмотреть" в том же файле -- я уже догадался.
Интересует само вычисление в случае, когда 1SJOURN.DBF вообще пустой, подсмотреть негде и надо восстановить.
4 1Сергей
 
17.05.11
09:38
5 Ёпрст
 
гуру
17.05.11
09:38
(0) через метаданные посмотреть, какому журналу принадлежит данный вид документа, далее тупо подставить ид этого журнальчега
6 Ёпрст
 
гуру
17.05.11
09:39
(4) а нафига через кеш, когда и так сайт работает ?
http://www.script-coding.com/v77tables.html
7 1Сергей
 
17.05.11
09:40
(6) странно, у меня минуту назад не открывалось, пришлось через кэш
8 jk3
 
17.05.11
09:46
(7) У меня тоже вчера эта ссылка не открывалась.
Сегодня открылась :)
9 jk3
 
17.05.11
09:48
(5) Ну я понял. Вопрос в том, можно ли получить ID журнала БЕЗ использования внешних компонент Rainbow/1C++, функции GetMetaDataID() ?
10 Ёпрст
 
гуру
17.05.11
09:55
(9) врятли .. Да и, ты журнальчик то как собрался восстанавливаить свой ?
Еще на проклабе валяется востановлялка журнальчига через радугу.
11 jk3
 
17.05.11
09:57
(10) С проклаба восстановилку уже забрал.
Но она заточена под бухию, т.к. восстанавливает основные данные из журнала проводок.
Пишу свою, т.к. надо для базы ЗиКа сделать.
12 Ёпрст
 
гуру
17.05.11
09:59
(11) для начала, ты тии пробовал делать ?
Оно тоже 1SJOURN восстанавливает, если че.. только доки не проведенными будут.
13 jk3
 
17.05.11
10:02
(12) Пробовал запускать, посмотрел, что пишеть удалено-удалено-удалено... и закрыл, даже не посмотрев что оно в dbf записала.
Ну могу до конца проделать и посмотреть что получилось, раз говоришь...
14 jk3
 
17.05.11
10:31
(12) Да уж "прекрасно" ТИИ восстанавливает.
Нет в журнале документов. Удалено
Итого удалило из dh файлов около 500 документов из 4.5 тыс.
Вот поэтому и начал писать свою обработку.
15 Ёпрст
 
гуру
17.05.11
11:31
(14) значит, еще таблички битые есть..

А так, тупо iddoc запиши с таблички шапки, всё остальное (дату/номер дока - с mlg тащи (если нет регистров/проводок ).
16 МегаБум
 
17.05.11
13:36
копии конечно, как всегда, нет ?
17 jk3
 
17.05.11
20:39
(16) Само собой.

(15) Вот чего-то я не пойму. Может объяснишь как такое может быть.
Восстановил инфу, см. скриншот: http://img691.imageshack.us/img691/4859/clipboard01zik.png

Те записи, у которых проставлено поле CLOSED -- это которые сохранились после сбоя.
У которых не проставлено -- восстановленные.

Почему старые записи отображаются в Предприятии, а новые нет.
CDX файл после восстановления, естественно, убивал.
18 1Сергей
 
17.05.11
21:02
(17) не открывается картинка.
Залей на http://savepic.ru/
19 jk3
 
17.05.11
21:06
20 jk3
 
17.05.11
22:40
Победил-таки.

Заменил дописывание в существующий файл жунала на создание нового файла журнала с помощью кода
Ф1 = СоздатьОбъект("XBase");

Ф1.ДобавитьПоле("IDJOURNAL", "C",  4, 0);
Ф1.ДобавитьПоле("IDDOC",     "C",  9, 0);
Ф1.ДобавитьПоле("IDDOCDEF",  "C",  4, 0);
Ф1.ДобавитьПоле("APPCODE",   "N",  3, 0);
Ф1.ДобавитьПоле("DATE",      "D",  8, 0);
Ф1.ДобавитьПоле("TIME",      "C",  6, 0);
Ф1.ДобавитьПоле("DNPREFIX",  "C", 18, 0);
Ф1.ДобавитьПоле("DOCNO",     "C", 10, 0);
Ф1.ДобавитьПоле("CLOSED",    "N",  1, 0);
Ф1.ДобавитьПоле("ISMARK",    "C",  1, 0);
Ф1.ДобавитьПоле("ACTCNT",    "C",  6, 0);
Ф1.ДобавитьПоле("VERSTAMP",  "C",  6, 0);

Ф1.СоздатьФайл("__temp.dbf");

И последующим копированием сохранившихся записей и добавлением восстановленных записей.

ТИИ после восстановления ни одной ошибки не выдает.

Осталось только по файлу журнала расчетов выставить пометку проведения и всё.

Кстати, (15) 99% номеров и дат доков восстановил через таблицу подчиненных документов 1SCRDOC.DBF.
ЗиК в этом плане хорошо написан.
А уж оставшийся 1% пришлось всё-таки тащить из mlg.
Ошибка? Это не ошибка, это системная функция.