DB.MassSetValue

From SunFlurry wiki
Revision as of 18:09, 2 October 2021 by 1>Admin
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  SetValue (Установка значений множества реквизитов)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Невозможно превратить в строку, дату, неверный реквизит, стр. часть, и пр.
Визуальность:Нет

Функция устанавливает значения реквизитов множества объектов, заданных в выборке с помощью стандратных фильтров. Реквизит может находиться как в заголовке объекта, так и в его строчной части. Функция не проверяет наличие блокировки на объектах до выполнения изменения! Внимание: в реальной работе необходимо либо заблокировать изменяемые объекты до вызова функции, либо использовать функцию LockDBPath, иначе изменения в объектах, выполненные таким образом, могут быть утеряны, если какой-либо объект открыт в данный момент на редактирование пользователем (или программно) и будет записан.

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

Синтаксис

DB.MassSetValue(<Указание на реквизит и строчную часть, если необходимо (STRING)>,<Значение реквизита>,<Дата начала записи периодического реквизита (DATE)>,<Дата окончания записи периодического реквизита (DATE)>,<Стандарные фильтры>...)

Аргументы

  • <Указание на реквизит и строчную часть, если необходимо (STRING)> - Задает наименование реквизита, значение которого необходимо установить, если реквизит находится в строчной части, указывает также на наименование строчной части. Общий формат аргумента: [<Наименование строчной части>.]<Наименование реквизита>.
  • <Значение реквизита> - Устанавливаемое значение реквизита. Если тип значения не соответствует типу значения реквизита, тип будет приведен (т.е., если реквизит имеет тип число, а аргумент имеет строчный тип, строка будет превращена в число до установки значение).
  • <Дата начала записи периодического реквизита (DATE)> - (необязательный аргумент) Задает дату начала периода сохранения периодического реквизита объекта. Если реквизит не периодический, этот аргумент игнорируется. (планируется к реализации)
  • <Дата окончания записи периодического реквизита (DATE)> - (необязательный аргумент) Задает дату окончания периода сохранения периодического реквизита объекта. Если реквизит не периодический, этот аргумент игнорируется. Если аргумент не задан, однако аргумент Дата начала записи периодического реквизита задан и не соответствует пустой дате, этот аргумент устанавливается равным предыдущему (запись производится на дату, а не на диапазон дат), если оба аргумента не заданы, используется диапазон записи, заданный функцией UsePeriod. (планируется к реализации)
  • <Стандартные фильтры> - (необязательный аргумент) Стандартные фильтры позиционирования описаны в статье Стандартные фильтры.

Примеры

//Пример производит изменение реквизита ТоварнаяГруппа всех элементов справочника Номенклатура, родительская папка которых имеет реквизит Code равный "000000008636"
bEl:=DB("Ref.ТоварнаяГруппа","Code","000000000055");
aEl:=Ref.Номенклатура;
aEl.MassSetValue("ТоварнаяГруппа",bEl,,,"~(@Folder.Code=""000000008636"")");