Практика регулярных выражений в 1С или "парсим неудобные форматы"

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

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

В продолжение статьи Использование регулярных выражений (RegExp) в 1С8.х. Углубляемся в практику использования регулярных выражений в 1С. Основы работы с регулярными выражениями хорошо описаны в указанной публикации. А я попробую ответить на вопрос "почему именно регулярные выражения?" на примере конкретной рабочей задачи.

В продолжение статьи Использование регулярных выражений (RegExp) в 1С8.х. Углубляемся в практику использования регулярных выражений в 1С. Основы работы с регулярными выражениями хорошо описаны в указанной публикации. А я попробую ответить на вопрос "почему именно регулярные выражения?" на примере конкретной рабочей задачи.

Удобный и неудобный

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

"В чем же такая большая разница? И там и там язык разметки." - резонно заметите вы. Все дело в значимых тегах. Теги xml предназначены для идентификации определенного в них содержимого. Например:

Пример 1. Иванов

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

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

Пример 2. Иванов

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

Справедливости ради надо заметить, что html может стать частично удобным форматом если тегам начать присваивать классы или идентификаторы. Если в нашем случае будет написано например так:

Пример 3. Иванов

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

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

Почему регулярные выражения?

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

"Почему именно регулярные выражения?" - сросите вы. Ведь можно использовать штатные средства платформы 1С "Найти", "СтрДлина", "СтрЗаменить" и пр. Да, можно, но программный код с использованием регулярных выражений локоничнее и понятнее. Для того, чтобы идентифицировать определенные данные в строке, нужно будет написать кучу "Если", "Найти", "СтрЗаменить" и т.д. В регулярных выражениях весь этот массив кода можно заменить одним шаблоном (паттерном).

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

Пример 4. Стругацкие

знаем, что в первом теге h1 содержится название автора произведения, во втором теге h2 содержится название произведения, а в третьем теге p содержится аннотация к произведению. Т.е. каждый раз встречая в файле набор этих тегов я заранее знаю что находится в первом, втором и третьем тегах. Повторюсь - здесь важно знать, что комбинация уникальна, т.е. не должно быть другой такой же комбинации тегов, в которых содержится какая-то другая информация или присутствует другой порядок данных. Это знание и регулярные выражения позволяют извлекать из таких вот уникальных комбинаций нужные данные.

Практика

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

Ниже на скриншоте вы можете наблюдать фрагмент отрисованного в браузере счета, присланного в формате html:

Фрагмент счета

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

А теперь вот как одна из строк выглядит в html коде (строка длинная, поэтому я сделал перенос строк и обозначил места переносов символом "|"):

Пример строки в коде HTML

Кто разбирается в HTML знает, что тег tr обозначает строку в таблице, а td обозначает колонку, точнее ячейку в определенной колонке определенной строки.

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

Пример кода 1С для разбора строки HTML при помощи рег. выражений

Это собственно весь разбор. Далее уже следует работа с извлеченными данными.

Если при разборе строки все условия регулярного выражения выполнены - это значит, что мы разбирали именно строку детализации, а значит в МассивеСовпадений располагаются в порядке очередности нужные данные (дата/время, номер собеседника, количество, стоимость и т.д.)

Давайте теперь пройдемся по регулярному выражению и переведем на русский язык условия, заданные с помощью самого него.

Расшифровка регулярного выражения

  1. Ищется тег td внутри которого может присутствовать описание классов, атрибутов и т.п.
  2. Ищется последовательность цифр и символов: 2 цифры, точка, 2 цифры, точка, 4 цифры, пробел, 2 цифры, двоеточие, 2 цифры, двоеточие, 2 цифры. Это ничто иное как дата и время. Причем все, что находится в круглых скобках запоминается и затем попадет в МассивСовпадений, за исключением тех скобок, в которых сначала идет ?:.
  3. Ищется закрывающий тег td, после которого идет произвольное количество тегов td до выполнения следующего по выражению условия.
  4. Далее по условию следует либо любой символ, кроме символа >, либо символ "пусто". Пусто, потому что в ячейке может быть пусто, что будет обозначено специальным символом. Здесь производится поиск номера собеседника.
  5. Далее по условию должны встретиться одна из букв F, D, S либо знак "пусто" - это тип звонка.
  6. Далее по условию должны встретиться либо 1 цифра, либо 2 цифры, либо знак "пусто" - это код звонка.
  7. Далее по условию следует от 1 до 6 цифр, точка,  1 или 2 цифры. Причем последние две цифры необязательные. Это длительность звонка (количество).
  8. Далее по условию должны встиретиться любое количество русских букв, цифр или пробелов до выполенения следующего условия выражения. Это строковое представление единицы измерения длительности звонка.
  9. Далее по условию следуют от 1 до 9 цифр и в обязательном порядке точка и 2 цифры. Это стоимость звонка.
  10. Ну и напоследок закрывающий тег td.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2711 26.10.11 09:36 Сейчас в теме
