Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Публикация № 592108 13.03.17

Разработка - Инструментарий разработчика

Регулярные выражения

Предлагается к использованию построитель регулярных выражений. Выполненный в виде внешней обработки, он позволит строить сложно-структурированные выражения на основе параметрического описания, тестировать их, и в результате получить программный код 1С.

О чем эта статья

С чего начать

Раскрашиваем код программы

Обозначим цель и далее по порядку
Строим первые шаблоны.
Области программных модулей  и директивы компилятору
Литералы
Имена процедур и функций, переменные и зарезервированные слова
Комментарии и описания методов (процедур и функций)
Остались только спец.символы
Обсудим полученный результат
Обещанное: список зарезервированных слов

Построитель регулярных выражений

Основные элементы управления
Текст
Найдены
Уникальные
Замены
Дерево
Параметры
Код 1С
Конструктор выражений

А дальше что?

Литература

Вложения

Обновления



О чем эта статья

Начну с того, что…  я не люблю писать статьи. В последний раз, когда мне это хотелось сделать, а было это четверть века назад, я начитался эротических переживаний Эдуарда Тополя, возомнил себя этаким Дон Жуаном, и вознамерился  явить миру собственные неповторимые  впечатления этой стороны своей жизни. Но потом-таки отказался от сих злостных намерений, приняв непреложный тот факт, что слишком уж интимно это. Собственно, любой жизненный опыт, накопленный нами (вами) – это интимно. Потому что он скрывает немало наших ошибок и маленьких достижений. Это ценно для нас. Но он меркнет на фоне таких же достижений других людей. И не это главное. А главное то, что всегда найдутся добрые люди, которые не смогут его принять (понять), не промолчав об этом  (и тут Остапа понесло!).

Таки да, это очередная статья о регулярных выражениях, о коих писалось уже немало на этом ресурсе. Зачем еще одна? Попытаюсь кратко  ответить на этот вопрос.

Данная публикация, прежде всего, о  построителе регулярных выражений. Впервые с ними (с выражениями) я  столкнулся лет 6-7 назад в замечательной книге  Андрея Михайлова «1С:Предприятие 7.7/8.0 Системное программирование» (2-е издание, 2007г.). Идея их использования в 1С мне понравилась уже тогда, но все это был лишь небольшой опыт, ограниченный написанием несложных регулярных выражений. И для этого ничего не требовалось кроме некоторого знания их синтаксиса и умения подключить в 1С объект VBScript.RegExp, присутствующий на любом компьютере.

Сложности начались потом, когда мне любопытно стало разобраться  в некоторых  задачах, требующих написания сложных регулярных выражений. Да простит меня читатель этих строк, но тогда я еще не имел привычки за каждым решением проблемы сразу же устремляться в интернет, а пытался что-то сделать своими руками . Ну и  придумал простенький сборщик выражений.  (Найти готовый?! Нет, нет, нет, - мы не ищем легких путей!). В основу положил их (выражений) параметрическое описание, как  в примере ниже:

<Описание параметра> = (?:<ПС><Знач><ПС><Имя параметра><ПС>(?:=<ПС><Значение по умолчанию>){0,1})

<ПС> = \s*

<Знач> = (?:Знач)?

<Значение по умолчанию> = (?:<Булево>|<Число>|<Дата>|<Строка>|Неопределено)

<Имя параметра> = <Идентификатор>

