Объект базы данных

From SunFlurry wiki
Jump to: navigation, search
  DB (Объект базы данных)
Статус разработки: Реализован
Создание объекта: DB,Ref,Doc...

Объект базы данных -- основной объект, связывающий информацию сервера базы данных и локальную программу. Без наличия подключения к серверу базы данных, объект не будет иметь смысла, так как невозможно будет заполнить, обновить, сохранить и пр. оный в базу данных. Объект является сложным составным набором параметров и может занимать значительный объем в памяти, поэтому при работе с объектами предусмотрены особые способы оптимизации по памяти, позволяющие полностью исключить влияние больших объемов данных на память, необходимую при работе системы. Запросы к серверу, связанные с объектами базы данных, могут выполняться значительное количество времени, поэтому при работе с ними предусмотрены особые способы оптимизации по времени, позволяющие сильно увеличить скорость выполнения отдельных запросов. На данной странице собрана основная информация по функциям, связанным с объектами базы данных. Однако, дополнительная информация, также напрямую связанная с данным объектом находится в других разделах (объект структуры базы данных, объект запроса базы данных и объект временной таблицы базы данных).

Краткое описание объекта базы данных

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

  • Абстрактный объект БД, без указания на типы или виды. Такой объект можно еще назвать "пустой объект БД". Создать такой объект можно, к примеру, с помощью конструкции GetNothing("DB"), проверить с помощью функции TypeStr.
  • У объекта БД выбран тип данных. Т.е., определено, какой это объект -- документ, справочник и пр. Создать такой объект можно, к примеру, с помощью конструкции GetNothing("REF"), проверить с помощью функции TypeStr.
  • У объекта БД выбран вид типа данных. Т.е., определено не только какой это объект, к примеру, справочник, но и вид этого справочника, к примеру, справочник Контрагенты, виды задаются для текущего проекта в Студии. Создать такой объект можно, к примеру, с помощью конструкции Ref.Номенклатура, проверить, к примеру, с помощью функции TypeStr.
  • Объект позиционирован на уникальный элемент базы данных. Т.е., если объект представляет справочник Контрагенты и производилось его позиционирование на элемент справочника с реквизитом Code равным "000000001734". Позиционирование всегда происходит по внутреннему коду элемента. Такой код не является реквизитом объекта и уникальным образом задает элемент в таблице базы данных (не имеет ничего общего с упомянутым реквизитом Code). Такое состояние объекта называется "объект выбран". Создать такой объект можно, к примеру, с помощью фрагмента кода aEl:=DB("Ref.Контрагенты");aEl.FindEx(3,,"Code","000000001734"), убедиться, что объект был выбран к помощью функции Selected или функции IsEmpty.
  • Объект загружен (частично или полностью). Т.е., для выбранного объекта БД из базы данных были загружены все реквизиты объекта в память системы. Последующее обращение к загруженным реквизитам уже не требует выполнения запроса к серверу, реквизиты будут прочитаны из памяти. Нужно понимать, что загруженный объект не связан более с базой данных, поэтому, если объект в ней был изменен другим пользователем, это изменение автоматически не отразится на загруженном локальном объекте, объект устареет. Эта проблема сказывается более всего при записи объектов в базу данных, поэтому перед любыми изменениями, особенно с объектами, находящимися в памяти продолжительное время, необходимо заблокировать объект, обновить его содержимое из базы данных (см. Reload), изменить содержимое необходимым образом, и уже после этого сохранить объект в базу данных. Создать и заполнить такой объект можно, к примеру, с помощью конструкции DB("Ref.Контрагенты","Code","000000001734"), убедиться, что объект загружен с помощью функции Loaded. В системе предусмотрены следующие возможные режимы загрузки объектов:
    • Полная загрузка. Обычный режим загрузки объектов, когда все реквизиты объекта загружаются в память, и это позволяет получить к ним быстрый доступ без обращения на сервер, однако, для объектов с большим количеством реквизитов, такой режим может использовать большое количество памяти, что не всегда желательно. Кроме того, бывают ситуации, когда в полной загрузке объектов нет необходимости и частичная загрузка не только уменьшит потребление памяти, но и ускорит сам процесс загрузки.
      • Полная загрузка с периодическими реквизитами. В обычном случае, при полной загрузке объекта, периодические реквизиты объекта не загружаются, обращение к ним можно осуществить отдельными функциями, типа GetValue с указанием даты значения. Загрузка периодических реквизитов, однако, необходима при визуальной работе с объектом и может быть форсирована при программной загрузке, см. функции типа UseOption, LoadPeriodicalPropertiesHeader и пр.
      • Загрузка строчных частей. Обычно при полной загрузке объекта, строчные части не загружаются, загрузка их осуществляется по запросу (см. функцию LineParts), однако, возможно форсирование загрузки строчных частей с помощью функций типа UseOption.
    • Загрузка только заголовка. Данный режим позволяет загрузить только реквизиты, необходимые для представления элемента на экране и для его сортировки по реквизиту сортировки. Удобен этот метод тем, что загрузка будет осуществляться быстрее и потребует меньше памяти, однако, объекты по-прежнему можно будет отображать на экране, в таблицах и пр., или подвергать сортировке без того, чтобы это вызвало полную загрузку. При любом обращении к реквизитам объекта, система автоматически производит полную загрузку, поэтому такой режим обычно используется, в случаях, когда обращение к реквизитам не требуется, либо, когда большинство проверяемых объектов будут пропущены в цикле работы с объектами. Для загрузки в этом режиме можно использовать функции типа MassLoadObjects, FindEx, SelectEx или LoadEx.
    • Частичная загрузка. Данный режим позволяет загрузить только выбранные реквизиты для определенных объектов. Режим может использоваться, к примеру, при выводе на экран таблиц с объектами, когда сами объекты имеют большое количество реквизитов, однако на экран выводятся только некоторые (такой способ отображения таблиц с объектами предусмотрен в редакторе форм Студии). Удобен этот метод тем, что загрузка будет осуществляться быстрее и потребует меньше памяти, однако, объекты по-прежнему можно будет отображать на экране, в таблицах и пр., или подвергать сортировке без того, чтобы это вызвало полную загрузку. Если обращение к реквизитам объектов осуществляется для загруженных реквизитов, система вернет значение реквизита без инициирования полной загрузки, иначе будет произведена полная загрузка. Данный режим является распространением режима загрузки только заголовков, так как кроме реквизитов формирования заголовка и сортировки, производится загрузка других выбранных реквизитов. При загрузке в режиме частичной загрузки (но не в режиме загрузки заголовков!) в объекте инициализируются все особые свойства: Parent, Folder, LinkedObject (для объектов журналов), Status, IsFolder. Обращение к этим свойствам (к примеру, <Объект>.IsFolder()) не будет приводить к полной загрузке объекта. Для загрузки в этом режиме можно использовать функции типа MassLoadObjects, FindEx, SelectEx или LoadEx.

Изменения и сохранение объектов

Для каждого позиционированного (выбранного) объекта существует внутренний код базы данных, указывающий на единственную запись в базе данных, соответствующую текущему объекту. Если в реквизитах объекта произвести изменения, объект принимает статус изменен. Объект по прежнему будет загруженным и внутренний код базы данных по-прежнему будет таким же, каким он был при позиционировании объекта. Измененный объект можно сохранить в базу данных, при этом все изменения в реквизитах объекта будут записаны в базу данных и последующая загрузка реквизитов будет давать эти новые значения. При работе в многопользовательской системе, может получиться ситуация, когда два пользователя одновременно редактируют один и тот же объект, после чего сохраняют его содержимое. Так как оба пользователя работают со своей локальной копией объекта и не видят изменений друг друга, после того, как последний пользователь сохранит свои изменения в объекте, изменения первого пользователя будут утеряны. Чтобы избежать этой ситуации, объекты открытые в визуальном режиме для редактирования автоматически блокируются программой. Второй пользователь, не сможет открыть для редактирования заблокированный объект (у него будет доступ к открытию объекта в режиме просмотра, который исключает произведение каких-либо изменений). При программных изменениях, однако, блокировка объекта до его изменения и сохранения должны быть предусмотрены разработчиком. Поэтому, особенно для объектов, которые будут находиться в памяти продолжительное время, настоятельно рекомендуется следовать следующему алгоритму при изменении и сохранении объектов в базу данных:

  1. Произвести блокировку объекта с помощью функции Lock. Если блокировка неудачна, отказаться от изменения данного объекта (очевидно, что с ним работает другой пользователь).
  2. Если блокировка произведена, предусмотреть автоматическую разблокировку объекта внутри конструкции Try .. Finally
  3. Загрузить или перечитать содержимое объекта с помощью функции Reload. Если пропустить этот шаг, заблокированный объект может уже содержать устаревшую информацию, так как с момента, как он был загружен до момента его блокировки могло пройти достаточно времени, чтобы другой пользователь или программа другого клиента сделали изменения в реквизитах объекта и сохранили его в базу данных.
  4. Произвести необходимые изменения в реквизитах и строчных частях объекта.
  5. Сохранить изменения в объекте в базу данных
  6. Окончить конструкцию Try .. Finally разблокировкой объекта.

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

Типы объектов базы данных

Виды типов объектов БД задаются в редакторе проекта -- Студии. Поэтому, программная среда не может создать самостоятельно, к примеру, новые виды справочников или документов. Однако, программная среда может создавать реальные новые элементы в базе данных, изменять их реквизиты, удалять их и пр. Информация, редактируемая в Студии, называется структурой данных (или метаданными), информация, которую может изменять программа, называется просто данными. Для более полного понимания, какие типы данных доступны в структуре данных, см. информацию по Студии, здесь дан список типов данных с которыми может работать программа:

  • Ref, Reference -- тип данных справочник. Справочник может иметь произвольное количество реквизитов и строчных частей, объекты справочников могут быть папками и обычными элементами, справочники могут быть подчинены между собой с помощью особой структуры подчинения (справочники-родители), элементы справочника могут иметь особые флаги -- триггеры. Элементы справочников могут иметь ссылки в журналах справочников. Справочники используются для хранения любых типов данных, в отличие от документов, справочники обычно не связаны с накопителями базы данных (однако, такую связь можно построить программным путем).
  • Doc, Document -- тип данных документ. Документ может иметь произвольное количество реквизитов и строчных частей. Элементы таблиц документов обычно называются просто "документами". Документы могут иметь особые флаги -- триггеры. Документы могут иметь ссылки в журналах документов. Документы используются для хранения любых типов данных, в отличие от справочников, они обычно могут иметь связанные записи в накопителях базы данных.
  • Enum, Enumeration -- тип данных перечисление. Перечисления могут иметь произвольное количество значений. Каждое значение имеет свое наименование (как реквизиты справочников), однако, не имеет типа данных. Перечисления полностью задаются в структуре данных, и являются виртуальными объектами, каждое значение перечисления, имеет свой внутренний код базы данных. Перечисления используются для улучшения читабельности, вместо них можно, к примеру, использовать целые числа, каждое из которых будет обозначать значение перечисления.
  • DBVar -- тип данных переменная базы данных. Переменные БД позволяют сохранять в базе данных единственное значение произвольного типа (которое, однако, может быть периодическим). Переменные БД обычно используются для хранения установок и опций определенного проекта. Они доступны для чтения и изменения как программным путем, так и в виде диалога редактирования.
  • Jour, Journal -- тип данных журнал документов или справочников. Журналы могут иметь произвольное количество реквизитов. Каждый документ или элемент справочника, входящий в определенный журнал, содержит в нем свою ссылку -- уникальный элемент журнала, в журнале могут быть также заданы соответствия между реквизитами журнала и реквизитами соответствующих документов или справочников входящих в журнал. При изменении элемента справочника, входящего в данный журнал, система автоматически транслирует измененные реквизиты на соответствующие реквизиты элемента журнала. Журналы могут использоваться, для сводной таблицы объектов разных видов (к примеру, разных видов документов), для удобства работы пользователей, для ускорения запросов к базе данных по требуемым данным и для разгрузки сервера БД (который будет выполнять запросы к одной таблице, вместо нескольких). Создание журнала, в который входит один вид объектов, имеет мало смысла.
  • Stor, Storage -- тип данных накопитель. Может иметь произвольное количество реквизитов и активов. Накопители оптимизированы для хранения вычисляемой (числовой) информации, запросы к которой будут выполняться в различных разрезах. Для этой информации выделяются особые реквизиты -- активы, которые могут содержать только числовую информацию. Допустимо, однако, чтобы накопитель не содержал ни одного актива. Каждая запись в накопителе может содержать или не содержать информацию по дате и времени этой записи, а также иметь дополнительный признак "приход" или "расход". Наличие таких признаков задается для каждого из накопителей в отдельности при редактировании проекта. Накопители имеют встроенную оптимизацию при нахождении суммы активов начиная с начала периода базы данных, обычно это используется для нахождения текущего сальдо какого-либо актива (скажем, суммы задолженности клиента). Так как база данных может быть достаточно большой по размеру, перебор всех записей в накопителе является длительной задачей и может сильно замедлять получение сальдо. Поэтому, для накопителей, использующих датирование записей для любого количества реквизитов доступен признак "аккумулятор". Наличие хотя бы одного реквизита аккумулятора в накопителе создает в базе данных особую таблицу, в которой система хранит промежуточные итоги (сальдо) в разрезе всех аккумуляторов для всех активов накопителя. Итоги вычисляются автоматически при изменениях в накопителях и сохраняются периодично через определенные периоды (к примеру, через месяц). Это позволяет, при нахождении сальдо на определенную дату в разрезе группы аккумуляторов (особого класса запросов к накопителям), создавать выборку не для всех записей накопителя, а для записей, идущих после предыдущих предыдущих итогов, сложенных с записями самих итогов. При нахождении сальдо на момент последней записи в накопителе, запрос будет производиться только по таблице итогов, где всегда хранятся записи на последнее изменение, поэтому, такой запрос будет выполнен гораздо быстрее. Обычные реквизиты, не помеченные как аккумуляторы, не могут участвовать как разрезы в запросах по нахождению сальдо.