Совершенно мне не требуется. Но не могу не оценить "красоту игры" (© Ю. Ким)
2. cool.vlad4 45 26.10.11 10:56 Сейчас в теме
автор, молодец, но плюс я ставить не буду. В общем случае html не советуют парсить регулярными выражениями, очень часто будут ошибки. Приводят html к валидному xml, а дальше xpath или xslt, если хочется. В редких случаях, я допускаю использование рег.выражений для быстрого и за один раз - извлечения данных.
4. 1cspecialist 1422 26.10.11 12:06 Сейчас в теме
(2) Не совсем понял, чем вам поможет xpath или xslt в этом случае - при приведении html к валидному xml вы столкнетесь абсолютно с теми же вопросами, как и при парсинге html регулярными выражениями. Да и само утверждение "html не советуют парсить регулярными выражениями" весьма спорно - это все равно что сказать, что не рекомендуют автоматизировать "Газпром" на 1С. Почему нет? Нужно рассматривать каждую ситуацию в отдельности. Регулярные выражения - это такой же инструмент как и многие другие.
CaSH_2004; +1 Ответить
6. cool.vlad4 45 26.10.11 12:11 Сейчас в теме
(4) я вроде ничего, такого не написал, даже похвалил вас. не нарывайтесь. Эти глупые сравнения не в счет, поскольку я нигде не писал, что от регулярных выражений надо отказыватся. А не советуют пользоватся для парсинга html вполне серьезные программисты из stackoverflow. Я куда больше доверяю, чем вам. xpath и xslt не тоже самое, не знаете, не говорите.
5. 1cspecialist 1422 26.10.11 12:10 Сейчас в теме
(2) вообще, я да и многие другие были бы признательны, если бы вы написали тут статью про парсинг с помощью xpath, xslt и приведение html к валидному xml - просто уж очень тема интересная
7. cool.vlad4 45 26.10.11 12:12 Сейчас в теме
(5) не обещаю, но может быть.
3. Armando 1393 26.10.11 11:11 Сейчас в теме
Хочу чтоб регекспы сделали объектом языка 1С, тогда ваще кошерно было бы.
РегулярноеВыражение = Новый РегулярноеВыражение;
arakelyan; kraynev-navi; ekomova; 1cspecialist; +4 Ответить
9. German 874 26.10.11 12:31 Сейчас в теме
(3) да и будет вам как "Внешние источники данных"
(5) про Xpach тут можно пример посмотреть тут http://main.1c-ei.ru/Home/help/console/template/xml
а парсинг HTML лучше доверить специализированным но очень редким уже(!) вещам, например http://blog.1c-ei.ru/2009/09/openkapow.html
1cspecialist; +1 Ответить
10. cool.vlad4 45 26.10.11 12:40 Сейчас в теме
на самом деле просто писать статью, с целью обучения, конечно, благородно, но я не могу себя заставить. У меня идея и потихоньку я её реализовываю, сделать обычный прокси, через который, в зависимости от опций и можно будет получать/парсить/кэшировать/приводить в xml и т.д. - тогда можно будет и из 1С-ки это делать. Для знакомства с xpath - поставьте расширение для chrome/firefox (firepath например). Единственно, нужно помнить, что webkit-овские движки и mozilla, добавляют некоторые изменения - например <tbody>, в таблицы, которого нет. Поэтому xpath может быть неточным в браузере.
11. 1cspecialist 1422 26.10.11 13:03 Сейчас в теме
(10) что такое xpath я представляю, реализация объекта для работы с xpath есть и в 1С, но у этой методики есть также и минус - для работы требуется построение DOM дерева, по которому xpath будет ходить, а это требует ресурсов оперативки, хотя наверное на мощных серверах это и не такой уж и большой минус

