Краткое описание формата файлов *.1CD (файловых баз 1Сv8)

Публикация № 19734

Разработка - Математика и алгоритмы

После того, как я выложил свою программку Tool_1CD ( http://infostart.ru/projects/3851/ ), оказалось, что интерес к формату файлов 1CD достаточно велик. Поэтому для всех желающих продолжить разбираться с форматом, или желающих написать свою программу, выкладываю свои текущие знания об этом формате.

Отмазки.

Данное описание не претендует на законченность, безошибочность и понятность.

Начало.

Описание формата приведено в терминах языка C. Размер типа char – 1 байт, размер типа short int – 2 байта, размер типа int и unsigned int – 4 байта. Префиксом 0x обозначаются шестнадцатеричные числа.

Файлы баз *.1CD состоят из блоков длиной 4096 байт (0x1000). Соответственно, длина файла всегда кратна 4096.

Блок 0.

Нулевой блок имеет следующую структуру:

struct {

char sig[8]; // сигнатура “1CDBMSV8”

char ver1;

char ver2;

char ver3;

char ver4;

unsigned int length;

int unknown;

}

Первые 8 байт – сигнатура базы «1CDBMSV8».

Следующие 4 байта - это версия базы. На данный момент мне встречались только версия «8.0.5.0» (ver1 = 8, ver2 = 0, ver3 = 5, ver4 = 0) – это базы 1Cv8.0 и версия «8.1.0.0» (ver1 = 8, ver2 = 1, ver3 = 0, ver4 = 0) – это базы 1Cv8.1 и 1Cv8.2.

Следующие 4 байт – длина базы (файла) в блоках.

Предназначение поля unknown неизвестно, всегда содержит 1.

Объекты.

Вся остальная информация в базе хранится в объектах (файлах базы). Каждый объект состоит из одного или более блоков. У каждого объекта есть один заголовочный блок, блоки с таблицей размещения, и собственно данные. Второе и третье может отсутствовать.

Структура первого блока каждого объекта такова:

struct {

char sig[8]; // сигнатура “1CDBOBV8”

int length; // длина содержимого объекта

int version1;

int version2;

unsigned int version;

unsigned int blocks[1018];

}

Первые 8 байт – сигнатура базы «1CDBOBV8».

Есть 2 типа объектов.

Блок 1. Таблица свободных блоков.

Первый тип объекта – это таблица свободных блоков. Признаком этого блока является поле version равное 0. Такой объект в базе всегда один, и его заголовочный блок располагается всегда в блоке со смещением 1 (т.е. по адресу 0x1000). Длина данных такого объекта равна (length * 4) байт.

В blocks содержатся номера блоков, в которых собственно и находится содержимое таблицы свободных блоков. Значащими являются ненулевые значения в массиве blocks. Содержимое таблицы свободных блоков – это просто массив номеров свободных блоков:

unsigned int free_blocks[length];

Таким образом, в базе содержатся ровно length свободных блоков.

Когда системе требуется новый блок для данных, то она берет последний свободный блок из массива free_blocks и уменьшает length на 1. Если свободных блоков нет, то он создается в конце файла базы. Блоки, содержащиеся в массиве blocks, не являются свободными, а принадлежат объекту – таблице свободных блоков. В blocks может содержаться больше блоков, чем необходимо для хранения массива free_blocks.

Остальные объекты.

Второй тип объектов характеризуется ненулевым значением поля version. Вся информация в базе, кроме блока 0 и таблицы свободных блоков хранится именно в таких объектах.

В поле length содержится длина в байтах данных объекта.

В массиве blocks находятся индексы блоков, содержащих таблицу размещения данных объекта. Каждый блок, указанный в blocks, и являющийся частью таблицы размещения, имеет следующую структуру:

struct {

int numblocks;

unsigned int datablocks[1023];

}

Поле numblocks указывает количество реальных значений в datablocks (от 1 до 1023). В datablocks содержатся индексы блоков, в которых находится собственно содержимое объекта (данные). Так как в одном блоке таблицы размещения может быть указано максимум 1023 блока с данными, то соответственно, максимальная длина данных, указанных в одном блоке таблицы размещения равна 1023 * 4096 = 4190208 байт (0x3ff * 0x1000 = 0x3ff000). Таким образом, из длины содержимого объекта length мы можем определить количество фактических значений в blocks. Если length равен 0, то в blocks нет значащих данных, иначе количество значений в blocks равно (length - 1) / 0x3ff000 + 1 (деление целочисленное, без остатка). А также можно вычислить максимальную длину данных одного объекта: 4190208 * 1018 = 4265631744 байт (1018 – максимальное количество значений в массиве blocks), это совсем немного меньше 4х гигабайт.

Повторим, в заголовочном блоке объекта находится массив blocks, содержащий индексы блоков с таблицей размещения. А в таблице размещения находятся блоки, содержащие сами данные.

Блок 2. Корневой объект.

Последним объектом с предопределенным расположением является корневой объект. Заголовочный блок корневого объекта располагается в блоке с индексом 2. Все остальные объекты базы могут быть получены через корневой объект. Структура данных этого объекта зависит от версии базы, хотя и различается несильно. Для версии базы «8.0.5.0» эта структура выглядит так:

struct {

char lang[8];

int numblocks;

int tableblocks[numblocks];

}

Для версии «8.1.0.0» структура выглядит так:

struct {

char lang[32];

int numblocks;

int tableblocks[numblocks];

}

Т.е. различаются эти структуры только длиной поля lang. В поле lang содержится код языка базы. Код языка базы представляет собой строку в ANSI-кодировке. Мне встречались только базы с кодами «ru_RU» и «en». На что влияют эти коды языка, я не знаю, возможно, на порядок сортировки строк при построении индексов.

В поле numblocks содержится количество элементов в массиве tableblocks. В массиве же tableblocks содержатся индексы объектов, содержащих все таблицы данных. Т.е. таблиц в базе ровно numblocks.

Объект таблицы.

Каждый объект таблицы, указанный в корневом объекте, содержит просто текстовое описание таблицы в Unicode. Вот пример описания таблицы:

{"_Reference4",0,

{"Fields",

{"_IDRREF","B",0,16,0,"CS"},

{"_VERSION","RV",0,0,0,"CS"},

{"_MARKED","L",0,0,0,"CS"},

{"_ISMETADATA","L",0,0,0,"CS"},

{"_CODE","NC",0,9,0,"CI"},

{"_DESCRIPTION","NVC",0,25,0,"CI"},

{"_FLD7","I",1,0,0,"CS"}

},

{"Indexes",

{"_IDRREFIDX",1,

{"_IDRREF",16}

},

{"_REFERENCE4_CODE_SR",0,

{"_CODE",9},

{"_IDRREF",16}

},

{"_REFERENCE4_DESCR_SR",0,

{"_DESCRIPTION",25},

{"_IDRREF",16}

}

},

{"Recordlock","0"},

{"Files",118,119,96}

}

Как видно из этого примера, здесь присутствуют имя таблицы (_Reference4), раздел описания полей таблицы (Fields), раздел описания индексов (Indexes), параметр Recordlock и раздел Files.

В разделе Files всегда содержатся три числа, которые содержат индексы заголовочных блоков объектов (по порядку) с записями таблицы, Blob-данными (строки неограниченной длины и двоичные данные) и индексами. Если какого-либо объекта у таблицы нет, то соответствующее число равно нулю.

В разделе Fields содержатся описания полей таблицы. Описание каждого поля содержит (по порядку): имя поля (FieldName), тип поля (FieldType), признак использования NULL (NullExists), длину (FieldLength), точность (FieldPrecision) и признак регистрочувствительности (FieldCaseSensitive).

Сколько байт занимает каждое поле в записи, и как его интерпретировать, зависит от параметров поля. Во-первых, если NullExists у поля равен 1, то первый байт поля является признаком NULL. Значение 0 этого байта означает, что поле не содержит значение (т.е. содержит NULL). В противном случае, поле содержит значение. Если же NullExists равен 0, то такого байта в поле нет.

Далее, размер и формат поля зависит от типа поля. Типы поля бывают такими:

  • «B» - двоичные данные. Длина поля равна FieldLength байт.
  • «L» - булево. Длина поля 1 байт. Нулевое значение байта означает Ложь, иначе Истина.
  • «N» - число. Длина поля в байтах равна Цел((FieldLength + 2) / 2). Числа хранятся в двоично-десятичном виде. Первый полубайт означает знак числа. 0 – число отрицательное, 1 – положительное. Каждый следующий полубайт соответствует одной десятичной цифре. Всего цифр FieldLength. Десятичная точка находится в FieldPrecision цифрах справа. Например, FieldLength = 5, FieldPrecision = 3. Байты 0x18, 0x47, 0x23 означают число 84.723, а байты 0x00, 0x00, 0x91 представляют число -0.091.
  • «NC» - строка фиксированной длины. Длина поля равна FieldLength * 2 байт. Представляет собой строку в формате Unicode (каждый символ занимает 2 байта).
  • «NVC» - строка переменной длины. Длина поля равна FieldLength * 2 + 2 байт. Первые 2 байта содержат длину строки (максимум FieldLength). Оставшиеся байты представляет собой строку в формате Unicode (каждый символ занимает 2 байта).
  • «RV» - версия. Длина поля 16 байт. Предположительно содержит четыре числа int.
  • «NT» - строка неограниченной длины. Длина поля 8 байт. Первые четыре байта содержат начальный индекс блока в объекте Blob таблицы, вторые четыре – длину данных в объекте Blob. В объекте Blob содержится строка в формате Unicode.
  • «I» - двоичные данные неограниченной длины. Длина поля 8 байт. Первые четыре байта содержат начальный индекс блока в объекте Blob таблицы, вторые четыре – длину данных в объекте Blob.
  • «DT» - дата-время. Длина поля 7 байт. Содержит данные в двоично-десятичном виде. Первые 2 байта содержат четыре цифры года, третий байт – две цифры месяца, четвертый байт – день, пятый – часы, шестой – минуты и седьмой – секунды, все также по 2 цифры.

Зная теперь длину в байтах каждого поля можно посчитать общую длину одной записи таблицы и смещение каждого поля в записи. Но для этого необходимо учесть следующее. Если в описании полей таблицы нет поля с типом версия (RV), но при этом параметр Recordlock равен 1, то в записи присутствует дополнительное поле, которое я для себя называю короткая скрытая версия. Длина этого поля равна 8 байт. В каждой записи самый первый байт – это признак удаленности записи (признак, что запись не занята). Если этот байт равен 1, то запись свободна, а следующие 4 байта содержат индекс следующей свободной записи. Из этого следует, что запись не может быть короче пяти байт. Если же первый байт записи содержит 0, то далее в записи следуют значения полей. Причем порядок полей определяется таким образом: превым всегда идет поле версии (или описанное в разделе Fields с типом RV или поле скрытой короткой версии), затем все остальные поля в том порядке, как они описаны в разделе Fields.

Объект записей таблицы.

Содержимое объекта записей таблицы содержит просто массив записей. Таким образом, длина данных этого объекта всегда кратна длине одной записи. Первая (точнее нулевая) запись всегда помечена как свободная, она содержит индекс следующей свободной записи (или 0, если таких нет). Т.е. с нее начинается цепочка свободных записей таблицы.

Объект Blob таблицы.

Объект содержит Blob-данные таблицы (строки неограниченной длины и двоичные данные неограниченной длины). Содержимое этого объекта состоит из блоков (не путать с блоками, из которых состоит файл 1CD) длиной 256 байт (0x100). Т.е. это просто массив блоков длиной 256 каждый. Поэтому длина данных объекта всегда кратна 256. Структура каждого блока объекта такова:

struct {

unsigned int nextblock;

short int length;

char[250] data;

}

Поле nextblock содержит индекс следующего блока, содержащего продолжение данных, или 0, если следующего блока нет. Поле length содержит длину данных в этом блоке (максимум 250). Поле data содержит сами данные. Нулевой блок всегда считается свободным, в поле nextblock он содержит индекс следующего свободного блока. Таким образом, с нулевого блока начинается цепочка свободных блоков.

В записях таблицы в полях с типом «NT» и «I» содержится индекс первого блока, с которого начинаются данные, относящиеся к этому полю данной записи.

Объект индексов таблицы.

На данный момент структура индексов до конца не изучена.

...

С благодарностью приму любые уточнения, дополнения, сообщения об ошибках, а также любую другую информацию по теме.

 

 

 

 

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3891 23.04.09 06:51 Сейчас в теме
Вот за это не плюс, а ПЛЮСИЩЕ.
Рано или поздно придется копаться ;)
xioxao; gorevg; GusevNA; surr; odin777; SirYozha; MaxDavid; alexgt; das; zag2art; BabySG; mdzen; biv75; +13 Ответить
2. kadr 51 23.04.09 08:50 Сейчас в теме
Да...
Проделана огромная работа.
3. Душелов 3925 23.04.09 09:08 Сейчас в теме
4. Evg-Lylyk 3314 23.04.09 10:59 Сейчас в теме
(0) А описания формата внешних обработок нет?
6. СергейКа 689 23.04.09 11:57 Сейчас в теме
(4) Ничего особо сложного. В основном проще чем CD. Но думаю, выкладывать на всеобщий обзор будет неразумно. Кто захочет - разберется. Сам начинал разбираться со структурами с обработки автора. И не очень давно.
8. artbear 1307 23.04.09 12:43 Сейчас в теме
(6) А в чем проблема-то при выкладывании в общий доступ ?
Ты даешь описание деталей, а не готовую программу, которая взламывает что-то.

