Регулярные выражения без внешних компонент? Легко!

Публикация № 464971

Разработка - Практика программирования

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

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

Здравствуйте, товарищи! 

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

Код:

&НаКлиенте
Функция ПроверитьСтроку(Строка, Фасет)
	Чтение = Новый ЧтениеXML;
	Чтение.УстановитьСтроку(
				"<Model xmlns=""http://v8.1c.ru/8.1/xdto"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""Model"">
				|<package targetNamespace=""sample-my-package"">
				|<valueType name=""testtypes"" base=""xs:string"">
				|<pattern>" + Фасет + "</pattern>
				|</valueType>
				|<objectType name=""TestObj"">
				|<property xmlns:d4p1=""sample-my-package"" name=""TestItem"" type=""d4p1:testtypes""/>
				|</objectType>
				|</package>
				|</Model>");

	Модель = ФабрикаXDTO.ПрочитатьXML(Чтение);
	МояФабрикаXDTO = Новый ФабрикаXDTO(Модель);
	Пакет = МояФабрикаXDTO.Пакеты.Получить("sample-my-package");
	Тест = МояФабрикаXDTO.Создать(Пакет.Получить("TestObj"));

	Попытка
		Тест.TestItem = Строка;
		Возврат Истина
	Исключение
		Возврат Ложь
	КонецПопытки;
	
КонецФункции
	
&НаКлиенте
Процедура Модель(Команда)
	
	Сообщить(ПроверитьСтроку("01.01.2012","\d{2}\.\d{2}\.\d{4}"));
	Сообщить(ПроверитьСтроку("01.01.20121","\d{2}\.\d{2}\.\d{4}"));
	
КонецПроцедуры

Все.

Для тех, кому мало...

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

Если Сред(стрДата,1,1) < "0" ИЛИ Сред(стрДата,1,1) > "9" Тогда Ошибка = Истина;
КонецЕсли;

Если Сред(стрДата,2,1) < "0" ИЛИ Сред(стрДата,2,1) > "9" Тогда Ошибка = Истина;
КонецЕсли;

Если Сред(стрДата,3,1) <> "." Тогда Ошибка = Истина;
КонецЕсли;

//...

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

Ошибка = НЕ ПроверитьСтроку(СтрДата, "\d{2}\.\d{2}\.\d{4}");

Да, грамотным разработчикам стало ой как просто. Но что делать остальным? Правилный ответ, конечно, - учиться, учиться и еще раз  учиться! )))

 

Итак, самое простое, что нужно, чтобы освоить шаблоны проверки:

. - любой символ

+ - один или более раз, пример ".+" - один или более любой символ.

* - ноль или более раз, пример ".*" - любое количество любых символов (даже ни одного).

[n-m] - символ от m до n, пример: "[0-9]+" - одна или более цифр(а).

\d - цифра, пример \d+ - одна или более цифр(а).

\D - не цифра.

\s - пробельный символ - ТАБ, пробел, перенос строки, возврат каретки и т.п.

\S - непробельный символ.

\w - буква, цифра, подчеркивание.

\W - не буква, не цифра и не подчеркивание соответственно.

^ - начало текста, например "^\d+" - строка начинается с цифры.

$ - конец текста, например "\D+$" - строка заканчивается НЕ цифрой.

{m,n} - шаблон для от m до n символов, например "\d{2,4}" - от двух до четырех цифр. Можно указать одну и всего цифру для строгого соответвия.

\ - экранирует спецсимволы. Например, "\." - символ точки.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. neuromancer_aza 47 05.03.16 05:54 Сейчас в теме
Здравствуйте. Замеряли скорость работы? Как оно в скорости, например, с тем же VBScript.RegExp?
2. starik-2005 2302 05.03.16 11:20 Сейчас в теме
(1) neuromancer_aza, у меня Linux, поэтому мне непросто ответить на Ваш вопрос, но Вы всегда можете померять это самостоятельно и рассказать нам. Предположу, что медленнее, если не кешировать объект XDTO, но если кешировать, то может быть и быстрее (если надо один шаблон тестить с многими исходными данными)
63. andrey314 11 20.04.18 09:51 Сейчас в теме
(2)

При использовании данным способом шаблона:
ШаблонПоиска = "^\!{0,1}([0-9A-Za-z\*]{9,})&([0-9|\.]{1,})\$";

такая ошибка:


{ОбщийМодуль.ДополнительныеПроцедурыКлиент.Модуль(42)}: Ошибка при вызове метода контекста (ПрочитатьXML)
Модель = ФабрикаXDTO.ПрочитатьXML(Чтение);
по причине:
Ошибка разбора XML: - [4,38]
Фатальная ошибка:
xmlParseEntityRef: no name

Не подскажете как быть в данной ситуации? Подозреваю что причина может быть в символе "&"
64. starik-2005 2302 20.04.18 11:01 Сейчас в теме
(63) 1C, на сколько я помню, не умеет "$" и "^", т.к. для проверки шаблона эти символы не нужны. Попробуйте убрать их из строки.