<Строка> = "[^"]*"(?:"[^"]*")*(?:"[^"]*\s*?|[^"]*(?:"[^"]*")*")*?

<Число> = [-+]?\d+\.?\d*

<Булево> = (?:Истина|Ложь|True|False)

<Дата> = '[ 0-9.-/]*'

<Идентификатор> = [_А-Яа-яA-Za-z][_А-Яа-яA-Za-z0-9]*


На выходе получал собранное до кучи регулярное выражение:

(?:\s*(?:Знач)?\s*[_А-Яа-яA-Za-z][_А-Яа-яA-Za-z0-9]*\s*(?:=\s*(?:(?:Истина|Ложь|True|False)|[-+]?\d+\.?\d*|'[ 0-9.-/]*'|"[^"]*"(?:"[^"]*")*(?:"[^"]*\s*?|[^"]*(?:"[^"]*")*")*?|Неопределено)){0,1})

В дальнейшем, если регулярное выражение в начале или в конце имеет пробельные символы в своем составе,- заключаю его в парные символы „“, которые не являются частью выражений. Например, шаблон для поиска в тексте длинных промежутков из пробелов, минимум 5 символов: „ {5,}“. Понятное дело, наличие в этом шаблоне пробела в самом начале, не очевидно...

Попробуйте через несколько недель подсунуть это регулярное выражение мне, сонному, поутру и задайте вопрос: «что это?». Я буду долго чесать репу, мысленно отвлекаясь на тему нелегкого человеческого бытия во вселенной, пытаясь судорожно восстановить в воспаленном мозгу ответ на заданный вопрос. И то, что речь шла о разборе списка параметров процедуры,  вспомню не сразу.

А хотелось бы это помнить всегда или хотя бы вспоминать, не напрягаясь сильно.

Последние несколько лет, работая иногда с регулярными выражениями, попутно я  совершенствовал и свой построитель выражений. Что из этого получилось, хочу представить своим читателям.

К тому же, вот уж близко пенсия моя, - на горизонте, и обидно даже как-то унести сие великое  творение с собой в могилу. А вдруг кому-нибудь еще будет полезным. Хоть тема все та же,  но  ведь и у музыкантов  количество нот не велико, - всего лишь семь …  вот и мне вздумалось  сыграть.

Перейти к оглавлению

С чего начать

Те из вас, кто уже давно имеет дело с регулярными выражениями, скорей всего имеют под рукой и удобный инструментарий для работы с ними.  Но, раз уж вы заинтересовались этой статьей, в целях экономии своего времени, можете смело пропустить большую часть моего изложения и перейти к разделу «Построитель регулярных выражений». Но предупреждаю, что и при рассмотрении примеров я немало буду комментировать работу самого построителя. Так что на ваше усмотрение. Откровенно говоря, я сам не большой любитель читать руководства с примерами к программам.

Для тех из вас, кому это в новинку, я подобрал примеры, на которых расскажу о своем построителе  и, по мере нарастания сложности их, плавно введу в мир регулярных выражений. При этом я буду избегать дублирования справочных руководств, отсылая читателей разве что к встроенной справке. Во вложении к статье  вы также сможете найти небольшое руководство в виде chm-справки, а в конце статьи порекомендую литературу.

Потратив некоторые усилия на освоение регулярных выражений, мы непременно придем к выводу из заголовка статьи: «Регулярные выражения – это просто!». Не потому что не требуют каких-то предварительных усилий на проникновение в них, а потому что позволяют решать сложные задачи простыми методами. А к этим простым методам я и причисляю их самые, не смотря на столь отталкивающий вид.

Прежде всего, я рекомендую скачать и запустить в работу построитель выражений,  представленный внешней обработкой.  И начнем с нуля.

А можно, как вариант для особо нетерпеливых, загрузить уже полностью готовый пример на закладке  «Код 1С», пункт контекстного меню в области текстового поля ввода «Прочитать из файла» (файл Код1С.rep), а потом «Включить в проект». И дальше методом научного втыка.

Перейти к оглавлению

Раскрашиваем код программы

Обозначим цель и далее по порядку

Несколько слов о регулярных выражениях вообще. Что это такое? Это текстовый шаблон, согласно которому идет разбор текста. Конкретней далее: мы имеем текст, который подвергаем обработке, и шаблон, применяемый в процессе этой  самой обработки к тексту. Получается:

  • процессор сканирует текст символ за символом;
  • применяет к нему шаблон с текущей позиции и далее по тексту, продвигаясь все дальше и дальше,пока есть соответствие шаблону;
  • и в случае полного совпадения шаблону, выдает полученный результат в виде строки;
  • а потом продолжает сканирование с места, на котором завершилось последнее полное соответствие шаблону.

Примерно так все происходит. Но если честно, в некоторых случаях я совершенно не понимаю, что происходит и остается лишь рассматривать полученный результат и принимать его на веру. Вот потому так важно иметь под рукой неплохой инструмент для быстрой отладки регулярных выражений.

Должен предупредить, что непосредственно алгоритмы 1С по раскраске программного кода здесь, в этой статье, представлены не будут. Но мы выполним всю предварительную работу по построению регулярного выражения и получим нечто такое:

(//[ \t]*(?:Процедура|Функция|Procedure|Function).*(?:\n[ \t]*//.*$)*)(?=\s*(?:(?:Процедура|Функция|Procedure|Function)|(?:^[ \t]*&.*$)))|(//.*$(?:\n[ \t]*//.*$)*)|(^[ \t]*#(?:Область|КонецОбласти).*$)|(^[ \t]*&.*$)|("[^"]*"(?:"[^"]*")*)|([-+]?\d+\.?\d*)|('[-./: 0-9]*')|((?:[_А-ЯЁа-яёA-Za-z][_А-ЯЁа-яёA-Za-z0-9]*)(?=(?:\s*\()))|((?:[_А-ЯЁа-яёA-Za-z][_А-ЯЁа-яёA-Za-z0-9]*))

С его помощью мы препарируем программный модуль 1С, выделив различные элементы, а именно, и в таком порядке:

  • описания процедур и функций (в виде комментариев);
  • комментарии (прочие, разные);
  • области программных модулей;
  • директивы компилятору;
  • литералы: Число, Дата, Строка;
  • имена процедур, функций;
  • прочие идентификаторы переменных и/или зарезервированные слова;
  • спецсимволы: ()[] =+-и др.

Выделенные элементы могут быть использованы в раскраске программного модуля, каждый своим цветом.

Фактически, я только что привел параметрическое описание регулярного выражения человеческим языком:

<Раскраска> = <Описание метода>|<Комментарий>|<Область>|<Директива компилятору>|<Литерал Строка>|<Литерал Число>|<Литерал Дата>|<Имя метода>|<Переменная или зарезервированное слово>

Немного позже мы занесем его в построитель,  а пока что начнем конструирование с простых примеров.

Акцентирую так же ваше внимание на том, что это только пример и он не претендует на полную завершенность. Скорее, это демонстрация возможностей.

Перейти к оглавлению

Строим первые шаблоны.

Перед вами окно построителя регулярных  выражений:

По ссылке «Синтаксис регулярных выражений» завсегда можно получить короткую справку. Обращаясь к справке, рассмотрим предлагаемые ниже простейшие шаблоны, в дальнейшем они будут использованы при конструировании более сложных выражений.

В обл.1т вставим текст из прилагаемого файла модуль.txt. В обл.2 наберем с клавиатуры или скопируем через буфер обмена шаблон „//.*$“. Немного помедитировав над этим шаблоном с помощью справки, узнаем в этом шаблоне строку комментария, которая начинается с // и далее произвольный текст до конца строки. Как видите, начало строки „^“ мы не указали, ибо комментарий может быть начат с любой позиции строки текста.

После нажатия кнопки «Найти» получим результат поиска в обл.8, удовлетворяющий шаблону (см. картинка ниже):

Обратите внимание, что основная закладка Текст имеет две вложенные закладки (внизу):

  • Текст, обл.1т – сюда мы вставляем текст, используемый при отладке регулярного выражения;
  • Раскраска, обл.1р – здесь показывается полученный результат, будучи выделен цветом. Красным цветом все, что удовлетворяет шаблону; зеленым – выбранная двойным щелчком мыши строка в обл.8.

Обл.9 содержит тот же шаблон, что и в обл.2. Но это сейчас, когда мы рассматриваем наипростейший шаблон. А в дальнейшем, именно здесь можно будет подсмотреть полностью собранное до кучи сложное регулярное выражение.

Для дальнейшего, параметризуем это простенькое выражение, - выполним присвоение имен.  Как правило, эти имена более громоздкие, чем самое выражение, но… они написаны человеческим языком, что наводит на мысли; заодно «документируют» проделанную работу. Спустя годы, вернись вы к рассмотрению этих же диких символьных конструкций, не будет значительных  затруднений в их интерпретации (проверено на себе). Итак:

  • давим кнопку обл.3;
  • в открывшемся конструкторе выражений выделяем фрагмент „.*“ нашего выражения;
  • вызываем контекстное меню, пункт «Присвоить имя значению»;
  • вводим имя «Текст»;
  • потом выделяем полученное после подстановки имени выражение, и таким же образом присваиваем имя «Строка комментария»

Получим это:

  

Немного полюбовавшись результатом, нажав кнопку «Сохранить», имеем в итоге выражение  <Строка комментария> в обл.2, что приводит к тому  же результату поиска:

Первые регулярные выражения в построителе мы получили, с помощью конструктора выражений.  Причем, вызвали его, нажав кнопку обл.3.  Если в обл.2 выражение есть ни-что-иное, как параметр (см. на картинке выше), можно получить доступ к редактированию значения этого параметра, нажав  кнопку обл.4.

Давайте теперь занесем в построитель выражение раскраски.  Для этого, сначала наберем выражение <Раскраска> (кнопка обл.3), а потом нажмем кнопку обл.4 и сформируем значение параметра <Раскраска> (разумеется, лучше скопировать в конструктор, а не набирать). Приведу еще раз текст выражения:

<Раскраска> = <Описание метода>|<Комментарий>|<Область>|<Директива компилятору>|<Литерал Строка>|<Литерал Число>|<Литерал Дата>|<Имя метода>|<Переменная или зарезервированное слово>

По окончании этого, можете на закладке «Параметры» просмотреть список всех параметров, подготовленных в процессе работы. Новые появляются в этом списке по нажатию любой из кнопок, запускающих в работу регулярное выражение  - «Тест», «Найти», «Заменить». Нажмите «Тест» – параметров прибавится в список. (Построитель  ругнется на пустые значения параметров, но мы это игнорируем.). Редактировать  значения параметров можно уже отсюда, кликая  мышью в колонке значений.

Другая возможность – на закладке «Дерево». Структуру текущего параметра в виде дерева можете получить нажатием кнопки обл.5. Мне представляется работа с параметрами из дерева наиболее удобной. Но некоторые операции возможны только из списка. По ходу ознакомитесь со всем этим.

А мы перейдем к редактированию новых параметров, их тестированию…

Перейти к оглавлению

Области программных модулей  и директивы компилятору

Область программного модуля, - указание редактору модулей:

  • занимает целую строку от ^ и до $;
  • начинается символом #, перед которым можно натыкать пробелов;
  • а за ними или слово Область, обозначающее начало области, с последующим наименованием области;
  • или слово КонецОбласти.
<Область> = (?:^<ПР>#(?:Область|КонецОбласти)<Текст>$)
<ПР> = [ \t]*
<Текст> = .*

Конструкция (?:…) группирует шаблон. <Текст> - это имя области, когда требуется. Параметром  <ПР> обозначен пустой промежуток в строке, из пробелов и горизонтальных табуляций.

Значения определили и можем запустить в отладку выражение «Область», воспользовавшись контекстным меню, команда «Выполнить поиск». Смотрим картинку:

Директива компилятору теперь покажется совсем знакомой и простой:

  • занимает целую строку от ^ и до $;
  • начинается символом &, перед которым можно натыкать пробелов;
  • а за ними, собственно, директива.
<Директива компилятору> = (?:^<ПР>&<Текст>$)
<ПР> = [ \t]*
<Текст> = .*

Перейти к оглавлению

Литералы

<Литерал Число> = [-+]?\d+\.?\d*

<Литерал Дата> = '[-./: 0-9]*'

<Литерал Строка> = "[^"]*"(?:"[^"]*")*

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

В выражении даты главное, пожалуй, это апострофы, по которым мы узнаем дату, а внутри  апострофов винегрет из цифр и разделителей. Причем, наше выражение никак  не определяет  порядок следования их. Но для наших целей этого вполне достаточно.

Тем из вас, кто впервые имеет дело с регулярными выражениями, литерал типа Строка может показаться несколько сложным. Но давайте немного отформатируем выражение:

1.  "[^"]*"
2.  (?:"[^"]*")*

Первый фрагмент описывает строчные  литералы как последовательность любых символов (кроме апострофов, но включая перенос на следующую строку \n), заключенную в кавычки, размещенную в одной или нескольких строках. Например:

А = "строчный литерал";
Б = "а это строчный литерал
    |с переносом на следующую строку";

Второй фрагмент  учитывает, что в составе литерала могут быть кавычки и они должны быть удвоены:

А = "строчный литерал""с апострофами";
Б = "строчный литерал""с апострофами и
    |с переносом на следующую строку";

Перейти к оглавлению

Имена процедур и функций, переменные и зарезервированные слова

<Идентификатор> = (?:[_А-ЯЁа-яёA-Za-z][_А-ЯЁа-яёA-Za-z0-9]*)

<Переменная или зарезервированное слово> = <Идентификатор>

<Имя метода> = <Идентификатор>(?=(?:<ПС>\())

<ПС> = \s*


Идентификаторы переменных и пр. сущностей в 1С устроены просто: начинаются с буквы или символа подчеркивания, а за ними могут следовать буквы, цифры, символ подчеркивания в любых сочетаниях, что и отражает шаблон для идентификатора.

Я специально не разделяю переменные и зарезервированные слова 1С, хотя и предполагается в дальнейшем их раскраска разными цветами. И вот почему. К глубокому прискорбию, мне  выделить зарезервированные слова никак не удается по той простой причине, что в библиотеке VBScript.RegExp задекларированная граница слова \b распространяется только на слова, написанные буквами [A-Za-z]. Поэтому, пожелай я выделить только слово шаблоном \bЕсли\b в тексте, ничего хорошего из этого не выйдет. И это не было бы так печально, если бы мы могли посмотреть, а что стоит перед этим словом. Посмотреть, что стоит за ним – можем (т.н. заглядывание вперед) ; что перед ним – увидеть возможности нет (заглядывание назад). Так что, выделяем зарезервированные слова вместе с именами переменных, а потом уж, имея список зарезервированных слов, разделяем их перед раскрашиванием текста. А вот как получить, не напрягаясь, перечисление всех зарезервированных слов, я расскажу немного ниже.

Зато мы можем легко отделить имена процедур и функций из всей массы идентификаторов, ибо, вслед за таким идентификатором следует открывающая скобка. И здесь приходит на помощь  упомянутое  выше заглядывание вперед.  Вот эта конструкция:

<Имя метода> = <Идентификатор>
               (?=
                   (?:
                       <ПС>\(
                   )
               )

Идентификатор являет собой  имя процедуры или функции тогда и только тогда, когда за ним следует открывающая скобка. Конструкция (? =…) как раз и позволяет  посмотреть, что там следует за идентификатором. Но только посмотреть,-  дальше разбор программного модуля идет с позиции, где закончился сам идентификатор.

В конструкции (? =…) мы указываем, что за идентификатором должна быть открывающая скобка \(  (экранируем!), а перед ней быть может любое сочетание пробельных символов (мало ли у кого какая фантазия при оформлении программного кода).

И напоследок рассмотрим самые сложные в этой статье...

Перейти к оглавлению

Комментарии и описания методов (процедур и функций)

Под комментарием будем понимать последовательность строк комментариев. Эта последовательность может быть прервана или пустой строкой, или чем-то другим, что не является комментарием

<Комментарий> = (?:<Строка комментария>(?:\n<ПР><Строка комментария>)*)

<Строка комментария> = (?://<Текст>$)

<ПР> = [ \t]*

<Текст> = .*

<Строка комментария> была рассмотрена нами раньше. Если выполнить это выражение на нашем примере, получим три найденных результата:

В первом комментарии – 2 строки, во втором – 8 строк.

Но и это еще не все. Мы можем специального вида комментарии, используемые для описания процедур и функций, выделить отдельно.

<Описание метода> = (?://<ПР><Метод><Текст>(?:\n<ПР><Строка комментария>)*)(?=<ПС>(?:<Метод>|<Директива компилятору>))

<Метод> = (?:Процедура|Функция|Procedure|Function)

<Строка комментария> = (?://<Текст>$)

<ПР> = [ \t]*

<Текст> = .*

<Директива компилятору> = (?:&<Текст>)

Какие моменты отражены в этом выражении? Этот специальный комментарий, в первой строке после //, имеет одно из зарезервированных слов. Список слов вынесен отдельно под именем <Метод>. Далее в  строке следует текст -  краткое описание метода. Потом последовательность знакомых строк комментариев. Но… после такого специального комментария следует либо директива компилятору, либо описание заголовка метода опять-таки с зарезервированного слова <Метод>. Отформатируем для наглядности сие описание:

1.  (?://<ПР><Метод><Текст>
        (?:\n<ПР><Строка комментария>)*
    )
2.  (?=<ПС>
        (?:<Метод>|<Директива компилятору>)
    )

Первая группа – это собственно комментарий (с фиксированным началом); вторая – заглядывание вперед, что же следует за ним. Запустив на выполнение это выражение, получим один результат:

Перейти к оглавлению

Остались только спец.символы

И никаких особенных действий для выделения их по тексту программного модуля предпринимать не будем.

Правда, остался открытым вопрос, все ли мы сделали правильно? Ничего не пропустили? Потому для контроля можно будет

  • выполнить замену всех найденных вхождений строк на спецсимвол •;
  • полученый результат скопировать в обл.1т построителя;
  • и выполнить поиск символов на основании шаблона [^•\s]+, исключающего пробельные символы и символ подстановки.

Ожидаемый результат – это только спецсимволы в программном модуле:

Перейти к оглавлению

Обсудим полученный результат

Обратим свои взоры в сторону дерева регулярного выражения. Можно развернуть его полностью в режиме просмотра. Ну, а я попросту распечатал его. Немного пошаманил над полученной распечаткой и получил такую картинку:

Дерево кроме наименований и значений параметров включает  также колонки З(амещать) и И(звлечь). Как вы уже догадались, первая повелевает при сборке выражения делать подстановки значений параметров вместо наименований;  вторая указывает на те параметры, соответствия которым необходимо извлечь во время обработки текстов.  Но здесь есть одна неприятная особенность, связанная с реализацией построителя выражений. Имена этих извлекаемых параметров должны быть уникальны. Но… что мы видим на картинке? Я пытаюсь извлечь во время обработки программного модуля директивы компилятору, выставляю флажок напротив имени <Директива компилятору>, и автоматически он выставляется во всех других местах, где эта директива задействована, в данном случае, когда мы делаем заглядывание вперед в <Описание метода>. На картинке это видно…

Как я поступаю в таком случае? Попросту замещаю в таких критических точках имена параметров их значениями. В нашем случае, редактирую значение параметра <Описание метода>, и в его определении делаю замену параметра <Директива компилятора> его  значением, - конструктор выражений позволяет это сделать легко.

Мы долго подбирались к конечному результату всех наших усилий, а именно, к программному коду 1С. За небольшими изменениями он может быть использован при программировании раскраски модулей. Особенностью его является не только то, что мы имеем удобочитаемый код, но и то, что комментарии в начале этого кода могут быть подгружены (при необходимости) в построитель регулярных выражений для последующих творческих изысканий.

//	Выражение = <Раскраска>
//
//	Левая скобка параметра = <
//	Правая скобка параметра = >
//	Шаблон имени = [А-ЯA-Z][-_ А-Яа-я0-9A-Za-z]*?
//
//	+-	<Раскраска> = <Описание метода>|<Комментарий>|<Область>|<Директива компилятору>|<Литерал Строка>|<Литерал Число>|<Литерал Дата>|<Имя метода>|<Переменная или зарезервированное слово>
//	++	<Область> = (^<ПР>#(?:Область|КонецОбласти)<Текст>$)
//	++	<Директива компилятору> = (^<ПР>&<Текст>$)
//	++	<Описание метода> = (//<ПР><Метод><Текст>(?:\n<ПР><Строка комментария>)*)(?=<ПС>(?:<Метод>|(?:^<ПР>&<Текст>$)))
//	++	<Комментарий> = (<Строка комментария>(?:\n<ПР><Строка комментария>)*)
//	++	<Литерал Строка> = ("[^"]*"(?:"[^"]*")*)
//	++	<Литерал Число> = ([-+]?\d+\.?\d*)
//	++	<Литерал Дата> = ('[-./: 0-9]*')
//	++	<Имя метода> = (<Идентификатор>(?=(?:<ПС>\()))
//	++	<Переменная или зарезервированное слово> = (<Идентификатор>)
//	+-	<ПС> = \s*
//	+-	<Метод> = (?:Процедура|Функция|Procedure|Function)
//	+-	<Идентификатор> = (?:[_А-ЯЁа-яёA-Za-z][_А-ЯЁа-яёA-Za-z0-9]*)
//	+-	<ПР> = [ \t]*
//	+-	<Текст> = .*
//	+-	<Строка комментария> = //<Текст>$


idТекст = ".*";
idИдентификатор = "(?:[_А-ЯЁа-яёA-Za-z][_А-ЯЁа-яёA-Za-z0-9]*)";
idПС = "\s*";
idСтрокаКомментария = "//" + idТекст + "$";
idМетод = "(?:Процедура|Функция|Procedure|Function)";
idПР = "[ \t]*";
idПеременнаяИлиЗарезервированноеСлово = "(" + idИдентификатор + ")";
idИмяМетода = "(" + idИдентификатор + "(?=(?:" + idПС + "\()))";
idЛитералДата = "('[-./: 0-9]*')";
idЛитералЧисло = "([-+]?\d+\.?\d*)";
idЛитералСтрока = "(""[^""]*""(?:""[^""]*"")*)";
idДирективаКомпилятору = "(^" + idПР + "&" + idТекст + "$)";
idОбласть = "(^" + idПР + "#(?:Область|КонецОбласти)" + idТекст + "$)";
idКомментарий = "(" + idСтрокаКомментария + "(?:\n" + idПР + idСтрокаКомментария + ")*)";
idОписаниеМетода = "(//" + idПР + idМетод + idТекст + "(?:\n" + idПР + idСтрокаКомментария + ")*)(?=" + idПС + "(?:" + idМетод + "|(?:^" + idПР + "&" + idТекст + "$)))";
idРаскраска = idОписаниеМетода + "|" + idКомментарий + "|" + idОбласть + "|" + idДирективаКомпилятору + "|" + idЛитералСтрока + "|" + idЛитералЧисло + "|" + idЛитералДата + "|" + idИмяМетода + "|" + idПеременнаяИлиЗарезервированноеСлово;
idPattern = idРаскраска;
	
RegExpLocal = Новый COMОбъект("VBScript.RegExp");
	
RegExpLocal.Multiline = Истина;
RegExpLocal.Global = Истина;
RegExpLocal.IgnoreCase = Истина;
RegExpLocal.Pattern = idPattern;
	
Найдено = RegExpLocal.Execute(ОбрабатываемыйТекст);
Для каждого Стр Из Найдено Цикл

	Начало = Стр.FirstIndex;
	Длина = Стр.Length;
	Значение = Стр.Value;
		
	vidОписаниеМетода = Стр.SubMatches(0);
	vidКомментарий = Стр.SubMatches(1);
	vidОбласть = Стр.SubMatches(2);
	vidДирективаКомпилятору = Стр.SubMatches(3);
	vidЛитералСтрока = Стр.SubMatches(4);
	vidЛитералЧисло = Стр.SubMatches(5);
	vidЛитералДата = Стр.SubMatches(6);
	vidИмяМетода = Стр.SubMatches(7);
	vidПеременнаяИлиЗарезервированноеСлово = Стр.SubMatches(8);
		
КонецЦикла;

Перейти к оглавлению

Обещанное: список зарезервированных слов

Помнится, я стенал по поводу того, что затруднительно выделить зарезервированные слова одним регулярным выражением. Но полный перечень этих слов мы можем получить быстро и легко. Обратимся к справке 1С:Предприятие, Встроенный язык, Общее описание встроенного языка, Формат исходных текстов программных модулей, Формат программного модуля, Зарезервированные слова.

  •  через буфер обмена скопируем все зарезервированные слова в обл.1т построителя выражений
  • используем для поиска зарезервированных слов <Идентификатор>
  • на закладке «Уникальные» отсортируем список слов
  • выделим все слова или только часть их
  • вызовем контекстное меню, присвоим выделенным словам имя.

В результате, в списке параметров с указанным именем будет создано перечисление ключевых слов.

Для примера, я создал такие:

<Зарезервированные слова> = (?:<Зарезервированные слова русские>|<Зарезервированные слова английские>)
<Зарезервированные слова русские> = Цикл|Функция|Тогда|Процедура|Продолжить|Прервать|Попытка|Пока|По|Перем|Перейти|Новый|Не|КонецЦикла|КонецФункции|КонецПроцедуры|КонецПопытки|КонецЕсли|Каждого|Исключение|ИначеЕсли|Иначе|Или|Из|И|Если|Для|Выполнить|ВызватьИсключение|Возврат
<Зарезервированные слова английские> = While|Var|Try|To|Then|Return|Raise|Procedure|Or|Not|New|In|If|Goto|Function|For|Execute|Except|EndTry|EndProcedure|EndIf|EndFunction|EndDo|ElsIf|Else|Each|Do|Continue|Break|And

Перейти к оглавлению

Построитель регулярных выражений

Основные элементы управления

Обл.2 – проектируемое регулярное выражение. Рекомендуется представлять его одним параметром, как на картинке. Для выбора готовых выражений (параметров), наберите в этом поле один-два фрагмента его наименования и в сформированном списке выполните окончательный выбор.

Кнопки «Тест», «Найти», «Заменить» - основные операции с использованием регулярного выражения из обл.2. Разумеется, любую из них предваряет процедура сборки выражения из его параметрического описания. Готовое после сборки выражение можно посмотреть в обл.9.

Обл.3 – по нажатию этой кнопки открывается конструктор выражений для редактирования содержимого обл.2.

Далее, элементы управления в обл.4-7 используются только тогда, когда выражение в обл.2 - параметр.

Обл.4 - по нажатию этой кнопки открывается конструктор выражений для редактирования значения параметра из обл.2

Обл.5 – значение выражения в обл.2 представляется в виде дерева;

Обл.6 – переключение на список параметров, активизируется строка с параметром из обл.2

Обл.7 – Почти то же самое, что и кнопка «Найти» для текущего выражения в обл.2, но перед началом поиска в  обл.1т подгружается отладочный текст, связанный с параметром (см. ниже).

Перейти к оглавлению

Текст

На странице «Текст» имеются внизу две закладки: «Текст» И «Раскраска».  С раскраской все понятно. А вот обл.1т, в которую вставляется  текст для тестирования регулярных выражений, требует пояснений.

Кроме основных команд, связанных с текстовым полем, в контекстном меню есть еще две команды.

«Сохранить в буфер» - по выбору этой команды, отладочный текст «закрепляется» за параметром из обл.2.

«Восстановить из буфера» - этой командой «закрепленный» за параметром из обл.2 отладочный текст подгружается в текстовое поле обл.1т.

Восстановление отладочного текста выполняется и в других случаях:

  • по нажатию кнопки обл.7, запускающей на выполнение выражение из обл.2;
  • при запуске выражения на выполнение из дерева или списка параметров.

Перейти к оглавлению

Найдены

На этой закладке представлен результат поиска по отладочному тексту согласно регулярного выражения из обл.2.

Двойной клик мыши в обл.8 осуществит подсветку найденной строки в раскраске обл.1р.

Обл.10 – это общее количество извлеченных SubMatches, в контексте этой обработки – количество извлеченных параметров выражения. Рекомендуется конструировать выражение таким образом, чтобы имена этих параметров были уникальны, не повторялись в выборке. Тогда, в обл.11 имеем перечисление всех выбранных параметров. При указании строки в обл.12 дается расшифровка имени найденного значения в обл.13.

Перейти к оглавлению

Уникальные

На этой закладке представлены найденные уникальные значения параметров регулярного выражения с пометкой И(звлечь). Переключение между параметрами выполняется элементом обл.14. Числовые значения параметра соответствуют индексу параметра в SubMatches; имя параметра отображается в обл.15. Значению переключателя, равному -1, соответствует общий список найденных строк в обл.8. При активизации строки в обл.16, приводится список ссылок найденных значений в обл.17. Двойной клик в обл.17 осуществит подсветку найденной строки в раскраске обл.1р.

Из выделенных значений обл.16, посредством команды контекстного меню «Присвоить имя значению», можно создать  перечисление в списке параметров под указанным именем. Пример здесь.

Перейти к оглавлению

Замены

На этой закладке в обл.19 можно просмотреть результат  замены найденных значений согласно указанному шаблону в обл.18.

Перейти к оглавлению

Дерево

На этой закладке можно просмотреть древовидную структуру регулярного выражения. Переключатель обл.20 регулирует список выражений:

  • текущее выражение, которое мы имеем в обл.2;
  • основные выражения – это все наши проекты. Др. словами,параметры, не задействованные в описаниях других выражений
  • все выражения, независимо от уровня иерархии

Кнопка обл.21 разворачивает полностью дерево в режиме просмотра.

Кнопка обл.22 сворачивает и возвращает дерево в режим редактирования.

Кнопка обл.23 обновляет дерево. Иногда, автоматическое обновление не выполняется. Например, после выбора параметра в обл.2.

Кнопка обл.24 переключает дерево между режимами просмотра-редактирования.

Из контекстного меню осуществляется запуск текущего выражения на выполнение: тестирование или поиск. При  этом,

  • текущее выражение устанавливается в обл.2,
  • восстанавливается отладочный текст, связанный с выражением,
  • а потом, собственно, выполняется команда «Тест» или «Найти».

Через контекстное меню вы можете так же переключиться на выражение в списке параметров.

И, разумеется, двойной клик мыши в колонке «Значение» запустит конструктор выражений на редактирование значения параметра.

Перейти к оглавлению

Параметры

Из этого списка параметров, двойным кликом мыши в колонке «Значение» можно запустить конструктор выражений на редактирование значения параметра. Но так же представляют интерес и другие возможности, доступные только на этой закладке.

Мне представляется наиболее удобным использовать в качестве ограничительных скобок параметров – угловые.  Но это не очень красиво выглядит, когда в обработке находятся HTML  и/или XML документы, использующие эти же ограничители для тэгов. Так что, вы можете при необходимости ввести другие ограничители. Разумеется, во всех имеющихся выражениях, включая их варианты,  будет выполнена замена ограничителей.

Шаблон имени носит скорее технический характер. Возможно, кто-то из вас пожелает его ужесточить, назначив таковым <Идентификатор>. Я постарался, по возможности, имена параметров нормализовать, устранив концевые пробелы и заменив последовательности пробелов одним; отследить уникальность имен параметров, но иногда это затруднительно сделать, когда в именах имеются пробелы, как сейчас. Но вот так исторически сложилось. И это  не было у меня проблемой до сих времен, - надо быть лишь аккуратным в работе.

Иногда хочется иметь ограничитель  в конце обрабатываемого текста. Здесь вы можете указать этот конец текста в виде последовательности символов. Во время обработки он будет добавлен в конец тестового текста.

Ряд операций доступен из  контекстного меню.

"Выполнить тестирование", "Выполнить поиск":

- осуществляется запуск текущего выражения на выполнение: тестирование или поиск. При  этом,

  • текущее выражение устанавливается в обл.2,
  • восстанавливается отладочный текст, связанный с выражением,
  • а потом, собственно, выполняется команда «Тест» или «Найти».

"Переименовать параметр":

 -введенное новое имя устанавливается  во всех имеющихся выражениях , включая их варианты.

"Пометить на удаление параметр", "Удалить все параметры".

"Скопировать":

- осуществляет операцию копирования существующего параметра с присвоением ему другого (уникального) имени.

Перейти к оглавлению

Код 1С

Во время сборки регулярного выражения формируется  также и программный код 1С. Всегда  с методом Execute. Должен признать это некоторой недоработкой, но пока что так.

Желательно использовать этот код совместно с комментариями, ибо это не только комментарии, но и «путь назад, в построитель». При необходимости, из комментариев можно полностью восстановить параметрическое выражение в построителе. Или в виде комментариев передать его кому-то другому, при условии, что получатель тоже использует этот же построитель выражений.

На этой закладке доступны несколько команд из контекстного меню.

«Заполнить весь проект»

В текстовое поле в виде комментариев записываются все параметры и их значения (без вариантов). Можно использовать для создания резервной копии выражений или для обмена.

«Включить в проект»

Параметры и их значения восстанавливаются из комментариев и заносятся в список параметров. Во время выполнения этой операции, сравниваются значения импортируемых  параметров с уже имеющимися в списке параметров и в диалоговом  окне  предлагается осуществить выбор дальнейших действий. Если импортируемый параметр уже есть в списке параметров с другим значением, "старое" значение при импорте сохраняется в вариантах.

«Сохранить в файл», «Прочитать из файла»

В комментариях не нуждаются

Перейти к оглавлению

Конструктор выражений

Предполагается, что конструктор выражений облегчит нам (вам) жизнь в процессе их построений.  И набор кнопок  в обл.1 тому будет порукой. Но как по мне, большая часть из них – от Лукавого. Никакого выигрыша в скорости проектирования выражений не дают, а только лишь выручают в случае склероза,- помогают вспомнить все доступные элементы шаблонов, не прибегая к справке. Но таковы традиции жанра.

По своему действию они немного различаются.

"Замшевые" кнопки позволяют вставить элемент шаблона в текущую позицию курсора окна редактирования выражения в обл.4. или заместить выделенный фрагмент выражения.

"Бирюзовые" либо вставляют "пустые" элементы, либо обрамляют загодя выделенные фрагменты выражения в обл.4. Это бывает удобно, ибо частенько приходится группировать элементы.

"Зеленая" кнопка вообще не есть элемент шаблона напрямую. Она обозначает пустой параметр с обрамляющими скобками (угловыми, по умолчанию).  Активизируется комбинацией клавиш Shift+Ctrl+ПРОБЕЛ. В текущую позицию курсора в обл.4 вставляет угловые скобки и помещает фокус в обл.3 для набора имени параметра.

В обл.3 мы также можем попасть по нажатию Ctrl+ПРОБЕЛ, без вставки угловых скобок.

Имя параметра или его значение можно вставить из списка параметров  в обл.2. Двойной клик мыши выбирает имя. Прочие действия возможны из контекстного меню. Полагаю, в комментариях не нуждаются. Быструю фокусировку списка обеспечивает комбинация Ctrl+Alt+ПРОБЕЛ.

Во время редактирования выражения в обл.4, выделенным фрагментам можно присваивать имена. Таким нехитрым образом создаются новые параметры. После чего помещаются в конец списка обл.2  на зеленом фоне. Замечу, что это не единственный способ. Можно ведь попросту включать новые параметры в состав выражения, а потом уже из дерева или из списка редактировать их значения.

Для замены параметра в выражении его значением, сначала установите курсор в  область имени параметра (или выделите его полностью), а потом только вызовите контекстное меню с командой «Заменить имя значением».

Я воспользовался тем простым фактом, что символы "Табуляция" и "Перевод строки" в шаблоне регулярного выражения  вы не встретите (разве что их обозначения \t и \n). И потому использовал их для удобного форматирования выражений. Можно вставлять их в выражение где угодно, и сколько угодно, лишь бы было удобно для обзора.

В любое время это "форматирование" можете выключить кнопкой "Удалить форматирование", и включить кнопкой "Восстановить форматирование".

Есть автоформатирование. В большинстве случаев срабатывает красиво. Иногда дает сбои, но руки нам по что? На картинке ниже приведен пример автоматического форматирования, воспринимается визуально много легче, чем в одну строку.

При нажатии кнопки "Сохранить", естественно, все форматирующие символы удаляются из шаблона регулярного выражения, но восстанавливаются, когда вы опять приступаете к работе в конструкторе выражений.

В процессе набора  имен в обл.3, предлагается список выбора уже существующих параметров. Обновляется  в процессе набора текста в обл.3.  В позицию курсора в обл.4, после выбора из этого динамичного списка, вставляется

  • либо имя параметра;
  • либо его значение, если строка в списке помечена слева жирной точкой.

Процесс проектирования регулярных  выражений мне зачастую напоминает  танец с бубном: пока получишь окончательный вариант, - перепробуешь не один из них. Поэтому, возможность сохранять наработанные "интересные" варианты может показаться не лишней.

Всякий раз, когда вы заходите на страницу "Варианты", - создается вариант  (измененного!) выражения (если его еще нет в списке). "Интересные" варианты можно

  • поименовать в списке обл.5;
  • просмотреть в обл.6;
  • прокомментировать в обл.7;
  • пометить как "архивированный" нажатием кнопки в обл.8. и этой же кнопкой исключить из архива;
  • и, разумеется, выбрать для дальнейших модификаций на закладке "Редактор" из списка обл.5.

Надеюсь, что этого краткого описания конструктора выражений будет достаточно, чтобы начать работу. А навыки потом уже какие-то выработаются в процессе.

Перейти к оглавлению

А дальше что?

Уже подхожу к завершению темы. Простите, сам не знал, что это мне будет стоить стольких буков. Но таки осмелюсь еще написать вкратце о планах, применительно к этой работе.

Я давно уже смотрю масляными глазками на внешнюю компоненту А.Орефкова, RexV8.  Хотелось бы опробовать эту более мощную альтернативу VBScript.RegExp. А значит, появится еще один конструктор выражений в составе этой обработки.

И еще... как у всех программистов, по завершении работы. Многое хотелось бы изменить в том, что сделано. В будущем. Всего более напрягает, что наработанные тяжким трудом регулярные выражения хранятся не где-нибудь, а в настройках обработки. Не раз было так, что сижу полусонный, медитирую над очередным выражением, творю; параллельно программирую эту самую обработку, а потом- БАЦ... запускаю изменения на тестирование и... нет уже тех выражений, ибо не было нормального завершения программы. Правда, вам это не грозит, почти... И то, что имеется возможность выгрузки параметров в файл,- лишь частичное решение проблемы.

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

И вообще, мне видится эта обработка в составе конфигурации. Разумеется, конфигурации для программиста. Такая уже есть, жив буду - летом закончу полностью и опубликую. И в нее, в перспективе, включу и обработку по работе с регулярными выражениями. И будут они в справочниках записаны, а настройки выражений  в регистрах сведений. И исчезнут некоторые вскользь упомянутые выше перекосы...

Перейти к оглавлению

Литература

  1. Михайлов А., 1С:Предприятие 7.7/8.0 Системное программирование
  2. Фридл Д., Регулярные выражения
  3. Гойвертс Я., Регулярные выражения. Сборник рецептов
  4. Фицджеральд М., Регулярные выражения. Основы
  5. Форта Б., Регулярные выражения. 10 минут на урок

Перейти к оглавлению

Вложения

Во вложении к этой статье, в архивном файле, вы найдете все упомянутое в статье, а именно

  • коротенькую chm-справку по регулярным выражениям;
  • текст программного модуля, использованный в демонстрациях;
  • программный код 1С для раскраски;
  • файл внешней обработки.

Особенности: используются модальные и синхронные вызовы.

Желаю приятного просмотра!

Обновления

14.03.2017 13:00 - Косметические исправления по форме. Перезалито.

15.03.2017 16:30 - Не регулировалась высота текстового поля обл.4  в конструкторе выражений. Исправлено. Перезалито.

24.03.2017 09:30 - Слегка приглажен код. Добавлено оповещение пользователям об изменении публикации (на форме гиперссылка Статья на infostart.ru). Настройка оповещений описана в статье

Скачать файлы

Наименование Файл Версия Размер
Построитель регулярных выражений, версия 1.0

.zip 118,21Kb
138
.zip 118,21Kb 138 Скачать

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kauksi 211 13.03.17 16:01 Сейчас в теме
Лет 12 назад использовал регулярные выражения чтобы парсить адреса для прокси. А зачем они в реальном мире так и не понял.
7. Fragster 1119 14.03.17 11:12 Сейчас в теме
(1) отключать "защиту от опасных действий" для конкретных баз. Кстати, не увидел этого (более актуального) кейса в статье.
2. romasna 285 13.03.17 16:06 Сейчас в теме
Имхо, они избавляют от нервенной болезни при парсинге традиционными (процедурными) методами.
3. su_mai 89 14.03.17 09:05 Сейчас в теме
Большая работа, однако в платформе 1С нет и похоже не будет уже "никогда" :) поддержки регулярных выражений. Жаль, но использование скриптов не всегда допустимо. Для отладки RegExp я использую Notepad++.
5. romasna 285 14.03.17 10:18 Сейчас в теме
(3) Ну что с того, что Фирма 1С все еще не предоставила нам в работу объект под названием РегулярныеВыражения? Дык ведь и препон к их использованию она не ставит никаких. К тому же, у нас есть Орефков. Я не успел опробовать, но полагаю, что наши возможности в плане использования регулярных выражений такие же, как и у разработчиков 1С, благодаря его компоненте.
Ну, а кто чем пользуется при отладке выражений, - это дело вкуса и привычек. Множественность подходов только приветствуется. Предлагаемый здесь максимально приближен к среде, в которой мы работаем. Коды открытые. Если что-то не нравится в их работе и вас не стошнит от них, - меняйте себе на здоровье, нам на потеху.
8. starik-2005 2810 14.03.17 11:13 Сейчас в теме
(3)
Большая работа, однако в платформе 1С нет и похоже не будет уже "никогда" :) поддержки регулярных выражений

Это не совсем так (даже совсем не так). Смотрите тут.
Vladimir Litvinenko; +1 Ответить
28. su_mai 89 17.03.17 03:54 Сейчас в теме
(8) Это понятно, часто можно найти выход, но такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
29. starik-2005 2810 17.03.17 10:24 Сейчас в теме
(28)
такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
Такой код уже много куда включен. И это явно задекларированный 1С способ, ибо у них в системе есть объект (ОбъектXDTO), тип которого системой проверяется на петтерн регулярного выражения. Он есть в конфигураторе, так что нельзя сказать, что это не 1С.
4. madonov 164 14.03.17 10:04 Сейчас в теме
Хорошая статья, спасибо.

А еще порадовал заголовок:
"Регулярные выражения – это просто."
А потом статья на 40 экранов =)) .
magdeevik; pvlunegov; AlexGroovy; jaroslav.h; motorsoft; manlak; VladC#; brr; Nelli_A86; ABudnikov; Дмитрий74Чел; Serega-artem; jif; sulfur17; spock; Brawler; ProX; Berckk; TreeDogNight; +19 Ответить
6. romasna 285 14.03.17 10:19 Сейчас в теме
(4)Ах, заголовок... надо же было чем-то привлечь внимание?! Просто рекламный трюк!
10. Fragster 1119 14.03.17 12:27 Сейчас в теме
9. starik-2005 2810 14.03.17 11:14 Сейчас в теме
Хорошая статья, хоть и не читал )))
dgolovanov; корум; +2 2 Ответить
11. Alias 172 14.03.17 12:51 Сейчас в теме
"После снятия режима совместимости, ширина поля приобретает стандартную ширину "40". На это влияет установленное по умолчанию свойство "АвтоМаксимальнаяШирина". Для восстановления прежнего вида необходимо отключить свойство "АвтоМаксимальнаяШирина" для поля." (с) - рекомендации к адаптации интерфейсов к режиму "без совместимости".

Сейчас поля Текст, МаскаРезультата, Код1С и др. в режиме "без совместимости" слишком узкие.
Ну это так, мелочи. Вообще, конечно, обработка монументальная :)
12. romasna 285 14.03.17 12:57 Сейчас в теме
(11)Хм... я долго (не скажу, что вечно!) колупался с этой проблемой, но так и не решил. Спасибо. принято к исполнению. :)
14. romasna 285 14.03.17 13:12 Сейчас в теме
(11) Залил новый архивный файл с изменениями. Еще раз спасибо за подсказку.
13. tormozit 6798 14.03.17 13:05 Сейчас в теме
Отлично. Пользуюсь обычно RegexBuddy для отладки регулярных выражений. Но ограничения VBScript реализации периодически ставят палки в колеса. Поэтому отладчик+конструктор на языке 1С будет полезен. А уж иерархическое описание выражения даже в RegexBuddy отсутствует. В своих разработках я много использовал сложные регулярные выражения и без иерархического описания просто нереально было бы их использовать.

Для создания редакторов кода на встроенном языке и языке запросов на управляемых формах очень пригодится. Вопрос только в скорости работы на больших текстах.
15. romasna 285 14.03.17 13:17 Сейчас в теме
(13) Я тестировал обработку на больших программных модулях, точнее отдельные регулярные выражения. И когда VBScript отрабатывал менее чем за 1сек., секунд 10-15 уходило на обработку результата в цикле и показ на форме этой обработки. Это все, что могу сказать. Ускорить VBScript и иже с ним мы никак не сможем, а все остальное, - надо рассматривать конкретные случаи.
16. bulpi 209 14.03.17 14:49 Сейчас в теме
Автор молодец. Качайте, народ, пока бесплатно! :)
17. romasna 285 14.03.17 14:56 Сейчас в теме
(16)Где бесплатно? Я уж который день пытаюсь удовлетворить на этом ресурсе свои меркантильные интересы... платим денежку 1sm и качаем! ;)
18. AlX0id 14.03.17 15:08 Сейчас в теме
https://regex101.com/ - that's all, folks %)