ЗЫ все равно уже существует V8Unpack и аналогичные инструменты :)
9. СергейКа 689 23.04.09 12:53 Сейчас в теме
(8) Существует, не спорю. Но именно тоже не как готовая программа :) С ней еще покопаться надо.
Но в конце-концов это ИМХО. Желающий да разберется (ищущий да обрящет).
5. z-alexey 1195 23.04.09 11:22 Сейчас в теме
Ничег не понимаю, но плюс :)
7. support 4536 23.04.09 12:02 Сейчас в теме
Предлагаю создать статью на http://wiki.infostart.ru
Там скоро я все переделаю под общую базу знаний.
lable.punks; +1 Ответить
10. sound 23.04.09 23:59 Сейчас в теме
Прикольно. Дерзайте парни. Отомстим за гоу ту (Ц)
11. newbas 601 24.04.09 09:53 Сейчас в теме
12. awa 2541 24.04.09 09:56 Сейчас в теме
59. AlexStar 51 05.08.12 12:01 Сейчас в теме
Добрый день!
Помогите, плиз, в решении проблемки с базой.

Бухгалтерия предприятия 2.0 (Базовая), релиз 2.0.35.9
Платформа 8.2.13.219, также запускал и в 8.2.15.289 и в 8.2.16.352, результат один и тотже:

При попытке в конфигураторе открыть конфигурацию выходит "Ошибка формата потока".
chdbfl.exe ошибок не находит

При тестировани ТиИ выходит следуещее:

Тестирование начато
Проверка таблицы Document196.VT5018: удалено 1 записей
Проверка таблицы SeqB8257: удалено 1 записей
Обработка структуры базы данных...
Тестирование закончено

В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка SDBL:
Тип поля CAST(Document8846.Number AS STRING(11)) AS Number несовместим с типом поля Number

При запуске в пользовательском режиме выдает следующее:

{Обработка.ДокументооборотСКонтролирующимиОрганами.МодульОбъекта(40725)}: Поле объекта не обнаружено (ПервичноеСообщениеСодержащееОтчетность)
по причине:
{Обработка.ДокументооборотСКонтролирующимиОрганами.МодульОбъекта(40725)}: Поле объекта не обнаружено (ПервичноеСообщениеСодержащееОтчетность)

Выгрузка и загрузка в новую базу через dt не помогла.
Также не помогает удаление Кэша, логов и Журнала регистрации.

Утилита Tool_1CD считывает структуру базы без ошибок, в таблице _Document8846 с полем _Number вроде все впорядке - длина 11, тип - fixed string.

Кто сталкивался, подскажите пожалуйста порядок лечения. Архивов к сожалению нет.
60. AlexStar 51 06.08.12 08:49 Сейчас в теме
(59) Проблему решил с помощью http://forum.ruboard.ru/archive/index.php/t-66612.html

