<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF100-101%3A%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81</id>
		<title>LXF100-101:Ананас - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF100-101%3A%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81"/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;action=history"/>
		<updated>2026-05-13T19:33:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6780&amp;oldid=prev</id>
		<title>Yaleks в 15:40, 1 февраля 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6780&amp;oldid=prev"/>
				<updated>2009-02-01T15:40:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 15:40, 1 февраля 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 173:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 173:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;p.setValue(&amp;quot;f&amp;quot;+String(j), TabValue(&amp;quot;wDBTable1&amp;quot;,i,j-1));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;p.setValue(&amp;quot;f&amp;quot;+String(j), TabValue(&amp;quot;wDBTable1&amp;quot;,i,j-1));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;p.exec(&amp;quot;table_section&amp;quot;); // применяем установленные&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;p.exec(&amp;quot;table_section&amp;quot;); // применяем установленные значения для строки&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;значения для строки&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;//содержащей табличный тег [:table_section:]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;//содержащей табличный тег [:table_section:]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6779&amp;oldid=prev</id>
		<title>Yaleks: викификация</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6779&amp;oldid=prev"/>
				<updated>2009-02-01T15:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;викификация&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 15:39, 1 февраля 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;нормами и стандартами. По данной классификации, Ананас относится&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;нормами и стандартами. По данной классификации, Ананас относится&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;к системам первого типа, в которых учет строится на регистрации учетных событий в документах. Поэтому разработчику бизнес-схемы необходимо уметь определять документы, их экранные и печатные формы.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;к системам первого типа, в которых учет строится на регистрации учетных событий в документах. Поэтому разработчику бизнес-схемы необходимо уметь определять документы, их экранные и печатные формы.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Учетные &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;документы – &lt;/del&gt;это отправная точка, источник данных, на котором строятся все прочие операции, осуществляемые Ананасом.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Учетные &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;документы — &lt;/ins&gt;это отправная точка, источник данных, на котором строятся все прочие операции, осуществляемые Ананасом.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:Img 100-101 94 1.png|thumb|Рис. 1. Вызов диалога создания нового документа.]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Изображение:Img 100-101 94 1.png|thumb|Рис. 1. Вызов диалога создания нового документа.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SetTabValue(tname,&amp;quot;Сумма&amp;quot;, row, newValue);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SetTabValue(tname,&amp;quot;Сумма&amp;quot;, row, newValue);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция on_tabupdate(row,col,tname), является зарезервированной&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция on_tabupdate(row, col, tname), является зарезервированной&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;служебной функцией Ананаса. Если разработчик бизнес-схемы определит в модуле экранной формы документа или другого бизнес-объекта&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;служебной функцией Ананаса. Если разработчик бизнес-схемы определит в модуле экранной формы документа или другого бизнес-объекта&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;функцию с таким именем и с таким количеством параметров (имена&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;функцию с таким именем и с таким количеством параметров (имена&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Важный момент, связанный с табличным представлением данных&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Важный момент, связанный с табличным представлением данных&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;в документе, который следует осознать до начала использования &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;таблиц – &lt;/del&gt;это возможность определения в документе более одной таблицы. Ананас не ограничивает количество табличных частей у документа,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;в документе, который следует осознать до начала использования &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;таблиц — &lt;/ins&gt;это возможность определения в документе более одной таблицы. Ананас не ограничивает количество табличных частей у документа,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;проектируемого разработчиком бизнес-схемы. Документ может не&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;проектируемого разработчиком бизнес-схемы. Документ может не&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;содержать ни одной табличной части, как например, платежное поручение, или содержать одну, две и более табличных частей. Честно&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;содержать ни одной табличной части, как например, платежное поручение, или содержать одну, две и более табличных частей. Честно&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 103:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 103:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;на прошлых уроках на примере Справочника контрагентов. Во многом&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;на прошлых уроках на примере Справочника контрагентов. Во многом&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;схоже и создание экранных форм справочника и документа. А вот чем&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;схоже и создание экранных форм справочника и документа. А вот чем&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;документ действительно отличается от &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;справочника – &lt;/del&gt;это наличием&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;документ действительно отличается от &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;справочника — &lt;/ins&gt;это наличием&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;печатной формы. Едва ли найдется первичный документ, которому&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;печатной формы. Едва ли найдется первичный документ, которому&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;она была бы не нужна, тогда как у справочников как раз наоборот,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;она была бы не нужна, тогда как у справочников как раз наоборот,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 130:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 130:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим возможности Ананаса по&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рассмотрим возможности Ананаса по&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;работе с отчетами с точки зрения разработчика бизнес-схемы. С точки зрения пользователя, отчет или печатная&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;работе с отчетами с точки зрения разработчика бизнес-схемы. С точки зрения пользователя, отчет или печатная&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;форма &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;документа – &lt;/del&gt;это просто документ, открытый Ананасом либо в&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;форма &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;документа — &lt;/ins&gt;это просто документ, открытый Ананасом либо в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;редакторе Writer, либо в электронной таблице Calc пакета OpenOffice.org.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;редакторе Writer, либо в электронной таблице Calc пакета OpenOffice.org.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 200:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 200:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Такой тег нужен для таблицы. Так как в шаблоне определяется только&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Такой тег нужен для таблицы. Так как в шаблоне определяется только&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;одна строка таблицы, а в сформированном документе их может быть&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;одна строка таблицы, а в сформированном документе их может быть&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;произвольное количество, необходим тег, который позволил бы программе понять, что эту часть шаблона следует рассматривать как размножаемую строку. Имя тега можно выбирать &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;произвольно – &lt;/del&gt;важно&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;произвольное количество, необходим тег, который позволил бы программе понять, что эту часть шаблона следует рассматривать как размножаемую строку. Имя тега можно выбирать &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;произвольно — &lt;/ins&gt;важно&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;лишь то, чтобы и в шаблоне, и в коде оно было одинаковым.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;лишь то, чтобы и в шаблоне, и в коде оно было одинаковым.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6777&amp;oldid=prev</id>
		<title>Yaleks: Новая: {{цикл/Ананас}} == Документы и печатные формы == : ''ЧАСТЬ 4 Завершая цикл статей, посвященных платформе Ан...</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF100-101:%D0%90%D0%BD%D0%B0%D0%BD%D0%B0%D1%81&amp;diff=6777&amp;oldid=prev"/>
				<updated>2009-02-01T15:37:39Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: {{цикл/Ананас}} == Документы и печатные формы == : ''ЧАСТЬ 4 Завершая цикл статей, посвященных платформе Ан...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{цикл/Ананас}}&lt;br /&gt;
== Документы и печатные формы ==&lt;br /&gt;
: ''ЧАСТЬ 4 Завершая цикл статей, посвященных платформе Ананас, '''Андрей Паскаль''' покажет, как создавать учетные документы и выводить их на печать при содействии OpenOffice.org.''&lt;br /&gt;
&lt;br /&gt;
Как известно, в автоматизации учетной деятельности и бизнес-процессов принято выделять два методических подхода: «от&lt;br /&gt;
первичных документов к операциям» и «управление процессами». Программная система, реализующая первый подход, обслуживает потребности пользователя, главным образом, по формированию&lt;br /&gt;
и учету необходимой документации, как правило, регламентированной.&lt;br /&gt;
Программные системы, реализующие второй подход, выстраиваются&lt;br /&gt;
под потребности системы управления организацией, помогая управляющему персоналу держать под контролем качество выполнения бизнес-процессов сотрудниками организации в соответствии с принятым&lt;br /&gt;
нормами и стандартами. По данной классификации, Ананас относится&lt;br /&gt;
к системам первого типа, в которых учет строится на регистрации учетных событий в документах. Поэтому разработчику бизнес-схемы необходимо уметь определять документы, их экранные и печатные формы.&lt;br /&gt;
Учетные документы – это отправная точка, источник данных, на котором строятся все прочие операции, осуществляемые Ананасом.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Img 100-101 94 1.png|thumb|Рис. 1. Вызов диалога создания нового документа.]]&lt;br /&gt;
[[Изображение:Img 100-101 95 1.png|thumb|Рис. 2. Диалог создания нового документа.]]&lt;br /&gt;
[[Изображение:Img 100-101 95 2.png|thumb|Рис. 3. Создание нового реквизита шапки документа.]]&lt;br /&gt;
[[Изображение:Img 100-101 95 3.png|thumb|Рис. 4. Задание свойств реквизита Номер документа.]]&lt;br /&gt;
[[Изображение:Img 100-101 96 1.png|thumb|Рис. 5. Реквизит Продавец имеет сложный тип данных.]]&lt;br /&gt;
Как всем известно с детства, «чтобы продать что-нибудь ненужное,&lt;br /&gt;
нужно сначала купить что-нибудь ненужное», поэтому мы рассмотрим проектирование бизнес-объекта Документ на примере документа&lt;br /&gt;
Приходная накладная, который используется при постановке на учет&lt;br /&gt;
приобретенных товаров.&lt;br /&gt;
&lt;br /&gt;
Наша Приходная накладная позволяет хранить номер накладной,&lt;br /&gt;
дату ее составления, название продавца, выбранного из Справочника&lt;br /&gt;
контрагентов, а также дополнительную информацию в поле Основание.&lt;br /&gt;
Все эти реквизиты составляют шапку накладной. Разумеется нам требуется хранить также информацию о приходуемых товарах, их закупочной цене и количестве. Так как каждая накладная может содержать&lt;br /&gt;
информацию более чем об одном товаре, и их общее количество также&lt;br /&gt;
может различаться, нам необходима таблица, позволяющая заносить в&lt;br /&gt;
накладную информацию для требуемого числа позиций.&lt;br /&gt;
&lt;br /&gt;
Первым шагом создадим новый документ, вызвав для этого соответствующий диалог, как показано на Рис. 1, и зададим название&lt;br /&gt;
«Приходная накладная», как показывает Рис. 2. Описание вводить не&lt;br /&gt;
обязательно, однако, это удобное место, чтобы оставить послание&lt;br /&gt;
тому, кто решит когда-нибудь исправить созданный вами документ. И&lt;br /&gt;
даже если это будете вы сами, через, скажем, года два, это все равно будет другой человек, так как через такое время вы уже с трудом&lt;br /&gt;
вспомните суть деталей проекта двухгодичной давности. Если вы сможете сжато и доходчиво объяснить назначение и контекст жизни документа, обязательно сделайте это. Сегодня ничто так не дорожает, как&lt;br /&gt;
время. Хорошие комментарии экономят его.&lt;br /&gt;
&lt;br /&gt;
Далее закроем этот диалог и откроем диалог создания атрибута&lt;br /&gt;
шапки Приходной накладной, как показано на Рис. 3. Понятие «атрибут/реквизит шапки документа» подразумевает, что при построении экран-&lt;br /&gt;
ной формы, поле редактирования этого реквизита будет находиться&lt;br /&gt;
где угодно, но только не в табличной части документа. Иными словами,&lt;br /&gt;
поле для редактирования атрибута шапки на самом деле может находиться в подвале (нижней части) экранной формы.&lt;br /&gt;
&lt;br /&gt;
Определим атрибут Номер, указав тип данных Символ(100), как&lt;br /&gt;
показывает Рис. 4. Закроем диалог и аналогично определим атрибуты&lt;br /&gt;
Дата, Продавец, Основание, задав типы данных Дата, Справочник контрагентов, Символ соответственно. Получилось? Разумеется, невозможно задать тип данных Справочник контрагентов, пока его еще нет.&lt;br /&gt;
Это я говорю для тех, кто пропустил предыдущие уроки, где мы как&lt;br /&gt;
раз и занимались его созданием. Им следует сделать паузу в работе&lt;br /&gt;
над Приходной накладной и заняться Справочником контрагентов, как&lt;br /&gt;
объясняется во второй статье цикла ([[LXF98:Ананас|LXF98]]). Однако, сейчас не обязательно полностью переключаться на Справочник контрагентов, достаточно создать его, указав название. Определение реквизитов контрагентов можно оставить и на потом. После создания Справочника контрагентов полю Продавец можно будет, наконец, задать тип Справочник&lt;br /&gt;
контрагентов, что демонстрирует Рис.5.&lt;br /&gt;
&lt;br /&gt;
=== Дела табличные ===&lt;br /&gt;
[[Изображение:Img 100-101 96 2.png|thumb|Рис. 6. Реквизиты шапки и табличной части документа определены.]]&lt;br /&gt;
Задав реквизиты шапки документа, определим состав столбцов таблицы, в которую будет заноситься информация по товарам.&lt;br /&gt;
&lt;br /&gt;
Для каждого товара в накладной нам достаточно хранить его&lt;br /&gt;
наименование, цену, количество. Также полезно будет хранить сумму и&lt;br /&gt;
примечания. Значения ячеек столбца Сумма будет вычислять код модуля экранной формы следующего вида&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;/**&lt;br /&gt;
* Вызывается при изменении значения в ячейке таблицы с именем tname&lt;br /&gt;
*/&lt;br /&gt;
function on_tabupdate(row,col,tname)&lt;br /&gt;
{&lt;br /&gt;
// только для таблицы wDBTable1. wDBTable1 - имя таблицы,&lt;br /&gt;
// задаваемое в дизайнере, а не имя в метаданных&lt;br /&gt;
if(tname!=&amp;quot;wDBTable1&amp;quot;) return;&lt;br /&gt;
// подсчет суммы и запись ее в поле «Сумма» таблицы&lt;br /&gt;
var newValue = parseFloat(TabValue(tname,row,1))*parseFloat(TabValue(tname,row,2));&lt;br /&gt;
SetTabValue(tname,&amp;quot;Сумма&amp;quot;, row, newValue);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Функция on_tabupdate(row,col,tname), является зарезервированной&lt;br /&gt;
служебной функцией Ананаса. Если разработчик бизнес-схемы определит в модуле экранной формы документа или другого бизнес-объекта&lt;br /&gt;
функцию с таким именем и с таким количеством параметров (имена&lt;br /&gt;
параметров могут быть любыми), то она будет вызываться всякий раз,&lt;br /&gt;
как только пользователь изменит значение любой ячейки таблицы&lt;br /&gt;
экранной формы. Такие функции принято называть обработчиками&lt;br /&gt;
событий. Самым очевидным применением обработчика on_tabupdate&lt;br /&gt;
является расчет вычисляемых значений типа поля Сумма или Сумма&lt;br /&gt;
по документу.&lt;br /&gt;
&lt;br /&gt;
Важный момент, связанный с табличным представлением данных&lt;br /&gt;
в документе, который следует осознать до начала использования таблиц – это возможность определения в документе более одной таблицы. Ананас не ограничивает количество табличных частей у документа,&lt;br /&gt;
проектируемого разработчиком бизнес-схемы. Документ может не&lt;br /&gt;
содержать ни одной табличной части, как например, платежное поручение, или содержать одну, две и более табличных частей. Честно&lt;br /&gt;
говоря, мой скромный объем знаний состава первичных документов&lt;br /&gt;
различных участков учета не помогает мне вспомнить хотя бы один&lt;br /&gt;
вид, где бы потребовалось больше двух табличных частей. Но видимо, разработчики Ананаса решили не ограничивать запас страховки и&lt;br /&gt;
в этом случае.&lt;br /&gt;
&lt;br /&gt;
Таким образом, перед определением первого реквизита табличной&lt;br /&gt;
части документа необходимо создать эту табличную часть.&lt;br /&gt;
&lt;br /&gt;
Столбец Наименование имеет сложный тип данных, его значение&lt;br /&gt;
задается выбором из Справочника товаров. Поэтому для задания типа&lt;br /&gt;
этому столбцу табличной части необходимо уже иметь Справочник&lt;br /&gt;
товаров в дереве метаданных.&lt;br /&gt;
&lt;br /&gt;
Проектирование структуры документа Ананаса очень похоже на&lt;br /&gt;
проектирование структуры справочника, которая была освоена нами&lt;br /&gt;
на прошлых уроках на примере Справочника контрагентов. Во многом&lt;br /&gt;
схоже и создание экранных форм справочника и документа. А вот чем&lt;br /&gt;
документ действительно отличается от справочника – это наличием&lt;br /&gt;
печатной формы. Едва ли найдется первичный документ, которому&lt;br /&gt;
она была бы не нужна, тогда как у справочников как раз наоборот,&lt;br /&gt;
печатные формы встречаются редко. А если и есть, то называются&lt;br /&gt;
они обычно отчетами, которые живут в Ананасе самостоятельной жизнью. В общем, как вы уже догадались, мы переходим к рассмотрению&lt;br /&gt;
такой важной темы для любой учетной системы, как печатные формы&lt;br /&gt;
и отчеты.&lt;br /&gt;
&lt;br /&gt;
=== Твердая копия ===&lt;br /&gt;
[[Изображение:Img 100-101 96 3.png|thumb|Рис. 7. Вид шаблона печатной формы Приходной накладной.]]&lt;br /&gt;
Подсистема подготовки печатных форм&lt;br /&gt;
(отчетов) Ананаса использует хорошо известную методику с использованием шаблонов.&lt;br /&gt;
Суть ее заключается в создании готового&lt;br /&gt;
документа при помощи соединения шаблона документа, задающего форматирование&lt;br /&gt;
и оформление, и данных, обработанных и&lt;br /&gt;
подготовленных специальным образом для&lt;br /&gt;
вписывания в шаблон. Такой подход хорошо&lt;br /&gt;
себя зарекомендовал тем, что обеспечивает поддержку большого количества различных форматов. Например, Ананас с одинаковой легкостью может формировать отчеты&lt;br /&gt;
в форматах TeX, HTML, XML. Какой формат&lt;br /&gt;
выбрать, решает разработчик бизнес-схемы.&lt;br /&gt;
В бизнес-схеме, поставляемой в дистрибутиве Ананаса, используется формат документов&lt;br /&gt;
OpenOffice.org, как наиболее дружественный&lt;br /&gt;
и удобный для пользователя, привыкшего к&lt;br /&gt;
работе с OOo.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим возможности Ананаса по&lt;br /&gt;
работе с отчетами с точки зрения разработчика бизнес-схемы. С точки зрения пользователя, отчет или печатная&lt;br /&gt;
форма документа – это просто документ, открытый Ананасом либо в&lt;br /&gt;
редакторе Writer, либо в электронной таблице Calc пакета OpenOffice.org.&lt;br /&gt;
&lt;br /&gt;
Для разработчика бизнес-схемы подготовка к формированию отчета складывается из двух составляющих: подготовки шаблона отчета и&lt;br /&gt;
написания кода, команды которого формируют отчет из шаблона и&lt;br /&gt;
данных.&lt;br /&gt;
&lt;br /&gt;
Формирование печатной формы осуществляет Ананас-Скрипт на&lt;br /&gt;
основании имеющихся в его распоряжении данных и шаблона отчета.&lt;br /&gt;
Шаблон отчета представляет собой документ OpenOffice Writer, с занесенными в него тегами специального формата. Процедура на Ананас-Скрипте подменяет теги значениями, оставляя неизменным стилевое&lt;br /&gt;
оформление, заданное для тега. Рис. 7 показывает шаблон приходной&lt;br /&gt;
накладной. Каждый тег в документе начинается с пары символов &amp;lt;: и&lt;br /&gt;
заканчивается парой символов :&amp;gt;, между которыми указывается имя&lt;br /&gt;
тега. Его-то и использует Ананас-Скрипт при формировании отчета.&lt;br /&gt;
&lt;br /&gt;
Приведем готовый код процедуры, осуществляющей формирование печатной формы Приходной накладной.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;/**&lt;br /&gt;
* обработчик нажатия кнопки&lt;br /&gt;
*/&lt;br /&gt;
function on_button(button_name)&lt;br /&gt;
{&lt;br /&gt;
if(button_name!=&amp;quot;print_button&amp;quot;) return; // обрабатываем только нажатие кнопки Печать&lt;br /&gt;
var p = new Report(&amp;quot;Report1&amp;quot;,&amp;quot;1&amp;quot;); // создаем экземпляр отчета&lt;br /&gt;
p.setTable(&amp;quot;templ_prihod.odt&amp;quot;); // связываем его с шаблоном&lt;br /&gt;
// шаблоны ищутся в каталоге 'Рабочий каталог'&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,Value(&amp;quot;Номер&amp;quot;) ); // устанавливает значение для простого тега&lt;br /&gt;
p.exec(&amp;quot;Документ.Номер&amp;quot;); // применяет установленное значение для тега с именем &amp;lt;:Документ.Номер:&amp;gt;&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,Value(&amp;quot;Основание&amp;quot;) );&lt;br /&gt;
p.exec(&amp;quot;Документ.Основание&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,Value(&amp;quot;Продавец&amp;quot;));&lt;br /&gt;
p.exec(&amp;quot;Документ.Продавец&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,Value(&amp;quot;Дата&amp;quot;) );&lt;br /&gt;
p.exec(&amp;quot;Документ.Дата&amp;quot;);&lt;br /&gt;
var sum=0;&lt;br /&gt;
var countRow = TabCount(&amp;quot;wDBTable1&amp;quot;); // количество строк таблицы&lt;br /&gt;
var i;&lt;br /&gt;
for ( i =countRow-1; i&amp;gt;=0; i--)&lt;br /&gt;
{&lt;br /&gt;
p.setValue(&amp;quot;npp&amp;quot;, String(i+1)); // устанавливаем значение табличного тега с именем 'npp'&lt;br /&gt;
for ( j=1; j&amp;lt;=5; j++)&lt;br /&gt;
{&lt;br /&gt;
p.setValue(&amp;quot;f&amp;quot;+String(j), TabValue(&amp;quot;wDBTable1&amp;quot;,i,j-1));&lt;br /&gt;
}&lt;br /&gt;
p.exec(&amp;quot;table_section&amp;quot;); // применяем установленные&lt;br /&gt;
значения для строки&lt;br /&gt;
//содержащей табличный тег [:table_section:]&lt;br /&gt;
}&lt;br /&gt;
sum = Value(&amp;quot;lineEdit1&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,sum);&lt;br /&gt;
p.exec(&amp;quot;Итого&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;, Propis(sum)); // записываем сумму прописью&lt;br /&gt;
p.exec(&amp;quot;Итого_прописью&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,&amp;quot;Сидоров С.С&amp;quot;);&lt;br /&gt;
p.exec(&amp;quot;Сдал&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,&amp;quot;Петров П.П&amp;quot;);&lt;br /&gt;
p.exec(&amp;quot;Принял&amp;quot;);&lt;br /&gt;
p.setValue(&amp;quot;param&amp;quot;,getConstant(&amp;quot;Константы&amp;quot;,&amp;quot;Главный бухгалтер&amp;quot;)); // получаем имя главного бухгалтера из справочника констант&lt;br /&gt;
p.exec(&amp;quot;Организация.Главбух&amp;quot;);&lt;br /&gt;
p.show(); // запускаем OpenOffice&lt;br /&gt;
p.close(); // удаляем все временные файлы&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Этот код следует поместить в модуль экранной формы Приходной&lt;br /&gt;
накладной. Он сработает только если:&lt;br /&gt;
* Была нажата кнопка, для которой в дизайнере экранных форм было задано имя print_button.&lt;br /&gt;
* Шаблон Приходной накладной, показанный на Рис. 7 хранится в файле templ_prihod.odt, расположенном в рабочем каталоге. Рабочий каталог задается в параметрах настройки бизнес-схемы.&lt;br /&gt;
* Названия справочников и полей совпадают с указанными в коде.&lt;br /&gt;
Внимательный читатель уже самостоятельно заметил наличие в&lt;br /&gt;
шаблоне странного тега с прямоугольными скобками [:table_section:].&lt;br /&gt;
Такой тег нужен для таблицы. Так как в шаблоне определяется только&lt;br /&gt;
одна строка таблицы, а в сформированном документе их может быть&lt;br /&gt;
произвольное количество, необходим тег, который позволил бы программе понять, что эту часть шаблона следует рассматривать как размножаемую строку. Имя тега можно выбирать произвольно – важно&lt;br /&gt;
лишь то, чтобы и в шаблоне, и в коде оно было одинаковым.&lt;br /&gt;
&lt;br /&gt;
Более детальное описание возможностей и способов работы подсистемы формирования отчетов Ананаса следует искать в фирменном&lt;br /&gt;
руководстве. Самый быстрый и качественный ответ на практически&lt;br /&gt;
любой технический вопрос по этой теме всегда можно получить на&lt;br /&gt;
форуме проекта Ананас. Дерзайте!&lt;br /&gt;
&lt;br /&gt;
{{Врезка|center|&lt;br /&gt;
|Заголовок=В чем сила, брат?&lt;br /&gt;
|Содержание=«Вот в чем сила!» – просто не может не воскликнуть любой программист,&lt;br /&gt;
впервые увидев, какой мощный арсенал готовых, качественных и, что&lt;br /&gt;
самое главное, хорошо знакомых пользователю инструментов ему предоставляет мир свободного ПО для реализации его идей в форме потребительских программных продуктов. Ярчайшим примером подобного случая&lt;br /&gt;
является пакет офисных приложений OpenOffice.org, точнее сказать, его&lt;br /&gt;
доступность. Ни один проприетарный продукт не может рассчитывать в&lt;br /&gt;
отношениях пользователей к себе на такой уровень лояльности, который&lt;br /&gt;
имеет OpenOffice.org среди пользователей и разработчиков. Создатели&lt;br /&gt;
Ананаса, входя в их число, смогли максимально воспользоваться всеми&lt;br /&gt;
преимуществами этого пакета программ, интегрировав Ананас с&lt;br /&gt;
OpenOffice.org в настолько удобной для пользователя форме, что порой&lt;br /&gt;
он даже не замечает и не задумывается над тем, что подготовленный в&lt;br /&gt;
Ананасе счет или накладная открываются для печати в редакторе Writer&lt;br /&gt;
или в электронных таблицах Calc из пакета OpenOffice.org. Такая интеграция стала возможной благодаря открытости форматов файлов этого&lt;br /&gt;
офисного пакета. Формат ODF, используемый программами пакета&lt;br /&gt;
OpenOffice.org является сегодня стандартом, утвержденным ISO, международной организацией по стандартизации.&lt;br /&gt;
|Ширина=}}&lt;/div&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	</feed>