1С В какой таблице находится справочник Контрагенты
Справочники
Начинаем со справочников: именно в этих структурах могут храниться фактически все типы данных, кроме того, именно справочники являются базовым понятием и для некоторых других объектов (например, для видов субконто, расчётов и т.п). В описании будут встречаться ссылки на объекты метаданных и их реквизиты, приведенные в таблицах в предыдущих главах статьи.
1С В какой таблице находится справочник Контрагенты
Справочники
Начинаем со справочников: именно в этих структурах могут храниться фактически все типы данных, кроме того, именно справочники являются базовым понятием и для некоторых других объектов (например, для видов субконто, расчётов и т.п). В описании будут встречаться ссылки на объекты метаданных и их реквизиты, приведенные в таблицах в предыдущих главах статьи.
Некоторые поля в таблицах содержат числовые значения в системе счисления, отличной от десятичной:
Кроме этого, в качестве сокращений будут употребляться PKey (PrimaryKey) и FKey (ForeignKey).
SCxxxx.DBF – таблица справочника, где xxx – ID
"Содержит данные справочника конкретного вида. Каждый справочник хранится в отдельном файле." [© 1С].
- ID [int] – PKey таблицы, значение в
36/64-ричной системе (в зависимости от версии V7), нумеруется с единицы. Тип – Char(9). Обращение к справочнику происходит всегда именно по ID. Справочник «отдает» при этом обращении либо код, либо наименование (в зависимости от значения Sbcnts.ret_tip в MMS). - CODE – код справочника. Тип – всегда Char, вне зависимости от реквизита Sbcnts.kod_tip, определенного в MMS. Длина поля – Sbcnts.kod_size.
- DESCR – наименование справочника. Тип – Char. Длина поля – Sbcnts.naim_size.
- ISMARK – пометка на удаление. Тип – Char(1). Если запись помечена – в этом поле "*" (chr(42)). При пометке на удаление поддерживается ссылочная целостность: все подчиненные записи (как в этой, так и в других таблицах) также помечаются.
- VERSTAMP [int] – количество изменений записи. Изменением считается любое действие "Изменить (открыть)" + действия при изменении структуры. Появилось в 7.7.
- ISFOLDER и PARENTID [int] – поля, моделирующие иерархическую структуру справочника. Типы, соответственно, Numeric(1,0) и Char(9). ISFOLDER принимает значения 1 (признак группы) или 2 (признак элемента). PARENTID – ссылка (FKey) на ID записи о группе в этой же таблице. В 7.5 – эти поля присутствовали в любом справочнике, в 7.7 – только в тех, у которых
Sbcnts.max_level>1. - PARENTEXT [int] – ссылка (FKey) на ID «владельца» в другом справочнике. Тип – Char(9). Владелец определяется Sbcnts.Owner_id. Поле присутствует в 7.7 в зависимости от наличия Sbcnts.Owner_id, в 7.5 – всегда.
- SPyyy – эти поля полностью определяются подклассом Sbcnts.Params.yyy=Params.ID, тип поля соответствует Params.Type, size и dec – также определяется соответствующими реквизитами. Если
Params.Type=N/S/D – в поле хранятся непосредственно значения. При строковом типе иSize=0 – строка неограниченной длины, хранится в 1SBLOB.DBF. Для остальных типов – в поле хранятся ссылки на значения из других таблиц или метаданных.В случае
типа=B/O/T/C/A (значения которых хранятся в таблицах), в поле SPyyy хранится ссылка на соответствующую таблицу. Если на момент формирования структуры хранения известен конкретный источник данных (т.е.Params.Source_Id<>0 ) – поле SPyyy содержит только номер записи (PKey) соответствующей таблицы (9 знаков [int]).Если же на момент формирования структуры хранения
Params.Source_Id=0 – например «справочник вообще» – поле SPyyy содержит, помимо9-и байтового номера записи ещё и ID [int] соответствующего этой таблице объекта метаданных (в первых4-х байтах).Значения для типов
E/P/K не хранятся в таблицах, а выбираются непосредственно из метаданных по своему уникальному во всей системе ID, поэтому значением поля SPyyy является всегда является ссылка на ID [int] необходимого объекта (хотя и размещается эта ссылка не в4-х , а в9-и байтах).В случае, если
Params.Type=U (значение неопределенного типа) – поле SPyyy имеет длину 23 байта и содержит в первых2-х символах информацию о фактически хранящемся типе значения (например N для Numeric, B1 для типа B, E1 для типа E, и т.п.), в остальных символах – аналогично предыдущему(4+9). Любое поле SPyyy неопределенного типа (U) сопровождается полем TSPyyy типа Char(3), с назначением которого я не разобрался (похоже что оно всегда empty, если поле SPyyy пусто).
При отсутствии значений в полях определенного типа они имеют вид " 0 0", поле неопределенного типа – "U"&space(22).
Всё, кроме полей неопределенного типа, присутствует и в 7.5 (только разбивка полей не
4+9 , а4+8 ). Полей неопределенного типа, как и полей TSPyyy в 7.5 нет (хотя значения неопределенного присутствуют во многих таблицах).Остался нерассмотренным ещё один реквизит поля SPyyy из Sbcnts.Params: признак периодического поля (Params.pr_period). Значения полей, имеющих этот признак, хранятся в файле 1SCONST.DBF, который связан с таблицами SCxxx отношением 1:M со стороны M. Значения, имеющие структуру, описанную ранее, хранятся в поле 1SCONST.Value, номер записи справочника [int] в поле 1SCONST.OBJID, а идентификатор справочника [int] – в поле 1SCONST.ID. Об 1SCONST, однако, чуть позже.