По поводу "&" - то это символ? На сколько я знаю (и вики - тоже) - амперсанд - это обычный символ, на него ничто ругаться не должно...

ЗЫ: также, возможно Вы зря заэкранировали "!". Т.е. не нужно писать "\!" - нужно просто "!".

ШаблонПоиска = "!{0,1}([0-9A-Za-z\*]{9,})&([0-9|\.]{1,})";
Gang031; 🅵🅾️🆇; andrey314; +3 Ответить
65. andrey314 11 20.04.18 12:59 Сейчас в теме
(64)

Да спасибо.
Действительно, убрал "$" и "^" а вместо "&" использовал '& amp;' и теперь работает.
68. gansik 29.05.18 14:02 Сейчас в теме
(2) Sergey Andreev, а что Вы понимаете под "кэшированием объекта"? Как это правильно реализовать, можно примерчик? Мне как раз нужно проверять много строк на соответствие одному шаблону.
Заранее спасибо!
70. starik-2005 2302 29.05.18 14:51 Сейчас в теме
(68) просто добавьте в функцию параметр "test", а в коде функции строки с созданием объекта оберните в блок Если-Тогда-КонецЕсли, в котором проверяйте условие "test = неопределено". Перед первым вызовом напишите "test = Неопределено" (перед циклом проверки). В итоге у Вас функция будет вызываться только первый раз с пустым объектом XDTO, а в следующий раз уже с заполненным, что приведет к использованию уже созданного объекта, а не созданию нового.
71. gansik 29.05.18 15:32 Сейчас в теме
(70)Спасибо, всё получилось!
69. gansik 29.05.18 14:09 Сейчас в теме
3. pfihr 346 05.03.16 14:17 Сейчас в теме
Прекрасно!
От себя могу только добавить, что есть еще объекты для работы с XPath, это тоже регулярные выражения, но для уже языков разметки, типа html и xml.
Если добавите и их, будет совсем хорошо!
Роман Цованян.
4. Поручик 4491 05.03.16 14:22 Сейчас в теме
Оригинально. Интересно, как оно будет работать в цикле.
5. starik-2005 2302 05.03.16 16:42 Сейчас в теме
(4) Поручик, предположу, что если сохранять объект XDTO, то и в цикле будет быстро. Если же каждый раз фабрикой создавать пакет, то. полагаю, при множественном использовании производительность будет не очень.

(3) pfihr, здесь используется встроенная в 1С проверка типа по фасету для значения поля XDTO-объекта, так что, полагаю, добавить сюда ХPath совсем не получится )))
🅵🅾️🆇; Jogeedae; 1prog@bk.ru; Brawler; +4 Ответить
6. AlX0id 06.03.16 10:34 Сейчас в теме
Круто %)
А какой язык регулярок используется в фасетах?
8. starik-2005 2302 06.03.16 11:01 Сейчас в теме
(6) AlX0id, ИМХО тот же, что и в RegExp от M$.

(7) Xershi, ниже я привел часть синтаксиса с примерами. В коде есть пример для проверки даты: ПроверитьСтроку("01.01.2012","\d{2}\.\d{2}\.\d{4}") - сравните с описанием регулярных выражений ниже по тексту и попробуйте разобрать данный пример. Я сам с регулярками раза с третьего только разобрался, а первые два подхода вызвали лишь мысли о том, что пока мне это не сильно надо, но выглядит как-то сложно и времени потратить надо будет немало, а его, типа, у меня нет. Но когда действительно появилась необходимость в их освоении, то оказалось, что достаточно дня, чтобы разобраться.
9. Xershi 1137 06.03.16 11:23 Сейчас в теме
(8) поэтому и говорю. Было бы не плохо чтобы эту тему разжевали более подробно. Так было бы быстрее освоить материал!
10. starik-2005 2302 06.03.16 11:36 Сейчас в теме
(9) Xershi, быстрее освоить материал - это взять и написать регулярки для тестирования каких-то реальных вещей. Например, даты, e-mail, адреса сайта, имени переменной, числа, почтового адреса с индексом, ... - вот реализуйте каждый из них - и Вы сразу же станете специалистом. Описанной в статье информации для этого уже должно хватить. А если что-то непонятно - всегда есть гугл, он куда терпеливей иных учителей и никогда не отказывает пытливому уму в предоставлении ссылок на искомое.
7. Xershi 1137 06.03.16 10:43 Сейчас в теме
Было бы не плохо добавить блок, который бы описывал как на практике это использовать.
А то после прочтения не стало понятнее как это употреблять.
12. webester 34 06.03.16 16:12 Сейчас в теме
(7)Пробегите хотя бы бегло Дж.Фридл - Регулярные выражения. Уйдут все вопросы.
14. Xershi 1137 06.03.16 16:29 Сейчас в теме
(12) webester, если будет задача, я просто погуглю, а пока просто хотел, чтобы улучшили статью, чтобы начинающим не пришлось гуглить)
11. oleshko_alexey 06.03.16 15:20 Сейчас в теме
интересно,надо будет проверить скорость работы
13. starik-2005 2302 06.03.16 16:19 Сейчас в теме
Кстати, господа, в notepad++ есть поиск и замена на основе регулярных выражений. Я так иногда на работе что-то искал и менял, чтобы потом в консоль запросов вставить, как список. Вот там как раз непочатый край для экспериментов с регулярными выражениями. Например, попробуйте все даты в тексте заменить на какую-то конкретную дату - уже расширите горизонты своего познания и огребете достаточно экспы для очередного левелапа )))
LordKim; viking(j); CHSN8; SiAl; +4 Ответить
15. AlX0id 09.03.16 09:16 Сейчас в теме
(13)
Ну уж тогда Regex Buddy можно поставить, для полноты ощущений :)
34. orefkov 2089 05.08.16 15:55 Сейчас в теме
(15) AlX0id, (15) AlX0id, зачем Regex Buddy, когда есть это:
SiAl; artbear; vikad; +3 Ответить
39. alexkon 92 17.01.17 17:03 Сейчас в теме
(34), а где такой редактор взять?
104. pvlunegov 167 10.12.20 07:04 Сейчас в теме
16. maxx 928 09.03.16 12:14 Сейчас в теме
Здорово.
А не подскажете почему в конфигураторе при определении XTDO пакета визуально свойства pattern не видно?
17. starik-2005 2302 09.03.16 12:44 Сейчас в теме
(16) maxx, это свойство есть только у типа данных.
21. maxx 928 09.03.16 16:27 Сейчас в теме
(17) в определении типа тоже не увидел свойства pattern, хотя есть другие свойства фасета (максим. , миним. длины)
22. starik-2005 2302 09.03.16 16:34 Сейчас в теме
(21) maxx, ну, это, ...
Прикрепленные файлы:
18. karapuzzzz 63 09.03.16 14:38 Сейчас в теме
Регулярки это найс. Спасибо огромное автору за хорошую альтернативу внешним компонентам.

