<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.kint.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_%281Cv8%29</id>
	<title>Парсинг модулей (1Cv8) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.kint.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_%281Cv8%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.kint.ru/index.php?title=%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_(1Cv8)&amp;action=history"/>
	<updated>2026-05-18T04:14:09Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>http://wiki.kint.ru/index.php?title=%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_(1Cv8)&amp;diff=21565&amp;oldid=prev</id>
		<title>Павел Лазарев: Новая страница: «Категория:Примеры кода 1С  Источник: http://fixin.com.ru/articles/down_module_parser/article.htm  ==Парсинг модулей== ...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.kint.ru/index.php?title=%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_(1Cv8)&amp;diff=21565&amp;oldid=prev"/>
		<updated>2010-10-07T06:28:46Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%BA%D0%BE%D0%B4%D0%B0_1%D0%A1&quot; title=&quot;Категория:Примеры кода 1С&quot;&gt;Категория:Примеры кода 1С&lt;/a&gt;  Источник: http://fixin.com.ru/articles/down_module_parser/article.htm  ==Парсинг модулей== ...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:Примеры кода 1С]]&lt;br /&gt;
&lt;br /&gt;
Источник: http://fixin.com.ru/articles/down_module_parser/article.htm&lt;br /&gt;
&lt;br /&gt;
==Парсинг модулей==&lt;br /&gt;
&lt;br /&gt;
Часто приходится однотипным образом обрабатывать модули объектов 1С 80 (форм, документов, справочников и т.п.), чтобы над всеми ими выполнить однотипную операцию.&lt;br /&gt;
&lt;br /&gt;
Нам понадобилось обработать все формы журналов и списков документов в УПП, чтобы вставить в журналы и списки документов некоторые действия, а некоторые действия сделать доступными только в зависимости от наличия прав пользователя.&lt;br /&gt;
&lt;br /&gt;
Для целей несложной обработки текстов модулей (парсинга) была написана простая обработка.&lt;br /&gt;
&lt;br /&gt;
[Image]&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;
·         ПоставщикЗамены – любой идентификатор, в качестве которого удобно использовать название фирмы, которая вносит изменения в конфигурацию, например BESTFRAN4;&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;
{|class=standard&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;
[[Медиа:Обработка ПарсингМодулей.zip]]&lt;/div&gt;</summary>
		<author><name>Павел Лазарев</name></author>
		
	</entry>
</feed>