Не, труд, конечно, большой.. но есть гугл, есть онлайн-сервисы..
RustIG; VladC#; premierex; kraynev-navi; +4 Ответить
25. romasna 285 16.03.17 19:14 Сейчас в теме
(18)Это дело вкуса, прежде всего, привычек... Но я попытался понять, как ты , будучи программистом 1С и настроив сложное(?) выражение в указанном тобой веб-сервисе, в дальнейшем используешь в 1С? Я увидел в этом сервисе 4 разных процессора регулярных выражений на закладке FLAVOR. Это ведь должна быть какая-то внешняя компонента .dll, которую нужно потом использовать в 1С? На VBScript, который я знаю, эти настроенные в веб-сервисе выражения не сработают за небольшим исключением, как не сработал мой уже отлаженный пример в предложенном веб-сервисе (ни с одним из процессоров). Что я упустил?
Многоопытный Сергей Старых в (13), пользуясь довольно навороченным конструктором регулярных выражений (из Гугла!), таки не преминул отметить некоторые неувязочки с 1С. И вот представь.... ты тратишь кучу времени на отладку регулярного выражения в стороннем программном продукте, переносишь в 1С, а он... хе-хе... не работает.
Не лучше ли, когда инструмент максимально интегрирован в среду, где твои выражения будут использоваться?
26. AlX0id 16.03.17 19:51 Сейчас в теме
(25)
Хм. Воткну в шаблон Regexp, нет? )
В веб-сервисе я сделаю первичную отладку выражения, а затем, пользуясь инструментами разработчика того же Сергея, в консоли кода отлажу его вполне себе легко :)
Я, кстати, не фанат усложнять регэкспы, так что бОльшая часть используемых мной - кроссплатформенна вполне. Сложные регэкспы, я все же полез бы ладить в Регексбадди, да.
RustIG; VladC#; +2 Ответить
27. romasna 285 16.03.17 20:13 Сейчас в теме
19. starik-2005 2810 14.03.17 17:19 Сейчас в теме
(0)
Особенности: используются модальные и синхронные вызовы.
А зачем?
20. romasna 285 14.03.17 18:24 Сейчас в теме
(19)Извини меня за непонимание, но к чему этот вопрос? Если тебя действительно волнует ответ на него, скачай обработку и посмотри где я использую эти вызовы и для чего. Я не посчитал нужным убирать модальные вызовы, - мне они не мешают... мне с ними легче. А если мне что-то не нравится в программном коде и он доступен, - я его меняю.
21. starik-2005 2810 14.03.17 23:06 Сейчас в теме
(20)
но к чему этот вопрос?
Так XXI в. на дворе, не?
22. romasna 285 14.03.17 23:49 Сейчас в теме
(21)Лучшее - враг хорошего. ;)
23. starik-2005 2810 15.03.17 10:48 Сейчас в теме
(22)
Лучшее - враг хорошего
Не стоит верить народной мудрости, распиаренной Шахиджаняном - тут он прав лишь в том, что если плохому танцору жмут ботинки, то лучше бы ему и не пытаться танцевать лучше. А кто способен - тот обязан стремиться к лучшему, иначе так и будет ключи подавать Вот, например, лучшее - это регулярные выражения, а хорошее - это сотни if-then-else. Многие по Вашей же логике выбирают второе, "и оправдана сия премудрость чадами ее" (с).
24. romasna 285 15.03.17 13:00 Сейчас в теме
(23)Сергей, я тебя услышал. Я наблюдаю за тобой с того самого момента, как ты сделал свой второй (9) комментарий.
Спасибо за усилия, направленные на улучшение обработки. Немногие способны проявлять столько заботы в случаях, когда им эта обработка, в-общем-то, безразлична. :)
30. sashocq 192 20.03.17 21:57 Сейчас в теме
Труд проделан громадный. Но ценность (в виде накопленного опыта) имеет только для автора велосипеда.
Сам я не вижу смысла менять легкий, удобный и бесплатный Expresso на эту обработку. Он и дерево строит и показывает что где нашлось, все регэкспы делаю в нём. Тут, видимо, кому что. Онлайн сервисами пользоваться не люблю, предпочитаю десктопные приложения. RegexBuddy по скриншотам понравился. Но, похоже, тот же Expresso, только за 40$. Если кто-нибудь посоветует ещё инструментов, естественно, посмотрю с интересом.
Публикацию прочитал по диагонали, ибо бОльшую часть текста автор решает какую-то свою задачу. Саму же обработку оценил по скриншотам - желания скачать не появилось. Создалось впечатление, что это такой большой тяжёлый монстр, с которым можно работать только в полный экран.
31. romasna 285 20.03.17 22:31 Сейчас в теме
(30)Извини, но если бы ты читал, а не "прочитал по диагонали", то заметил бы, что я не решаю здесь никакие задачи, а демонстрирую эту обработку на примере, в основном, для людей, которым это в новинку. Увы, не все такие продвинутые, как ты! ;) Но как ты заметил совершенно справедливо, - "кому что". Не пытаюсь навязывать свое мнение...
32. Darklight 30 21.03.17 13:49 Сейчас в теме
Респект автору - наконец-то боле менее масштабно подняли эту тему для сферы 1С. Конечно дальше хорошо бы развивать тему с использованием RexV8
33. romasna 285 21.03.17 14:13 Сейчас в теме
(32)На самом деле, эта тема довольно широко освещалась здесь, стоит только выполнить поиск. А развитие этой обработки, как я писал уже выше, будет. В частности, в приоритете RexV8. Ну и немного других "бантиков". Я часто возвращаюсь к тому, что уже сделано, в зависимости от настроения. :)
34. so-quest 139 10.05.17 09:41 Сейчас в теме
Статья понравилась. Однозначно уважуха за такое.
Вопрос - а что помешало сделать свой движок для регэкспов? что бы не использовать vbscript?
35. romasna 285 10.05.17 09:55 Сейчас в теме
(34)Оставляю в стороне оценку сложности разработки такого движка в 1С. Но я знаю, что VBScript отрабатывает регулярные выражения очень быстро (и этого достаточно). А насчет эффективности движка, запрограммированного в 1С, есть у меня сомнения. К тому же, если бы фирма 1С посчитала нужным и важным, то обеспечила бы прямой доступ к движку, который использует сама... но этого мы не наблюдаем.
36. starik-2005 2810 10.05.17 11:04 Сейчас в теме
(35)
но этого мы не наблюдаем
Так не туда смотрите )))
37. romasna 285 10.05.17 12:28 Сейчас в теме
(36)Мне знакомо, что регулярные выражения доступны через офсеты в XDTO. И знакомо также, что такое их использование позволяет разве что проверить соответствие строки регулярному выражению. Не более. Куда еще нужно посмотреть, чтобы можно было выполнить замену? Или найти набор строк, удовлетворяющих регулярному выражению. И все это путем встроенных в 1С механизмов.
При этом я не беру в расчет усилия авторов разработок в 1С, например, такие: Регулярные выражения без COM объектов и внешних компонент - к платформе это не имеет отношения.
Куда смотреть еще?
38. starik-2005 2810 10.05.17 17:02 Сейчас в теме
(37)
Куда смотреть еще?
Куда-нить сюда.1С юзает данную либу. Думаю, что можно как-то к ней нарыть доступ без отдельных внешних компонент. В линухе это обычная .so-либа, как в винде - не в курсе. Подключается ли она, как нативная компонента - не в курсе, но 1С ее юзает, ибо без нее не работает. Про регулярки и icu есть тут.
39. romasna 285 10.05.17 17:11 Сейчас в теме
(38)Если сможешь получить этот отдельный доступ, - поделись с нами, пожалуйста. А я пока поюзаю внешнюю компоненту Орефкова, для указанной тобой ICU, или VBScript (в силу недалекого ума). :)
40. starik-2005 2810 10.05.17 17:17 Сейчас в теме
(39)
А я пока поюзаю
А я на Linux не могу это юзать. Отсутствие кроссплатформенности - это для меня серьезный минус.

