Таблица files 1c что это
В первую очередь хочу поблагодарить за публикацию многоуважаемого awa. А его утилита Tool_1CD спасла уже не одну базу.
Я буду ссылаться на эту публикацию, предварительное ознакомление с ней обязательно. Сподвигло меня на написание то, что 1С выкатила новый формат, описаний которого мне пока не попадалось. Данная статья будет полезна как для понимания ограничений данного формата, так и для создания утилит восстановления испорченных баз.
Формат сериализации 1С
1С активно использует текстовый формат сериализованных структурированных данных, идеологически сходный с JSON. Значения в этом формате могут иметь типы:
- Список - последовательность значений (в т.ч. списочных), разделенных запятыми, окруженных фигурными скобками. Например: >
- Строка - строковое значение заключается в двойные кавычки. Двойные кавычки внутри значения удваиваются. Например:
- Пустое значение - пропущенное значение, например
- Числовое значение
- GUID - например:
- Двоичное значение - в виде последовательности шестнадцатиричных знаков: 0123456789abcdef
Возможно существуют и другие типы, но мне пока не встречались. В тексте между синтаксическими элементами могут встречаться переводы строк. Этот формат используется в частности для описания структуры таблиц, конфигурации, пользователей в таблице V8USERS и т.д.
Формат корневого объекта
Существенно изменился формат корневого объекта, содержащего ссылки на описания таблиц. Ранее описания таблиц размещались в отдельных объектах, а корневой объект содержал только ссылки на номера страниц этих объектов. В формате 8.3.8 структура потока корневого объекта полностью совпадает со структурой потока BLOB-а, поток так же разбит на блоки по 256 байт, каждый блок так же содержит 6-байтовый заголовок со ссылкой на блок с продолжением данных, а нулевой блок начинает цепочку свободных блоков в потоке.
Данные в первом блоке имеют формат (за исключением 6-байтового заголовка блока) корневого потока из формата 8.2.14:
Но массив tableblocks содержит теперь не номера страниц в файле, а номера блоков в этом же потоке, в которых размещено описание таблиц. Таблицы описываются такой же структурой как и раньше, но используют однобайтовую кодировку (возможно UTF-8, на используемом наборе символов она не отличима от Win-1251 или ANSI).
Начало корневого объекта
На приведенном рисунке виден пустой блок 0, ссылающийся на следующий пустой блок в этом потоке номер 0x35, содержимое блока 1 размером 0x0088 байт с идентификатором кодовой страницы ru_RU, размером таблицы 0x00000019 и 25 значений - номера блоков описаний 25 таблиц, в частности таблицы IBVERSION, размещенной в блоке 2.
Объект - описатель свободных блоков
Структура описания объектов в новом формате заметно поменялась и теперь выглядит так:
Описание объекта - списка свободных страниц в базе формата 8.3.8 с размером страницы 8К. В данном случае имеется только одна страница в таблице размещения - 0xD9, количество актуальных записей в списке - 0x14=20.
1. Дополнения и уточнения к описанию от awa
Корневой объект
Корневой объект описывается на странице 2 файла базы. Его поток содержит служебные данные, и список номеров страниц, на которых размещаются объекты с описанием таблиц. Используется текстовое описание таблиц в формате сериализации 1С с использованием двухбайтовой кодировки UCS2. Каждое описание содержит имя таблицы, списки полей и индексов, а так же номера страниц с объектами данных записей таблиц, BLOB-ов и индексов. Подробнее описано в статье awa.
Хранение GUID в записях
1С активно использует GUID в данных, в частности как суррогатные первичные ключи в таблицах. При этом физически они хранятся как двоичные значения длины 16 байт. Но и тут 1С не обошлась без "особенностей": GUID вида AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE хранится как DDDDEEEEEEEEEEEECCCCBBBBAAAAAAAA, т.е. компоненты 4,5,3,2,1
Соответственно для обратного преобразования требуется разбить двоичные данные на группы и 4,12,4,4,8 шестнадцатеричных знаков и соединить как группы
3. Заключение
В новом формате 1С предусмотрела возможность увеличения размера страницы, что позволяет увеличить размер одного объекта более 4Гб и снизить вероятность самораспухания баз, содержащих более 4Гб данных. Были оптимизированы структуры описаний объектов и таблиц, что вряд ли даст заметный прирост производительности, но, в какой-то степени упрощает работу с базой на низком уровне.
Если есть замечания и дополнения, прошу писать в комментариях и я дополню статью
Форум
Для работы с файлами и каталогами в 1С:Предприятие используется специальный объект "ФС" (файловая система). Средства языка 1С имеют возможности поиска, копирования, переименования, удаления и совершения других операций с файлами и каталогами.
Обращение к файловой системе
Для работы с файловой системой предназначен объект "ФС". В принципе его не требуется создавать с помощью функции СоздатьОбъект. Можно считать, что он уже создан. Но 1С позволяет создать сколько угодно таких объектов при помощи функции СоздатьОбъект;
ГдеМыНаходимся = ФС.ТекКаталог();
ФС.СоздатьКаталог("DOCS");
НовФС = СоздатьОбъект("ФС");
Объект "ФС" имеет следующие методы:
Открывает окно диалога выбора/сохранения файла. Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Параметры:
-: 0 - диалог типа , 1 - диалог типа ;
- переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
- переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;
- строка с заголовком окна;
- строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
- строка с расширением файла по умолчанию;
- время ожидания отклика пользователя в секундах (необязателен).
Открывает окно диалога выбора каталога.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена'; 1 - если в окне диалога нажата кнопка 'ОК', при этом в переменную возвращается имя выбранного каталога; -1 (минус единица) - закончилось время ожидания отклика пользователя.
Синтаксис: ВыбратьКаталог(,,)
Проверяет существование файла..
Возвращает: 1 - файл существует; 0 - не существует.
Синтаксис: СуществуетФайл()
Параметры:
- строка с именем файла источника;
- строка с именем файла приемника;
-:
0 - существующий файл приемника перезаписать;
1 - существующий файл приемника не перезаписывать.
Удаляет файл.
Синтаксис: УдалитьФайл()
Параметры:
- строка с именем файла источника;
- строка с новым именем файла;
-:
0 - запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;
1 - разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.
Открывает выборку файлов по заданной маске и находит первый файл.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиПервыйФайл()
Находит следующий файл по открытой выборке файлов.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиСледующийФайл()
Возвращает атрибуты файла (в параметрах).
Атрибуты файла закодированы, об этом см. Синтакс-Помощник или описание встроенного языка
Создать новый каталог (папку).
Синтаксис:СоздатьКаталог()
Удаляет каталог файлов.
Синтаксис: УдалитьКаталог()
Устанавливает текущий каталог файлов.
Синтаксис: УстТекКаталог()
Также часто применяются системные функции:
Пример 1
//переместить все текстовые файлы (*.txt) из каталога информационной базы в каталог TXT.
ФС.УстТекКаталог(КаталогИБ());
ИмяФайла = "";
ИмяФайла = ФС.НайтиПервыйФайл("*.txt");
Если ИмяФайла <> "" Тогда
. ФС.СоздатьКаталог("TXT");
. ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла);
. ФС.УдалитьФайл(ИмяФайла);
ИмяФайла = " ";
. ИмяФайла = ФС.НайтиСледующийФайл()
Если ИмяФайла <> "" Тогда
. ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла);
. ФС.УдалитьФайл(ИмяФайла);
Иначе
. Прервать;
КонецЕсли;
Пример 2
//выбрать файл с фотографией сотрудника
ИмяФайла = "";
ИмяКаталога = КаталогИБ();
Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяКаталога,"Укажите файл с фотографией:",,20)=1 Тогда
ВремКартинка = СоздатьОбъект("Картинка");
ВремКартинка.Загрузить(ИмяКаталога + ИмяФайла);
КартинкаНаФорме.УстановитьКартинку(ВремКартинка);
Профайлы содержат информацию, не оказывающую влияния на логику функционирования системы на базе 1С:Предприятия 8.1. Такая информация не является необходимой, но ее сохранение может, например, повысить комфортность работы пользователя. В профайлах можно хранить формат и расположение окон и диалогов, настройки шрифтов, цветов, отборов и т. п. Потеря такой информации НЕ может привести к нарушению работоспособности системы.
Профайлы различаются по принадлежности хранимой в них информации. Примеры хранимых данных и их расположение:
- Настройки текстового редактора.
/1C/1Cv81/1Cv8.pfl, например: C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8.pfl
Информационная база - Режим аутентификации при старте 1С:Предприятия из отладчика.
- Каталог последнего сохранения хранилища конфигурации в файл.
Таблица files базы данных, в которой размешена информационная база.
Информационная база и пользователь - Настройки динамических списков.
- Настройки отборов по журналу регистрации.
Таблица files базы данных, в которой размешена информационная база.
Компьютер и информационная база - Настройки сравнения файлов конфигураций.
- Настройки глобального поиска по текстам конфигурации.
/1C/1Cv81//1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/1Cv8.pfl
Компьютер, информационная база и пользователь - Расположение окна синтакс - помощника.
- Список переменных для быстрого просмотра в отладчике.
/1C/1Cv81///1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8.pfl
1С:Предприятие 8.1 в режиме Конфигуратора - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
/1C/1Cv81/1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8cmn.pfl
1С:Предприятие 8.1 в режиме Предприятия - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
/1C/1Cv81///1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8cmn.pfl
Диалог запуска 1С:Предприятия 8.1 - Размеры и расположение диалога запуска.
- Настройки диалогов установки параметров информационных баз.
/1C/1Cv81/1Cv8strt.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8strt.pfl
Данные из профайлов читаются при старте 1С:Предприятия 8.1 и записываются при его штатном завершении. По этой причине в случае нештатного завершения некоторые пользовательские настройки могут не сохраниться.
Наряду с профайлами в каталоге данных приложения могут содержаться и другие файлы с информацией, сохранение которой делает работу пользователей с 1С:Предприятием 8.1 более удобной. Среди них:
Временные данные нужны только в течение нескольких пересекающихся во времени или одного сеанса 1С:Предприятия.
К нескольким пересекающимся во времени сеансам относятся данные совместного использования, которые относятся к файловой информационной базе в целом и нужны, в частности, для реализации блокировок данных информационной базы. Такие данные хранятся в том же каталоге, что и файл информационной базы.
* Файл 1Cv8.1cl является носителем блокировок объектов базы данных, расположенной в файле 1Cv8.1cd.
* Файл 1Cv8Tmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей.
* Файл 1Cv8Tmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8Tmp.1cd.
Для хранилища конфигурации 1С:Предприятие 8.х в режиме Конфигуратора создает временные файлы аналогичного назначения, расположенные в каталоге хранилища конфигурации:
* Файл 1Cv8ddb.1cl является носителем блокировок данных из хранилища конфигурации.
* Файл 1Cv8dtmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей хранилища конфигурации.
* Файл 1Cv8dtmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8ddb.1cd.
Данные, используемые только в течение одного сеанса 1С:Предприятия, размещаются во временных файлах, создаваемых в каталоге, определенном в системе Microsoft Windows как каталог временных файлов. При этом для клиентского приложения используется каталог временных файлов текущего пользователя Windows, например, C:\Documents and Settings\User\Local Settings\Temp. Для сервера 1С:Предприятия используется или системный каталог временных файлов или каталог данных приложений пользователя, от имени которого запускаются рабочие процесса сервера 1С:Предприятия, например, C:\WINNT\Temp.
Как очистить кэш 1С?
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из четырех систем управления базами данных (СУБД):
* Встроенную в 1С:Предприятие 8.1 (файловый вариант информационной базы). В этом случае все данные информационной базы хранятся в файле с именем 1Cv8.1CD. Этот файл имеет двоичный формат и по сути является базой данных для встроенной в 1С:Предприятие 8.1 СУБД.
* Microsoft SQL Server (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных Microsoft SQL Server.
* PostgreSQL (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных PostgreSQL.
* IBM DB2 (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных IBM DB2.
На уровне объектов базы данных (таблиц, полей, индексов и т. п.) как файловый так и клиент-серверный вариант информационной базы имеют сходный формат (отличающийся несущественными деталями). Некоторая информация об этом формате содержится ниже.
Вся информационная база представляется в базе данных в виде набора таблиц. Среди них есть несколько таблиц, которые обязательно присутствуют в представлении любой информационной базы:
* Config - основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия.
* ConfigSave - конфигурация, редактируемая Конфигуратором. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе, а наоборот - при выполнении в Конфигураторе операции "Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД".
* Files содержит служебную информацию, например, о работе с хранилищем конфигурации.
* Params содержит параметры информационной базы. Среди них:
=> Список пользователей информационной базы.
=> Национальные настройки информационной базы.
=> Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов).
=> Некоторая другая информация.
* _YearOffset - смещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server.
* DBSchema содержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой.
Перечень и структура других таблиц базы данных определяется конкретной конфигурацией, а именно, определенными в ней объектами метаданных. Имя каждой таблицы состоит из буквенного префикса и следующего за ним номера. Префикс определяет назначение таблицы, а номер позволяет различать таблицы одинакового назначения, относящиеся к разным объектам метаданных. Если в качестве СУБД используется IBM DB2, то описанную структуру имеют не имена таблиц, а их псевдонимы.
Если в конфигурации определен хотя бы один план обмена с установленным флагом "Распределенная информационная база", то будут созданы следующие таблицы:
* _ConfigChangeRec - таблица регистрации изменений объектов конфигурации.
* _ConfigChangeRec_ExtProps - таблица имен файлов измененных внешних свойств объектов конфигурации.
Ниже перечислены различные объекты метаданных, которым могут соответствовать те или иные таблицы.
* Константы
=> _Consts содержит текущие значения всех констант, определенных в конфигурации.
=> _ConstsChangeRec - таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена.
* Планы обмена
=> _Node - таблица плана обмена.
=> _Node_VT - табличная часть плана обмена, создается для каждой табличной части.
* Справочники
=> _Reference - таблица справочника.
=> _Reference_VT - табличная часть справочника - для каждой табличной части.
=> _ReferenceChangeRec - таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена.
* Документы
=> _Document - таблица документов для каждого объекта метаданных "документ".
=> _Document_VT - табличная часть документа - для каждой табличной части каждого документа.
=> _DocumentChangeRec - таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена.
* Последовательности документов
=> _Sequence - таблица регистрации документов - для каждой последовательности.
=> _SequenceBoundary - таблица границ последовательности - для каждой последовательности.
=> _SequenceChangeRec - таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена.
* Журналы документов.
=> _DocumentJournal - таблица журнала документов, создается для каждого журнала документов.
* Перечисления
=> _Enum - таблица перечисления - по одной для каждого перечисления.
* Планы видов характеристик
=> _Chrc - основная таблица плана видов характеристик.
=> _Chrc_VT - табличная часть плана видов характеристик - для каждой табличной части.
=> _ChrcChangeRec - таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена.
* Планы счетов
=> _Acc - основная таблица плана счетов.
=> _Acc_ExtDim - таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля.
=> _Acc_VT - табличная часть плана счетов, создается для каждой табличной части плана счетов.
=> _AccChangeRec - таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена.
* Планы видов расчета
=> _CalcKind - основная таблица плана видов расчета.
=> _CalcKind_BaseCK - таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит".
=> _CalcKind_DisplacedCK - таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия".
=> _CalcKind_LeadingCK - таблица ведущих видов расчета - для каждого плана видов расчета.
=> _CalcKindDN - вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия".
=> _CalcKind_VT - табличная часть плана видов расчета, создается для каждой табличной части.
=> _CalcKindChangeRec - таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена.
* Регистры сведений
=> _InfoReg - таблица движений регистра сведений.
=> _InfoRegChangeRec - таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена.
* Регистры накопления
=> _AccumReg - таблица движений регистра накопления.
=> _AccumRegTotals - таблица итогов регистра накопления, если регистр поддерживает остатки.
=> _AccumRegTurnovers - таблица оборотов регистра накопления, если регистр поддерживает обороты.
=> _AccumRegChangeRec - таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена.
=> _AccumRegOptions - таблица настроек хранения итогов регистров накопления одна на все регистры накопления.
* Регистры бухгалтерии
=> _AccntReg - таблица движений регистра бухгалтерии.
=> _AccntRegED - таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля.
=> _AccTtl0 - таблица итогов по счету.
=> _AccTtl - где i от 1 до максимального количества субконто. Таблица итогов по счету с количеством видов субконто равным i.
=> _AccTtlC - таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию.
=> _AccntRegChangeRec - таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена.
=> _AccntRegOptions - таблица настроек хранения итогов одна на все регистры бухгалтерии.
* Регистры расчета
=> _CalcReg - таблица движений регистра расчета.
=> _CalcRegActPer - таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия".
=> _CalcRegChangeRec - таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена.
=> _CalcRegRecalc - таблица перерасчета регистра расчета, создается для каждого перерасчета.
=> _CalcRegRecalcChangeRec - таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена.
* Бизнес-процессы
=> _BPRoutePoint - таблица точек маршрута бизнес-процесса для каждого бизнес-процесса.
=> _BusinessProcess - основная таблица бизнес-процесса.
=> _BusinessProcess_VT - табличная часть бизнес-процесса для каждой табличной части.
=> _BusinessProcessChangeRec - таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена.
* Задачи
=> _Task - основная таблица задачи.
=> _Task_VT - табличная часть задачи для каждой табличной части.
=> _TaskChangeRec - таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена.
При использовании IBM DB2 префиксы псевдонимов таблиц начинаются не с символа подчеркивания, а сразу с буквенной части.
Количество этих таблиц зависит от функциональности конфигурации и может быть достаточно большим. В штатном режиме 1С:Предприятие не выполняет проверку их наличия, а также целостности и непротиворечивости содержащихся в них данных. Поэтому важно, чтобы база данных, в которой размещена информационная база 1С:Предприятия 8.1, была защищена от несанкционированного доступа и ее модификация выполнялась только средствами 1С:Предприятия. Для проверки необходимо использовать функцию "Администрирование - Тестирование и исправление", встроенную в конфигуратор.
Важно также, чтобы резервное копирование и восстановление базы данных, хранящей информационную базу, выполнялось только целиком. С этой целью рекомендуется использование средств резервного копирования баз данных, встроенных в в используемую СУБД. Резервное сохранение файлового варианта информационной базы может быть выполнено копированием файла 1Cv8.1CD.
В конфигураторе есть специальная функция: Администрирование - Выгрузить информационную базу. С ее помощью можно выгрузить в указанный файл (файл выгрузки) все данные, относящиеся к информационной базе, и больше никакие. Обратная ей функция "Загрузить информационную базу" позволяет в текущую информационную базу вместо существующих загрузить все данные из файла выгрузки. Эти функции также можно использовать для резервного копирования данных информационной базы как в файловом так и в клиент-серверном варианте.
Как просмотреть структуру таблиц информационной базы?
Профайлы содержат информацию, не оказывающую влияния на логику функционирования системы на базе 1С:Предприятия 8.1. Такая информация не является необходимой, но ее сохранение может, например, повысить комфортность работы пользователя. В профайлах можно хранить формат и расположение окон и диалогов, настройки шрифтов, цветов, отборов и т. п. Потеря такой информации НЕ может привести к нарушению работоспособности системы.
Профайлы различаются по принадлежности хранимой в них информации. Примеры хранимых данных и их расположение:
- Настройки текстового редактора.
/1C/1Cv81/1Cv8.pfl, например: C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8.pfl
Информационная база - Режим аутентификации при старте 1С:Предприятия из отладчика.
- Каталог последнего сохранения хранилища конфигурации в файл.
Таблица files базы данных, в которой размешена информационная база.
Информационная база и пользователь - Настройки динамических списков.
- Настройки отборов по журналу регистрации.
Таблица files базы данных, в которой размешена информационная база.
Компьютер и информационная база - Настройки сравнения файлов конфигураций.
- Настройки глобального поиска по текстам конфигурации.
/1C/1Cv81//1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/1Cv8.pfl
Компьютер, информационная база и пользователь - Расположение окна синтакс - помощника.
- Список переменных для быстрого просмотра в отладчике.
/1C/1Cv81///1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8.pfl
1С:Предприятие 8.1 в режиме Конфигуратора - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
/1C/1Cv81/1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8cmn.pfl
1С:Предприятие 8.1 в режиме Предприятия - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
/1C/1Cv81///1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8cmn.pfl
Диалог запуска 1С:Предприятия 8.1 - Размеры и расположение диалога запуска.
- Настройки диалогов установки параметров информационных баз.
/1C/1Cv81/1Cv8strt.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8strt.pfl
Данные из профайлов читаются при старте 1С:Предприятия 8.1 и записываются при его штатном завершении. По этой причине в случае нештатного завершения некоторые пользовательские настройки могут не сохраниться.
Наряду с профайлами в каталоге данных приложения могут содержаться и другие файлы с информацией, сохранение которой делает работу пользователей с 1С:Предприятием 8.1 более удобной. Среди них:
Временные данные нужны только в течение нескольких пересекающихся во времени или одного сеанса 1С:Предприятия.
К нескольким пересекающимся во времени сеансам относятся данные совместного использования, которые относятся к файловой информационной базе в целом и нужны, в частности, для реализации блокировок данных информационной базы. Такие данные хранятся в том же каталоге, что и файл информационной базы.
* Файл 1Cv8.1cl является носителем блокировок объектов базы данных, расположенной в файле 1Cv8.1cd.
* Файл 1Cv8Tmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей.
* Файл 1Cv8Tmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8Tmp.1cd.
Для хранилища конфигурации 1С:Предприятие 8.х в режиме Конфигуратора создает временные файлы аналогичного назначения, расположенные в каталоге хранилища конфигурации:
* Файл 1Cv8ddb.1cl является носителем блокировок данных из хранилища конфигурации.
* Файл 1Cv8dtmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей хранилища конфигурации.
* Файл 1Cv8dtmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8ddb.1cd.
Данные, используемые только в течение одного сеанса 1С:Предприятия, размещаются во временных файлах, создаваемых в каталоге, определенном в системе Microsoft Windows как каталог временных файлов. При этом для клиентского приложения используется каталог временных файлов текущего пользователя Windows, например, C:\Documents and Settings\User\Local Settings\Temp. Для сервера 1С:Предприятия используется или системный каталог временных файлов или каталог данных приложений пользователя, от имени которого запускаются рабочие процесса сервера 1С:Предприятия, например, C:\WINNT\Temp.
Как очистить кэш 1С?
Организация хранения данных неограниченной длины (BLOBs)
Поток хранения BLOB разбит на блоки по 256 байт, при этом первые 6 байт используются под заголовок блока (ссылка на следующий блок и объем реально используемых данных в блоке). Блоки нумеруются 32-разрядными (беззнаковыми?) целыми, таким образом максимальный размер объекта под BLOB может быть 2^32*256=2^40=1Тб. Первый блок всегда выделен под организацию цепочки свободных блоков потока.
Внимание! Потоки данных и BLOBов свежесозданных таблиц, не содержащих данных, могут быть пустыми, т.е. не иметь в таблице размещения ни одной страницы, даже под первую запись для организации цепочки свободных блоков/записей.
Прочие объекты
Структура объектов теперь выглядит следующим образом:
Пример описания полноформатного объекта в базе формата 8.3.8. Выделены поля с кодом типа объекта и размером объекта.
Размер страницы | Максимальный размер объекта |
---|---|
4К | 4Гб |
8К | 32Гб |
16К | 256Гб |
32К | 2Тб |
64К | 16Тб |
Заголовок базы
Заголовок базы формата 8.3.8 с размером страницы 8К
Объект описания свободных страниц
Объект, описывающий список свободных страниц, устроен несколько отличным образом. Отличий два: поле длины потока содержит количество свободных страниц в списке, и каждая страница таблицы размещения не использует первое значение под количество номеров в странице, а использует всё пространство (1024 значения) под список свободных страниц. Таким образом, этот объект может содержать список из максимум 1018*1024=1042432 страниц при размере страницы 4К, т.е. описывает свободное пространство почти в 4Гб. Отсюда следует достаточно занятное следствие - базы, содержащие более 4Гб данных, подвержены "утечкам страниц" и бесконтрольному разбуханию. Например, мы удаляем из базы две таблицы, которые суммарно занимали 5Гб пространства. Допустим, что перед операцией список свободных страниц был пуст, тогда он заполнится максимальным значением номеров (4Гб), а ссылки на остальные страницы (1Гб) будут потеряны. Поскольку при обновлении конфигурации платформа проводит реструктуризацию способом "сделать копию таблиц, перелить данные, старые удалить", то при определенном объеме обрабатываемых таблиц "утечка" становится неизбежной.
Кстати, в списке свободных страниц номера страниц совершенно не обязаны идти по порядку. Движок 1С просто добавляет высвобождаемое пространство в конец списка, и страницы для использования берет из конца списка. Отсюда появляется еще один интересный эффект - внутренняя фрагментация потоков данных, т.е. поток может быть размазан по всей базе. Это не может положительно влиять на скорость работы базы, и только выделение больших объемов оперативной памяти для кэширования и размещение базы на SSD может минимизировать негативный эффект. Это же замечание актуально и для свободных блоков в потоках данных неограниченной длины (BLOB-ах). Т.е. если рассматривать фрагментацию файла базы данных на диске как первичную, то фрагментация потоков внутри базы - вторичная, а то что данные в блоках BLOB-ов могут идти непоследовательно внутри потока - третичная. В частности поэтому я размещаю базы с которыми приходится работать на SSD, а в случае каких-то разовых работ (обновление, перенос данных из баз заказчивов) - размещаю базы на RAM-Drive, на виртуальном диске в оперативной памяти.
Объекты данных
"Объект" в базе представляет собой описание к потоку, содержащему данные. Заголовочная страница содержит среди прочего актуальную длину потока данных и список страниц, содержащих список страниц потока ;). В странице описания объекта первые 24 байта служебные, остальные 1018 32-разрядных значений содержат список страниц (назовем их "таблица размещения"). Каждая из страниц таблицы размещения содержит 4096 / 4 = 1024 32-разрядных целых. Первое значение описывает сколько значений из оставшихся 1023 используется на данной странице. И так для каждой страницы таблицы размещения. Таким образом поток данного объекта может содержать максимум 1018*1023=1041414 страниц по 4К, т.е. чуть меньше 4Гб. Поскольку на каждую таблицу выделяется по отдельному объекту для данных записей, индексов и данных неограниченной длины (BLOBов), следует что каждый из этих составляющих не может занимать больше 4Гб. Если в таблицу попробовать добавить больше данных, платформа выдаст критическую ошибку с вариантами "закрыть" и "перезапустить".
Потоки
Введем понятие "поток" (Stream) данных - логическая сущность, последовательность данных. Например, пространство для хранения записей таблицы или данных неограниченной длины. Поток размещается на последовательности страниц и имеет размер, не превышающий суммарный размер всех страниц. Данные хранятся в потоках.
2. Новое в формате 8.3.8
Читайте также: