<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=DB.SaveStorage</id>
	<title>DB.SaveStorage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=DB.SaveStorage"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=DB.SaveStorage&amp;action=history"/>
	<updated>2026-04-04T09:47:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=DB.SaveStorage&amp;diff=478&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=DB.SaveStorage&amp;diff=478&amp;oldid=prev"/>
		<updated>2021-02-07T06:43:22Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:43, 7 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=DB.SaveStorage&amp;diff=477&amp;oldid=prev</id>
		<title>Admin at 14:58, 28 September 2019</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=DB.SaveStorage&amp;diff=477&amp;oldid=prev"/>
		<updated>2019-09-28T14:58:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=SaveStorage&lt;br /&gt;
|object=[[Объект базы данных]]&lt;br /&gt;
|caption=Работа с накопителями документа&lt;br /&gt;
|type=1&lt;br /&gt;
|status=2&lt;br /&gt;
|db=2&lt;br /&gt;
|exception=Невозможно превратить в строку, дату, неверный накопитель, неверная таблица, накопитель уже заблокирован.&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Объект базы данных]]}}&lt;br /&gt;
Функция сохраняет таблицу движений данного документа для указанного накопителя. При этом ранее закрепленные за данным документов записи в указанном накопителе будут автоматически удалены (то есть, нет необходимости в вызове [[DB.ClearStorages|ClearStorages]] до выполнения записи). Функция блокирует накопитель, если вызов происходит внутри транзакции. Если записи накопителей датируются, функция позволяет также установить для всех записей таблицы указанную дату, если это необходимо. Обычно для всех записей указывается одинаковая дата, совпадающая с датой документа, но это не обязательное требование, каждая запись может иметь свою дату. Таблицу перед редактированием можно получить с помощью функции [[DB.LoadStorage|LoadStorage]] или [[DB.InitStorageTab|InitStorageTab]], функция проверяет таблицу на соответствие типам данных и присутствию всех требуемых столбцов, если таблица неверна, будет вызвано исключение. {{Алгоритмы обработки документов}}&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{{Grey|DB.}}'''SaveStorage'''(''&amp;lt;Наименования накопителя (STRING)&amp;gt;'',''&amp;lt;Содержимое накопителя текущего документа (TAB)&amp;gt;''{{Optional|,&amp;lt;Установить дату записей (DATE)&amp;gt;}})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Аргументы ====&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Наименования накопителя (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Задает наименование накопителя, для которого будет инициирована попытка записи. Документ может иметь движения только в накопителях, заданных для этого документа в Студии (это сделано для оптимизации скорости работы некоторых функций).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Содержимое накопителя текущего документа (TAB)&amp;gt;''&amp;lt;/code&amp;gt; - Таблица, полученная функциями [[DB.LoadStorage|LoadStorage]] или [[DB.InitStorageTab|InitStorageTab]]. Таблицы можно заполнять любыми данными. Таблица содержит следующие столбцы:&lt;br /&gt;
** '''_DOCUMENT''' -- задает текущий документ таблицы при чтении таблицы с помощью функции [[DB.LoadStorage|LoadStorage]], при записи таблицы этот столбец не используется (и может отсутствовать).&lt;br /&gt;
** '''_DATE''' -- столбец присутствует для накопителей, записи которых датируются. Если накопитель не имеет даты записей, столбец не используется и может отсутствовать.&lt;br /&gt;
** '''_EXPENSE''' -- столбец присутствует для накопителей, записи которых имеют флаг расхода. Если накопитель не имеет флагов расхода, столбец не используется и может отсутствовать.&lt;br /&gt;
** '''&amp;lt;Наименование реквизита накопителя&amp;gt;''' -- в таблице присутствуют все реквизиты накопителя (включая аккумуляторы и активы), для каждого из столбца указан тип данных.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Установить дату записей (DATE)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент помогает установить указанную дату во всех строках таблицы предыдущего аргумента до начала записи. Если аргумент не указан, столбцы ''_DATE'' для датирующихся накопителей должны быть заполнены до момента вызова функции.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Пример для документа аДок, который обрабатывает документ вне стандартного события обработки документа. &lt;br /&gt;
//Пример демонстрирует алгоритм, описанный выше.&lt;br /&gt;
//Созданные заранее таблицы с накопителями документа содержатся в списке спНакопители&lt;br /&gt;
//Данный пример больше подходит для загрузки документов вместе с движения из внешнего источника, так как нет блока проверки корректности данных&lt;br /&gt;
&lt;br /&gt;
//Флаг успешной транзакции&lt;br /&gt;
ФлОк:=0;&lt;br /&gt;
BeginTransaction();&lt;br /&gt;
Try&lt;br /&gt;
  //Бесконечный цикл ожидания блокировки накопителей документа&lt;br /&gt;
  While 0=0 Do&lt;br /&gt;
    Try&lt;br /&gt;
      аДок.ClearStorages();&lt;br /&gt;
    Except&lt;br /&gt;
      RollbackTransaction();&lt;br /&gt;
      Sleep(100);&lt;br /&gt;
      BeginTransaction();&lt;br /&gt;
      Continue;&lt;br /&gt;
    EndTry;&lt;br /&gt;
    Break;&lt;br /&gt;
  EndDo;  &lt;br /&gt;
  //Установка пометки обработки&lt;br /&gt;
  аДок.PublishedMark(1);&lt;br /&gt;
&lt;br /&gt;
  //Запись движений в накопители&lt;br /&gt;
  For i:=1 To спНакопители.Size() Do&lt;br /&gt;
    aTab:=спНакопители.Get(i);&lt;br /&gt;
    ИмяНак:=спНакопители.GetName(i);&lt;br /&gt;
    If aTab.Size()&amp;gt;0 Then&lt;br /&gt;
      аДок.SaveStorage(ИмяНак,aTab,аДок.DocDate);&lt;br /&gt;
    EndIf;  &lt;br /&gt;
  EndDo;&lt;br /&gt;
            &lt;br /&gt;
  //Сохранение документа&lt;br /&gt;
  аДок.Save();&lt;br /&gt;
  //Транзакция успешна&lt;br /&gt;
  ФлОк:=1;&lt;br /&gt;
Finally&lt;br /&gt;
  If ФлОк Then&lt;br /&gt;
    CommitTransaction();&lt;br /&gt;
  Else&lt;br /&gt;
    RollbackTransaction();&lt;br /&gt;
  EndIf;&lt;br /&gt;
EndTry;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>