Ну и то, что часть функционала все-таки вытащена в 1С в тот же XDTO-механизм, некоторым образом заставляет меня с осторожностью относится к словам некоторых товарищей.
41. romasna 285 10.05.17 17:19 Сейчас в теме
(40)Каких товарищей? И к каким словам?
42. starik-2005 2810 10.05.17 22:26 Сейчас в теме
(41)
И к каким словам?
Ну, например, к этим:
Для работы с юникодом V8 использует кроссплатформенную библиотеку ICU, которая помимо прочего, содержит и функционал по работе с регулярными выражениями. По какой-то неизвестной причине, 1С не "вытащила" этот функционал "наружу", и пользоваться им из языка 1С возможности нет.
43. pvlunegov 154 04.12.17 10:11 Сейчас в теме
Автором проделана Титаническая работа по созданию движка для сохранения и внутренней документации Регулярок в 1с.
Многие комментатору так и не поняли смысла этой задачи.
Я смысл понял и скачал разработку.
К сожалению, в своей практике применить пока не могу, потому что для широкого применения регулярок ими РЕГУЛЯРНО нужно пользоваться и изменить мышление.

Автору просьба привести примеры МАССОВОГО использования Регулярок в одной конфигурации в рамках его разработки с комментированием, функциями, и т.п.
44. tormozit 6798 05.05.18 11:05 Сейчас в теме
жив буду - летом закончу полностью и опубликую
Автор жив?=)
45. romasna 285 05.05.18 11:48 Сейчас в теме
(44) Да, конечно. :) И все еще полон решимости, но имею недостаток возможностей. Слава Богу, не указал, в каком это году будет. Но летом...
46. tormozit 6798 20.05.18 21:07 Сейчас в теме
Автор проделал действительно большую работу и очень наглядно описал возможности своего инструмента. Но управляемая форма имеет ряд неудобств для решения такой задачи. Например редактировать и раскрашивать проверочный текст в одном поле нельзя из-за невозможности редактировать текст поле HTML.