Установил пустую конфу того же релиза из шаблона. После запуска конфигуратора пустой конфы открыл конфигурацию. Оставив в таком виде, скопировал файл битой базы вместо живого в каталоге пустой конфы. Закрыл конфигуратор, при этом он сказал, что база повреждена. Затем открыл снова, конфигурация стала открываться. Но это еще не все, ошибка сидит внутри, что бы от нее избавиться полностью, пока конфигурация открыта, сделал обновление следующим релизом. Обновление и реструктуризация прошли успешно, в пользовательском режиме так же все нормально запустилось. Проверил данные, на месте. Далее уже экпериментировал. ТиИ ошибок не показала, последующие обновление также прошли на УРА!!!
DrZombi; SirYozha; sasha_r; teflon; awa; +5 Ответить
13. MRAK 717 25.04.09 12:21 Сейчас в теме
эх... реализовать бы на базе этого открытый народный конфигуратор...
14. MRAK 717 25.04.09 12:21 Сейчас в теме
15. tormozit 6306 26.04.09 21:30 Сейчас в теме
Как получить модуль основной формы из EPF? Точнее где ее GUID лежит?
16. Stety 150 28.04.09 00:25 Сейчас в теме
17. awa 2541 28.04.09 00:28 Сейчас в теме
(16) Мне тоже это интересно. Задал этот вопрос Доржи, ответа пока не получил...
19. Stety 150 28.04.09 09:45 Сейчас в теме
(18) Ну, туда меня вряд ли пропустят. :-)
20. totskysergey 29.04.09 10:04 Сейчас в теме
(18) А что надо чтоб пустили в эту ветку?
25. sky_flower 25.06.09 10:23 Сейчас в теме
(20) так что всё-таки надо чтоб впустили?
неужели такая СЕКРЕТНАЯ информация?? и куда делся 21 пост?
26. awa 2541 25.06.09 10:48 Сейчас в теме
(25) Это закрытый форум Советников Администрации, чтобы туда пустили, надо быть человеком, заинтересованным в судьбе Инфостарта, активно участвовать в его жизни.
В той ветке было обсуждение, почему убрали с Инфостарта программу Tool_1CD, самой программы там нет.
Сейчас программу Tool_1CD можно найти в других местах, но публично такие ссылки на инфостарте давать неприлично))
22. das 232 05.05.09 19:01 Сейчас в теме
23. gudun_ku 61 06.05.09 20:59 Сейчас в теме
а на sql написать описание? Вообще хотелось бы функцию, которая без внешних компонент вернула средствами 1С уникальный идентификатор объекта конфигурации (что указывается в файле DBNames в таблице Params).Хочется обработки как у Германа (Enterprise Integrator),только без внешних компонент и трассировки.
24. awa 2541 07.05.09 09:09 Сейчас в теме
(23) Описание на sql чего?
Здесь описан формат файла 1CD - а это в общем случае произвольная база данных. Например, хранилище конфигураций - это тоже файловая база данных (файл 1cv8ddb.1CD), однако в этой базе нет таблиц CONFIG, PARAMS, FILES и т.д. Или, например, временная БД 1Cv8tmp.1CD, создаваемая 1С при работе в файловом режиме.
27. mishaProgr 01.07.09 21:04 Сейчас в теме
вышлите пожалуста на 122062@mail.ru программу Tool_1CD.
Нигде в Инете не найду, а очень надо
плиз!
28. Monolit 8 01.07.09 21:17 Сейчас в теме
С тех пор как Вы выложили ,там уже кто -то ночевал
http://infostart.ru/projects/3851/
29. khorevaa 26.08.09 15:20 Сейчас в теме
awa респект... ждем продолжения..
30. denisdwh 47 20.10.09 13:19 Сейчас в теме
+1
Респект автору!
Хотелось бы увидеть продолжение развития 1С Tool.
Лично мне бы хотелось бы, что бы в программе появился бы следующий функционал:
Возможность подсоединения к sql серверу.
Возможность внесения изменения данных в таблицах БД (в особенности в Blob-поля).
31. arhu-dima 15.04.10 10:50 Сейчас в теме
БЫЛО БЫ ПРИКОЛЬНО ЕСЛИ ПРОГРАММА ПОЗВОЛЯЛА РЕДАКТИРОВАТЬ ТАБЛИЦЫ. ЭТО ДАСТ ВОЗМОЖНОСТЬ НАПРЯМУЮ ВОССТАНАВЛИВАТЬ БАЗУ ДАННЫХ.
32. natarezn 17.04.10 22:11 Сейчас в теме
33. SiAl 74 28.04.10 16:53 Сейчас в теме
Добрый день. У меня ошибка в файле БД. С помощью 1CD utils я нашел, что поле SERIALIZEDDATA в таблице DBSCHEMA пустое, хочу его скопировать из файла БД типовой конфигурации, потому что конфигурация не снималась с поддержки. Но вот не погу разобраться, как правильно в HEX редакторе скопировать часть из файла пустой БД типовой конфигурации, так как конфигурация БД не отличается от типовой. Начало таблицы DBSCHEMA я могу найти, а как найти ее конец в файле?
34. awa 2541 28.04.10 17:39 Сейчас в теме
(33) Даже если конфигурации полностью совпадают, содержимое DBSCHEMA может быть разным и SERIALIZEDDATA от одной базы может не подходить к другой.
Если есть возможность, выложите на файлообменник файл 1CD, может быть удастся что-то сделать...
35. MichaelT 09.06.10 01:16 Сейчас в теме
Спасибо за пост! Программка очень пригодилась :)
36. alexcne 174 25.09.10 16:38 Сейчас в теме
Программа ОЧЕНЬ сильно помогла. Смог разобраться, какой из регистров накопления заполнен "до упора". Проанализировал структуру регистра и сократил длину одного из реквизитов, что помогло "отсрочить" переход на SQL-вариант еще как минимум на полгода.
37. alexcne 174 25.09.10 16:40 Сейчас в теме
Из пожеланий по развитию проекта:
1) сортировка по степени заполненности внутренних файлов таблиц
2) или хотя бы 3 колонки рядом с идентификатором таблицы: размер data, blob, index
3) ОБЯЗАТЕЛЬНО разделители триад в числах. Прочитать, например, число 1'234'567'890 гораздо легче чем 1234567890
4) Хотелось бы видеть не только идентификаторы таблиц, но и по возможности имена объектов, как они описаны в конфигураторе
38. ivanoa 46 18.10.10 23:33 Сейчас в теме
Ситуация такая: в конфигуратор зайти не можем:"Файл базы данных поврежден".
chdbfl.exe при проверке выдает: "Поврежден заголовок файла базы данных
Повреждено содержимое внутреннего файла <Описание базы данных>".