Свойства, доступные для использования каждого из типов объектов, зависят от данного типа. Ниже дана таблица с кратким описанием свойств объектов, в зависимости от их типа. Дальнейшее описание ищите в статьях по Студии.

Тип свойства Идентификатор свойства Применимо к типам объектов Описание
Наименование Name Справочники, документы, перечисления, переменные БД, журналы, накопители, нумераторы Задает идентификатор объекта
Заголовок Caption Справочники, документы, перечисления, переменные БД, журналы, накопители Задает описательное имя объекта, может использоваться при указании на него
Описание Description Справочники, документы, перечисления, переменные БД, журналы, накопители, нумераторы Задает описание объекта, используется для хранения важной описательной информации по объекту для разработчиков
Способ формирование представления CaptionTemplate Справочники, документы, журналы Задает способ формирования представления элемента как строку-шаблон, использующую простые не периодические реквизиты элемента. Обычно эта строка представляет собой указание на реквизит, отвечающий за наименование. Но для документов, к примеру, удобно использовать совокупность даты документа, его номера и пр.
Родительские справочники Parents Справочники Задает разрешенные родительские справочники для элементов данного. При наличии выбранных родительских справочников, все элементы текущего справочника должны иметь заполненный элемент-родитель. Это позволяет производить отбор по элементам в разрезе родителя. Обычно такой подход может использоваться для создания строчных частей справочника, когда необходимо также наличие ссылки на каждую строку строчной части. К примеру, справочник с договорами удобно подчинять справочнику контрагентов. Каждый договор при этом будет "закреплен" за определенным контрагентом.
Формы по умолчанию DefaultForms Справочники, документы, журналы Параметр задает формы, модули и журналы по умолчанию при открытии объекта в виде списка, для выбора элемента, для редактирования элемента или папки. Указание на эти формы и модули используется при интерактивной работе с объектами, когда отсутствует особое указание на модули или формы.
Встраеваемый выбор по умолчанию IsDefaultComboOpen Справочники, документы, журналы Задает для объекта режим, когда по умолчанию выбор элемента будет происходить в выпадающем списке, привязанном к элементу формы, где происходит выбор. Такое поведение можно изменить программно. Когда справочник, к примеру, содержит малое число элементов, удобнее дать пользователю выбрать его элемент в выпадающем списке, как это делается при выборе элемента перечисления.
Содержание папок HasFolders Справочники Является признаком того, что данный справочник может содержать элементы-папки. Если справочник содержит папки, его элементы могут быть помещены внутрь элементов-папок для удобства работы пользователей. Кроме того, запросы по папкам будут включать все элементы внутри папок.
Объекты-основания CanBeBasedUpon Справочники, документы При использовании визуальной функции ввода объекта на основании другого объекта (обычно необходимые указания на объект-основание заполняются программно) система выдает список возможных объектов-оснований. Виды объектов, входящих в этот список, задаются в данном параметре.
Составные индексы CompositeIndexes Справочники, документы, журналы, накопители Свойство задает произвольное количеством дополнительных индексов базы данных, состоящих из цепочек обычных и особых реквизитов. Для справочников особыми реквизитами считаются @STATUS, @ELEMENT, @ISFOLDER, @FOLDER, @PARENT, для документов @STATUS, @ELEMENT, для накопителей @LINEID, @LINK, @EXPENSE, @DATE, для журналов @STATUS, @ELEMENT, @LINK, @ISFOLDER. Для цепочек реквизитов, имеющих отдельный индекс, ускоряется сортировка и поиск в базе данных, особенно это важно, если по всей совокупности реквизитов часто происходит идентификация (поиск) элементов БД.
Режимы регистрации событий EventLogFlags Справочники, документы, переменные БД Задает режимы автоматической записи событий, связанных с данным объектом, в журнал регистрации событий. События будут автоматически записывать в журнал, к примеру, при записи объекта, создании нового и пр.
Флаг измененности ChangeTrigger Справочники, документы Задает особое поле в базе данных для элементов (документов) этого объекта. Поле имеет 4 состояния и может проверяться или изменяться программно. Поле принимает определенное состояние при сохранении изменений в элемент (документ), что позволяет получить совокупность измененных объектов, выгрузить их или обработать, и пометить как неизмененные.
Режим автоматической транзакции при обработке AutoTransactionMode Документы Признак автоматически включает режим транзакции до выполнения обработчиков OnPublish/OnUnpublish и завершает режим после выполнения. Без этого признака, программа должна сама инициировать режим транзакции в нужный момент.
Игнорирование порядка блокировки IgnoreStoragesLockOrder Документы Позволяет игнорировать порядок блокировки накопителей для указанного документа, порядок блокировки используется для улучшения доступности базы данных при обработке документов в базах данных с большим количеством пользователей.
Используемые накопители StoragesAllowed Документы Разрешает создание записей из указанного документа в выбранные накопители, используется для оптимизации операций поиска записей в накопителях для выбранного документа.
Свойства нумератора Numerator Нумераторы Свойства виртуального объекта нумератора, который может использоваться для прозрачной нумерации реквизитов объектов.
Значения перечисления Values Перечисления Список значений перечисления, каждое значение имеет наименование и описание.
Тип данных переменной БД DataType Переменные БД Задает тип данных переменной БД, либо набор типов данных.
Периодическая переменная БД IsPeriodical Переменные БД Значение переменной БД зависит от конкретной даты. На сегодня это значение может быть одним, а вчера совершенно другим. Переменные подобного рода позволяют хранить простую изменяющуюся информацию, когда необходимо также иметь доступ к истории изменения этой информации.
Период изменения переменной БД TimePeriod Переменные БД Свойство реквизита задает ограничения на изменения периодической переменной БД. К примеру, переменная может быть изменена только на начало любого месяца, в течение месяца она не меняется. Это позволяет уменьшить количество возможных записей в базе данных, тем самым ускорив работу с переменной. По умолчанию переменная может изменяться на начало дня. Это ограничение можно вообще отключить.
Датирование записей накопителя IsPeriodicalStorage Накопители Позволяет использовать периодичность в выбранном накопителе (т.е. каждой записи накопителя будет соответствовать какой-либо момент времени)
Период ведения итогов TotalsPeriod Накопители Позволяет задать периодичность построения итогов накопителя, большие периоды ведут к более быстрой записи, однако, могут отрицательно сказаться на скорости расчета. Рекомендуется устанавливать данный период равным месяцу.
Признак приход или расход UsesDebitCreditMark Накопители Каждая запись накопителя приобретает дополнительный признак "приход" или "расход", который будет влиять на знак движения при нахождении итогов
Объекты, входящие в журнал Members Журналы Позволяет включить или исключить справочник (документ) в данный журнал (из журнала).
Журнал содержит папки WillContainFolders Журналы справочников Разрешает хранить в журнале папки справочников наряду с элементами справочников

Подчинение элементов справочников и таблица подчиненности документов

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

Встроенная возможность отслеживания подчинения документов работает несколько другим способом. Отличие заключается в том, что любой документ может быть подчинен более чем одному документу-основанию, при этом, он может не иметь подчинения вообще. Подчинение осуществляется не через невидимый особый реквизит @Parent, как в случае со справочниками, а через системную таблицу подчинения документов. Каждый реквизит документа или срочной части документа с абстрактным типом документ или определенным видом (видами) документа, может иметь признак принадлежность таблицы подчинения (см. таблицу ниже). При сохранении документа с заполненным реквизитом с таким признаком, в системную таблицу подчинения документов помещается запись о подчинении текущего документа документу, выбранному в указанный реквизит. Таких реквизитов может быть несколько, поэтому, для одного документа в этой таблице может быть несколько записей (или ни одной). Запросы по этой таблице, позволяют не только выяснить, каким документам подчинен данный (прямой запрос), но и какие документы подчинены данному (обратный запрос), см. функцию LoadLinkedDocuments.

Реквизиты объектов базы данных

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

Ниже дана таблица возможных свойств строчных частей реквизитов:

Тип свойства Идентификатор свойства Применимо к типам объектов Описание
Наименование Name Строчные части документов и справочников Задает идентификатор строчной части
Описание Description Строчные части документов и справочников Задает описание строчной части, используется для хранения важной описательной информации по объекту для разработчиков
Содержание папок HasFolders Строчные части справочников Является признаком того, что данная строчная часть может содержать строки-папки. Если строчная часть содержит папки, некоторые ее строки могут быть помещены внутрь других строк, как это происходит с элементами справочников.
Составные индексы CompositeIndexes Строчные части документов и справочников Свойство задает произвольное количеством дополнительных индексов базы данных, состоящих из цепочек обычных и особых реквизитов. Для строчной части особыми реквизитами считаются @LINEID, @HEADER и @ELEMENT. Для цепочек реквизитов, имеющих отдельный индекс, ускоряется сортировка и поиск в базе данных, особенно это важно, если по всей совокупности реквизитов часто происходит идентификация (поиск) элементов БД.

Ниже дана таблица возможных свойств реквизитов объектов и их применимости для типов объектов:

Тип свойства Идентификатор свойства Применимо к типам объектов Описание
Наименование Name Справочники, документы, перечисления, журналы, накопители, реквизиты строчных частей Задает идентификатор реквизита
Заголовок Caption Справочники, документы, перечисления, журналы, накопители, реквизиты строчных частей Задает описательное имя реквизита, может использоваться при указании на реквизит
Описание Description Справочники, документы, журналы, накопители, реквизиты строчных частей Задает описание реквизита, используется для хранения важной описательной информации по реквизиту для разработчиков
Тип данных DataType Справочники, документы, журналы, накопители, реквизиты строчных частей Задает тип данных реквизита, либо набор типов данных.
Нумератор Numerator Справочники, документы, реквизиты строчных частей Задает ограничения или особые условия автоматического создания значения реквизита. Такие реквизиты часто содержат номера или индексы справочников или документов, индексы могут быть уникальными, несколько реквизитов могут разделять один и тот же нумератор. См. статью о нумераторах.
Простой индекс IsIndexed Справочники, документы, журналы, накопители, реквизиты строчных частей Помечает реквизит для индексирования в базы данных. Для индексируемых реквизитов ускоряется сортировка и поиск в базе данных, особенно это важно, если по реквизитам часто происходит идентификация элементов БД.
Применимость реквизита AppliesTo Справочники, реквизиты строчных частей справочника Задает использование реквизита для папок, элементов или папок и элементов. К примеру, если реквизит используется только для папки, система будет сохранять только пустые значения реквизита в элементы, не являющиеся папками. Ограничение может помочь избежать несоответствия информации.
Полнотекстовый поиск IsFullTextSearch Справочники, документы, журналы, реквизиты строчных частей Включает реквизит в полнотекстовый поиск, если последний поддерживается текущей базой данных. Полнотекстовый поиск может использоваться функциями Find и прочими, если возможность его использования отсутствует, сервер базы данных будет автоматически использовать вместо него обычный поиск. Для учетных систем полнотекстовый поиск чаще всего не требуется.
Форсирование заполненности IsDenyEmpty Справочники, документы, журналы, реквизиты строчных частей Запрещает интерактивное сохранение объекта, если данный реквизит не заполнен. Ограничение удобно применять, когда требуется форсирование заполнения реквизита.
Разрешение выбора папок IsFolderAllowed Справочники, журналы, реквизиты строчных частей справочника Запрещает интерактивное сохранение объекта, если данный реквизит содержит папку справочника. Ограничение удобно применять, когда требуется убедиться, что пользователь выбирает только обычные элементы, а не папки в значения реквизита.
Международных текст (юникод) IsUnicode Справочники, документы, журналы, накопители, реквизиты строчных частей Реквизит с текстовым значением может содержать международный текст (UTF-16), однако, будет занимать в базе данных в два раза больше места. Без этого свойства текст этого реквизита базе данных может иметь только кодировку, заданную по умолчанию для этой базы данных при ее создании, международные символы, не входящие в эту кодировку могут быть сохранены как знаки "?" или как-то иначе, в зависимости от типа используемой базы данных.
Периодический реквизит IsPeriodical Справочники, документы, реквизиты строчных частей Реквизит состоит из множества записей, значение его зависит от конкретной даты. На сегодня это значение может быть одним, а вчера совершенно другим. Реквизиты подобного рода позволяют хранить простую изменяющуюся информацию, когда необходимо также иметь доступ к истории изменения этой информации. К примеру, цена определенной позиции номенклатуры может быть периодическим реквизитом, что даст возможность не только знать текущую цену, но также цену на произвольную дату.
Период изменения периодического реквизита TimePeriod Справочники, документы, реквизиты строчных частей Свойство реквизита задает ограничения на изменения периодических реквизитов. К примеру, реквизит может быть изменен только на начало любого месяца, в течение месяца реквизит не меняется. Это позволяет уменьшить количество возможных записей в базе данных, тем самым ускорив работу с реквизитами. По умолчанию реквизит может изменяться на начало дня. Это ограничение можно вообще отключить.
Принадлежность таблицы подчинения IsParentLink Документы, реквизиты строчных частей документов Свойство реквизита позволяет использовать помещать документ в таблицу подчинения, если этот реквизит заполнен значением документа. Особая таблица подчинения позволяет строить структуру подчиненности между документами внутренними средствами системы, в ином случае, потребовалось бы создать специальный справочник для подобных нужд и заполнять его программно.
Реквизит датирования IsWorkingDateLinked Справочники, документы, реквизиты строчных частей Свойство позволяет автоматически заполнить реквизит значением текущей даты при создании нового объекта или добавлении новой строки в строчную часть. Свойство используется для удобства, когда реквизит задает датирование элемента, что исключает необходимость в дополнительной программной работе по его заполнению.
Реквизит сортировки IsSortProp Справочники, документы Свойство реквизита выбирает его, как реквизит сортировки текущего вида объектов. Вид объекта может содержать только один реквизит с таким признаком. Если признак выбран, при сортировке группы объектов данного типа, ключом сортировки будет считаться данный реквизит. Обычно такой признак устанавливается для реквизитов, задающих наименование, номер или код объекта.
Реквизит визуального фильтра таблиц IsMainFilterProp Справочники, документы Свойство текстового реквизита выбирает его, как реквизит для фильтрования в визуальных таблицах. Если пользователь использует быстрое фильтрование в таблицах (вводит текст в столбце таблицы), система должна знать, какой реквизит объекта использовать для применения фильтра. Вид объекта может содержать только один реквизит с таким признаком. Обычно реквизиты с таким признаком также обладают признаком IsSortProp, но это не всегда так. Видимо наименование элемента или документа (представление) может формироваться из почти произвольной композиции реквизитов, обычно реквизит с таким свойством присутствует в формировании представления.
Реквизит-аккумулятор IsAccumulator Накопители Задает признак того, что реквизит накопителя является аккумулятором, т.е., он будет участвовать в разрезах в который будет автоматически накапливаться и обновляться информация по сальдо накопителя по активам накопителя.
Реквизит-актив IsAsset Накопители Задает признак того, что реквизит накопителя является активом. Данные реквизиты могут иметь только числовой тип данных и могут быть использованы для автоматического накопления и обновления информация по сальдо накопителя.
Соответствие реквизитам объектов журнала MembersLinks Журналы Задает связи между реквизитами объектов, входящих в журнал с текущим реквизитом журнала. См. доп. информацию в описании журналов

Периодические реквизиты объектов базы данных

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

Строчные части объектов базы данных

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

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

Общие функции, связанные с сервером и базой данных

В данном разделе собраны функции, напрямую или косвенно связанные с сервером базы данных. Если клиент работает в локальном режиме, без подключения к серверу базы данных, многие функции этой группы не будут иметь значения. Раздел также продублирован в функциях общего назначения.