А теперь тестирование. За основу взял проверку адреса электронной почты:
Регулярка: "\w+@\w+\.\w+"
Текст проверки 1С:
ПозицияСобаки = Найти(СтрокаАнализа, "@");
		СтрокаПослеСобаки = Сред(СтрокаАнализа, ПозицияСобаки);
		ПозицияТочки =  Найти(СтрокаПослеСобаки, ".");
		
		Если ПозицияСобаки > 1 
			И ПозицияТочки > 1 Тогда
		
			//
		
		КонецЕсли;
Показать


На 100000 итераций код 1С отработал за 2сек, а регулярные выражения 63с
19. starik-2005 2302 09.03.16 15:04 Сейчас в теме
(18) karapuzzzz, а Вы кешировали объект XDTO или выполняли процедуру целиком? У Вас в коде правильным адресом будет и "%;№!@:?*!.", ибо вы не проверяете на "букву, цифру и подчеркивание" - реальный адрес куда сложнее. при том валидный "iem.mycompany@holding.com" не пройдет проверку по регулярке, ибо валидная "." приведет к ошибке. Т.е. не все так просто в действительности )))
pvlunegov; SiAl; +2 Ответить
20. starik-2005 2302 09.03.16 15:31 Сейчас в теме
(18) karapuzzzz, попробовал с кешем объекта XDTO и паттерном "[0-z]+@[0-z]+\.[0-z]+":

Время начала: 63 593 123 364 131
Длительность: 999 мс
Истинных: 100 000
Время начала: 63 593 123 365 130
Длительность: 280 мс

