Практика регулярных выражений в 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. Арчибальд 2710 26.10.11 09:36 Сейчас в теме
Совершенно мне не требуется. Но не могу не оценить "красоту игры" (© Ю. Ким)
2. cool.vlad4 44 26.10.11 10:56 Сейчас в теме
автор, молодец, но плюс я ставить не буду. В общем случае html не советуют парсить регулярными выражениями, очень часто будут ошибки. Приводят html к валидному xml, а дальше xpath или xslt, если хочется. В редких случаях, я допускаю использование рег.выражений для быстрого и за один раз - извлечения данных.
4. 1cspecialist 1419 26.10.11 12:06 Сейчас в теме
(2) Не совсем понял, чем вам поможет xpath или xslt в этом случае - при приведении html к валидному xml вы столкнетесь абсолютно с теми же вопросами, как и при парсинге html регулярными выражениями. Да и само утверждение "html не советуют парсить регулярными выражениями" весьма спорно - это все равно что сказать, что не рекомендуют автоматизировать "Газпром" на 1С. Почему нет? Нужно рассматривать каждую ситуацию в отдельности. Регулярные выражения - это такой же инструмент как и многие другие.
CaSH_2004; +1 Ответить
6. cool.vlad4 44 26.10.11 12:11 Сейчас в теме
(4) я вроде ничего, такого не написал, даже похвалил вас. не нарывайтесь. Эти глупые сравнения не в счет, поскольку я нигде не писал, что от регулярных выражений надо отказыватся. А не советуют пользоватся для парсинга html вполне серьезные программисты из stackoverflow. Я куда больше доверяю, чем вам. xpath и xslt не тоже самое, не знаете, не говорите.
5. 1cspecialist 1419 26.10.11 12:10 Сейчас в теме
(2) вообще, я да и многие другие были бы признательны, если бы вы написали тут статью про парсинг с помощью xpath, xslt и приведение html к валидному xml - просто уж очень тема интересная
7. cool.vlad4 44 26.10.11 12:12 Сейчас в теме
(5) не обещаю, но может быть.
3. Armando 1393 26.10.11 11:11 Сейчас в теме
Хочу чтоб регекспы сделали объектом языка 1С, тогда ваще кошерно было бы.
РегулярноеВыражение = Новый РегулярноеВыражение;
arakelyan; kraynev-navi; ekomova; 1cspecialist; +4 Ответить
9. German 873 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 44 26.10.11 12:40 Сейчас в теме
на самом деле просто писать статью, с целью обучения, конечно, благородно, но я не могу себя заставить. У меня идея и потихоньку я её реализовываю, сделать обычный прокси, через который, в зависимости от опций и можно будет получать/парсить/кэшировать/приводить в xml и т.д. - тогда можно будет и из 1С-ки это делать. Для знакомства с xpath - поставьте расширение для chrome/firefox (firepath например). Единственно, нужно помнить, что webkit-овские движки и mozilla, добавляют некоторые изменения - например <tbody>, в таблицы, которого нет. Поэтому xpath может быть неточным в браузере.
11. 1cspecialist 1419 26.10.11 13:03 Сейчас в теме
(10) что такое xpath я представляю, реализация объекта для работы с xpath есть и в 1С, но у этой методики есть также и минус - для работы требуется построение DOM дерева, по которому xpath будет ходить, а это требует ресурсов оперативки, хотя наверное на мощных серверах это и не такой уж и большой минус

то что вы кому-то доверяете, а кому-то нет - ваше право, но я хотел просто услышать, почему не рекомендуется использовать регулярные выражения, как решается проблема идентификации данных? был бы признателен, если бы вы тезисно изложили суть.
12. cool.vlad4 44 26.10.11 13:13 Сейчас в теме
(11) для этого надо либо прочесть ссылки, которые я дал выше, либо понять, что такое регулярное выражение(в статье об этом ни слово). html не относится к регулярным языкам. Есть такая теорема любой регулярный язык представим в виде регулярного выражения. html нет.
13. cool.vlad4 44 26.10.11 13:22 Сейчас в теме
(11) и почему есть DOM, если regexp так хорош? Сколько вы спарсили сайтов? Кто гарантирует вам, что если для пару страниц ваша регулярка сработает, то и для 1000 страниц тоже? Почему DOM сработает? да потому, что вы парсите те участки, которые занимают вполне определенное положение в дереве иначе смысла нет.И тем не менее я не исключаю регулярки, я использую и то, и то. Просто в статье посыл другой.
14. 1cspecialist 1419 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 357 28.10.11 22:43 Сейчас в теме
Думаю у любого инструмента есть минусы, но с непривычки легче пользоваться более простыми инструментами, а потом переходить к более сложным. Также важно знать какие минусы есть. Поэтому спасибо и автору и cool.vlad4 за критику (правда она какая-то злая, наверно столкнулся с этими проблемами сам :)
21. maljaev 793 29.10.11 12:19 Сейчас в теме
Прочитал пост 13, вот абсолютно соглашусь с его автором - использую и то и другое в определенных случаях, но сам RegExp не панацея, тем более относительно HTML (DOM лучше). Но в определенных ситуациях RegExp рулит.
22. 1cspecialist 1419 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 1575 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. Они там его от каких-то С++ библиотек прикрутили.
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

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

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

