Алгоритм заполнения поля block #28481


#0 by Zanuda
Господа, прошу помочь. Конфигурация "ЗиК". Файл 1sblob.dbf. Подскажите алгоритм заполнения поля block, для fieldid=" J4". Заранее благодарен.
#1 by SnarkHunter
It's a kind of magic...
#2 by Хотел тебе
вчера рассказать. Но мне сказали "Отдыхай до 22 часов"
#3 by 427
Ё точно магия нужна...
#4 by Zanuda
Тут кто-нибудь в 1С разбирается? Ответьте, пожалуйста.
#5 by Матрейя
4. Напиши состав полей.
#6 by uchenik
Что? Где? Куда?
#7 by Zanuda
Матрейя Fieldid C 4, Objid C 9, Blockno N 4,0, Block C 80. Заполняется из Т-2. Fieldid - идентификатор по Т-2 (fieldid=" J4", соответствует членам семьи). Objid - связывает с Id из SC16.dbf. Blockno - соответсвенно № блока. Block - сам информационный блок. Сначала там идет шестнадцатиричный код значимой части блока, но не всегда. И никак мне не понять алгоритм заполнения. Описал 5 вариантов, еще вылезают - надоело. Поэтому и прошу помочь.
#8 by Матрейя
7. Блоки заполняются по 80 символов. То есть если строка нгеограниченной длины=160, тогда значения fildid,objid будут одинаковы, различны только номера блоков и их содержимое.
#9 by Zanuda
Матрейя, спасибо, это я понял. Интересует именно структура строки неограниченной длины. Ее я получил. Там так: длина строки шестнадцатиричная,7 пробелов,потом по порядку строки, разделенные CHR, а в них столбцы, разделенные CHR - вроде все просто. Но получается бред. Вот пример старого кода (тут не все варианты):
#10 by Zanuda
Это пример получения первой записи, первых двух полей. Самый прстой, так как они попадают в Blockno=0, но и он не всегда работает и дополненный не всегда работает. Хочу понять алгоритм.
#11 by Матрейя
9. Только что просмотрел blob: в поле Block - первое значение - длина строки.
#12 by Матрейя
+11. Длина символов всей неограниченной строки (всех блоков данного объекта)
#13 by Матрейя
#14 by Матрейя
Однако нашел такой прикол. Если блоков допустим 2, тогда первое значение = _IdToStr(СтрДлина(СокрЛП(Спр.Новый1))умножить на два))
#15 by Матрейя
Интересно, это для импорта данных тебе нужно?
#16 by Zanuda
Скорее для экспорта из 1С.
#17 by Zanuda
Там такие есть варианты - block="4       .  ..". И много подобных, которые в систему мне не засунуть.
#18 by Матрейя
Экспорт-импорт, смотря с какой стороны смотреть :). Разве 13-14 недостаточно чтобы написать алгоритм считывания? Первое значение это длина всех блоков текущего объекта, типа индекса. Хотя, 1с можно юзать и по OLE.
#19 by Zanuda
Матрейя, в 1С попробую, но желательно это сделать без использования 1С. Для этого мне нужно знать как 1С заполняет это поле - алгоритм. Алгоритм я описал выше, но в нем получается столько исключений, что беда. Значит надо его подправить. Нет информации - как имея на входе строки из Т-2, заполняет ими 1sblob. Как например может получиться:  block="4       .  .."?
#20 by Матрейя
block="4" =4 - это число символов. 19. Честно говоря не понял немного. Как считывать записи и записывать я показал в 13-14. У тебя проблемы с прочтением того, что записано? Тогда покажи результат того, что там записано ( в виде непрерывной строки). Дело в том, что в blob можно записывать объекты 1с во внутреннем представлении. Может это тебя сбивает с толку?
#21 by Матрейя
#22 by Zanuda
Матрейя, нет все, что ты написал, я понял. Просто это не решает проблемы. Я с 1С работаю опосредствованно. То есть работаю с dbf-ми. Намного быстрее получается. 1С формирует blob из формы Т-2. Меня интересует только информация о родственниках. Вводим в Т-2 "Отец", "Иванов Иван Иванович" и по идее получаем: block="20      Отец"+CHR+"Иванов Иван Иванович"+CHR+"  .  .  ", а строки с родственниками разделяются CHR. В принципе эта схема работает примерно в 90% случаев. Но, есть бред не укладывающийся в эту схему, тот же block="4       .  ..", да 4 символа, получаем ".  ." - хорошая информация о родственниках. Или block="26      .  ."+CHR+CHR+"Отец"+CHR+"Иванов Иван Иванович"+CHR+"  .  .  ". Откуда он эту пустую дату берет, почему в начало ставит? Поэтому и спрашиваю, как 1С это делает, ведь когда форму Т-2 открываешь, там пустых дат вначале нет, хотя данные для этого беруться из blob.
#23 by Zanuda
Не появилось информации?
#24 by Матрейя
23. Мне некогда разбираться. Дай немного больше информации. Что такое Т2? какая конфа?
#25 by Zanuda
Конфигурация "Зарплата и Кадры". В кадрах используется форма Т-2, выход через справочник Сотрудники.
#26 by Матрейя
25. Завтра (то бишь сегодня) на работе могу глянуть.
#27 by Zanuda
Буду очень признателен.
#28 by Zanuda
Матрейя, 1Сники вы где все? Неужели никто не знает ответа на этот вопрос?
#29 by Zanuda
Господа, работающие с 1С, вы же освоили руссифицированный Basic, а на простой вопрос ответить не можете...
#30 by Дурочкааа 1С
Видимо, кроме тебя и Светы никто такими глупостями не занимается.
#31 by Zanuda
Вполне возможно.
#32 by Матрейя
29. Извиняюсь, в последнее дни проблемы со временем.
#33 by mszsuz
Если это всё для того, чтобы закачать в ЗиК данные из старой программы, то ГОРАЗДО ПРОЩЕ воспользоваться средствами встроенного языка и сделать загрузку из самой 1С. Каюсь, по-первости сам из досовской самодельной проги в 1С 7.0 непосредственно в дбф-ки писал :) т.к. считал, что это лучший вариант.
#34 by Zanuda
mszsuz, нет не для этого. Даже скорее наоборот, чтобы из dbf информацию брать в другую программу.
#35 by unknown
Прекрасно все берется имея ОЛЮ.
#36 by Zanuda
Согласен, берется. Только надо как раз через dbf.
#37 by unknown
Ну тогда тебе в 21 все сказали. Если сам хочешь переводить туда сюда обратно, то изучай перевод чисел из одной системы счисления в другую. Читай это, там в самом конце второй части
#38 by Zanuda
unknown, большое спасибо. Матрейя в 21 все сказал, за что ему также большое спасибо. Только я не вижу какое отношение имеет перевод систем счисления к моему вопросу. Если работать с dbf, то перевод 36->10 и обратно вообще не нужен, т.к. там все связывается и по 36 хорошо. Там надо только 16->10, но проблема совсем не в этом. Проблема - откуда беруться исключения ?
#39 by unknown
А просто dbf открыть каким-нибудь вьювером, он чего показывает в этих проблемных строках?
#40 by Zanuda
Например, block="4       .  .."
#41 by unknown
Так с наскока не скажешь. Нужно смотреть файлы справочников сотрудников и подчиненого ему справочника семья, или как он там сейчас в ЗиКе обзывается.
#42 by Zanuda
Возможно - это пустая строка, т.к. структура там - степень родства символьная, ФИО символьная и дата рождения дата. Две пустые строки и пустая дата "  .  .  ", если обрезать пробелы и дают такой результат. Но зачем тогда 1С помещать пустую строку, или по очереди пустую и с записью, например: block="26      .  ."+CHR+CHR+"Отец"+CHR+"Иванов Иван Иванович"+CHR+"  .  .  ". В каких случаях этот бред лезет?
#43 by unknown
А ты знаешь как работает 1C с dbf, да в принципе и любая другая прога. Ксати в статье в самом начале про это говориться.
#44 by Zanuda
Работа с dbf, она и в Африке - работа с dbf. А 1С это делает неважно. Мне все это и занадобилось не для того, чтобы данные туда вводить или редактировать, с этим все у 1С нормально. А чтоб отчеты делать. Т.к. одинаковый отчет, с выводом например в Excel, если работать напрямую с dbf у меня получается где-то раз в 30-50 быстрее.
#45 by unknown
Ну тогда ты должен знать, откуда там беруться пустые, или не до конца заполненные строки.
#46 by unknown
Точне с записи с пустыми полями.
#47 by Zanuda
В том то и дело, что не знаю. По идее - вообще не должны появляться. То ли это глюк, то ли предусмотрено именно для 1sblob. В остальных dbf такого нет.
#48 by unknown
Нет скорее всего паряться кадровики, когда заносят имфу о составе семьи.
#49 by Zanuda
В принципе, возможно, что при очищении полей в форме Т-2, 1С оставляет в 1sblob пустую запись. Но это не объясняет block="26      .  ."+CHR+CHR+"Отец"+CHR+"Иванов Иван Иванович"+CHR+"  .  .  ".
#50 by unknown
Можно нарисовать ситуацию, при которой таккая фигня получается. Но если у тебя их там до 10% от количества всех записей, то твоего кадровика пинать надо, с работы во всяком случае ;))
#51 by Zanuda
До 5% и кадровик не при делах. Если смотреть на Т-2 из 1С, как смотрит кадровик, то там все нормально. А в 1sblob такая ерунда, вот и думаю как такое может быть? Все глюки я уже описал, новых нет пока, так что все работает нормально, но интерес, что там в 1С такого безумного происходит, остался.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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