то что вы кому-то доверяете, а кому-то нет - ваше право, но я хотел просто услышать, почему не рекомендуется использовать регулярные выражения, как решается проблема идентификации данных? был бы признателен, если бы вы тезисно изложили суть.
12. cool.vlad4 45 26.10.11 13:13 Сейчас в теме
(11) для этого надо либо прочесть ссылки, которые я дал выше, либо понять, что такое регулярное выражение(в статье об этом ни слово). html не относится к регулярным языкам. Есть такая теорема любой регулярный язык представим в виде регулярного выражения. html нет.
13. cool.vlad4 45 26.10.11 13:22 Сейчас в теме
(11) и почему есть DOM, если regexp так хорош? Сколько вы спарсили сайтов? Кто гарантирует вам, что если для пару страниц ваша регулярка сработает, то и для 1000 страниц тоже? Почему DOM сработает? да потому, что вы парсите те участки, которые занимают вполне определенное положение в дереве иначе смысла нет.И тем не менее я не исключаю регулярки, я использую и то, и то. Просто в статье посыл другой.
14. 1cspecialist 1422 26.10.11 13:26 Сейчас в теме
(13) ну я так примерно и представлял, все равно спасибо за ответ
15. theologian 26.10.11 15:57 Сейчас в теме
16. curys 27.10.11 11:32 Сейчас в теме
хорошая штука, благодарю
17. byuf_in 27.10.11 11:40 Сейчас в теме
спасибо, как раз поставили задачу, где можно применить
18. Seregalink 73 28.10.11 00:31 Сейчас в теме
19. opiumdx 28.10.11 14:56 Сейчас в теме
20. CaSH_2004 361 28.10.11 22:43 Сейчас в теме
Думаю у любого инструмента есть минусы, но с непривычки легче пользоваться более простыми инструментами, а потом переходить к более сложным. Также важно знать какие минусы есть. Поэтому спасибо и автору и cool.vlad4 за критику (правда она какая-то злая, наверно столкнулся с этими проблемами сам :)
21. maljaev 794 29.10.11 12:19 Сейчас в теме
Прочитал пост 13, вот абсолютно соглашусь с его автором - использую и то и другое в определенных случаях, но сам RegExp не панацея, тем более относительно HTML (DOM лучше). Но в определенных ситуациях RegExp рулит.
22. 1cspecialist 1422 29.10.11 13:48 Сейчас в теме
(21) regexp спасет в большинстве случаев, особенно когда нужно оптимизировать производительность в условиях ограниченных ресурсов. Попробуйте в браузере открыть файл html размером 200 мб (и это далеко не самый большой файл, который приходится парсить) и посмотрите в диспетчере задач windows - он сожрет у вас больше 2 гигабайт оперативной памяти на построение DOM-модели документа. Тоже самое будет и с любой другой программой, использующей DOM для своей работы. Если у вас на компьютере 4 Гб и/или 32-разрядная ось то легко получите out of memory. Т.е. предложенный вариант с xpath будет еле ворочиться, если вообще зашивелится.

PS. Конечно xpath хороший и надежный выбор, но говорить, что regexp ненадежен - тоже нельзя. Еще раз повторюсь - нужно смотреть на условия конкретной задачи. В большинстве случаев regexp прекрасно справится с увесистыми файлами и причем не на самых мощных компьютерах. Если речь идет просто о парсинге сайтов, то конечно лучше использовать xpath, но с файлами с большим объемом лучше использовать механику последовательного чтения и парсинга, что собственно как нельзя лучше осуществляет regexp.
23. vikorn 03.11.11 13:08 Сейчас в теме
Нужная вещь, скопировал себе, спасибо
24. laeg 13 12.11.11 10:00 Сейчас в теме
Одно время, писал на 1с-ке парсер товаров с нескольких интернет магазинов
тупое перебирание текста, поиск по тегам не есть гуд. Малейшие изменение в дизайне и все коту под хвост.

Спасибо за статейку, при дальнейшей разработке, попробую использовать ваши наработки.
1cspecialist; +1 Ответить
25. Minotavrik 1578 16.11.11 11:28 Сейчас в теме
И не жалко тратить время на это? Во времена ассемблера и с статья была бы бесценна. В коде много других участков, которые надо думать как оптимизировать. А вот работа со строками в 1с вроде реализована и довольно не плохо.