Код какой-то такой получился:
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Сообщить("Время начала: " + ВремяНачала);
	Для А = 1 ПО 100000 Цикл 
		Результат = ПроверитьСтроку(ОбъектХ, СтрокаАнализа, "[0-z]+@[0-z]+\.[0-z]+");
		Если Результат Тогда Сч = Сч + 1;
		КонецЕсли;
	КонецЦикла;
	Сообщить("Длительность: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала));
	Сообщить("Истинных: " + Сч);


	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Сообщить("Время начала: " + ВремяНачала);
	Для А = 1 ПО 100000 Цикл 
	
		Результат = Ложь;
		ПозицияСобаки = Найти(СтрокаАнализа, "@");
        СтрокаПослеСобаки = Сред(СтрокаАнализа, ПозицияСобаки);
        ПозицияТочки =  Найти(СтрокаПослеСобаки, ".");
        
        Если ПозицияСобаки > 1 
            И ПозицияТочки > 1 Тогда
        
            Результат = Истина;
        
		КонецЕсли;
		
	КонецЦикла;
	Сообщить("Длительность: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала));

Показать
Vladimir Litvinenko; +1 Ответить
23. Yashazz 3753 09.03.16 20:26 Сейчас в теме
Класс! Просто фантастика. Круть неимоверная, зачёт однозначный.
Совершенно шикарная идея, и ведь правда работает. Неистово плюсую.

Если не секрет, как до такого додумались? Что натолкнуло?
katyanic; frkbvfnjh; Student1C; +3 Ответить
24. starik-2005 2302 09.03.16 21:52 Сейчас в теме
(23) Yashazz, ну как бы тут было два момента: выгрузка отчета по схеме XSD, любезно предосиавленная ПФР, которая отказалась грузиться в пакет и вынудила исследовать механизм XDTO. Потом была статья на ИС, в которой кто-то реализовал алгоритм регулярок. Я было подумал, а не выгрузить ли мне пакет в модель с прикрученным типом и менять паттерн проверки у этого типа... И, в итоге, сработало как видите...

ЗЫ: про XDTO еще месяц назад ничего толком не знал, а теперь знаю о нем весьма много.
DarkUser; anchovy; Дмитрий74Чел; +3 Ответить
49. frkbvfnjh 605 05.09.17 08:38 Сейчас в теме
(24)
ЗЫ: про XDTO еще месяц назад ничего толком не знал, а теперь знаю о нем весьма много.

Если не секрет, что изучали для познания дзен XDTO? Сам толком не вкурил эту тему, но очень хочется досконально в этом разбираться...
50. starik-2005 2302 05.09.17 08:52 Сейчас в теме
(49)
Если не секрет, что изучали для познания дзен XDTO?
"Чтобы в чем-то разобраться нужна задача и сержант с сапогом, периодически пинающим под зад" (Я)

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

Кстати, у меня друг один все заставлял меня с регулярками разобраться - я болт забивал после прочтения пары строк из Вики. Но когда внезапно появилась задача, то я не только за день с ними вполне себе разобрался, но и написал механизм преобразования 1С-ной маски поля в регулярное выражение. правда тогда проверка была реализована на мелкософтовское регэкспе, но бывали случаи, когда СОМ тупо отваливался (баги нескольких платформ) и при инициализации любого СОМ-объекта система валилась с ошибкой. Исходя из этого мысль о реализации теста регулярок средствами платформы постоянно висела в голове. И как только я узнал, что в типах ХДТО есть возможность использовать паттерны проверки, то это сразу же материализовалось в вышеприведенный код.
51. frkbvfnjh 605 05.09.17 08:58 Сейчас в теме
(50)
при инициализации любого СОМ-объекта система валилась с ошибкой.

У меня та же фигня... Спасибо за наводку!
52. starik-2005 2302 05.09.17 08:58 Сейчас в теме
(51)
У меня та же фигня... Спасибо за наводку!
Решалось рестартом сервера приложений. Также проблема появляется при одновременной инициализации на сервере СОМ-объекта несколькими сеансами/потоками. Решение описал тут.
54. PavleG29 05.09.17 09:31 Сейчас в теме
(50)
Но когда внезапно появилась задача, то я не только за день с ними вполне себе разобрался, но и написал механизм преобразования 1С-ной маски поля в регулярное выражение.

Я даже помню, в какой организации это было :-)

Тоже потребовалось добавить проверку с помощью регулярок, но на Linyx регэксп уже не помог. Спасибо за рабочий пример и большой привет со старой работы!
55. starik-2005 2302 05.09.17 09:35 Сейчас в теме
(54)
Я даже помню, в какой организации это было :-)
Ну тогда ты должен знать, почему я тогда в ХДТО ничего не понимал! ))) (потому что сержант пинал Диму, а не меня)

ЗЫ: Тоже всем привет!
25. fvadim 9 10.03.16 11:03 Сейчас в теме
я правильно понимаю, что этот метод годится только для проверки на соответствие шаблону и получение сабматчей реализовать не получится?
26. tormozit 6306 10.03.16 11:06 Сейчас в теме
Проверка паттерна конечно полезна. Но например в ИР соотношение проверки паттерна и поиска по паттерну составляет 1:100. Поэтому название публикации не совсем корректное. Корректнее было бы "Проверка регулярного выражения без внешних компонент? Легко!"
Release; kuza2000; katyanic; Smallrat; pm74; herfis; zqzq; myjob1c; _also; borrman; Fragster; +11 Ответить
105. tormozit 6306 23.04.21 13:51 Сейчас в теме
(26) За 5 лет автор так и не скорректировал название статьи. Все ради просмотров или почему? Люди ведутся на многообещающее название - читают и обламываются. Статья полезная, но название обещает явно больше чем статья может предложить. Надеюсь автор все таки пересмотрит название.
106. starik-2005 2302 23.04.21 13:52 Сейчас в теме
(105)
Надеюсь автор все таки пересмотрит название.
Зачем? Меня Ваши аргументы не убедили. В аннотации написано только о проверке и независимости от платформы. Ровно это статья и излагает. Другого кейса для использования в 1С регулярных выражений без внешних компонент на настоящий момент не существует.
107. 7OH 32 24.04.21 11:56 Сейчас в теме
(105) согласен.
Раз в год ищу и каждый раз сюда попадаю с надеждой.
А тут только проверка - облом
108. starik-2005 2302 24.04.21 12:30 Сейчас в теме
(107) и как предлагаете назвать статью? Проверка на паттерн с помощью рнгулярного аыражения в 1С без внешних компонеет? Ну и через год найдете, подумаете, что может и не паттерн, залезите, а тут опять только паттерн. Нифига не поменяется кроме того, что яндекс ее выше повесит.
27. Fragster 1054 10.03.16 11:34 Сейчас в теме
Проверка - замечательно. Но часто нужна замена и/или данные по началу и длине найденных фрагментов (опять же, их может быть более одного)
28. starik-2005 2302 10.03.16 12:29 Сейчас в теме
(27) Fragster, 1с использует в своем коде библиотеку icu - в ней все это, на сколько я знаю, есть. Что мешает им реализовать все это в языке - для меня загадка. Поэтому без внешних компонент только проверка.
29. starik-2005 2302 10.03.16 12:42 Сейчас в теме
30. AndreykO 6 11.03.16 06:48 Сейчас в теме
Спасибо. Очень помогло. Всё работает.
31. starik-2005 2302 12.03.16 11:11 Сейчас в теме
(30) AndreykO, всегда пожалуйста.
32. AlX0id 26.06.16 14:35 Сейчас в теме
чота рано порадовался ) как только решил применить реально, получил:

{Форма.Форма.Форма(102)}: Ошибка при вызове конструктора (ФабрикаXDTO)
МояФабрикаXDTO = Новый ФабрикаXDTO(Модель);
по причине:
Ошибка проверки данных XDTO:
Значение: '\d*\.\d*\.\d*\.\d*\:\d*' не соответствует простому типу: {sample-my-package}testtypes
Несоответствие фасету Pattern = '\d*\.\d*\.\d*\.\d*\:\d*'
по причине:
failed to compile: xmlFAParseRegExp: extra characters


При вот такой проверке:
Сообщить(ПроверитьСтроку("1.233.54.55:80","\d*\.\d*\.\d*\.\d*\:\d*"));
33. starik-2005 2302 26.06.16 15:45 Сейчас в теме
(32) AlX0id, а перед ":" зачем слеш обратный? Уберите его - и все заработает. Обратный слеш только перед спецсимволами можно ставить. В иных случаях регулярное выражение не будет валидным и система будет падать уже на попытке преобразования модели в XDTO-пакет. Можете а этом месте в код добавить проверку на криворуких программистов, чтобы система возвращала им вместо истины или лжи строку "криворукий программер написал неверное регулярное выражение" )))
35. herfis 408 05.08.16 17:02 Сейчас в теме
Прикольно! Жалко, что только проверка...
Для теста регулярок я разное пробовал, но руки зацепились почему-то именно за regexr.com
36. b00t 73 10.09.16 22:47 Сейчас в теме
regex1c (github)

Доработал аналогичную идею, на днях выкачу поиск по шаблону.
Для улучшения производительности сделал предварительную компиляцию выражения (создание XDTO-объекта и сохранение в структуру)
Есть крайне простой тест производительности.
37. binex 273 08.01.17 12:07 Сейчас в теме
\s - пробельный символ - ТАБ, пробел, перенос строки, возврат каретки и т.п.


Это только пробельный символ.

Перевод строки, табуляция - \r и \t, соответственно.
38. starik-2005 2302 09.01.17 09:46 Сейчас в теме
(37)
Это только пробельный символ.