Я добавил аналогичный инструмент "конструктор регулярного выражения" в подсистему "Инструменты разработчика". Он тоже собирает выражение в похожем стиле (параметризовано), но сделан естественно на обычной форме. В нем редактирование и раскраска проверочного текста производятся в одном поле.
47. romasna 285 21.05.18 07:21 Сейчас в теме
(46)
Мы уйдем без следа — ни имен, ни примет.
Этот мир простоит еще тысячи лет.
Нас и раньше тут не было — после не будет.
Ни ущерба, ни пользы от этого нет.

Омар Хайям.
48. cprit 832 17.02.20 18:40 Сейчас в теме
Добрый день!
Для обычных форм есть замечательный набор инструментов "Инструменты разработчика 1С", но его невозможно использовать в линуксе и в тонком и веб клиенте.

Поэтому мы решили собрать подобный пакет, но который будет работать только на платформенных механизмах или с использованием кроссплатформенных компонент.

Использование этого пакета инструментов хотим сделать общедоступным(OpenSource), разработку вести через гитхаб с использованием EDT.

Можем ли мы включить в этот набор обработки(или часть идей и функционала) вашей обработки?

Ссылка на репозиторий с новыми инструментами https://github.com/cpr1c/tools_ui
49. romasna 285 18.02.20 10:21 Сейчас в теме
(48) Здравствуйте. Да, конечно, нет никаких возражений. Польза от такого пакета очевидная. Если, при этом, вы перенесете регулярные выражения из настроек формы (там они сейчас хранятся) в справочники, - будет замечательно. Увы, сам я это до сих пор не сделал и сомневаюсь, что займусь этим. Спасибо, что обратили внимание на мою работу.
Capitullo; +1 Ответить
51. RustIG 1654 20.05.21 15:04 Сейчас в теме
(49) вознаграждение возьмите себе - отметьте свое сообщение как Лучшее
50. RustIG 1654 18.05.21 00:50 Сейчас в теме
крутая статья, огромный труд, очень просто изучать регулярные выражения с вашей обработкой - когда задаешь поисковую фразу, и тут же видишь готовый 1с-ный код - просто КРУТО! Спасибо!
52. romasna 285 27.05.21 21:09 Сейчас в теме +5 $m
(50) Спасибо за высокую оценку.
53. RustIG 1654 27.11.21 16:29 Сейчас в теме
(52) вознаграждение 5см возьмите себе - отметьте любое свое сообщение как "Лучшее"
54. peper- 16.08.22 19:47 Сейчас в теме
Потребовалось всего 10 или 15 лет мольбы со стороны разработчиков 1С и в платформе 8.3.23 появилась "Поддержка регулярных выражений во встроенном языке". :)
Оставьте свое сообщение