Tool_cd - стурктуру не показывает, пишет "длина файла в блоках и количество блоковв заголовке не равны"
Что можно сделать?
39. ivanoa 46 11.11.10 16:16 Сейчас в теме
(38) Базу удалось открыть! :) Документы все получилось вытащить. Был битым только конец файла, видимо, проблема возникла в конце построения индексов.
Было сделано два важных шага:
1) Сообщение "Поврежден заголовок файла базы данных" было вылечено тем, что изменена в блоке 0 длина файла, т.к. размер файла в байтах не совпадал числом-длиной в блоке 0(шестнадцатиричное число).
2) С помощью обработки Tool_CD http://infostart.ru/public/19633/ открыли файлы битый и нормальной копии:
в конце в битой копии нет таблиц. Вычислили количество небитых. Данное количество таблиц поставили в количество элементов в массиве tableblocks = количеству таблиц в базе.
Таким образом, т.к. у нас были битыми только регистры, удалось войти в базу и вытащить все документы и справочники универсальной обработкой выгрузки/загрузки в нормальную копию.
SirYozha; CratosX; awa; +3 Ответить
40. Fox_65 9 22.03.11 02:02 Сейчас в теме
Безусловно статья полезная. Большой плюс. В версии 77 использовались форматы хранения данных уже известные (dbf,sql) и под них была куча уже готовых инструментов.(Даже при потери части dbf базу удавалось спасти). Формат хранения данных 8 - абсолютно новая область. И инструментов для работы с ней очень мало. В случае поломки базы - инструмента кроме Hex-редактора вообще нет. Стандартная chdbfl творит непонятно что(иногда файлы укорачивает). И в 1С ответ один "Восстанавливайте из резервной копии".(Они бы сразу об этом предупреждали при установке 1с8 - "Наша программа глючная -делайте резервные копии").
Хотелось бы побольше информации (например об индексах). Tool_1cd их использует (в моем случае предупреждает
"Ошибка чтения индексов. Индекс первого свободного блока за пределами файла индексов"). Где-нибудь можно узнать побольше информации о формате 1CD?
41. VVVP 22.05.11 00:48 Сейчас в теме
Что бы посоветовал к описанию структуры: добавить уточнение по формату параметров. Например:
- int length; // длина содержимого объекта
и т.п.: не совсем ясно, сколько значащих байт к нему относится.

В остальном - очень полезные вещи! И большая работа проделана! Респект автору!
42. ateymurlu 03.10.11 09:37 Сейчас в теме
Dobriy den kollegi
Pomagite pls reshat etoto problemu
Продолжить прерванное ранее тестирование
Ошибка SQL: Таблица не найдена '_document 133'
Vo vremya testirovaniye i isparavleniye prizashlo takoy oshika
43. pmtvv 09.10.11 14:31 Сейчас в теме
прикольная штука, спасибо
44. Dragonva 25.11.11 18:45 Сейчас в теме
Класс начало это уже нужное дело! Вот описанее внещних форм то же бы выложить!
45. PLG 12.12.11 01:01 Сейчас в теме
Не удается открыть базу (типовая бухгалтерия 2.0.29.10 платф. 8.2.13.219) "Ошибка формата потока", все возможные манипуляции сделала, ничего не помогло. Открыла с помощью Tool_1CD, написано База данных 1CD открыта, похоже мне прислали открытую базу, как вернуть работоспособность.
46. Hadgehogs 337 23.12.11 23:51 Сейчас в теме
Я думаю, что всеже

int length; // длина содержимого объекта

надо исправить на

unsigned int length; // длина содержимого объекта
47. awa 2541 24.12.11 18:36 Сейчас в теме
(46) Да, совершенно верно, там беззнаковое целое, unsigned int.
48. Ice-Stas 29.01.12 13:13 Сейчас в теме
Подскажите, пожалуйста, возможно ли восстановить базу 1с 8, если проверка физической целостности пишет - База полностью разрушена восстановление невозможно? Ближайшей копии полгода. Подскажите, что можно сделать, спасибо.
49. Ice-Stas 29.01.12 13:13 Сейчас в теме
Если возможно, ответьте на Ice-stas@mail.ru
50. Ice-Stas 29.01.12 13:14 Сейчас в теме
Если есть кто, сколько это стоит и кто возьмется?
51. sasha_r 30.01.12 12:18 Сейчас в теме
Программой Tool_1CD просто восхищен!

