<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Програмiст &#187; Работа с конфигуратором</title>
	<atom:link href="http://programmer.com.ua/category/rabota-s-konfiguratorom/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmer.com.ua</link>
	<description>еще немного слов про 1С</description>
	<lastBuildDate>Tue, 07 Sep 2010 05:42:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Как обхитрить документ</title>
		<link>http://programmer.com.ua/2010/09/kak-obxitrit-dokument/</link>
		<comments>http://programmer.com.ua/2010/09/kak-obxitrit-dokument/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 05:57:48 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[Поддержка]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[7.7]]></category>
		<category><![CDATA[кодинг]]></category>
		<category><![CDATA[конфигуратор]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2010/09/kak-obxitrit-dokument/</guid>
		<description><![CDATA[ Вчера столкнулся с необходимостью программно ввести акт оказания услуг на основании счета-фактуры в стандартной Бухгалтерии для Украины. Сначала было принялся писать обработку заполнения по очереди всех реквизитов, но вспомнил, что в форме документа описана стандартная процедура ВводНаОсновании() и решил использовать ее. В отличии от восьмой версии, в семерке нельзя обратиться к процедурам, описанным в [...]]]></description>
			<content:encoded><![CDATA[<p> Вчера столкнулся с необходимостью программно ввести акт оказания услуг на основании счета-фактуры в стандартной Бухгалтерии для Украины. Сначала было принялся писать обработку заполнения по очереди всех реквизитов, но вспомнил, что в форме документа описана стандартная процедура ВводНаОсновании() и решил использовать ее. В отличии от восьмой версии, в семерке нельзя обратиться к процедурам, описанным в форме документа как к методам объекта, поэтому приходится немного хитрить.</p>
<p>Можно придумать разные варианты, приведу один для примера. Создаю объект “Документ.ОказаниеУслуг”, создаю новый документ, в поле Заказ у вновь созданного объекта ввожу документ, на основании которого будет выполнено заполнение, т.е. ссылку на счет, записываю, чтобы создался объект данных, и теперь даю команду открыть форму этого вновь созданного документа с параметром “Авто”.</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_084614.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-09-02_084614" border="0" alt="2010-09-02_084614" src="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_084614_thumb.png" width="240" height="53" /></a></p>
<p>Здесь использована процедура <strong>ОткрытьФормуМодально()</strong>, чтобы исполнение кода не пошло дальше, а дождалось закрытия открытой формы документа. Теперь в модуль формы документа нужно вставить обработку переданного параметра:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_084948.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-09-02_084948" border="0" alt="2010-09-02_084948" src="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_084948_thumb.png" width="240" height="102" /></a>Т.е. вставленная при вызове ОткрытьФормуМодально() переменная или какое-либо значение&#160; теперь доступно в форме документа как <strong>Форма.Параметр</strong>. Осталось в процедуре <strong>ВводНаОсновании()</strong> добавить команды записи и закрытия формы:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_085310.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-09-02_085310" border="0" alt="2010-09-02_085310" src="http://programmer.com.ua/wp-content/uploads/2010/09/20100902_085310_thumb.png" width="240" height="78" /></a>Они расположены непосредственно перед завершением процедуры. Вот собственно и всё. Аналогичным образом можно организовать программный вызов печати документа. </p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=638&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2010/09/kak-obxitrit-dokument/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как испортить базу данных и потом вернуть ее к жизни</title>
		<link>http://programmer.com.ua/2010/08/kak-isportit-bazu-dannyx-i-potom-vernut-ee-k-zhizni/</link>
		<comments>http://programmer.com.ua/2010/08/kak-isportit-bazu-dannyx-i-potom-vernut-ee-k-zhizni/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 08:22:40 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[Поддержка]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[7.7]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[консультация]]></category>
		<category><![CDATA[конфигуратор]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2010/08/kak-isportit-bazu-dannyx-i-potom-vernut-ee-k-zhizni/</guid>
		<description><![CDATA[Если вы не спец в работе с базами 1С, то можете при обновлении допустить простую ошибку: вместо того, чтобы запустить процедуру объединения (при которой система анализирует различия в структуре данных), заменяете файл конфигурации новым, просто записывая его поверх старого. Наиболее велик соблазн поступить таким образом в случае с локальной базой в файловом варианте, т.е. когда [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы не спец в работе с базами 1С, то можете при обновлении допустить простую ошибку: вместо того, чтобы запустить процедуру объединения (при которой система анализирует различия в структуре данных), заменяете файл конфигурации новым, просто записывая его поверх старого. Наиболее велик соблазн поступить таким образом в случае с локальной базой в файловом варианте, т.е. когда все данные хранятся в файлах DBF. Вот на таком примере и расскажу, что бывает и как это исправить.</p>
<p>Итак, после замены файла 1cv7.md новым вариантом при запуске 1С:Предприятия видим примерно такое сообщение: &laquo;Codebase error, Unrecognised Field Name&#8230;&raquo;</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_102803.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="2010-08-26_102803" src="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_102803_thumb.png" border="0" alt="2010-08-26_102803" width="244" height="174" /></a></p>
<p>И за ним например такое: &laquo;Нарушена структура данных таблицы &#8230;&raquo;</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_103233.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="2010-08-26_103233" src="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_103233_thumb.png" border="0" alt="2010-08-26_103233" width="244" height="126" /></a><span id="more-620"></span>Эти сообщения говорят о том, что при открытии файлов базы система  обнаруживает, что их структура, т.е. названия или параметры полей в таблицах, не соответствует тому, что она ожидает увидеть. А понять, что она хочет видеть очень просто: структура данных описана в текстовом файле, который находится в одной папке с файлом конфигурации, он называется 1cv7.dd. Открыв этот файл, например стандартным Блокнотом, и выполнив поиск по названию таблицы DH553, можно обнаружить, что речь идет о документе Калькуляция, кроме того, здесь видно что ошибка в шапке документа, т.к. его табличная часть хранится в файле DT553 – это тоже видно в описании структуры.</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_105640.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="2010-08-26_105640" src="http://programmer.com.ua/wp-content/uploads/2010/08/20100826_105640_thumb.png" border="0" alt="2010-08-26_105640" width="244" height="96" /></a></p>
<p>Первое сообщение указало на ошибку в имени поля: SP2867, это поле есть в списке полей упомянутой таблицы документа Калькуляция, значит теперь нужно заглянуть непосредственно в файл DH553.DBF. Для просмотра содержимого, а главное и структуры DBF-файлов я использую программу WinDBFView (ее можно легко найти поиском по названию, например тут: <a href="http://www.freeware.ru/program_prog_id_3492.html" target="_blank">ссылка</a>). Открыв описание структуры DBF файла и сравнивая ее с описанием в файле 1cv7.dd вижу, что на месте нужного поля SP2867 находится поле SP2868. Теперь закрываем просмотр DBF, в файле 1cv7.dd, в текстовом редакторе исправляем название поля на то, которое есть в файле, т.е. SP2867 на SP2868, сохраняем и закрываем. Теперь, если других ошибок в структуре нет, база должна нормально открыться. Однако если в таком виде попытаться что-то изменить в конфигурации и сохранить изменения – система сгенерирует “неисправленный” файл структуры и ошибка снова появится. Так что для окончательного исправления необходимо в конфигураторе удалить ошибочный реквизит, сохранить изменения, а потом вернуть его на место. При такой манипуляции 1С изменит структуру DBF-файла и уже его структура будет в порядке, но (!) данные этого реквизита будут утеряны.</p>
<p>Логика приведенного примера проста: анализируя файл описания структуры данных и сами данные нужно сначала подогнать описание структуры под имеющиеся данные, а потом уже в конфигураторе сделать откат изменений, т.е. вернуть реквизиты в то состояние, которое было описано в структуре до ручных исправлений. И, конечно, не забывайте про резервные копии, всего этого можно избежать просто восстановив базу из копии, сделанной перед обновлением.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=620&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2010/08/kak-isportit-bazu-dannyx-i-potom-vernut-ee-k-zhizni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конструирование форм в 1С 8.2</title>
		<link>http://programmer.com.ua/2010/06/konstruirovanie-form-v-1s-8-2/</link>
		<comments>http://programmer.com.ua/2010/06/konstruirovanie-form-v-1s-8-2/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 19:20:58 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[1С 8.2]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[8.2]]></category>
		<category><![CDATA[конфигуратор]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2010/06/konstruirovanie-form-v-1s-8-2/</guid>
		<description><![CDATA[Имевшему дело с разработкой форм в старых версиях 1С-ки довольно непросто привыкнуть к новым способам настройки внешнего вида, а особенно способам расположения элементов на форме. Окно редактирования формы теперь выглядит вот так:
 
В центре экрана рабочая область разделена на три части – снизу внешний вид формы, вверху слева состав реквизитов, вверху справа источник данных формы, [...]]]></description>
			<content:encoded><![CDATA[<p>Имевшему дело с разработкой форм в старых версиях 1С-ки довольно непросто привыкнуть к новым способам настройки внешнего вида, а особенно способам расположения элементов на форме. Окно редактирования формы теперь выглядит вот так:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_214316.png"><img title="2010-06-15_214316" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="149" alt="2010-06-15_214316" src="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_214316_thumb.png" width="244" border="0" /></a> </p>
<p>В центре экрана рабочая область разделена на три части – снизу внешний вид формы, вверху слева состав реквизитов, вверху справа источник данных формы, тоже в виде дерева реквизитов. Так вот самое непривычное, это то, что окно с внешним видом формы кроме как для внешнего контроля ни для чего нельзя использовать. Т.е. нельзя “ухватить” реквизит и перетащить в другое место или потянуть за край и сделать длиннее. Теперь все изменения можно настраивать только через дерево элементов формы и окно свойств.</p>
<p>Приведу пример, как сделать так, чтобы реквизиты были расположены в две колонки, как на приведенном выше изображении.</p>
<p> <span id="more-608"></span>
<p> В окне со списком элементов формы нажать кнопку “Добавить”, появится такое окно:</p>
<p><img title="2010-06-15_220309" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="200" alt="2010-06-15_220309" src="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_220309_thumb.png" width="244" border="0" /></p>
<p>Нужно выбрать пункт “Группа – Обычная группа”. В окне свойств завести наименование, у меня введено “Шапка”, там-же, в свойстве “Группировка” задать значение “Горизонтальная” – это нужно для того, чтобы когда мы в эту группу вставим еще две группы реквизитов, сами группы были расположены по горизонтали, т.е. слева и справа:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_220531.png"><img title="2010-06-15_220531" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="244" alt="2010-06-15_220531" src="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_220531_thumb.png" width="243" border="0" /></a>Теперь выделить только что созданную группу и еще раз нажать “Добавить” – это будет первая группа реквизитов, затем добавить еще одну группу, в моем примере они названы “Колонка1” и “Колонка2”. Чтобы на форме не отображалось лишних надписей и линий в свойствах этих групп нужно снять птичку “Отображать заголовок” и в свойстве “Отображение” выбрать “Нет”. Все изменения свойств сразу видны на просмотре формы и это помогает понять, для чего нужны те или иные параметры – можно изменять их и смотреть, что получается.</p>
<p>После того как группы элементов созданы остается перетащить внутри дерева элементы в нужные группы и расположить их в нужном порядке. Аналогично группируются и колонки в табличной части, вот внешний вид рабочего документа:</p>
<p>&#160;<a href="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_221627.png"><img title="2010-06-15_221627" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="152" alt="2010-06-15_221627" src="http://programmer.com.ua/wp-content/uploads/2010/06/20100615_221627_thumb.png" width="244" border="0" /></a></p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=608&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2010/06/konstruirovanie-form-v-1s-8-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Выборка документов с индикатором</title>
		<link>http://programmer.com.ua/2010/04/vyborka-dokumentov-s-indikatorom/</link>
		<comments>http://programmer.com.ua/2010/04/vyborka-dokumentov-s-indikatorom/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 07:31:38 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[1С 8.1]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[8.1]]></category>
		<category><![CDATA[кодинг]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2010/04/vyborka-dokumentov-s-indikatorom/</guid>
		<description><![CDATA[ В восьмой версии появилась такая замечательная вещь для любителя красивого интерфейса как индикатор. Теперь при выполнении действий с выборкой документов, например, можно отображать полоску индикатора, показывающую процент обработанных объектов. В паре с индикатором пригодится для переборки документов и не менее замечательная фишка – запрос. Дело в том, что в запросе проще и нагляднее накладывать [...]]]></description>
			<content:encoded><![CDATA[<p> В восьмой версии появилась такая замечательная вещь для любителя красивого интерфейса как индикатор. Теперь при выполнении действий с выборкой документов, например, можно отображать полоску индикатора, показывающую процент обработанных объектов. В паре с индикатором пригодится для переборки документов и не менее замечательная фишка – запрос. Дело в том, что в запросе проще и нагляднее накладывать условия на отбор нужных объектов и потом у результата выполнения запроса есть метод Количество(), который возвращает количество выбранных записей, что нужно для установки максимального значения в индикаторе.</p>
<p>Пример. </p>
<p> <span id="more-583"></span>
<p>Создаем внешнюю обработку, в ней создаем форму, открываем конструктор формы. На форму вставляем выбор периода, используя волшебную кнопку: <a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101328.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2010-04-29_101328" border="0" alt="2010-04-29_101328" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101328_thumb.png" width="30" height="29" /></a> Удобство этой кнопки в том, что мастер сам пропишет необходимый код для выбора периода и вставит необходимые надписи возле полей с датами. Этой-же кнопкой можно потом добавить на форму и индикатор, получится что-то вроде такого:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101606.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-29_101606" border="0" alt="2010-04-29_101606" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101606_thumb.png" width="244" height="130" /></a>Теперь открываем модуль, в модуле уже есть процедура КнопкаВыполнитьНажатие(), вот в нее можно писать код, он запустится при нажатии на кнопку Выполнить, что понятно из названия процедуры. Допустим, в простейшем случае нужно перебрать проведенные накладные в указанном периоде и перепровести их. Для выполнения изменений понадобится объект данных, значит нужно получить на него ссылку, т.е. основной задачей запроса будет получение выборки ссылок на документы, отборы вставляем по необходимости. Запрос:</p>
</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101947.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-29_101947" border="0" alt="2010-04-29_101947" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_101947_thumb.png" width="244" height="166" /></a></p>
</p>
</p>
<p>В конфигурации, на которой я делал пример, расходная накладная имеет идентификатор “Расход”, поэтому и обращение идет к менеджеру “Документ.Расход”. После выполнения запроса и применения метода Выбрать() в переменную Выборка попадает нужный результат, у этой переменной теперь есть метод Количество(), который можно использовать для настройки индикатора:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_102354.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-29_102354" border="0" alt="2010-04-29_102354" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_102354_thumb.png" width="244" height="12" /></a>Ну а теперь простой перебор объектов из выборки и выполнение нужных действий, только не забыть при каждом шаге изменять значение индикатора. </p>
<p> <a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_102511.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-29_102511" border="0" alt="2010-04-29_102511" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100429_102511_thumb.png" width="244" height="148" /></a>
<p>Вот как-то так.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=583&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2010/04/vyborka-dokumentov-s-indikatorom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бухучет + зарплата + несколько фирм</title>
		<link>http://programmer.com.ua/2010/04/buxuchet-zarplata-neskolko-firm/</link>
		<comments>http://programmer.com.ua/2010/04/buxuchet-zarplata-neskolko-firm/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 06:28:46 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[Поддержка]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[7.7]]></category>
		<category><![CDATA[кодинг]]></category>
		<category><![CDATA[консультация]]></category>
		<category><![CDATA[конфигуратор]]></category>
		<category><![CDATA[отчеты]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2010/04/buxuchet-zarplata-neskolko-firm/</guid>
		<description><![CDATA[Тем, кто ведет учет в стандартной конфигурации “Бухучет для Украины” должна быть известна проблема учета заработной платы по нескольким фирмам, если эти фирмы используют разные системы налогообложения, т.е. кто-то платит налоги на фонд заработной платы, кто-то нет. Проблема в том, что документ “Налисление ЗП”, в котором производятся расчеты начислений, использует один справочник налогов и соответственно [...]]]></description>
			<content:encoded><![CDATA[<p>Тем, кто ведет учет в стандартной конфигурации “Бухучет для Украины” должна быть известна проблема учета заработной платы по нескольким фирмам, если эти фирмы используют разные системы налогообложения, т.е. кто-то платит налоги на фонд заработной платы, кто-то нет. Проблема в том, что документ “Налисление ЗП”, в котором производятся расчеты начислений, использует один справочник налогов и соответственно одни и те-же ставки. Рассказываю, как решить проблему “по-быстрому”. Понадобится: навыки работы с конфигуратором и с объектами конфигурации, навыки работы с кодом модулей.</p>
<p> <span id="more-549"></span>
<p>В конфигурации, в справочнике “Фирмы”, добавляем три периодических реквизита, которые будут хранить ставки налогов: СтавкаФСНВ, СтавкаСС, СтавкаБзр.</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_084943.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_084943" border="0" alt="2010-04-20_084943" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_084943_thumb.png" width="244" height="87" /></a>Затем эти реквизиты располагаем на форме, я использовал слой “Регистрация”, немного подвинул влево поля с кодами, освободив место под новые реквизиты.</p>
<p>&#160;<a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_085822.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_085822" border="0" alt="2010-04-20_085822" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_085822_thumb.png" width="244" height="113" /></a>&#160; </p>
</p>
<p>Теперь нужно в модуле документа “Начисление ЗП” прописать использование ставок из новых реквизитов, а не из справочника “Налоги”. Открыть модуль и найти в нем процедуру “ДобавитьНиО”, в конце процедуры есть такой код:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_090340.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_090340" border="0" alt="2010-04-20_090340" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_090340_thumb.png" width="244" height="41" /></a></p>
<p>Эту конструкцию “Если…” усложняем обработкой нужных кодов, приводим к такому виду:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_090711.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_090711" border="0" alt="2010-04-20_090711" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_090711_thumb.png" width="244" height="86" /></a>По части начислений, формирования проводок, все готово, можно проводить документы. Теперь еще несколько слов о том, как в регламентированном отчете сделать использование нужной ставки – отчеты тоже полагаются на справочник налогов и ставку на ФЗП используют оттуда.</p>
<p>Например, отчет в фонд страхования от несчастных случаев: в папке регламентированных отчетов находим файл SocNesch.ert, открываем его в конфигураторе. В модуле отчета находим процедуру “ЗаполнитьРеквизиты”, в ней такой участок кода:</p>
<p>&#160;<a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_091415.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_091415" border="0" alt="2010-04-20_091415" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_091415_thumb.png" width="244" height="118" /></a>Здесь в переменную ФЗПСоцСтрахНесч передается значение ставки налога, поэтому достаточно просто дописать еще одну строчку:</p>
</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_091723.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_091723" border="0" alt="2010-04-20_091723" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_091723_thumb.png" width="244" height="15" /></a> </p>
<p>Т.е. прочитать значение ставки не из справочника налогов, а из справочника фирм. Аналогично можно подкорректировать и остальные отчеты, достаточно одной строки, только переменные будут разными.</p>
<p>Еще попутное замечание по поводу отчета в “несчастный случай”: в этом отчете признак используемой системы налогообложения определяется по ставке налога на ФЗП в соцстрах, что тоже не совсем корректно, если фирм несколько, поэтому предлагаю переписать этот код на использование признака “Плательщик налога на прибыль” у фирмы, т.е. для каждой фирмы этот признак будет своим. В той-же процедуре изменяем:</p>
<p><a href="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_092520.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="2010-04-20_092520" border="0" alt="2010-04-20_092520" src="http://programmer.com.ua/wp-content/uploads/2010/04/20100420_092520_thumb.png" width="244" height="48" /></a> Оригинальный код закомментирован, а новый дописан ниже.</p>
<p>Напомню, все предложенные здесь изменения работают в стандартной конфигурации “Бухгалтерский учет для Украины”, проверялось на 277-м релизе.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=549&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2010/04/buxuchet-zarplata-neskolko-firm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конфигурирование в 1С и антивирус</title>
		<link>http://programmer.com.ua/2009/11/konfigurirovanie-v-1s-i-antivirus/</link>
		<comments>http://programmer.com.ua/2009/11/konfigurirovanie-v-1s-i-antivirus/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:10:16 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[программы]]></category>
		<category><![CDATA[7.7]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[антивирус]]></category>
		<category><![CDATA[кодинг]]></category>
		<category><![CDATA[конфигуратор]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/2009/11/konfigurirovanie-v-1s-i-antivirus/</guid>
		<description><![CDATA[ Небольшой недостаток обнаружен в работе 1С:Предприятия 7.7 в системах Windows Vista и Windows 7: во время сохранения изменений в конфигурации происходит задержка около пяти секунд, мелочь, но немного раздражает. 
Подозрение сразу падает на антивирус, который пытается проверять все сохраняемые файлы, хотя, тот-же антивирус с той-же семеркой, но в Windows XP никаких подтормаживаний не вызывал. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dreamstime.com/spider-in-glass-jar-rimage10143181-resi774454" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="124754713683AZVV" border="0" alt="124754713683AZVV" align="left" src="http://programmer.com.ua/wp-content/uploads/2009/11/124754713683AZVV.jpg" width="87" height="130" /></a> Небольшой недостаток обнаружен в работе 1С:Предприятия 7.7 в системах Windows Vista и Windows 7: во время сохранения изменений в конфигурации происходит задержка около пяти секунд, мелочь, но немного раздражает. </p>
<p>Подозрение сразу падает на антивирус, который пытается проверять все сохраняемые файлы, хотя, тот-же антивирус с той-же семеркой, но в Windows XP никаких подтормаживаний не вызывал. Ставлю в исключения антивируса файлы 1С: *.md, *.dbf, *.cdx, – эфекта нет. Копнул глубже: при сохранении изменений в конфигурации 1С-ка создает копию md-файла во временной папке с именем вида ~md*.tmp, вот эту маску я и добавил к исключениям, результат – сохранение происходит почти мгновенно. </p>
<p>Думаю этот трюк пригодится всем, кто часто вносит изменения в конфигурацию, а кроме <a href="http://programmer.com.ua" target="_blank">программистов</a> это могут быть, например, пользователи распределенных баз.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=473&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2009/11/konfigurirovanie-v-1s-i-antivirus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Левые запросы</title>
		<link>http://programmer.com.ua/2009/06/levye-zaprosy/</link>
		<comments>http://programmer.com.ua/2009/06/levye-zaprosy/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:12:21 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[1С 8.1]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[8.1]]></category>
		<category><![CDATA[запрос]]></category>
		<category><![CDATA[кодинг]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/?p=327</guid>
		<description><![CDATA[Выполняя запрос в 1С7.7 можно было одним ключевым словом ВСЕ включить в отчет остатков, например, не только те товары, которые есть на остатке, а вобще все товары из справочника товаров. Казалось-бы удобно. Если сравнить с запросом в 8.1 создается впечатление, что стало намного сложнее: необходимо указать источники данных, в случае с остатками это Справочник товаров [...]]]></description>
			<content:encoded><![CDATA[<p>Выполняя запрос в 1С7.7 можно было одним ключевым словом ВСЕ включить в отчет остатков, например, не только те товары, которые есть на остатке, а вобще все товары из справочника товаров. Казалось-бы удобно. Если сравнить с запросом в 8.1 создается впечатление, что стало намного сложнее: необходимо указать источники данных, в случае с остатками это Справочник товаров и Регистр партий, а затем указать параметр их соединения. Но если разобраться, то на самом деле механизм выполнения запроса стал более прозрачным: легко представить две таблицы, имеющие поля с одинаковыми данными и задание соединить их по этим полям, а параметр ЛЕВОЕ или ПРАВОЕ определяет, с какой стороны брать все записи, а с какой только совпадающие. Просто? Вот пример, отчет по остаткам товаров с выводом всех товаров и указанием остатка для тех, у которых он есть:</p>
<p style="text-align: center;"><a href="http://programmer.com.ua/wp-content/uploads/2009/06/2009-06-19_190959.png"><img class="size-medium wp-image-328 aligncenter" title="2009-06-19_190959" src="http://programmer.com.ua/wp-content/uploads/2009/06/2009-06-19_190959-300x155.png" alt="2009-06-19_190959" width="300" height="155" /></a></p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=327&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2009/06/levye-zaprosy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Запрос к табличной части документа</title>
		<link>http://programmer.com.ua/2009/06/zapros-k-tablichnoj-chasti-dokumenta/</link>
		<comments>http://programmer.com.ua/2009/06/zapros-k-tablichnoj-chasti-dokumenta/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 11:05:25 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[1С 8.1]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[8.1]]></category>
		<category><![CDATA[кодинг]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/?p=316</guid>
		<description><![CDATA[Чтобы не связываться с вложенными результатами запроса выборку можно сразу делать по табличной части. Т.е. в тексте запроса используем конструкцию &#171;ВЫБРАТЬ Товар ИЗ РасходнаяНакладная.Товары КАК Расход &#8230;&#187;, тут выбираем товар из табличной части &#171;Товары&#187;. В этом случае к реквизитам самого документа нужно обращаться через свойство Ссылка, т.е. для отбора по дате: &#171;Расход.Ссылка.Дата Между  &#38;Дата1 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Чтобы не связываться с вложенными результатами запроса выборку можно сразу делать по табличной части. Т.е. в тексте запроса используем конструкцию &laquo;ВЫБРАТЬ Товар ИЗ РасходнаяНакладная.Товары КАК Расход &#8230;&raquo;, тут выбираем товар из табличной части &laquo;Товары&raquo;. В этом случае к реквизитам самого документа нужно обращаться через свойство Ссылка, т.е. для отбора по дате: &laquo;Расход.Ссылка.Дата Между  &amp;Дата1 И &#8230;&raquo;.<br />
Ниже пример выборки документов, но т.к. потом делается отбор по товару, нужна сумма не всего документа, а только отобранных товаров из него, поэтому сумма берется из строки и сам запрос делается к табличной части а не к самому документу.<img class="size-full wp-image-317 aligncenter" title="2009-06-13_135935" src="http://programmer.com.ua/wp-content/uploads/2009/06/2009-06-13_135935.png" alt="2009-06-13_135935" width="514" height="166" /></p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=316&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2009/06/zapros-k-tablichnoj-chasti-dokumenta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Округление во все стороны</title>
		<link>http://programmer.com.ua/2009/03/okruglenie-vo-vse-storony/</link>
		<comments>http://programmer.com.ua/2009/03/okruglenie-vo-vse-storony/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 09:27:08 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[кодинг]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/?p=223</guid>
		<description><![CDATA[Задача: сделать округление цены, при ее вычислении в документе, с выбором количества знаков и указанием способа &#8211; всегда вверх или стандартным способом.
В документе добавил два реквизита: &#171;Округление&#187;, для ввода количества знаков и &#171;ОкруглениеВверх&#187; &#8212; признак округления в режиме &#171;всегда вверх&#187;.

В модуле формы, в том месте, где вычисляется новая цена добавил такую процедуру:

Принцип работы такой: сначала [...]]]></description>
			<content:encoded><![CDATA[<p>Задача: сделать округление цены, при ее вычислении в документе, с выбором количества знаков и указанием способа &#8211; всегда вверх или стандартным способом.</p>
<p>В документе добавил два реквизита: &laquo;Округление&raquo;, для ввода количества знаков и &laquo;ОкруглениеВверх&raquo; &#8212; признак округления в режиме &laquo;всегда вверх&raquo;.</p>
<p style="text-align: center; "><a href="http://programmer.com.ua/wp-content/uploads/2009/03/20090306-001.png"><img class="size-full wp-image-224 aligncenter" title="20090306-001" src="http://programmer.com.ua/wp-content/uploads/2009/03/20090306-001.png" alt="" width="267" height="40" /></a></p>
<p style="text-align: left;">В модуле формы, в том месте, где вычисляется новая цена добавил такую процедуру:</p>
<p style="text-align: center;"><a href="http://programmer.com.ua/wp-content/uploads/2009/03/20090306-002.png"><img class="size-full wp-image-225 aligncenter" title="20090306-002" src="http://programmer.com.ua/wp-content/uploads/2009/03/20090306-002.png" alt="" width="492" height="290" /></a></p>
<p style="text-align: left;">Принцип работы такой: сначала запятую отодвигаем на то количество знаков, которое хотим оставить, для этого вычисляем Кф. Тут я использовал свою функцию СтепеньЧисла() в которую передаются два параметра: первый &#8212; основание степени, второй &#8212; сама степень. Затем вычисляем саму цену, выделяем дробную часть, ну и дальше в зависимости от флага &laquo;ОкруглениеВверх&raquo; увеличиваем цену или оставляем как есть. В конце возвращаем запятую на место.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=223&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2009/03/okruglenie-vo-vse-storony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Диалог выбора файла</title>
		<link>http://programmer.com.ua/2009/02/dialog-vybora-fajla/</link>
		<comments>http://programmer.com.ua/2009/02/dialog-vybora-fajla/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 08:42:59 +0000</pubDate>
		<dc:creator>Руслан Хут</dc:creator>
				<category><![CDATA[1С 8.1]]></category>
		<category><![CDATA[Работа с конфигуратором]]></category>
		<category><![CDATA[8.1]]></category>
		<category><![CDATA[кодинг]]></category>

		<guid isPermaLink="false">http://programmer.com.ua/?p=213</guid>
		<description><![CDATA[Как организовать в обработке ввод пути и имени файла в текстовое поле пользователем? Имеем поле в форме с типом &#171;Строка&#187;. Чтобы пользователь мог интерактивно выбрать нужный файл, в свойствах поля, во-первых добавить кнопку выбора:

во-вторых задать обработчик выбора &#8212; в разделе &#171;События&#187;, в строке с событием &#171;НачалоВыбора&#187; нажимаем на кнопку с изображением лупы, система генерирует заготовку [...]]]></description>
			<content:encoded><![CDATA[<p>Как организовать в обработке ввод пути и имени файла в текстовое поле пользователем? Имеем поле в форме с типом &laquo;Строка&raquo;. Чтобы пользователь мог интерактивно выбрать нужный файл, в свойствах поля, во-первых добавить кнопку выбора:</p>
<p style="text-align: center;"><a href="http://programmer.com.ua/wp-content/uploads/2009/02/2009-02-05_233244.png"><img class="size-full wp-image-215 aligncenter" title="2009-02-05_233244" src="http://programmer.com.ua/wp-content/uploads/2009/02/2009-02-05_233244.png" alt="" width="267" height="264" /></a></p>
<p>во-вторых задать обработчик выбора &#8212; в разделе &laquo;События&raquo;, в строке с событием &laquo;НачалоВыбора&raquo; нажимаем на кнопку с изображением лупы, система генерирует заготовку для процедуры.</p>
<p style="text-align: center;"><a href="http://programmer.com.ua/wp-content/uploads/2009/02/2009-02-05_233700.png"><img class="size-full wp-image-216 aligncenter" title="2009-02-05_233700" src="http://programmer.com.ua/wp-content/uploads/2009/02/2009-02-05_233700.png" alt="" width="267" height="264" /></a></p>
<p>В этой процедуре вводим код:</p>
<p><code><br />
<span style="color: #0000ff;"> Процедура ПолеВвода1НачалоВыбора(Элемент, СтандартнаяОбработка)<br />
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);<br />
Диалог.Заголовок = "Выберите файл для загрузки";<br />
Диалог.ПолноеИмяФайла = "";<br />
Диалог.ПредварительныйПросмотр = Ложь;<br />
Диалог.Фильтр = "Файл таблицы Excel (*.XLS)|*.XLS"; </span></code></p>
<p><code><span style="color: #0000ff;"> </span></code></p>
<p><code><span style="color: #0000ff;"> Если Диалог.Выбрать() Тогда<br />
Путь = Диалог.ПолноеИмяФайла;<br />
Иначе<br />
Путь = "";<br />
Отказ = Истина;<br />
КонецЕсли;<br />
КонецПроцедуры</span></code></p>
<p>В моем примере сделан выбор файла таблицы Excel. Вначале вызываем конструктор нового объекта &#8211; диалога, затем его свойствами определяем нужные настройки и ограничения, например свойство &laquo;Фильтр&raquo; определяет маску имени файла. Полезным может оказаться свойство &laquo;Каталог&raquo;, которым можно определить начальный путь, с которым откроется диалог. Затем используется метод &laquo;Выбрать()&raquo;, который собственно и открывает пользователю окно выбора и возвращает Истина, если выбор произведен, соответственно после этого полученное полное имя записывается в переменную Путь.</p>
<img src="http://programmer.com.ua/?ak_action=api_record_view&id=213&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://programmer.com.ua/2009/02/dialog-vybora-fajla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