См. также

Функции "слоупока": как заставить открываться "Все функции" в 97 раз быстрее!

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Наверное, каждый программист 1С (да и не только программист), открывая «Функции для технического специалиста» (ранее «Все функции») на массивных конфигурациях вроде ERP 2.4 и т.п., в своей жизни много раз задавался вопросом – почему же они так долго открываются?? Действительно, в зависимости от мощностей сервера «Все функции» могут открываться от 20 секунд до 2 минут! «Ну, слишком много объектов в конфигурации, огромное количество констант, справочников, документов, регистров… – Отвечали себе страдающие пользователи. – Пока программа обойдёт в цикле все метаданные, пока построит дерево… Тут ничего не поделаешь…». И все они были не правы! Я провёл собственное расследование, которое показало, что 97% времени построения дерева метаданных тратится на…

1 стартмани

09.03.2022    20105    76    XilDen    76    

230

Программное формирование существующих печатных форм

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    10005    27    RocKeR_13    5    

38

Парсер шаблонов конфигурации .st

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Шаблоны конфигурации + Регулярные выражения = Парсер шаблонов.

1 стартмани

29.11.2021    3976    2    RustIG    7    

9

Универсальный редактор данных (УРД)

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    14305    203    Adeptus    57    

91

HTTP-клиент

Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Абонемент ($m)

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    14806    49    SpaceOfMyHead    48    