Скажите, кому-то удавалось заменить таблицу CONFIG в одном файле 1CD на версию из другого?
а то у меня проблема с битой базой файловой - никак не могу корректной замены добиться :(
52. arifulina 31.01.12 17:25 Сейчас в теме
Очень интересно! надо будет попробовать попользоваться
53. BAC51 30.03.12 18:35 Сейчас в теме
Ребята, я написал статью с картинками о том, как я успешно пересадил таблицу CONFIG из целой базы в битую.

Вот она - по этой ссылке.

Огромный привет юзеру AWA, он крутой.
54. awa 2541 30.03.12 20:18 Сейчас в теме
(53) Что сказать, тебе повезло. У тебя файлы data, index и blob таблицы CONFIG были не фрагментированы и располагались друг за другом и в битой базе, и в бэкапе. К сожалению, так бывает не всегда.
Но как частный случай успешного лечения чтение весьма интересное. Почему бы тебе не создать публикацию здесь, на инфостарте?
55. BAC51 30.03.12 20:24 Сейчас в теме
Ну да,
Tool_1CD выводит где-нибудь блоки, которые занимает таблица? Я не нашёл, а судя по всему это полезная информация.

Публикации не умею делать, разрешаю скопировать мою статью с указанием ссылки на ЖЖ, чтобы люди могли задать мне вопросы в моём ЖЖ (на инфостарте я не планирую зависать, т.к. не занимаюсь 1С профильно)
63. Lukich66 82 06.01.13 12:29 Сейчас в теме
(55) BAC51, добрый день. Попытка оставить комментарий на ЖЖ-не удалась.
Не так страшен 1с,как его распространенность. Если в 1с.проф2.0,1sbw6,1sv7- файлы *.dbf за 30мин. простым Fox ремонтировались, то теперь опять HxD-подавай? 20 лет назад написал cbd.prg(копи бух документ) на Fox21 с интерфейсом NC- c помощью которой легко любой док из одной конф. в другую делал- похоже сейчас опять возникает та же ситуация.
56. quares 21 10.04.12 12:32 Сейчас в теме
Было бы здорово если утилита позволяла бы изменять таблицы (хоты бы структуру).
57. lexx_brz 13.06.12 21:43 Сейчас в теме
Здравствуйте, Валерий (awa)! Очень прошу помочь мне в нелегком деле) Проблема заезженная, но актуальная для меня. При обновлении конфигурации "Зарплата и Управление Персоналом (базовая)" редакцию к сожалению не помню...возникла проблема описаная ниже

Ошибка СУБД:
Файл базы данных поврежден 'C:\Users\Марина\Desktop\HRMBase1/1Cv8.1CD'
по причине:
Файл базы данных поврежден 'C:\Users\Марина\Desktop\HRMBase1/1Cv8.1CD'

При проверке и исправлении утилитой chdbfl.exe база частично восстанавливается но все равно не читается... Отвечает

Ошибка SDBL
Разрушена структура базы данных 1С:Предприятия

Что посоветуете? Заранее благодарен.
email: all-leukhin@yandex.ru
58. zigomodo 29.06.12 20:02 Сейчас в теме
61. AlexanderKai 02.10.12 17:37 Сейчас в теме
Круто. Может пригодится, но все-таки надеюсь не резервные копии у клиентов :)
62. Jen1978 19 02.10.12 18:39 Сейчас в теме
круть, хорошая тема. надо записать
64. KliMich 22.08.13 11:33 Сейчас в теме
Отличний ликбез. Спасибо!
65. hanio 52 27.08.13 22:51 Сейчас в теме
Помогите с такой проблемой: у нас база на SQL 2008R2 УТ 10.3.18.3 до 21.08.13 отлично проходил автоматический обмен с БП 2.0, собственно после этого больше ни разу не сработал вылетал на 10% по ошибке "Ошибка при вызове метода контекста (ЗагрузитьПравилаОбмена): Произошла исключительная ситуация (1C:Enterprise 8.2.16.368): {Обработка.ОбменДаннымиXML.МодульОбъекта(2117)}: Тип не определен (ПеречислениеСсылка.ОтветственныеЛицаОрганизации)". Понятное дело что с перечислением данным мы ничего не делали.
Попытки сделать выгрузку данных из SQL в SQL в попытке что новая база сама создаст правильную структуру ни к чему не привели, ошибка повторилась. Выгрузка в DT аналогично ни к чему не привела. Попытки сделать ТиИ тоже не помогли.
Правила обмена брались различные и от старых релизов и типовые и скачивал отсюда, редактировали их в КД убирали записи по данному перечисление, толку никакого все равно одна и та же ошибка, как будто она где-то прописалась. Темпы 1С различным чистилками с инфостарта очищал, серваки перегружал. Перечисление переименовывал, возвращал ну и массу всяких вариантов - все в пустую.
В SQL пытались полностью убрать таблицу потом заливали ее из рабочей копии, результат неизменный.

Пришел к выводу что возможно в SQL произошло разрушение какой-то связки между таблицей перечисления и таблицей с указанием типа данных этой таблицы. Это я так предполагаю потому что в SQL не силен.

Подскажите что можно еще попробовать а также кто-то определил в какой таблице мне поискать и подменить указание типа данных таблицы. В файловую выливать не предлагайте сразу 200гигов база это нереально.
66. tango 493 28.10.13 16:53 Сейчас в теме
Следующие 4 байта - это версия базы.

что-то какую базу ни посмотрю у себя - везде 8.2.14.0
67. tango 493 28.10.13 16:55 Сейчас в теме
ага, поднял старенькую бухию 1.6, она - 8.1.0.0
похоже, во флагмане на это дело слегка забили
68. tango 493 28.10.13 17:01 Сейчас в теме
кратность четырём К подтверждается
69. tango 493 28.10.13 17:14 Сейчас в теме
(0)
unsigned int length;
4 байт – длина базы (файла) в блоках