Идем учить мат.часть:
Прикрепленные файлы:
40. alexkon 92 17.01.17 17:08 Сейчас в теме
Коллеги, возник следующий вопрос: пишу в образце простое выражение "тест" и строку поиска "тестовый текст". Совпадений не находит. Если использовать то же самое, но при помощи VBScript.RegExp, то результат положительный. В XDTO какой-то "свой" синтаксис регулярных выражений?
41. starik-2005 2302 17.01.17 18:08 Сейчас в теме
(40) в данном случае отрабатывает именно паттерн, т.е. проверяется соответствие образцу, а не выполняется поиск подстроки в образце. Смысл данного механизма - ограничивать данные в поле. Если Вы в качестве паттерна пишите "тест", то "тестовый текст" у Вас не будет равен "тест", но если задача стоит проверить на наличие во входящем потоке слова "тест", то нужно использовать ".*тест.*" (т.е. указать в шаблоне, что до и после слова "тест" могут следовать (или не следовать) любые символы.
42. alexkon 92 17.01.17 21:46 Сейчас в теме
(41), да я именно так и хотел. Я тоже вписывал в паттерн ".*тест.*" и "тестовый текст" удовлетворял поиску по шаблону. Я думал, что 1С использует в качестве шаблона стандартный синтаксис регулярных выражений, поэтому писал шаблон как и в VBScript.RegExp. Получается, что синтаксис отличается? Если да, то где можно посмотреть синтаксис, который используется при проверке в платформе? К примеру: хочу проверить, что во входящем потоке есть слова, начинающиеся с "test". В VBScript.RegExp написал бы паттерн "\btest". 1С такой паттерн принимать отказывается.
P.S.: кстати, если в VBScript.RegExp попытаться вписать в паттерн "\bтест", то вхождения в потоке "тестовый текст" тоже не найдутся. В инете нашел, что это связано с локализацией. В PHP можно просто указать флаг /u, тогда начинает адекватно работать с кириллицей.
43. starik-2005 2302 18.01.17 11:03 Сейчас в теме
(42) синтаксис не отличается, но нужно иметь ввиду, что в данном случае 1С проверяет соответствие шаблону, а не осуществляет поиск подстроки. Тут необходимо уловить разницу между наличием в строке подстроки, соответствующей шаблону, и когда строка вся целиком соответствует шаблону. Т.е. при таком подходе нельзя делать так, как делали Вы - нужно добавлять ".*" с обоих сторон (как % при ПОДОБНО в запросе).
44. sergzhel 31.05.17 09:51 Сейчас в теме
Доступен ли многострочный режим и получение количество вхождений, игнорирование регистра?
45. starik-2005 2302 31.05.17 11:06 Сейчас в теме
46. clition 15.08.17 13:08 Сейчас в теме
Не помню чьё: "Если у вас есть проблема, и вы собираетесь её решать с помощью регулярных выражений, тогда у вас будет уже две проблемы."
47. starik-2005 2302 15.08.17 13:30 Сейчас в теме
(46)
Не помню чьё
"Ученье - свет, а неученье - чуть свет и на работу..." (с) Народ.
48. frkbvfnjh 605 05.09.17 08:32 Сейчас в теме
Самое нормальное решение данной проблемы встроенными средствами 1С которое я видел ! Вопрос о включении функционала регулярных выражений в язык 1С поднималось на форуме разработчиков не единожды, но разрабы считают, что всегда есть вопросы поважнее и все прекрасно работает без регулярок.
53. frkbvfnjh 605 05.09.17 09:05 Сейчас в теме
Афигеть, спасибо, узнаю сегодня много нового...
56. wbazil 129 20.11.17 18:34 Сейчас в теме
Тестирую, получаю "удивительный" результат, может кто сказать почему?

Сообщить(ПроверитьСтроку("778987", "^\d+$"));     //возвращает Ложь
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern =  "^\d+$";
Сообщить(RegExp.Test("778987"));   //возвращает Истину

ПроверитьСтроку функция из (0)
57. starik-2005 2302 21.11.17 13:59 Сейчас в теме
(56) ответил в почте, повторюсь здесь: для 1С в паттерне проверяется шаблон, поэтому нужды в описателях начала и конца строки нет никаких, более того - 1С на них ругается. Поэтому можно смело грохать ^ и $, ибо ^\d+$ в случае XDTO-паттерна будет равнозначна просто \d+.
Vladimir Litvinenko; +1 Ответить
58. Diversus 2154 21.12.17 12:37 Сейчас в теме
Скажите, а предложенный вариант будет работать на серверной 1С, которая установлена на Linux?
59. starik-2005 2302 28.12.17 16:43 Сейчас в теме
60. FilatovRA 155 12.01.18 16:18 Сейчас в теме
ПроверитьСтроку(СокрЛП(НомерГТД), "\d{8}/\d{6}/\d{7}/\d+"); Соответственно для проверки номеров ГТД, наверняка пригодится.
61. starik-2005 2302 29.01.18 11:56 Сейчас в теме
Коллега интереса ради проверил работоспособность механизма проверки регулярок с помощью описанной в статье функции и пришел к следующим выводам:
1. regExp работает в три раза быстрее (COM-объект) при условии, что COM-объект регэкспа кешируется. В принципе я не удивлен - 1С скорее всего для icu сделала нехилый и тромозящий враппер, чтобы все это работало.
2. В XDTO не поддерживаются ссылки (типа \1 \2 ...). Т.е. проверить, что у вас первое слово не повторяется - нереально.

Печалька, конечно, но сам механизм рабочий и позволяет что-то такое провернуть не только под виндой. Думаю, что создам внешнюю нативную компоненту для Linux, чтобы работало не медленнее RegExp'а.
62. It-developer 20 26.02.18 16:28 Сейчас в теме
Блин, фигово, что нет в платформе. Одни велосипеды
66. 7OH 32 02.05.18 09:40 Сейчас в теме
Вопрос по существу.
В оригинале RegExp ещё умеет возвращать массив совпадений.
А тут только на итого проверка - иначе никак ?
67. starik-2005 2302 03.05.18 12:03 Сейчас в теме
(66)
А тут только на итого проверка - иначе никак ?
Смотря чего и где искать. Для "массива совпадений" в небольшом XML может подойти XPath, реализованный в 1С для объекта DOM. Если что-то более серьезное, то иногда проще захардкодить что-то типа "А = СтрРазделить(Строка, "|")". Но если очень охота все отдать на откуп настройщикам универсального механизма, то без RegExp никак (в Linux можно через "sed -e" или "grep" получить все, что душе угодно).
100. KRIHA 85 23.09.20 14:05 Сейчас в теме
(67) доброго дня - можно поподробнее про XPath - реально можно получить массив совпадений?
101. starik-2005 2302 23.09.20 23:46 Сейчас в теме
(100) у меня статья про парсинг сайтов есть - там примерчик.
72. charivnick 44 11.10.18 11:25 Сейчас в теме
Не работают конструкции начало и конца строки: $,^
73. starik-2005 2302 11.10.18 12:36 Сейчас в теме
(72) Да, об этом написано выше.
76. luckily 06.02.19 09:57 Сейчас в теме
(72)
многострочный текст придется по одной строке проверять. как вариант Для Индекс=1 по СтрЧислоСтрок(Текст) Цикл
// СтрПолучитьСтроку(Текст,Индекс) - Получает строку многострочной строки по номеру.
Вставляем Маркер начала строки, например, знак @ и парсим начиная шаблон с него.
СтрТекста="@"+СтрПолучитьСтроку(Текст,Индекс);
И наконец,
Сообщить(ПроверитьСтроку("СтрТекста","@.*"));
77. starik-2005 2302 06.02.19 13:05 Сейчас в теме
(76)
многострочный текст придется по одной строке проверять. как вариант Для Индекс=1 по СтрЧислоСтрок(Текст) Цикл
Да, придется по строке. Но СтрПолучитьСтроку долго работает - лучше так:
  Для Каждого Ст ИЗ СтрРазделить ( Текст, Символы.ВС ) Цикл // разделитель подберите сами
    Сообщить ( ПроверитьСтроку ( Ст, "@.*" ) );
  КонецЦикла; 
74. bad_wag 36 15.01.19 14:52 Сейчас в теме
А можно ли сделать, чтобы передаешь функции строку, а она возвращает вырезанный кусок по паттерну?
75. starik-2005 2302 15.01.19 15:05 Сейчас в теме
(74)
А можно ли сделать
Через XDTO нельзя. А вот через сом-объект RegExp можно (см. (66))
78. TuneSoft 06.05.19 06:52 Сейчас в теме
Заголовок статьи не соответствует содержанию. Никак не описано получение значений по паттерну. Зря потраченное время на прочтение статьи.
79. starik-2005 2302 06.05.19 10:50 Сейчас в теме
(78) предложите заголовок, который будет более информативным))
80. Diversus 2154 21.06.19 11:55 Сейчас в теме
(0) А подскажите, как проверить с учетом кирилицы?