90

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Подсистема "Показатели объектов"

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    13318    7    pila86    16    

29

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    17952    30    huxuxuya    11    

36

А1Э - альтернативная стандартная библиотека для 1С

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Предлагаю широкой общественности расширение А1Э, используемое в нескольких продуктивных базах для выполнения широкого круга задач.

14.08.2020    21057    0    Enigma    47    

175

Проверка ведения учета (универсальная)

Инструментарий разработчика Анализ учета Платформа 1С v8.3 Запросы Абонемент ($m)

Универсальная проверка ведения учета, построенная на запросах. Выполнена в виде расширения, имеет функции подключения к другим информационным базам по технологии внешних соединений и отладчик, поддерживает конструктор запросов. Предназначена для использования как информационно-техническими специалистами, так и для самостоятельного использования конечными пользователями.

2 стартмани

11.08.2020    10270    58    vozhd    4    

19

Консоль кода для управляемых форм

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Консоль кода для управляемых форм с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    42858    584    salexdv    423    

327

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Внешний регламент для 1С

Инструментарий разработчика Платформа 1С v8.3 Россия Абонемент ($m)

Внешний регламент сделан для тех, кто ценит свое время и время заказчика. После одноразового встраивания в конфигурацию, внешний регламент на лету позволяет добавлять, изменять внешние модули, которые могут выполнятся как регламентные задачи с указанным интервалом или запускаться в ручном режиме для отладки. Все модули (внешние обработки) находятся и выполняются на стороне сервера, что позволяет исключить подмену алгоритмов со стороны клиента.