unsigned long ? не могу соотнести эти байты с вычисленным количеством страниц :(
70. awa 2541 28.10.13 17:44 Сейчас в теме
(69) А я могу)))
Ты приведи конкретные цифры длины и байты, которые не можешь соотнести. А то так вообще не понятно, что тебе не понятно!
71. tango 493 28.10.13 23:15 Сейчас в теме
(70) ха! если бы я понял, что мне не понятно, то все бы понял!
72. tango 493 28.10.13 23:17 Сейчас в теме
1. из стрима получаю 4 байта в 10-ном представлении (могу перевести в 16, в 2)
2. длину файла делю на 4096
как получить число из данных по п.1, чтоб было равно частному из п.2
73. awa 2541 28.10.13 23:51 Сейчас в теме
(72) Ну так тебе надо просто понять, как хранятся числа размерностью более одного байта.
Порядок от младшего к старшему
Раз ты читаешь байтами, а не более длинными блоками, то формула в твоем случае примерно такая
Байт1 + Байт2 * 256 + Байт3 * 256 * 256 + Байт4 * 256 * 256 * 256
dumal; tango; +2 Ответить
74. tango 493 29.10.13 00:19 Сейчас в теме
(73) да. спасибо.
таки есть недостатки в классическом образовании на основе фортрана, перфокарт и БОЛЬШИХ эвм :)
основной - очень давно это было :(
75. tango 493 29.10.13 00:25 Сейчас в теме
(73)
Раз ты читаешь байтами, а не более длинными блоками

стриму я задал буфер 4096 - по страничке
а уж из комсафэрея - массив по-байтно
но можно по случаю натравливать стрим и поточнее
76. tango 493 31.10.13 14:45 Сейчас в теме
(73) все-таки обошелся без вычислений, вытащил из стрима
погорячился
77. DrZombi 196 11.12.14 10:46 Сейчас в теме
78. artyo 11.01.15 15:37 Сейчас в теме
Добрый день. Подскажите, пожалуйста такой момент - я пишу скрипт на PHP для разбора файла 1CD, по описанному здесь формату. Получаю корневой блок, описание таблиц, все ОК, но когда считываю данные таблицы - не могу понять, как из преобразовать в человеческий вид. Получаю описание таблицы
{"USERS",0,
{"Fields",
{"USERID","B",0,16,0,"CS"},
{"NAME","NVC",0,256,0,"CI"},
{"PASSWORD","NC",0,32,0,"CI"},
{"REMOVED","L",0,0,0,"CS"},
{"BINDID","B",1,16,0,"CS"},
{"BINDSTRING","NT",1,0,0,"CI"},
{"RIGHTS","B",0,4,0,"CS"}
},
{"Indexes",
{"PK",0,
{"USERID",16}
},
{"NAME",0,
{"NAME",256}
},
{"BINDID",0,
{"BINDID",16}
}
},
{"Recordlock","0"},
{"Files",10,11,14}
}
Показать


Далее получаю блок данных - нечто подобное

C0CA649B18CDB9429B05BC5D7517E8570D00100434043C0438043D043804410442044004300442043E044004200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002000350066006100320038003500650031006200650062006500300061003600360032003300650033003300610066006300300034006100310066006200640035000001DB5920C3F09DD54486EAF00B164825DD01010000008C000000FFFF000000


и знаю, что там лежит UserID = 7517e857-bc5d-9b05-c0ca-649b18cdb942, name = Администратор, password = 5fa285e1bebe0a6623e33afc04a1fbd5, removed = false, binid = 164825dd-f00b-86ea-db59-20c3f09dd544

Как этот блок данных преобразовать к человеческому виду? Через Tool_1CD я вижу эти данные, а сам выдернуть не могу. Буду рад любой наводке. Прикрепляю файл 1CD с которым работаю, и блок данных.


P.S. так же пробовал вот этой компонентой разбирать файл базы - http://infostart.ru/public/166557/ но там так же можно вытащить только "сырые данные", которые я и привел выше. А вот как их разобрать - загадка...
Прикрепленные файлы:
1.1CD
USERS_Data
user1166143; +1 Ответить
79. awa 2541 12.01.15 12:14 Сейчас в теме
(78) В Вашем блоке просто лежат поля друг за другом. Надо вычислить, сколько байт занимает каждое поле, чтобы определить, где начинается и заканчивается каждое поле. Сумма длин всех полей + 1 байт признака удаленности - это длина одной записи.
Все описано в разделе "Объект таблицы".
Или может проблема с тем, как хранятся и отображаются GUID'ы? Нажмите в Tool_1CD Ctrl-G (или пункт меню Настройки->Отображать Bynary(16) как GUID). Вы сразу увидите соответствие Вашего блока данных и отображаемых данных в Tool_1CD. Дело в том, что почему-то GUID'ы придуманы так, что порядок хранения байт и отображаемое значение не совпадают. Байты как-бы перемешаны. Прочитать про это можно, например, тут https://ru.wikipedia.org/wiki/GUID.
Положение еще усугубляется тем, что, формат хранения (порядок байт) разный в информационной базе (1Cv8.1CD) и в базе хранилища конфигураций (1cv8ddb.1CD). В 1cv8ddb.1CD он соответствует стандартному формату хранения Microsoft. А вот в 1Cv8.1CD 1С изобрела свой собственный формат. Хотя я думаю, что это просто ошибка, хотели сделать как в Microsoft, но, как всегда, все перепутали. А теперь, в целях совместимости, эта ошибка "узаконена". Типичный пример перевода бага в фичу.
80. unichkin 16.03.15 12:03 Сейчас в теме
Здравствуйте. А не подскажете, в какой таблице хранятся данные о ролях? Т.е. сам список ролей и флаги, определяющие доступ по объектам?
81. valoks 22.12.15 04:14 Сейчас в теме
Доброго времени суток!
Программа Tool_1CD не смогла открыть файл 1Cv8.1CD, выдав сообщение: "Файл не является базой 1С (сигнатура не равна 1CDBMSV8)".
Как поступить в данном случае, т.е. каким образом хотя бы попробовать изменить енту сигнатуру?
82. alex0402 28 11.09.16 13:36 Сейчас в теме
(81) valoks, hex редактором в самом начале файла
83. alex0402 28 11.09.16 14:38 Сейчас в теме
Длина данных такого объекта равна (length * 4) байт.
что такое length, где взять?
84. brightbso@gmail.com 01.02.21 13:07 Сейчас в теме
Добрый день!
Автор, Валерий, как с вами связаться?
Нужна ваша помощь в восстановлении базы.
85. alex0402 28 02.02.21 13:25 Сейчас в теме
(84)Отправил ответ на brightbso@gmail.com.
Современная структура сильно отличается от описанной.
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    39148    ids79    40    

Чем воспользоваться для распознавания котиков в 1С?

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    2220    comol    9    

Рекурсия для начинающих

Математика и алгоритмы Практика программирования v8 Бесплатно (free)

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    1308    szv    5    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    3973    lastcontra    5    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    61476    pahich    83    

Получение значений всех полей в иерархии структуры отчета

Практика программирования Математика и алгоритмы v8::СКД Россия Бесплатно (free)

При обработке расшифровки данных в отчете (да и не только отчете), основанном на СКД, может потребоваться получить значения всех полей, находящихся в текущей группировке и её родителях. Представляю вашему вниманию алгоритм, выполняющий эту задачу. Как говорится, "просто оставлю это здесь".

28.02.2020    2368    real_MaxA    1    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    5849    randomus    20    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3281    Alxby    23    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    45828    ildarovich    116    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    35915    YPermitin    25    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Сентябрьская серия статей про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма. На этот раз - открытие значения из текущей колонки.

02.09.2019    10423    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    13850    ildarovich    23    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    69330    tormozit    27    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    17134    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    82722    AlbinaAAA    33    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    31881    skv_79    35    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    313745    Evil Beaver    182    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5805    vandalsvq    19    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    18295    Stepa86    40    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    36512    YPermitin    34    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    112763    bpc222    327    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    64164    ids79    26    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    15366    RonX01    65    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Практика программирования Разработка v8::Запросы Бесплатно (free)

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    9971    DataReducer    12    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    35727    bforce    22    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    4436    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    8827    Oleg_nsk    97    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    36532    YPermitin    8    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    31083    juntatalor    49    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    8085    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    13181    IVC_goal    9    

Компонента для прямого чтения/записи данных из файлов баз данных .1CD v.1.4.1 от 08.06.2020 (Windows/Linux) Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Компонента позволяет работать с физическим содержимым таблиц файловых баз данных 1С ( файлы .1CD ).

1 стартмани

18.12.2012    97049    2329    andrewks    230    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    14339    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    43421    Rain88    49    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    12317    vasilev2015    24    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    50801    bpc222    53    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    20225    ildarovich    19    

V8Unpack4rs: Rust, реализация v8unpack [Экспериментальный]

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Альтернативная реализация распаковщика/запаковщика* файлов платформы 1С:Предприятие 8.x форматов *.cf (конфигурация), *.epf (обработка) и *.erf (отчет) на Rust. Новая версия поддерживает распаковку и упаковкуфайлов платформы. Для распаковки применен параллельный алгоритм. Если хотите сравнить на Ваших данных попробуйте команды: --parse - для параллельной распаковки; -s --parse - для однопоточной распаковки.

1 стартмани

03.02.2018    17981    29    TIS_08    66    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    24358    real_MaxA    22    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    38493    MarSeN    57    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Зачастую почти любой модуль в 1С содержит от одного до несметного множества вызовов других модулей. Как с этим бороться, чтобы было проще куда-то что-то переносить - в этом посте.

12.10.2017    18122    for_sale    58    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14980    user621724_Dimav1979    12    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    27272    ikekoval    34    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы v8 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    196059    AlbinaAAA    65    

УФ: программное создание и копирование документов с использованием конструкций ДанныеФормыВЗначение, ЗначениеВДанныеФормы

Практика программирования Математика и алгоритмы v8::УФ Россия Бесплатно (free)

1С:Предприятие 8.3. Управляемые формы. Программное создание и копирование документов. Использование методов ДанныеФормыВЗначение(), ЗначениеВДанныеФормы() и КопироватьДанныеФормы().

27.04.2017    30420    alexhline    9    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

Описывается структура областей модулей, которую я использую при разработке на своих проектах. Обсуждаются недостатки стандарта 1С "Структура модуля". Предложен улучшенный подход к работе со структурой модуля.

26.03.2017    14727    o.nikolaev    23    

Маленькая хитрость СКД - выводим строки X раз

Математика и алгоритмы Практика программирования v8::СКД 1cv8.cf Россия Бесплатно (free)

Здесь я расскажу, как вывести в отчет СКД произвольное количество одинаковых строк.

17.12.2016    17818    alexandersh    16    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    42860    1cspecialist    13    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    35894    alexandersh    50    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    18324    zhichkin    10