Идентификатор Статус Тип Визуальная Параметры Описание
DBCodeLength Реализована Функция DBCodeLength():<Длина строки внутреннего кода объекта БД (INT)> Функция возвращает число 20, являющееся длиной строки внутреннего кода объекта базы данных.
DBTypeStr Реализована Функция DBTypeStr(<Аргумент>):<Тип объекта базы данных (STRING)> Функция возвращает тип объекта базы данных в виде строки. Пример возвращаемых значений: DOC, REF, ENUM и т.п. В случае, если аргумент не является объектом базы данных, будет возвращена пустая строка.
DBObjectName Реализована Функция DBObjectName(<Аргумент>):<Вид объекта базы данных (STRING)> Функция возвращает вид объекта базы данных в виде строки. Пример для элемента справочника REF.Справочник1 будет возвращена строка Справочник1. Результат функции соответствует конструкции <Переменная>.DBName(). В случае, если аргумент не является объектом базы данных или вид объекта не выбран, будет возвращена пустая строка.
IsDBObject Реализована Функция IsDBObject(<Аргумент>):<Является ли аргумент объектом БД (INT)> Функция возвращает 1, если аргумент является объектом базы данных, иначе будет возвращен 0.
MassLockWithWait Реализована Функция MassLockWithWait(<Список с объектами для блокировки (LIST)>,<Режим пропуска (INT)>=0,<Разблокировка при ошибках (INT)>=1,<Период ожидания млс. (INT)>=0,<Объект ошибки>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<0 или 1 (INT)> Функция позволяет установить блокировку на множестве объектов базы данных (или/и семафорах), блокировка происходит по указанным правилам (см. полное описание)
MassUnlock Реализована Функция MassUnlock(<Список с объектами для разблокировки (LIST)>,<Объект ошибки>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<0 или 1 (INT)> Функция позволяет снять блокировку со множества объектов базы данных (или/и семафоров) по указанным правилам (см. полное описание)
DBLockStringMutex Реализована Функция DBLockStringMutex(<Имя семафора (STRING)>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Результат (INT)> Функция осуществляет блокировку именованного серверного семафора, либо возвращает данные пользователя, который его заблокировал.
DBIsStringMutexLocked Реализована Функция DBIsStringMutexLocked(<Имя семафора (STRING)>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Результат (INT)> Функция проверяет, заблокирован ли именованный серверный семафор, и возвращает данные пользователя, который его заблокировал при необходимости.
DBUnlockStringMutex Реализована Функция DBUnlockStringMutex(<Имя семафора (STRING)>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Результат (INT)> Функция осуществляет разблокировку именованного серверного семафора, либо возвращает данные пользователя, который его заблокировал.
StoreValue Реализована Функция StoreValue(<Имя переменной (STRING)>,<Значение переменной>) Функция сохраняет на сервере для текущего пользователя произвольное значение под выбранным именем. Функция работает только если клиент имеет подключение к серверу.
RestoreValue Реализована Функция RestoreValue(<Имя переменной (STRING)>):<Значение переменной> Функция получает, сохраненное ранее на сервере для текущего пользователя произвольное значение с выбранным именем. Функция работает только если клиент имеет подключение к серверу. Если значение с указанным именем не было сохранено, будет возвращено пустое значение.
StoreGlobalTempString Реализована Функция StoreGlobalTempString(<Имя переменной (STRING)>,<Значение переменной (STRING)>) Функция изменяет значение временной именной переменной на сервере, которая будет доступна другим пользователям, однако, будет потеряна при перезагрузке сервера.
RestoreGlobalTempString Реализована Функция RestoreGlobalTempString(<Имя переменной (STRING)>):<Значение переменной (STRING)> Функция получает значение временной именной переменной на сервере. Подобные переменные доступны другим пользователям, однако, теряются при перезагрузке сервера.
BroadcastDBUpdate Реализована Функция BroadcastDBUpdate(<Тип базы данных (STRING)>,<Для всех пользователей (INT)>=0):<Сообщение успешно отправлено (INT)> Функция рассылает запросы на обновление форм, содержащих таблицы базы данных указанного типа в текущей системе или глобально по всем клиентам сервера. В последнем случае, нужно быть осторожным, чтобы не перегружать сервер внезапным большим количеством запросов, даже с учетом того, что серверная часть использует особую систему замедления отправки запросов клиентам.
DBObjectFromDBCode Реализована Функция DBObjectFromDBCode(<Внутренний код базы данных (STRING)>):<Объект базы данных (DB)> Функция создает объект базы данных по его внутреннему коду. Нужно понимать, что внутренний код является уникальным в пределах текущей базы данных, при перенесении информации в другую базу данных, внутренние коды объектов будут совсем другими.
MassLoadObjects Реализована Функция MassLoadObjects(<Объект для загрузки>,<Аргумент 1>,<Аргумент 2>,<Также загружать периодические реквизиты (INT)>=0,<Производить загрузку заголовков (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>=""):<Количество объектов, которые были загружены (INT)> Функция производит загрузку большого количества объектов из списка, таблицы или являющихся реквизитами объекта БД, одновременно, что быстрее, чем загрузка этих объектов один за другим. Дополнительные параметры позволяют настроить загрузку, в т.ч. ограничить ее загрузкой только заголовков.
LockDBPath Планируется Функция LockDBPath(<Путь или объект для блокировки (STRING,DB)>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<0 или 1 (INT)> Функция производит попытку блокировки всей таблицы указанных объектов (к примеру, всего справочника с указанным видом).
UnlockDBPath Планируется Функция UnlockDBPath(<Путь или объект для разблокировки (STRING,DB)>,<Описание ошибки (STRING)>):<0 или 1 (INT)> Функция производит разблокировки всей таблицы указанных объектов (к примеру, всего справочника с указанным видом), заблокированных ранее функцией LockDBPath
GetServerLocksInformation Реализована Функция GetServerLocksInformation(<Перекрестная проверка (INT)>=0):<Таблица блокировок сервера (TAB)> Функция получает полный список блокированных в данный момент объектов на сервере (включая именованные семафоры).
GetServerStoragesInformation Реализована Функция GetServerStoragesInformation(<Имена накопителей через запятую (STRING)>=""):<Информация по накопителям (TAB)> Функция получает информацию по всем накопителям проекта с сервера в виде таблицы. В ней присутствует информация по крайним документам, дате остатков и пр.
GetServerUsedSpaceInformation Реализована Функция GetServerUsedSpaceInformation():<Информация по объему таблиц БД (TAB)> Функция получает информацию по затраченному месту в базе данных по всем объектам проекта и системным таблицам с сервера в виде таблицы. В таблице также присутствует информация строчным частям и таблицам периодических значений.
CheckDBConsistency Планируется Функция CheckDBConsistency(<Путь или объект (STRING,DB)>="",<Режим (INT)>=0):<Информация по проблемам БД (TAB)> Функция осуществляет проверку корректности информации на сервере для всех таблиц или таблиц с заданным путем. Информация возвращается в виде таблицы.
BeginTransaction Реализована Функция BeginTransaction():<Уровень вложения транзакции (INT)> Функция инициирует начало транзактного изменения объектов БД. По умолчанию транзакция на сервере не включена и возникает периодически при записи объектов или обработке документов. Каждый поток имеет свой уровень вложения транзакции. Функция опасна и при некорректном использовании может привести к порче данных. См. полное описание.
CommitTransaction Реализована Функция CommitTransaction():<Уровень вложения транзакции (INT)> Функция уменьшает текущий уровень транзакции на единицу и, если он равен нулю, фиксирует изменения в базе данных. См. также BeginTransaction.
RollbackTransaction Реализована Функция RollbackTransaction() Функция отменяет все изменения, произведенные в текущей транзакции и уменьшает уровень транзакции до нуля. См. также BeginTransaction.
IsTransactionActive Реализована Функция IsTransactionActive():<0 или 1 (INT)> Функция возвращает 1 в случае, если в данном потоке уровень транзакции больше нуля (транзакция активна).
CollectObjectsLinks Реализована Функция CollectObjectsLinks(<Список объектов (LIST)>):<Таблица ссылок данных объектов (TAB)> Функция возвращает полную таблицу ссылок всех объектов БД из заданного списка. К примеру, если объект содержится в движениях накопителя или выбран в реквизите другого объекта (в т.ч. периодическом), в таблицу добавится запись о такой ссылке. Функция может использоваться перед физическим удалением объектов из БД, чтобы убедиться, что никакие другие таблицы БД не имеют на них ссылок. Функция может сильно загрузить сервер базы данных.
LockStorage Реализована Функция LockStorage(<Наименование накопителя (STRING)>) Функция производит блокировку указанного накопителя для всех пользователей сервера. Если накопитель был заблокирован другим пользователем, функция вызовет исключение. Функция вызывается автоматически при обработке документов с включенным режимом автоматической транзакции. Время между блокировкой и разблокировкой необходимо минимизировать, чтобы улучшить производительность базы данных. При ошибке, функция не предлагает имени пользователя, заблокировавшего накопитель, если такая информация необходима, разработчик может использовать функцию LockDBPath вместо текущей. Обычно функция используется вне модуля обработки документа. В отличие от функции UnlockStorage, функция может использоваться как внутри транзакции, так и вне оной.
UnlockStorage Реализована Функция UnlockStorage(<Наименование накопителя (STRING)>) Функция производит разблокировку указанного накопителя, при его блокировке функцией LockStorage. Функция может использоваться только вне режима транзакции, так как при окончании транзакции, все заблокированные накопители автоматически будут разблокированы системой.
InitiateBackupCreation Реализована Функция InitiateBackupCreation(<Идентификатор протокола резервного копирования (STRING)>,<Ожидать завершения процесса (INT)>=0):<Внутренний код процесса резервного копирования (INT)> Функция инициирует (и ожидает завершения, если необходимо) процесс резервного копирования базы данных и сопутствующих файлов проекта по протоколу, заданному в файлах инициализации сервера. Идентификатор протокола задается из установок в файле инициализации сервера. Если ожидание окончания процесса не задано, функция возвращается сразу же после инициации процесса резервного копирования, иначе только после окончания процесса или возникновения ошибки. Для получения информации по асинхронному процессу, а также для получения описания ошибки, остановившей процесс, используется функция QueryBackupProgress.
QueryBackupProgress Реализована Функция QueryBackupProgress(<Код процесса резервного копирования (INT)>,<Текущее сообщение процесса копирования или сообщение об ошибке (STRING)>,<Дата и время начала последнего процесса (DATE)>):<Код состояния процесса резервного копирования (INT)> Функция используется для получения информации об окончании или состоянии процесса резервного копирования, инициированого функцией InitiateBackupCreation.
QueryScheduledBackupFailure Реализована Функция QueryScheduledBackupFailure(<Идентификатор протокола последней ошибки резервного копирования (STRING)>,<Сообщение об ошибке, произошедшей во время резервного копирования (STRING)>,<Дата и время начала последнего процесса (DATE)>):<Ошибка происходила (1), ошибки не было (0) (INT)> Функция возвращает информацию по последней ошибке при резервном копировании, выполнявшемся по расписанию. Если ошибка произошла при инициации копирования функцией InitiateBackupCreation, она не будет возвращена этой функцией. Функция может выполняться при запуске клиента с административными правами, чтобы предупредить администратора о том, что какой-либо из процессов резервного копирования закончился с ошибкой. Чтобы очистить информацию об ошибке, необходимо удалить сохраненный файл ошибки в каталоге проекта на сервере.
SysRebuildIndexes Реализована Функция SysRebuildIndexes(<Наименование объекта, для которого необходимо выполнить процедуру перестроения индексов (STRING)>) Функция выполняет процедуру перестроения индексов для указанного объекта базы данных или для всех объектов базы данных. Данная процедура может занять продолжительное время. Необходимость в такой процедуре может появляться при обновлении сервера базы данных или порче данных в базе данных и т.д. Для некоторых типов СУБД нет возможности выполнить такую процедуру с помощью сторонних утилит, к примеру, для SQLite3 использование особых типов сравнения для текстовых данных, делает невозможным использование сторонних утилит, альтернативой перестроения индексов может служить выгрузка дампа базы данных и создание с помощью него новой базы данных.

Функции создания объекта базы данных и вспомогательных интерфейсов

Функции и интерфейсы, данные ниже, используются для создания объектов разного типа. Универсальный способ создания объектов, является использование функции DB, однако, зачастую удобнее (и быстрее) создавать объекты с помощью интерфейсов, типа Ref или Doc. После создания, объект может быть позиционирован и заполнен, может быть произведена выборка по объектам, либо группа объектов загружена в список с помощью запроса. Также можно создать новый (отсутствовавший ранее в базе данных) объект, либо изменить загруженный текущий и сохранить изменения в базу данных.

Идентификатор Статус Тип Визуальная Параметры Описание
DB Реализована Функция DB(<Идентификация создаваемого объекта (STRING)>,<Стандартные фильтры поиска>):<Новый объект БД (DB)> Создать объект базы данных с заданным типом и видом (наименованием).
Ref Реализована Атрибут Ref.<Наименование справочника>:<Новый объект БД (DB)> Создать объект базы данных справочника с заданным наименованием.
Doc Реализована Атрибут Doc.<Наименование документа>:<Новый объект БД (DB)> Создать объект базы данных документа с заданным наименованием.
Enum, Enumeration Реализована Функция Enum:<Интерфейс перечисления (INTERFACE)> Получает интерфейс перечисления, который позволяет выполнять такие функции, как Get, GetCaption и GetByIndex, и получить доступ к таким атрибутам, как <Наименование перечисления> и пр.
DBVar Реализована Функция DBVar:<Интерфейс переменной БД (INTERFACE)> Получает интерфейс переменной БД, который позволяет выполнять такие функции, как GetValue, SetValue и пр., и получить доступ к таким атрибутам, как <Наименование переменной БД>, Restricted и пр.
Stor, Storage Реализована Атрибут Stor.<Наименование накопителя>:<Новый объект БД (DB)> Создать объект базы данных накопителя с заданным наименованием.
Journal, Jour Реализована Атрибут Journal.<Наименование журнала>:<Новый объект БД (DB)> Создать объект базы данных журнала с заданным наименованием.
Struct, Meta Реализована Атрибут DB.Struct:<Объект структуры, позиционированный на текущий объект базы данных (DBSTRUCT)> Атрибут работает совместно с объектом базы данных и получает новый объект структуры базы данных, позиционированный на типе данных и виде данных текущего объекта. Принимаются как заполненные объекты БД, так и не позиционированные, с невыбранным видом или типом. Атрибут также может быть вызван непосредственно из интерфейсов, типа Ref, Doc и пр.

Общие функции объектов базы данных

Данная группа функций и атрибутов описывает возможности работы с объектами базы данных, доступные всем или нескольким объектам, функции, работающие только со специфическим видом объектов, описаны в соответствующих параграфах ниже по статье. Функции проверяют или изменяют внутренние свойства и реквизиты объектов, производит выборку, позиционирование, загрузку в список и пр.; позволяют сохранять, удалять, блокировать и разблокировать объекты; проверяют вхождение объектов в список со папками, сохраняют и восстанавливают содержимое объектов; выполняют другие действия.

Идентификатор Статус Тип Визуальная Параметры Описание
<Наименование реквизита> Реализована Атрибут DB.<Наименование реквизита>:<Значение реквизита> Атрибут получает или изменяет значение реквизита по наименованию.
DBType Реализована Функция DB.DBType():<Тип объекта БД (STRING)> Функция возвращает наименование выбранного типа текущего объекта, либо пустую строку, если тип не выбран.
DBName Реализована Функция DB.DBName():<Вид объекта БД (STRING)> Функция возвращает наименование выбранного вида объекта определенного типа, либо пустую строку, если вид не выбран.
IsInteractive Планируется Функция DB.IsInteractive():<Принадлежность объекта к элементам формы (INT)> Функция позволяет определить, связан ли данный объект с элементом какой-либо формы или является ли он редактируемым или открытым для просмотра объектов какого-либо потока.
BelongsToDB Реализована Функция DB.BelongsToDB(<Внешняя база данных (EXDB)>):<Принадлежность объекта указанной базе данных (INT)> Функция позволяет определить, принадлежит ли текущий объект указанной базе данных. Если аргумент не задан, проверяется принадлежность основной базе данных.
GetForm Планируется Функция DB.GetForm():<Получение элемента формы, которому принадлежит объект (FORM)> Для объектов, связанных с элементом какой-либо формы или открытых для просмотра или редактирования в каком-либо потоке, функция возвращает этот элемент на форме или саму форму.
UseDate Реализована Функция DB.UseDate(<Дата периодических реквизитов объекта (DATE)>,<Обновить периодические реквизиты (в том числе на форме) (INT)>):<Предыдущая дата периодических реквизитов объекта (DATE)> Функция возвращает или меняет внутреннюю дату отображения и загрузки периодических реквизитов (дату окончания периода периодических реквизитов объекта), при этом, после изменения, функция автоматически перечитывает значения периодических реквизитов объекта на новую дату, если второй аргумент равен 1, либо по умолчанию, если для объекта выбран режим загрузки периодических реквизитов или, если объект связан с элементом формы.
UsePeriod Реализована Функция DB.UsePeriod(<Дата начала периода периодических реквизитов объекта (DATE)>,<Дата окончания периода периодических реквизитов объекта (DATE)>,<Обновить периодические реквизиты (в том числе на форме) (INT)>) Функция меняет начальную и конечную даты периода периодических реквизитов объекта, которые используются при сохранении изменений в базе данных совместно с периодическими реквизитами. Конечная дата отвечает также за дату отображения и загрузки периодических реквизитов объекта. Функция автоматически перечитывает значения периодических реквизитов объекта на конечную дату, если второй аргумент равен 1, либо по умолчанию, если для объекта выбран режим загрузки периодических реквизитов или, если объект связан с элементом формы.
BegPeriodDate Реализована Функция DB.BegPeriodDate():<Дата начала периода периодических реквизитов объекта (DATE)> Функция получает текущую начальную дату периодических реквизитов объекта. Данная дата используется только при сохранении изменений в базе данных совместно с периодическими реквизитами. В отличие от функции UsePeriod, данная функция не производит изменения дат.
EndPeriodDate Реализована Функция DB.EndPeriodDate():<Дата окончания периода периодических реквизитов объекта (DATE)> Функция получает текущую конечную дату периодических реквизитов объекта. Данная дата используется при сохранении изменений в базе данных совместно с периодическими реквизитами, также данная дата используется для отображения и загрузки периодических реквизитов объекта. В отличие от функций UseDate и UsePeriod, данная функция не производит изменения дат.
UseBorders Реализована Функция DB.UseBorders(<Начальный элемент-граница (DB)>,<Конечный элемент-граница (DB)>) Функция устанавливает начальный и конечный объект при выборках функциями, типа Find, Load, Select. В случаях, если выборка происходит частями, после всех условий сортировки без твердой уверенности, что сортировка уникально определяет каждый из объектов, данный диапазон ограничения используется совместно с условиями сортировки. Опустить можно любой из аргументов или оба аргумента, в последнем случае, граничное условие в выборке применяться не будет.
UseOrder Реализована Функция DB.UseOrder(<Список реквизитов сортировки с суффиксами (STRING)>):<Текущий список реквизитов сортировки с суффиксами (STRING)> Функция получает или устанавливает порядок сортировки при выборках функциями, типа Find, Load, Select. В списке реквизитов наряду к обычными реквизитами, можно задавать особые реквизиты объектов. Для новых объектов порядок устанавливается пустым, что эквивалентно порядку, соответствующему внутреннему коду объектов.
UseOption Реализована Функция DB.UseOption(<Наименование установки (STRING)>,<Значение установки>):<Текущее значение установки> Функция получает или устанавливает значение дополнительных режимов загрузки текущего объекта базы данных. Доступны такие режимы, как загрузка периодических реквизитов и загрузка строчных частей.
LoadPeriodicalPropertiesHeader Реализована Функция DB.LoadPeriodicalPropertiesHeader(<Дата периодических реквизитов объекта (DATE)>) Функция производит обновление или загрузку периодических реквизитов указанного объекта на указанную дату, либо на дату окончания периода периодических реквизитов объекта, если первый аргумент не задан. Функция не меняет внутренние даты объекта. Функция не производит никаких изменений, если текущий объект является новым несохраненным объектом.
LoadPeriodicalPropertiesLineParts Реализована Функция DB.LoadPeriodicalPropertiesLineParts(<Дата периодических реквизитов объекта (DATE)>,<Наименование строчной части (STRING)>) Функция производит обновление или загрузку периодических реквизитов указанной строчной части (или всех строчных частей) объекта на указанную дату, либо на дату окончания периода периодических реквизитов объекта, если первый аргумент не задан. Функция не меняет внутренние даты объекта. Функция не производит никаких изменений, если текущий объект является новым несохраненным объектом.
Selected Реализована Функция DB.Selected():<Выбран ли объект (INT)> Функция проверяет, выбран (позиционирован) ли данный объект. Функция возвращает -1, если объект является новым несохраненным объектом, 0, если объект не выбран (не позиционирован), 1, если объект выбран, и не было изменений в его реквизитах, 2, если объект выбран и проводились какие-либо изменения в его реквизитах.
Status Реализована Функция DB.Status():<Статус объекта (INT)> Функция получает статус удаления, обработки объекта. Функция возвращает -1, если объект является новым несохраненным объектом, 0, если объект не удалялся и не обрабатывался (нормальный объект), 1, если объект был удален, 2 и более, если документ обработан.
Loaded Реализована Функция DB.Loaded():<Загружен ли объект (INT)> Функция получает статус загруженности объекта. Функция возвращает 0, если объект не выбран (позиционирован) или выбран, но не загружен, 1, если объект был позиционирован и загружен, либо если объект является новым несохраненным объектом.
Loadable Реализована Функция DB.Loadable():<Возможно ли загрузить объект (INT)> Функция проверяет, возможна ли загрузка объекта (т.е., указывает ли текущий выбранный объект на определенный объект в базе данных). Если объект был сохранен во внешнем файле, после чего был физически удален из базы данных (DeletePhysically), при загрузке из файла получится объект, который система будет считать выбранным, однако, он не будет указывать на реальный объект БД.
DBCode Реализована Функция DB.DBCode():<Внутренний код БД объекта (STRING)> Функция получает внутренний код выбранного объекта базы данных. Использование этого кода не желательно, так как он привязан к конкретной базы данных, при смене базы данных, переносе базы и пр., этот код будет другим.
Find Реализована Функция DB.Find(<Стандарные фильтры>...):<Объект был найден (INT)> Функция производит поиск и позиционирование на объект текущего вида. Объект идентифицируется с помощью фильтров. Если объект найден, он будет загружен, если не найден, текущий объект не будет изменен, если в базе данных найдено более одного объекта, будет загружен первый из найденных.
FindEx Реализована Функция DB.FindEx(<Режим загрузки (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="",<Стандарные фильтры>...):<Объект был найден (INT)> Функция производит поиск и позиционирование на объект текущего вида. Объект идентифицируется с помощью фильтров. Если объект найден, произойдет позиционирование текущего объекта, и полнота загрузки объекта будет определена режимом загрузки, если не найден, текущий объект не будет изменен, если в базе данных найдено более одного объекта, будет позиционирован первый из найденных. Функцию удобно использовать совместно со сборщиком объектов.
Load Реализована Функция DB.Load(<Максимальное количество объектов (INT)>=0,<Стандарные фильтры>...):<Найденные объекты (LIST)> Функция производит поиск и загрузку указанного количества объектов из базы данных в список значений. Объекты идентифицируются с помощью фильтров. Каждый объект, попавший в список, будет загружен.
LoadEx Реализована Функция DB.LoadEx(<Максимальное количество объектов (INT)>=0,<Режим загрузки (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="",<Стандарные фильтры>...):<Найденные объекты (LIST)> Функция производит поиск и загрузку указанного количества объектов из базы данных в список значений. Объекты идентифицируется с помощью фильтров. Полнота загрузки объектов, попавших в список, будет определяться режимом загрузки. Функцию удобно использовать совместно с функцией MassLoadObjects.
LoadFromLinePart Планируется Функция DB.LoadFromLinePart(<Наименование строчной части (STRING)>,<Список загружаемых столбцов (STRING)>,<Стандарные фильтры>...):<Результат загрузки (TAB)> Функция производит запрос и выборку по строчной части объектов с видом текущего объекта. Записи идентифицируются с помощью фильтров, отобранные записи строчных частей могут принадлежать разным объектам. Результат выборки помещается в таблицу значений.
Compute Реализована Функция DB.Compute(<Список реквизитов группировки (STRING)>,<Список реквизитов агрегации с типами операций (STRING)>,<Стандарные фильтры>...):<Результат вычисления (TAB)> Функция производит выборку с агрегацией по таблице объектов текущего вида с помощью указанных фильтров. Результат выборки возвращается в виде таблицы значений со столбцами группировки и агрегации.
ElementsNumber Реализована Функция DB.ElementsNumber(<Стандарные фильтры>...):<Количество элементов (INT)> Функция подсчитывает количество объектов, входящих в выборку с указанными фильтрами.
Reload Частичная реализация Функция DB.Reload(<Загружать периодические реквизиты на дату (DATE)>,<Производить загрузку заголовков (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="") Функция производит полную загрузку текущего выбранного объекта из базы данных. Все возможные изменения в объекте будут утеряны. Функцию удобно использовать совместно с функцией Lock перед записью изменений в объекте базы данных.
Unload Частичная реализация Функция DB.Unload(<Оставить заголовок объекта (INT)>=0) Функция очищает таблицу загруженных реквизитов и строчных частей для выбранных и загруженных объектов. Если объект является новым несохраненным объектом базы данных или изменен, функция не производит его очистку. Функция обычно используется для уменьшения размера используемой памяти в при работе с запросами.
Copy Реализована Функция DB.Copy():<Незагруженная копия объекта (DB)> Функция создает новый объект базы данных, аналогичный данному (если данный объект был выбран, новый объект также будет выбранным), однако, загрузка объекта не производится. Функцию удобно использовать совместно со сборщиком объектов при работе с запросом.
GetValue Реализована Функция DB.GetValue(<Указание на реквизит (STRING)>,<Дата периодического реквизита (DATE)>):<Значение реквизита> Функция получает значение реквизита текущего объекта по его имени. Реквизит может находиться как в заголовке объекта, так и в его строчной части. Значения периодического реквизита можно получить на указанную дату.
SetValue Реализована Функция DB.SetValue(<Указание на реквизит (STRING)>,<Значение реквизита>,<Дата начала записи периодического реквизита (DATE)>,<Дата окончания записи периодического реквизита (DATE)>) Функция устанавливает значение реквизита объекта по его имени. Реквизит может находиться как в заголовке объекта, так и в его строчной части. Значения периодического реквизита можно установить на указанную дату. При установке значения периодического реквизита объект не может быть новым несохраненным объектом БД, при изменении таких реквизитов, значение сохраняется в базе данных в момент вызова функции.
MassSetValue Реализована Функция DB.MassSetValue(<Указание на реквизит и строчную часть, если необходимо (STRING)>,<Значение реквизита>,<Дата начала записи периодического реквизита (DATE)>,<Дата окончания записи периодического реквизита (DATE)>,<Стандарные фильтры>...) Функция устанавливает значения реквизитов множества объектов, заданных в выборке с помощью стандратных фильтров. Реквизит может находиться как в заголовке объекта, так и в его строчной части. Установка значений периодических реквизитов пока не поддерживается (но планируется в будущем). Изменение реквизитов, имеющих флаги записи в таблице подчиненности документов, не поддерживается. Функция не проверяет наличие блокировки на объектах до выполнения изменения! Внимание: в реальной работе необходимо либо заблокировать изменяемые объекты до вызова функции, либо использовать функцию LockDBPath, иначе изменения в объектах, выполненные таким образом, могут быть утеряны, если какой-либо объект открыт в данный момент на редактирование пользователем (или программно) и будет записан. Дополнительные ограничения см. в статье по этой функции.
Props Реализована Функция DB.Props:<Список с реквизитами текущего объекта (LIST)> Функция получает список, содержащий все текущие загруженные реквизиты объекта. Изменения значений в списке автоматически транслируются на текущий объект.
LineParts Реализована Функция DB.LineParts(<Наименование строчной части (STRING)>):<Список строчных частей или таблица строчной части (LIST,TAB)> Функция получает таблицу значений с загруженной указанной строчной частью объекта, либо список, содержащий все таблицы значений со строчными частями объекта. Изменения значений в таблицах автоматически транслируются на текущий объект.
Lock Реализована Функция DB.Lock(<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Успешная блокировка (INT)> Функция производит попытку блокировки текущего выбранного объекта, объект не может быть новым несохраненным объектом БД. Если попытка неудачна, функция возвратит, если необходимо, имя пользователя, заблокировавшего объект, время его блокировки и машину, на которой он был заблокирован. Функцию удобно использовать перед изменением и сохранением объекта.
Unlock Реализована Функция DB.Unlock(<Описание ошибки (STRING)>):<Успешная разблокировка (INT)> Функция производит разблокировку заблокированного ранее объекта. См. также Lock.
IsLocked Реализована Функция DB.IsLocked(<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Тип блокировки (INT)> Функция проверяет, заблокирован ли уже другим пользователем текущий объект и, если заблокирован, то кем. Функция возвращает 0, если объект не заблокирован, 1, если текущий объект заблокирован ранее с помощью функции Lock, либо является визуальным объектом, открытым для редактирования, 2, если объект был заблокирован другим пользователем или потоком.
GetTrigger Реализована Функция DB.GetTrigger():<Значение триггера (INT)> Функция получает значение триггера изменения текущего объекта, если таковой был задан в Студии. Триггер может иметь 4 состояния.
SetTrigger Реализована Функция DB.SetTrigger(<Значение триггера (INT)>) Функция устанавливает значение триггера изменения текущего объекта, если таковой был задан в Студии. Триггер может иметь 4 состояния.
Select Реализована Функция DB.Select(<Стандарные фильтры>...):<В выборке есть по крайней мере один элемент (INT)> Функция инициирует выборку по таблице текущего объекта с учетом указанных фильтров, и возвращает 1, если в выборке есть объекты. Для получения следующего объекта выборки необходимо использовать функцию Next, новый объект помещается в текущий, все изменения в текущем объекте будут утеряны. Полученный объект будет загруженным.
SelectEx Реализована Функция DB.SelectEx(<Режим загрузки (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="",<Стандарные фильтры>...):<В выборке есть по крайней мере один элемент (INT)> Функция инициирует выборку по таблице текущего объекта с учетом указанных фильтров, и возвращает 1, если в выборке есть объекты. Для получения следующего объекта выборки необходимо использовать функцию Next, новый объект помещается в текущий, все изменения в текущем объекте будут утеряны. Полнота загрузки полученного объекта, будет определяться режимом загрузки. Функцию удобно использовать для ускорения выборки, когда не все объекты требуют загрузки, либо совместно со сборщиком объектов.
Next Реализована Функция DB.Next():<Следующий элемент найден и загружен (INT)> Функция получает следующий (или первый после вызова Select) объект в выборке. См. также Select и SelectEx.
Prev Планируется Функция DB.Prev():<Предыдущий элемент найден и загружен (INT)> Функция получает предыдущий объект в выборке. См. также Select и SelectEx.
SelectClose Реализована Функция DB.SelectClose() Функция закрывает выборку объектов, освобождая использованные для выборки ресурсы. Функция вызывается автоматически при удалении объекта или при его заполнении функциями, типа Find и пр.
Save Реализована Функция DB.Save(<Режим сохранения периодических реквизитов (INT)>,<Заблокировать объект после сохранения (INT)>=0,<Элемент для изменения триггера или значение триггера (DB,INT)>) Функция выполняет сохранение текущего измененного объекта или/и его строчных частей. Если объект был открыт для визуального редактирования, функция вызывает событие OnSave, также проверяет заполненность реквизитов объекта, если он имеет обязательные для заполнения реквизиты. Если объект был заблокирован до записи, после ее выполнения блокировка сохраняется. Если запись успешна, в реквизитах объекта автоматически заполняются нумераторы, создаваемые при записи, и внутренний код объекта БД, если он был новым несохраненным объектом, также с объекта снимается признак изменен и, если он был открыт для редактирования в визуальной форме, с последней также снимается признак были изменения.
DeletePhysically Реализована Функция DB.DeletePhysically(<Режим удаления подчиненных элементов (INT)>,<Режим удаления папок (INT)>):<Результат (INT)> Функция производит физическое удаление элемента справочника или документа из базы данных, удаляя также подчиненные объекты, если это необходимо. Перед физическим удалением объектов, необходимо убедиться, что эти объекты не используются в реквизитах других объектов, иначе можно получить ситуацию, когда реквизиты содержат объект, который невозможно загрузить, такая ситуация для нормальной работы системы нежелательна. Для проверки, используется ли данный объект в других реквизитах каких-либо объектов, можно использовать функцию CollectObjectsLinks.
MassDeletePhysically Планируется Функция DB.MassDeletePhysically(<Режим удаления подчиненных элементов (INT)>,<Стандарные фильтры>...) Функция производит физическое множества элементов справочника или документов из базы данных, удаляя также подчиненные объекты, если это необходимо. Перед физическим удалением объектов, необходимо убедиться, что эти объекты не используются в реквизитах других объектов, иначе можно получить ситуацию, когда реквизиты содержат объект, который невозможно загрузить, такая ситуация для нормальной работы системы нежелательна. Для проверки, используется ли данный объект в других реквизитах каких-либо объектов, можно использовать функцию CollectObjectsLinks.
Mark Реализована Функция DB.Mark(<Удалить 1, отменить удаление 0 (INT)>,<Режим удаления подчиненных элементов (INT)>,<Элемент для изменения триггера или значение триггера (DB,INT)>):<Результат (INT)> Функция производит удаление или отменяет удаления документа или элемента справочника. Если документ до удаления был обработан, функция также пытается отменить обработку документа. Также может быть инициировано удаление подчиненных объектов, если в этом есть необходимость.
MassMark Реализована Функция DB.MassMark(<Пометка удаления или обработки (INT)>,<Стандарные фильтры>...) Функция множественного изменения пометок (как пометок удаления, так и пометок обработки) объектов, заданных в выборке с помощью стандратных фильтров. Функция не проверяет наличие блокировки на объектах до выполнения изменения! Внимание: в реальной работе необходимо либо заблокировать изменяемые объекты до вызова функции, либо использовать функцию LockDBPath, иначе измененный таким образом флаг может быть утерян, если какой-либо объект открыт в данный момент на редактирование пользователем (или программно) и будет записан.
New Реализована Функция DB.New(<Новая папка (INT)>=0,<Объект, для копирования реквизитов (DB)>,<Также копировать нумераторы (INT)>=0,<Объект-основание (DB)>) Функция создает новый элемент справочника или документ, для которых можно указать основание, новый объект может быть скопирован из существующего. При наличие в реквизитах объекта нумераторов, которые заполняются при создании, функция обращается на сервер с запросом блокировки значений этих нумераторов, значения, полученные таким образом с сервера, записываются в соответствующие реквизиты нового объекта и остаются заблокированными на сервере до того, как объект будет удален или сохранен.
LoadPeriodicalValues Реализована Функция DB.[DBVar.]LoadPeriodicalValues(<Указание на реквизит или наименование DBVar (STRING)>,<Дата начала чтения периодического реквизита (DATE)>,<Дата окончания чтения периодического реквизита (DATE)>):<Таблица значений реквизита (TAB)> Функция загружает полную или частичную таблицу периодических значений реквизита текущего объекта и возвращает ее в таблице значений. Объект не может быть новым несохраненным объектом для получения такой таблицы. Таблицу можно изменить и записать с помощью функции SavePeriodicalValues.
SavePeriodicalValues Реализована Функция DB.[DBVar.]SavePeriodicalValues(<Указание на реквизит или наименование DBVar (STRING)>,<Таблица значений реквизита (TAB)>,<Дата начала сохранения периодического реквизита (DATE)>,<Дата окончания сохранения периодического реквизита (DATE)>) Функция производит сохранение полной или частичной таблицы периодических значений реквизита текущего объекта. Объект не может быть новым несохраненным объектом для выполнения этой функции. Таблицу можно прочитать с помощью функции LoadPeriodicalValues.
SetDefaultPrefix Реализована Функция DB.SetDefaultPrefix(<Указание на объект и реквизит (STRING)>,<Новый префикс по умолчанию (STRING)>):<Текущий префикс по умолчанию (STRING)> Функция задает префикс по умолчанию для указанного строкового реквизита-нумератора объектов заданного вида, когда создается новый объект, либо происходит запись нового несохраненного объекта (в зависимости от установок нумерации реквизита-нумератора). Новые номера будут начинаться на этот префикс и заканчиваться числовым значением с длиной, которая совпадает с длиной значения нумератора за минусом длины префикса. Префикс по умолчанию можно изменить для любого реквизита-нумератора любого из объектов с помощью функции SetPrefix. В начале работы системы все префиксы по умолчанию копируются из конфигурации проекта.
SetPrefix Реализована Функция DB.SetPrefix(<Указание на реквизит (STRING)>,<Новый префикс реквизита (STRING)>):<Текущий префикс реквизита (STRING)> Функция задает префикс для указанного строкового реквизита-нумератора текущего объекта, она работает как для нового несохраненного объекта, так и для не выбранного объекта, который только будет создан (New). Новые номера будут начинаться на этот префикс и заканчиваться числовым значением с длиной, которая совпадает с длиной значения нумератора за минусом длины префикса. По умолчанию для нумераторов используется префикс, который можно изменить функцией SetDefaultPrefix.
SetNumerator Реализована Функция DB.SetNumerator(<Указание на реквизит (STRING)>,<Префикс нумератора (STRING)>) Функция позволяет заполнить (или заново заполнить) значение указанного реквизита-нумератора текущего объекта, она работает как для нового несохраненного объекта, так и для уже существующих объектов базы данных. Обычно нумераторы заполняются автоматически при записи или создании объекта, но иногда они имеют установку, запрещающие автоматическое заполнение. В этом случае, может использоваться эта функция, либо какой-либо внутренний механизм нумерации.
IsCreatedFromObject Реализована Функция DB.IsCreatedFromObject():<Создан на основании другого объекта (INT)> Функция проверяет, создавался ли текущий объект на основании другого объекта. Функция работает как для объектов, созданных программно (New), так и для объектов, созданных визуально с помощью функции ввода на основании.
FounderObject Реализована Функция DB.FounderObject():<Объект, на основании которого был создан данный (DB)> Функция возвращает объект, на основании которого был создан текущий объект. Функция работает как для объектов, созданных программно (New), так и для объектов, созданных визуально с помощью функции ввода на основании. Основание не является скрытым реквизитом объекта базы данных, оно не сохраняется в базе данных и существует только в момент создания объекта, для того, чтобы программа, по известным ей правилам, изменила реквизиты нового объекта в соответствии с его основанием. Если объект не был создан на основании другого объекта, функция возвращает пустое значение базы данных.
IsCopiedFromObject Реализована Функция DB.IsCopiedFromObject():<Скопирован из другого объекта (INT)> Функция проверяет, производилось ли копирование реквизитов текущего объекта из другого объекта при создании. Функция работает как для объектов, созданных программно (New), так и для объектов, созданных визуально с помощью функции скопировать из.
SourceObject Реализована Функция DB.SourceObject():<Объект, из которого был скопирован данный (DB)> Функция возвращает объект, значениями реквизитов которого были заполнены реквизиты текущего объекта. Функция работает как для объектов, созданных программно (New), так и для объектов, созданных визуально с помощью функции скопировать из. Объект-копирования не является скрытым реквизитом объекта базы данных, оно не сохраняется в базе данных и существует только в момент создания объекта, для того, чтобы программа, по известным ей правилам, изменила реквизиты нового объекта в соответствии с объектом, из которого он был скопирован. Если объект не был скопирован из другого объекта, функция возвращает пустое значение базы данных.
IsPartOf Реализована Функция DB.IsPartOf(<Список объектов с папками (LIST)>,<Режим функции (INT)>=0):<Объект принадлежит множеству объектов из списка (INT)> Функция проверяет, входит ли данный объект в список объектов (является ли он его подмножеством). Список может содержать папки, в последнем случае, проверяется, находится ли данный объект внутри структуры подпапок указанной папки. Функция аналогична по действию функции Contains.
Contains Реализована Функция DB.Contains(<Элемент для проверки (DB)>,<Режим функции (INT)>=0):<Проверяемый элемент входит в структуру папок текущего (INT)> Функция проверяет, входит ли указанный элемент в папку справочника, представленную текущим объектом, либо, совпадают ли проверяемые объекты. Текущий объект может не быть папкой справочника, тогда функция проверяет, совпадают ли оба объекта. Функция аналогична по действию функции Contains, когда в список для проверки входит только текущий объект.
StoreObjectToBuffer Реализована Функция DB.StoreObjectToBuffer():<Состояние объекта (BUFFER)> Функция сохраняет текущий объект в памяти и возвращает его в виде буфера. Текущий объект не будет изменен. В буфере сохраняются все свойства объекта -- реквизиты, особые реквизиты, признак объект изменен, внутренние коды и пр. Функция обычно используется для объектов, открытых для визуального редактирования до начала транзакции с попыткой записи объекта.
RestoreObjectFromBuffer Реализована Функция DB.RestoreObjectFromBuffer(<Состояние объекта (BUFFER)>) Функция восстанавливает текущий объект из указанного буфера, созданного ранее функцией StoreObjectToBuffer. Из буфера восстанавливаются все свойства объекта -- реквизиты, особые реквизиты, признак объект изменен, внутренние коды и пр. Внимание! Если объект является новым несохраненным, среди реквизитов объекта есть нумераторы, заполняемые при создании и была произведена успешная запись объекта, после чего она была отменена откатом транзакции (RollbackTransaction), получится ситуация, когда указанные нумераторы, содержат значения, которые не закреплены в таблице со значениями временных нумераторов на сервере. Поэтому, при наличии таких реквизитов, если объект новый, после отмены транзакции, нужно обновить значения реквизитов-нумераторов с помощью функции SetNumerator. Функция обычно используется для объектов, открытых для визуального редактирования, в момент отмены транзакции, когда запись не была успешной.
InvokeEvent Планируется Функция DB.InvokeEvent(<Наименование события метаданных (STRING)><Список переменных через запятую (STRING)>,<Значение переменной 1>...):<Результат выполнения события> Функция вызывает напрямую события, заданные в структуре конфигурации для данного объекта БД. Это позволяет эмулировать работу таких функций, как Publish и пр. Пример вызова: Doc.InvokeEvent("OnPublish","Element,Param,Option",Doc,0,0).

Функции объектов справочников

В данном разделе собраны функции, работающие только с объектами с типом справочник. Они связаны с папками и родителями справочников.

Идентификатор Статус Тип Визуальная Параметры Описание
IsFolder Реализована Функция DB.IsFolder():<Является ли объект папкой (INT)> Функция проверяет, является ли данный элемент справочника папкой или обычным элементом. Объект должен быть выбранным.
Folder Реализована Функция DB.Folder(<Новая папка объекта (DB)>,<Проверять цикличность вложенности папок (INT)>=1):<Текущая папка объекта (DB)> Функция возвращает или изменяет папку в которую входит элемент справочника. При перемещении объекта в другую папку, рекомендуется производить проверку цикличной вложенности папок, чтобы не получилась ситуация, когда текущий объект-папка вложена в папку, которая вложена в одну из папок внутри текущей. Проверка цикличности занимает некоторое время и дополнительно загружает сервер, однако, она необходима, чтобы иметь уверенность в корректности структуры папок справочника.
Parent Реализована Функция DB.Parent(<Новый элемент родитель объекта (DB)>):<Элемент родитель объекта (DB)> Функция возвращает или изменяет родительский элемент данного элемента справочника. При изменении элемента-родителя, функция проверяет, возможно ли подчинение справочника текущего вида справочнику предлагаемого вида.


Функции объектов документов

В данном разделе собраны функции, работающие только с объектами с типом документ. Функции связаны с взаимодействием документов и накопителей и системной таблицей подчинения документов.

Идентификатор Статус Тип Визуальная Параметры Описание
ClearStorages Реализована Функция DB.ClearStorages(<Режим (INT)>,<Наименования накопителей (STRING)>) Функция производит удаление движений текущего документа из указанного накопителя или всех накопителей, в которых текущий документ имеет движения. Если вызов функции происходит внутри транзакции, накопители будут автоматически заблокированы. Функция обычно используется внутри модулей обработки документов.
LoadStorage Реализована Функция DB.LoadStorage(<Наименования накопителя (STRING)>):<Содержимое накопителя текущего документа (TAB)> Функция загружает таблицу движений указанного накопителя в разрезе текущего документа и возвращает ее в виде таблицы значений. Функция может использоваться как вне транзакции, так и внутри оной.
SaveStorage Реализована Функция DB.SaveStorage(<Наименования накопителя (STRING)>,<Содержимое накопителя текущего документа (TAB)>,<Установить дату записей (DATE)>) Функция сохраняет таблицу движений данного документа для указанного накопителя. При этом ранее закрепленные за данным документов записи в указанном накопителе будут автоматически удалены. Функция блокирует накопитель, если вызов происходит внутри транзакции. Если записи накопителей датируются, функция позволяет также установить для всех записей таблицы указанную дату, если это необходимо. Обычно для всех записей указывается одинаковая дата, совпадающая с датой документа, но это не обязательное требование, каждая запись может иметь свою дату. Таблицу перед редактированием можно получить с помощью функции LoadStorage или InitStorageTab.
InitStorageTab Реализована Функция DB.InitStorageTab(<Наименования накопителя (STRING)>):<Пустая таблица накопителя (TAB)> Функция получает пустую таблицу значений движений указанного накопителя. Таблицу можно заполнить и записать в накопитель с помощью функции SaveStorage.
GetUsedStoragesNames Реализована Функция DB.GetUsedStoragesNames:<Список накопителей с записями о текущем документе (STRING)> Функция получает список накопителей, в которых текущий документ имеет записи. Список отдается в виде строки с наименованиями, разделенными запятыми. Каждое наименование записывается в виде STOR.<Наименование накопителя>.
Publish Реализована Функция DB.Publish(<Параметр>,<Опция>) Функция выполняет процедуру обработки документа. В процессе обработки, функция автоматически сохраняет состояние объекта, инициирует режим транзакции, если она автоматическая для данного документа, вызывает обработчик события OnPublish, сохраняет изменения в документе, если они не были сохранены, изменяет пометку документа на 2, если обработчик события ее не изменил. См. описание для более подробной информации.
Unpublish Реализована Функция DB.Unpublish(<Параметр>,<Опция>) Функция выполняет процедуру отмены обработки документа. В процессе обработки, функция автоматически сохраняет состояние объекта, инициирует режим транзакции, если она автоматическая для данного документа, вызывает обработчик события OnUnpublish, сохраняет изменения в документе, если они не были сохранены, изменяет пометку документа на 0, если обработчик события ее не изменил, очищает содержимое накопителей, которые не были заблокированы в обработчике события. См. описание для более подробной информации.
PublishedMark Реализована Функция DB.PublishedMark(<Ноль для отмены обработки, больше нуля -- индекс пометки обработки (INT)>):<Текущий индекс обработки (INT)> Функция устанавливает пометку обработки на документе, если аргумент больше нуля, или снимает пометку обработки, если аргумент равен нулю. Функция может использоваться, к примеру, при обработке документов вне события OnPublish, которое автоматически устанавливает пометку обработки, поэтому нет необходимости в вызове этой функции. Функцией нужно пользоваться с осторожностью, так как при отмене статуса обработки и не удалении движений документа в накопителях, можно получить не обработанный документ, имеющий движения.
LoadLinkedDocuments Реализована Функция DB.LoadLinkedDocuments(<Подчиненные (1), родители (0) (INT)>=1):<Список подчиненных или родительских документов (LIST)> Функция производит запрос к системной таблице подчинения документов и возвращает список документов, подчиненных данному, либо список документов, являющихся родителями данного, в зависимости от первого аргумента запроса.

Функции объектов перечислений

В данном разделе собраны функции, работающие только с объектами с типом перечисление или интерфейсом перечисления. В большинстве случаев, не выбранный объект перечисления создается с помощью конструкции Enum.<Наименование перечисления>, а выбранный объект перечисления создается Enum.<Наименование перечисления>.<Наименование значения перечисления>.

Идентификатор Статус Тип Визуальная Параметры Описание
<Наименование перечисления> Реализована Атрибут DB.Enum.<Наименование перечисления>:<Новый объект БД (DB)> Создать объект базы данных перечисления с заданным наименованием.
<Наименование значения перечисления> Реализована Атрибут DB.Enum.<Наименование значения перечисления>:<Выбранный объект перечисления (DB)> Создать объект перечисления с требуемым значение и видом, совпадающим с видом исходного перечисления.
Get Реализована Функция DB.Enum.Get(<Наименование перечисления[.Наименование или индекс значения перечисления] (STRING)>):<Выбранный объект перечисления (DB)> Получить выбранный объект перечисления по его наименованию и наименованию его значения
GetByIndex, ValueByIndex Реализована Функция DB.Enum.GetByIndex(<Наименование перечисления (STRING)>,<Индекс значения перечисления (INT)>):<Выбранный объект перечисления (DB)> Получить выбранный объект перечисления по его наименованию и индексу (номеру) его значения
GetCaption Реализована Функция DB.Enum.GetCaption({<Выбранный объект перечисления (DB)>,<Наименование перечисления.Наименование значения перечисления (STRING)>}):<Описание значения перечисления (STRING)> Получить описание значения перечисления по выбранному объекту перечисления или по наименованию перечисления и наименованию его значения
Index Реализована Функция DB.Enum.Index(<Новый индекс значения перечисления (INT)>):<Текущий индекс значения перечисления (INT)> Получить или изменить индекс текущего выбранного значения перечисления.
ByIndex Планируется Функция DB.Enum.ByIndex(<Индекс значения перечисления (INT)>):<Выбранный объект перечисления (DB)> Получить новый выбранный объект перечисления, созданный из текущего перечисления с указанием индекса значения перечисления результата.
Count, ValuesNumber Реализована Функция DB.Enum.Count():<Количество значений текущего перечисления (INT)> Получить количество значений текущего перечисления.
ValueName Реализована Атрибут DB.Enum.ValueName:<Наименование значения выбранного перечисления (STRING)> Получить наименование выбранного значения текущего перечисления.

Функции объектов переменных БД

В данном разделе собраны функции, работающие только с объектами с типом переменная БД. В большинстве случаев, получение и изменение значения переменной выполняется с помощью атрибута DBVar.<Имя переменной>, а получение или изменение периодических переменных базы данных, выполняется с помощью функций GetValue и SetValue.

Идентификатор Статус Тип Визуальная Параметры Описание
<Наименование переменной БД> Реализована Атрибут DB.DBVar.<Наименование переменной БД>:<Значения переменной БД> Получает значение названной переменной БД (если переменная периодическая, получение значения осуществляется на дату реквизитов потока (см. GlobalEndPeriodDate).
Restricted Реализована Атрибут DB.DBVar.Restricted:<Переменные, которые не будут показаны (STRING)> Атрибут получает или изменяет список переменных, запрещенных для отображения для текущего сеанса в системной диалоге редактирования переменных базы данных. Переменные перечислены по наименованию и разделены запятыми. Наименования переменных при чтении переведены в верхний регистр.
ReadOnly Реализована Атрибут DB.DBVar.ReadOnly:<Переменные, которые будут доступны только для чтения (STRING)> Атрибут получает или изменяет список переменных, запрещенных для редактирования для текущего сеанса в системной диалоге редактирования переменных базы данных. Переменные перечислены по наименованию и разделены запятыми. Наименования переменных при чтении переведены в верхний регистр.
GetValue Реализована Функция DB.DBVar.GetValue(Наименование переменной БД (STRING),<Дата периодического значения (DATE)>):<Значение переменной БД> Функция позволяет получить значение переменной БД по ее имени. Если переменная является периодической, функция также принимает дату получения ее значения. Функция может использоваться совместно с интерфейсом переменной базы данных.
SetValue Реализована Функция DB.DBVar.SetValue(Наименование переменной БД (STRING),<Устанавливаемое значение переменной БД>,<Дата начала изменения периодического значения (DATE)>,<Дата окончания изменения периодического значения (DATE)>) Функция позволяет сохранить значение переменной БД по ее имени. Если переменная является периодической, функция также принимает диапазон дат для сохранения ее значения. Функция может использоваться совместно с интерфейсом переменной базы данных.

Функции объектов накопителей

В данном разделе собраны функции, работающие только с объектами с типом накопитель. Большинство этих функций описывают запросы к накопителям.

Идентификатор Статус Тип Визуальная Параметры Описание
Totals, Gross Реализована Функция DB.Totals(<Список реквизитов группировки (STRING)>,<Список реквизитов суммирования (агрегации) (STRING)>,<Остатки на дату (DATE)>,<Режим даты (INT)>,<Стандартные фильтры>...):<Таблица итогов в требуемом разрезе (TAB)> Функция выполняет запрос к таблице остатков текущего накопителя, в разрезе заданных реквизитов-аккумуляторов, накапливая остатки по заданным реквизитам актива. Остатки будут получены на указанную дату и могут иметь режим начальный остаток или конечный остаток. При вычислении остатков могут применяться фильтры по требуемым реквизитам-аккумуляторам. Функция возвращает таблицу значений.
Total, Gross1 Реализована Функция DB.Total(<Реквизит суммирования (агрегации) (STRING)>,<Остатки на дату (DATE)>,<Режим даты (INT)>,<Стандартные фильтры>...):<Остаток указанного актива (NUMBER)> Функция выполняет запрос к таблице остатков текущего накопителя, находя значение заданного реквизита актива. Остатки будут получены на указанную дату и могут иметь режим начальный остаток или конечный остаток. При вычислении остатков могут применяться фильтры по требуемым реквизитам-аккумуляторам. Функция возвращает числовое значение.
Flow, Chart Планируется Функция DB.Flow(<Список реквизитов группировки (STRING)>,<Список реквизитов суммирования (агрегации) (STRING)>,<Начальная дата ведомости (DATE)>,<Конечная дата ведомости (DATE)>,<Режим даты (INT)>,<Стандартные фильтры поиска>):<Таблица ведомости в требуемом разрезе (TAB)> Функция выполняет запрос к таблице остатков текущего накопителя, в разрезе заданных реквизитов-аккумуляторов, накапливая остатки по заданным реквизитам актива. Остатки будут получены за указанный период. При вычислении остатков могут применяться фильтры по требуемым реквизитам-аккумуляторам. Функция возвращает таблицу значений со столбцами начального и конечного значения для каждого участвующего в запросе реквизита актива.
SysRecalcTotals Реализована Функция DB.SysRecalcTotals(<Не использовать режим транзакции (INT)>=0) Функция блокирует текущий накопитель и производит полный пересчет и заполнение таблицы остатков этого накопителя, если он имеет реквизиты-аккумуляторы и реквизиты активы. Для больших объемов данных функция может выполняться длительное время, в течение которого, система не позволит производить обработку документов с движениями в указанном накопителе. Функция используется для отладки и исправления базы данных.
SysCleanTotals Планируется Функция DB.SysCleanTotals(<Не использовать режим транзакции (INT)>=0) Функция блокирует текущий накопитель и производит очистку таблицы остатков этого накопителя, если он имеет реквизиты-аккумуляторы и реквизиты активы от записей, имеющих только нулевые значения реквизитов актива. Такие записи могут накапливаться в разных периодах остатков. Очистка подобного рода может использоваться для экономии места в базе данных, когда таблица остатков накопителя имеет склонность накапливать большое количество нулевых записей.

Функции объектов журналов

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

Идентификатор Статус Тип Визуальная Параметры Описание
GetJournalObject Реализована Функция DB.GetJournalObject(<Наименование журнала (STRING)>):<Элемент журнала этого объекта (DB)> Функция позволяет получить объект указанного журнала, соответствующий текущему объекту. Если данный объект не может входить в указанный журнал, функция вызовет исключение. Полученный объект журнала можно использовать для получения дополнительных реквизитов, записанных только в журнал, но отсутствующих в оригинальном объекте, для изменения этих уникальных реквизитов, либо для выполнения запросов по журналу.
LinkedObject, MainObject Реализована Функция DB.LinkedObject():<Объект, на который ссылается текущий элемент журнала (DB)> Функция позволяет получить объект, соответствующий указанному объекту журнала. При выполнении запросов по журналу, либо работе с визуальной таблицей журнала, функция получает оригинальный объект, который необходимо открыть для редактирования или изменить.
SetJournalProperty Частичная реализация Функция DB.SetJournalProperty(<Список реквизитов журнала (STRING)>,<Заблокированный основной объект (DB)>) Функция позволяет сохранить в базу данных реквизит (или список оных) объекта журнала. Часто эти реквизиты уникальны для журнала и отсутствуют в объектах, на которые ссылаются элементы журналов. До сохранения, эти реквизиты должны быть установлены в самом объекте, данная функция производит их чтение в журнал без изменения в оригинальном объекте и других реквизитах журнала. При работе с функцией рекомендуется указывать заблокированный оригинальный объект, на который ссылается объект журнала, так как объект журнала не может быть заблокирован (он является копией оригинального объекта, его блокировка не избавляла бы от опасности изменения оригинального объекта другим пользователем, что автоматически перезаписало бы объект журнала), блокирование оригинального объекта и указание оного при частичном сохранении объекта журнала, работает как практическая блокировка объекта журнала.
SysRefillJournal Планируется Функция DB.SysRefillJournal() Функция блокирует все изменения в текущем журнале и инициирует полное заполнение таблицы журнала на сервере. Для больших базы данных функция может выполняться длительное время, в течение которого, система не позволит производить сохранение объектов, использующий этот журнал. Функция используется для отладки и исправления базы данных.

Функции, связанные с логами базы данных

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

Идентификатор Статус Тип Визуальная Параметры Описание
Write Реализована Функция Logs.Write(<Описание события>,<Объект события (DB)>,<Наименование события (STRING)>="USER",<Тип события (INT)>=1) Функция позволяет добавить одну запись в лог базы данных. Запись описывается 4 аргументами, два из которых служат для классификации события, а остальные два для его описания.
Query Частичная реализация Функция Logs.Query(<Начальная дата запроса (DATE)>,<Конечная дата запроса (DATE)>,<Количество получаемых записей (INT)>=0,<Стандартные фильтры>...):<Результат запроса (TAB)> Функция выполняет запрос по таблице логов базы данных в указанном диапазоне дат с указанными фильтрами и получает результат в виде таблицы значений.

Функции работы с дополнительными (внешними) базами данных

Программная работа с подключением других внешних баз данных в формате системы и под управлениями серверов системы позволяет не только совершить перенос объектов между базами, но и получить цифры отчетов старых периодов (для старых баз). Базы могут быть совершенно разными, либо копиями друг друга. Система различает объекты с одинаковыми кодами, загруженные из разных информационных баз. Ниже даны ограничения, которые имеют внешние базы по сравнению с базой, загружаемой автоматически при запуске клиентов (основной базой):

  • Невозможно использование графического интерфейса, он всегда настроен на работу с основной базой. Визуальное редактирование объектов во внешних базах возможно только при написании более сложных форм с элементами, не привязанными к объектам базы данных.
  • Невозможен вызов модулей или форм во внешних базах (к примеру, с помощью функции LoadModule или OpenObject). Однако, таблицы, и другие файлы можно загружать из внешней базы обычным образом. Для использования таблиц-шаблонов внешних баз при построении отчетов, необходимо воспользоваться функцией Table.SetSource, так как Table.SetSourceName работает только с основной базой данных.
  • При соединении с внешней базой данных, не происходит инициализации ее глобальных модулей, поэтому, невозможен вызов функций из этих глобальных модулей.
  • Функции, не являющиеся методами объектов, типа DB, но работающие с базой данных (к примеру, LockStorage), необходимо вызывать особым образом (ExecuteInternalFunction), чтобы вызов происходил к нужной внешней базе данных.
  • Попытка использования объектов внешней базы данных совместно с визуальными функциями (к примеру, для позиционирования в визуальной таблице), будет вызывать ошибки или неверный результат. Запрещено использование объектов внешних баз данных в визуальных функциях и визуальных объектах.
  • Ссылки на объекты внешних баз данных внутри электронных таблиц также будут работать неверно. Информацию из внешних баз данных разрешено выводить в таблицы, однако, "формулы" ячеек не должны содержать объектов из внешних баз данных, обычно такие формулы используются для открытия объекта для редактирования, что невозможно с внешними объектами.
  • Запрещено присваивание реквизитам объектов одной базы данных объектов из другой базы данных, такая операция может привести к ошибочной информации в базе данных. Запрещено использование объектов одной базы данных в фильтрах запросов другой базы данных. Любое смешивание объектов в функциях будет приводить к ошибкам. Для получения информации, принадлежит ли текущий объект определенной базе данных, можно использовать функцию BelongsToDB.
Идентификатор Статус Тип Визуальная Параметры Описание
Create Реализована Функция ExternalDBase.Create():<Объект внешней базы данных (EXDB)> Функция создает новый объект внешней базы данных. Объект не будет соединен с какой-либо базой данных.
UseProxy Реализована Функция ExternalDBase.UseProxy(<Адрес и порт прокси сервера (STRING)>,<Тип прокси сервера (STRING)>,<Имя пользователя прокси (STRING)>,<Пароль пользователя прокси (STRING)>,<Дополнительные параметры прокси (STRING)>) Функция настраивает прокси сервер для использования с соединением к данной внешней БД. Функция должна быть вызвана до фактического соединения с удаленной стороной на неактивном объекте, затем этот объект может использоваться совместно с функцией Connect.
Connect Реализована Функция ExternalDBase.Connect(<Адрес базы данных (STRING)>,<Имя пользователя (STRING)>,<Пароль (STRING)>,<Дополнительные установки (INT)>=1) Функция выполяет соединение с базой данных по указанному адресу под указнным пользователем с заданным паролем. Если в процессе соединения произошла ошибка, функция вызовет исключение.
Disconnect Реализована Функция ExternalDBase.Disconnect() Функция разрывает связь с внешней базой данных. Структура базы данных будет находиться в памяти, пока существует по крайней мере один объект, принадлежащий этой базе данных. После разрыва связи, однако, обновление или сохранение объектов будет вызывать исключение.
IsConnected Реализована Функция ExternalDBase.IsConnected():<Установлено ли соедиение (INT)> Функция проверяет, установлено ли соединение с внешней базой данных в текущий момент.
DB Реализована Функция ExternalDBase.DB(<Идентификация создаваемого объекта (STRING)>,<Стандартные фильтры поиска>):<Новый объект БД (DB)> Функция позволяет получить доступ к интерфейсу DB для текущей базы данных. Соединение в внешней БД должно быть активно.
Ref, Doc, Enum, DBVar, Stor, Jour Реализована Функция ExternalDBase.<Интерфейс>.<Наименование объекта>:<Новый объект БД (DB)> Функция позволяет получить доступ к интерфейсам создания объектов базы данных.
Logs Реализована Функция ExternalDBase.Logs:<Интерфейс Logs (EXDBO)> Функция позволяет получить доступ к интерфейсу Logs для текущей базы данных.
TempDB Реализована Функция ExternalDBase.TempDB:<Интерфейс TempDB (EXDBO)> Функция позволяет получить доступ к интерфейсу TempDB для текущей базы данных.
Query Реализована Функция ExternalDBase.Query:<Интерфейс Query (EXDBO)> Функция позволяет получить доступ к интерфейсу Query для текущей базы данных.
Struct, Meta Реализована Функция ExternalDBase.Struct:<Интерфейс Struct (EXDBO)> Функция позволяет получить доступ к интерфейсу Struct для текущей базы данных.
ExecuteInternalFunction Реализована Функция ExternalDBase.ExecuteInternalFunction:(<Имя функции (STRING)>,<Аргумент 1>,<Аргумент 2>...):<Результат выполнения функции> Функция позволяет получить выполнить функцию, не привязанную к объекту базы данных, однако, работающую с базой данных для текущей базы данных. Возможно выполнение, к примеру, таких функций: GetServerLocksInformation, LockStorage, DBLockStringMutex, StoreValue, ServerName и пр.