1 стартмани

05.03.2020    15807    14    moolex    12    

15

Консоль запросов 9000

Инструментарий разработчика Платформа 1С v8.3 Запросы Конфигурации 1cv8 Абонемент ($m)

Простая и удобная консоль запросов 1С для управляемых форм 8.3, работает на любой конфигурации без ее модификации. Возможность использования как внешней обработки или в составе расширения. С перехватом любых запросов и поддержкой всех типов данных во временных таблицах. Анализ плана запроса, запроса на уровне СУБД. Обработка результата кодом.

1 стартмани

24.02.2020    41923    663    kuza2000    167    

174

Универсальные инструменты 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    76196    7525    cprit    219    

651

Конвейер проверки качества кода

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    50543    35    Stepa86    46    

220

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Модель объекта

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    23326    2    vadim1980    5    

16

CFU & CFE - reader (версия 3.1).

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для анализа файлов обновлений (.cfu) и расширений (.cfe) в режиме предприятия в любой конфигурации для 1С 8.3.+. Основана на разработке https://infostart.ru/public/97194/.

2 стартмани

21.06.2019    15739    43    vandalsvq    12    

27

Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.

1 стартмани

03.06.2019    51812    12    ripreal1    92    

182

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Практический кейс построения HTTP-сервиса, который работает по принципу HTTP-сервера, с разбором всех методов построения и разработки класса задач построения личных кабинетов и сопряжения их с центральной базой.

1 стартмани

13.05.2019    50329    199    Diversus    44    

278

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    33323    22    slozhenikin_com    37    

61

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    75632    286    informa1555    246    

206

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    29080    29    RomikR    11    

17

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    66530    641    Eugen-S    36    

50

Навигатор по конфигурации базы 1С 8.3

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.93 от 12.03.2023

3 стартмани

28.10.2018    57462    520    ROL32    72    

183

Консоль Внедренца v.3.6.2

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами - загрузка данных из табличного документа.

1 стартмани

27.08.2018    52384    520    evvakra    42    

181

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    75938    96    dsdred    17    

180

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    154967    3492    Evg-Lylyk    800    

621

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    44918    35    informa1555    30    

77

Консоль HTTP-запросов с генерацией кода

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    42904    399    leongl    20    

198

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    30994    33    33lab    5    

18

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

Заполняем по шаблону (по умолчанию)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    42649    25    mvxyz    17    

79

Паузы при исполнении кода (Sleep для 1С)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.

1 стартмани

28.11.2017    97392    23    swimdog    57    

181

Программное формирование форматированной строки в стиле html+inline CSS

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    56517    59    bonv    13    

74

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

При обновлении платформы 1С:Предприятие 8 предыдущие версии не удаляются. Со временем количество неиспользуемых версий платформы растет. Они занимают место на диске. Для решения этой проблемы предназначена программа OneCleaner. Она позволяет быстро удалить неиспользуемые версии платформы, а также почистить кэш метаданных и удалить ненужные информационные базы данных.

1 стартмани

14.11.2017    37549    106    bonv    15    

48

DataReducer — R-консоль для «1С:Предприятия»

Инструментарий разработчика Платформа 1С v8.3 Анализ и прогнозирование Абонемент ($m)

Программа для обработки, анализа и визуализации данных информационных баз «1С:Предприятия» с использованием возможностей языка программирования R.

10 стартмани

10.07.2017    31473    3    DataReducer    13    

47

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Трансформатор 1С - SQL

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка для представления SQL запросов в терминах 1С, с возможностью захвата SQL запросов трассировкой.  Поддерживается также форматирование текста запроса через интернет сервис. Работает в управляемых и обычных формах, в том числе на веб-клиенте.

1 стартмани

28.06.2017    52895    443    Synoecium    54    

249

Набор подсистем "Умные таблицы"

Инструментарий разработчика Платформа 1С v8.3 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    47046    119    Silenser    34    

75

Автокликер для 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Внешняя обработка, запускаемая в обычном (неуправляемом) режиме для автоматизации действий пользователя (кликер). ActiveX компонента, используемая в обработке, получает события от клавиатуры и мыши по всей области экрана в любом приложении и транслирует их в 1С, получает информацию о процессах, текущем активном приложении, выбранном языке в текущем приложении, умеет сохранять снимки произвольной области экрана, активных окон, буфера обмена, а также, в режиме воспроизведения умеет активировать описанные выше события. Все методы и свойства компоненты доступны при непосредственной интеграции в 1С. Примеры обращения к компоненте представлены в открытом коде обработки.

1 стартмани

03.04.2017    45389    87    slava_1c    67    

74

Сценарное тестирование в помощь программисту 1С

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Альтернативное решение для организации сценарного тестирования конфигураций, разработанных на управляемых формах

1 стартмани

11.11.2016    38323    62    grumagargler    62    

193

Несколько шаблонов для доработки типовых конфигураций

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    50723    107    json    26    

196