Например есть строка: Купить мороженное завтра в 15:00
Регулярное выражение: (завтра в )\d{2}:\d{2}

По идее все правильно (обычно все тестирую https://regex101.com/), но вот из 1С вашим способом не работает. Как воспользоваться?
Спасибо! Классная идея.

PS: Вообще не совсем понятно, почему до сих пор в платформе нет нормальных регулярных выражений встроенных в платформу.
81. Diversus 2154 21.06.19 11:59 Сейчас в теме
(80)
(завтра в )\d{2}:\d{2}

Пробовал и вот так: завтра в \d{2}:\d{2}
82. Diversus 2154 21.06.19 12:10 Сейчас в теме
(80) Разобрался.
ПроверитьСтроку("Купить мороженное завтра в 15:00", ".*завтра в \d{2}:\d{2}")
starik-2005; +1 Ответить
83. AlexeyPapanov 416 03.08.19 20:03 Сейчас в теме
Автор, ты крут!
Очень пригодилось.
Подскажите, а если разные строки в цикле проверять на разные фасеты, то можно ли как-то закешировать фабрикуXDTO?

Я было хотел так сделать
Функция ПроверитьСтрокуПоФасету(ОбъектФабрикаXDTO, Строка, Фасет)
    
    Пакет = ОбъектФабрикаXDTO.Пакеты.Получить("sample-my-package");
    Тест = ОбъектФабрикаXDTO.Создать(Пакет.Получить("TestObj"));

    Попытка
        Тест.TestItem = Строка;
        Возврат Истина
    Исключение
        Возврат Ложь
    КонецПопытки;
    
КонецФункции
Показать


Но у фабрики же в тексте модели XML подсовывается фасет:
"            |<pattern>" + Фасет + "</pattern>"

Т.е. перед циклом я не соображу как создать один раз ФабрикуXDTO, чтобы потом этот объект передавать в функцию
ПроверитьСтрокуПоФасету(ОбъектФабрикаXDTO, Строка, Фасет)
84. AlexeyPapanov 416 03.08.19 22:02 Сейчас в теме
(83) в сообщении (70) есть ответ, только я все равно не понимаю.
Функция ПроверитьСтроку(Строка, Фасет, ПервыйВызов=Истина)
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(
                "<Model xmlns=""http://v8.1c.ru/8.1/xdto"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""Model"">
                |<package targetNamespace=""sample-my-package"">
                |<valueType name=""testtypes"" base=""xs:string"">
                |<pattern>" + Фасет + "</pattern>
                |</valueType>
                |<ob jectType name=""TestObj"">
                |<property xmlns:d4p1=""sample-my-package"" name=""TestItem"" type=""d4p1:testtypes""/>
                |</objectType>
                |</package>
                |</Model>");

    Модель = ФабрикаXDTO.ПрочитатьXML(Чтение);
	
    // Для "кеширования" - ускоряет вызов в цикле
	Если ПервыйВызов=Истина Тогда
		МояФабрикаXDTO = Новый ФабрикаXDTO(Модель);
	КонецЕсли; 
	
	Пакет = МояФабрикаXDTO.Пакеты.Получить("sample-my-package");
    Тест = МояФабрикаXDTO.Создать(Пакет.Получить("TestObj"));

    Попытка
        Тест.TestItem = Строка;
        Возврат Истина
    Исключение
        Возврат Ложь
    КонецПопытки;
    
КонецФункции
Показать

допустим, первый раз вызвали в цикле, фабрика создалась.
потом вне функции перед вторым ее вызовом мы меняем переменную на Ложь, чтобы объект не создавался.
но не пойму где его хранить с первого вызова?
извиняюсь за тупость
85. starik-2005 2302 04.08.19 11:10 Сейчас в теме
(84) Если разные строки на РАЗНЫЕ фасеты, то придется создать фабрику каждый раз, т.к. я, лично, не знаю способа переопределения типа в уже созданной фабрике.

А если фасет одинаковый, то его можно и закешировать. Хранить кеш нужно в вызывающей функции.
86. AlexeyPapanov 416 04.08.19 14:27 Сейчас в теме
(85) Спасибо! а то я вчера поздно сидел - смотрю, один пишет - получилось. Я думаю - как?...
87. maxster545 02.09.19 12:18 Сейчас в теме
Выдаёт такую ошибку:

Модель = ФабрикаXDTO.ПрочитатьXML(Чтение);
по причине:
Ошибка разбора XML: - [6,14]
Фатальная ошибка:
Specification mandate value for attribute jectType

Что делаю не так?
88. starik-2005 2302 02.09.19 18:50 Сейчас в теме
(87) Вы как пользователь - полностью игнорируете детали.
89. luckily 02.11.19 14:01 Сейчас в теме
Не указали что есть вариант использования условий:
Вертикальная черта разделяет допустимые варианты. Например, gray|grey соответствует gray или grey
т.е. для проверки дат "01.01.20" и 01.01.2019 может выполняться одним фасетом = "\d{2}\.\d{2}\.(\d{4}|\d{2})"
90. starik-2005 2302 03.11.19 15:49 Сейчас в теме
(89) книжкой, описывающей почти все нюансы работы с регулярными выражениями, можно убить. Что Вы хотите от статьи? Почему не жалуетесь, что про группы не написано?
91. Зеленоград 11.02.20 18:33 Сейчас в теме
Искал ссылки на регулярки в 20 году, думал что платформа уже содержит это. Но нет, вернулся к COMОбъект("VBScript.RegExp")
92. starik-2005 2302 11.02.20 21:34 Сейчас в теме
(91)
вернулся к COMОбъект
Не работает на кошерных осях (
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    79451    Serginio    113    

Полезные примеры СКД, ч.2

Практика программирования v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    4059    Neti    7    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.03.2021    16146    rayastar    47    

Звуковое управление в 1С 8.3

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    3125    velemir    31    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    39047    unichkin    74    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5370    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    13248    quazare    34    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    45072    user5300    17    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

15.10.2018    32883    tormozit    105    

[БСП] Обмен через Конвертацию данных 2.1

Обмен через XML v8 1cv8.cf Бесплатно (free)

Добавим новый план обмена и настроим в БСП типовой обмен через правила конвертации данных (КД 2.1)

03.02.2020    9759    John_d    17    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

27.01.2020    45352    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    33499    John_d    22    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    79919    tormozit    131    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    25991    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    20030    YPermitin    61    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    10564    Sibars    19    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    50928    tormozit    49    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    34611    HostHost    41    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    43634    Yashazz    50    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    75276    rpgshnik    70    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    47843    tormozit    74    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    62622    ids79    55    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    35921    YPermitin    25    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    27772    YPermitin    81    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16714    m-rv    3    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    38498    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    118189    ids79    69    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    48122    avalakh    26    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    21335    m-rv    17    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    32326    json    15    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    83787    ids79    14    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    41899    ids79    27    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

01.06.2018    33306    m-rv    22    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    29742    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20735    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

02.07.2019    65683    ids79    17    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    29110    itriot11    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    64177    ids79    26    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    27981    dmurk    147    

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

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    52899    YPermitin    30    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    39154    ids79    40    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    39179    ellavs    127    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

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

28.03.2019    29235    ellavs    90    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    28793    barelpro    87    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    36130    YPermitin    53    

Загрузка отчетов банка по операциям эквайринга (на примере эквайринга Альфа-банка) для УТ 11

Банковские операции Обработка документов Обмен с банком Банковские операции v8 v8::ОУ УТ11 Россия БУ Абонемент ($m)

Загрузка отчетов банка по операциям эквайринга в виде расширения (тестировалось на релизе УТ 11.4.7.114).

1 стартмани

11.03.2019    7450    11    KRIHA    5    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    53323    Смешной 1С    32    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    25267    Vladimir Litvinenko    28