Но статья клевая снимаю шляпу за усердие.
26. dtitov 28.11.11 11:23 Сейчас в теме
27. petrovaUL 08.12.11 14:53 Сейчас в теме
28. ratinc 17.01.12 10:26 Сейчас в теме
Жаль что regexp у vbscript куцый.
Никак не удастся развернуться в полную силу.
Сильно не хватает следующего:
No \A or \Z anchors to match the start or end of the string. Use a caret or dollar instead.
Lookbehind is not supported at all. Lookahead is fully supported.
No atomic grouping or possessive quantifiers
No Unicode support, except for matching single characters with
No named capturing groups. Use numbered capturing groups instead.
No mode modifiers to set matching options within the regular expression.
No conditionals.
No regular expression comments. Describe your regular expression with VBScript apostrophe comments instead, outside the regular expression string.

Может можно ещё к чему com поиметь с "нормальным" regexp?
Буду признателен за помощь в поиске альтернативы
PS. Майкрософт как обычно реализует "свои" стандарты вот и regexp-у досталось :)
dvsidelnikov; +1 Ответить
29. serpisal 14.02.12 11:51 Сейчас в теме
Хорошее решение, спасибо!
30. Veduin 15.02.12 08:09 Сейчас в теме
Интересно и познавательно! Спасибо!
32. ratinc 28.03.12 12:20 Сейчас в теме
Что то тема совсем заглохла. Оскудела земля русская программистами :)
Ну неужели никто не подскажет откуда ещё кроме vbscript можно regexp поиметь?
33. EmpireSer 09.08.12 23:00 Сейчас в теме
(32) ratinc, от delphi. Они там его от каких-то С++ библиотек прикрутили.
Оставьте свое сообщение

См. также

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

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

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

10.12.2016    36820    unichkin    46    

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

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

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

27.01.2020    22279    ids79    26    

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

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

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

15.01.2020    20755    John_d    22    

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.01.2020    12790    aximo    14    

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

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

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

15.10.2018    29347    tormozit    100    

Последовательности событий. Шпаргалка

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

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

30.12.2019    15509    kuzyara    33    

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

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

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

02.12.2019    16304    YPermitin    72    

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

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

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

22.11.2019    7899    Sibars    19    

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

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

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

20.09.2012    77225    tormozit    131    

Создание асинхронных виджетов

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

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

16.10.2019    12704    YPermitin    19    

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

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

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

01.10.2019    30384    Yashazz    50    

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

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

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

06.09.2019    44026    rpgshnik    63    

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

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

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

11.07.2007    47520    tormozit    40    

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

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

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

05.09.2019    45569    ids79    54    

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

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

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

05.09.2019    26282    YPermitin    24    

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

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

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

03.09.2019    24870    YPermitin    80    

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

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

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

10.09.2017    43883    tormozit    74    

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

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

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

17.08.2019    30136    ids79    16    

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

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

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

08.08.2019    72627    ids79    49    

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

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

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

02.08.2019    31748    avalakh    22    

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

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

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

25.04.2019    15862    m-rv    2    

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

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

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

31.07.2019    21687    json    13    

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

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

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

26.07.2019    53680    ids79    11    

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

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

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

17.07.2019    33921    ids79    27    

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

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

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

16.04.2019    19879    m-rv    17    

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

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

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

09.07.2019    25173    YPermitin    14    

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

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

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

04.07.2019    19305    SeiOkami    50    

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

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

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

25.06.2019    49079    ids79    25    

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

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

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

01.06.2018    30010    m-rv    21    

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

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

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

11.06.2019    23978    dmurk    144    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

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

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    39374    YPermitin    52    

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

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

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

16.05.2019    40506    YPermitin    30    

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

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

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

05.12.2017    28000    itriot11    34    

Выполнение внешней обработки в фоновом задании

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    28461    Eret1k    23    

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

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

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

07.04.2019    34328    ellavs    126    

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

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

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

28.03.2019    26596    ellavs    88    

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

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

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

27.01.2016    75539    Serginio    108    

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

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

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

14.03.2019    30437    YPermitin    53    

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

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

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

26.02.2019    21008    Vladimir Litvinenko    27    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    37062    ids79    9    

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

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

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

10.11.2018    33750    ids79    40    

EnterpriseData – часть 2. Процесс выгрузки данных

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

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    25814    ids79    31    

Новый подход к обмену данными EnterpriseData

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

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

14.12.2018    39635    ids79    72    

Тестер: частые вопросы Промо

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

Ошибкам бой - тесты норма жизни!

25.07.2018    28895    grumagargler    28    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    35929    ids79    40    

Программное заполнение пользовательских параметров и отборов СКД

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

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

13.11.2018    44246    Unk92    24    

Произвольный код в фоновом режиме

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

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

03.09.2018    26994    nikita0832    42    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

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

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

04.09.2017    51830    m-rv    61