22.04.2020    3323    23    infostart    2    

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

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

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

27.01.2020    15436    0    ids79    26    

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

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

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

15.01.2020    15911    0    John_d    22    

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

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

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

13.01.2020    9975    0    aximo    13    

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

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

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

10.12.2016    34303    0    unichkin    45    

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

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

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

30.12.2019    11031    0    kuzyara    33    

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

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

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

01.10.2019    25651    0    Yashazz    45    

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

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

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

06.09.2019    35223    0    rpgshnik    62    

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

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

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

15.10.2018    26327    0    tormozit    100    

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

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

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

05.09.2019    37386    0    ids79    52    

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

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

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

05.09.2019    21906    0    YPermitin    24    

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

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

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

03.09.2019    21955    0    YPermitin    80    

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

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

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

20.09.2012    73820    0    tormozit    129    

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

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

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

17.08.2019    25896    0    ids79    16    

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

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

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

08.08.2019    56938    0    ids79    37    

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

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

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

02.08.2019    26661    0    avalakh    21    

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

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

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

11.07.2007    44874    0    tormozit    38    

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

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

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

26.07.2019    43151    0    ids79    11    

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

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

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

17.07.2019    28806    0    ids79    27    

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

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

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

09.07.2019    21674    0    YPermitin    13    

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

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

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

10.09.2017    40695    0    tormozit    72    

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

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

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

04.07.2019    16528    0    SeiOkami    50    

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

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

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

25.06.2019    42601    0    ids79    20    

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

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

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

11.06.2019    21545    0    dmurk    144    

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

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

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

25.04.2019    14247    0    m-rv    2    

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

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

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

04.06.2019    34684    0    YPermitin    52    

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

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

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

16.05.2019    35598    0    YPermitin    30    

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

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

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

11.05.2019    24405    0    Eret1k    23    

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

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

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

16.04.2019    17844    0    m-rv    17    

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

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

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

07.04.2019    29584    0    ellavs    126    

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

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

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

28.03.2019    23570    0    ellavs    86    

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

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

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

14.03.2019    26663    0    YPermitin    53    

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

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

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

01.06.2018    27521    0    m-rv    21    

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

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

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

03.02.2019    31726    0    ids79    9    

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

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

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

14.12.2018    35300    0    ids79    72    

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

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

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

05.12.2017    25807    0    itriot11    34    

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

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

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

13.11.2018    37879    0    Unk92    21    

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

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

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

03.09.2018    24093    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

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

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

23.08.2018    35012    0    Rain88    46    

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

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

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

27.01.2016    71299    0    Serginio    108    

Повышаем эффективность разработки правил обмена

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

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    26232    0    olegtymko    47    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    34361    0    xrrg    82    

Строим графы средствами 1С (без GraphViz)

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

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    22932    0    slozhenikin_com    20    

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

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

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

10.11.2018    30759    0    ids79    40    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    17061    0    Rustig    9    

Просмотр временных таблиц запроса в отладчике без изменения кода

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

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

24.04.2018    43232    0    avfed@rambler.ru    26    

[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

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

Быть всегда в курсе дел, даже в дороге!

22.02.2018    25374    0    DarkAn    25    

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

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

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

25.07.2018    26362    0    grumagargler    26    

Минимализмы 3

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

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    43964    0    ildarovich    45    

Этюды по программированию. Взаимодействие с Microsoft Word

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

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

11.12.2017    31003    0    milkers    23    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

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

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    177385    0    MaxS    270    

Заполнение данных по ИНН контрагента с помощью альтернативного сервиса огрн.онлайн

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

Код для заполнения данных по ИНН контрагента из ЕГРЮЛ с сайта огрн.онлайн.

01.11.2017    28727    0    slava_1c    50