Программа для нечеткого сравнения строк FuzzyStringComparison

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

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

Программа для нечеткого сравнения строк FuzzyStringComparison

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

Что такое расстояние (метрика) Левенштейна?

В 1965 году советский математик Владимир Иосифович Левенштейн разработал алгоритм, который позволяет оценить, насколько похожа одна строка на другую. Алгоритм Левенштейна позволяет получить именно численную оценку похожести строк. Основная идея алгоритма состоит в том, чтобы посчитать минимальное количество операций удаления, вставки и замены, которые нужно сделать над одной из строк, чтобы получить вторую. Допустим, у нас есть слова Машка и Миша. Попробуем преобразовать одно слово в другое, используя только удаление, добавление и замену.

Машка Миша — исходное состояние

Мишка Миша — шаг 1 (замена)

Миша Миша — шаг 2 (удаление)

Нам потребовалось два шага, значит, расстояние Левенштейна от строки Машка до строки Миша равно 2.

Фонетический алгоритм Metaphone

Фонетические алгоритмы сопоставляют двум словам со схожим произношением одинаковые коды, что позволяет осуществлять сравнение и индексацию множества таких слов на основе их фонетического сходства. Для английского языка давно существуют и активно используются алгоритмы Soundex и Metaphone, которые создают для слова ключ, причём похожим словам или неверным написаниям одного слова будет соответствовать один ключ. Если кассир в банке наберёт вашу фамилию неверно, она всё равно получит доступ к вашей записи в базе данных, так как поиск ведётся по ключам. Например, ключ MetaPhone для Gustavson и Gustafson - KSTFS. Ключ SoundEx для тех же фамилий - G312. Уже отсюда можно видеть, что MetaPhone убирает гласные, преобразует строку в верхний регистр и пишет одну букву F вместо двух одинаково читающихся F и V. Более простой алгоритм SoundEx записывает первую букву, затем номера групп последующих согласных (B, F, P, V - первая группа; C, G, J, K, Q, S, X, Z - вторая; D, T - третья; L - четвёртая; M, N - пятая и R - шестая). Из повторяющихся номеров остаётся только один; всего записывается не более четырёх номеров.

Транслитерация кириллицы в латынь по правилам ГОСТа

RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя';

RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ';

arr: array[1..2, 1..ColChar] of string = (('a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'y','k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f','kh', 'ts', 'ch', 'sh', 'shch', '''', 'y', '''', 'e', 'yu', 'ya'), ('A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'Y','K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F','Kh', 'Ts', 'Ch', 'Sh', 'Shch', '''', 'Y', '''', 'E', 'Yu', 'Ya'));

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

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

Во первых – всевозможные сдвоенные согласные. Убираем, одной вполне достаточно:

bb=b; kk=k; rr=r; cc=c; ll=l; ss=s; dd=d; mm=m; tt=t; ff=v; nn=n; zz=z; hh=h; pp=p

Далее — разнообразные шипяще-свистящие:

sh=s; zch=s ; ck=k ; ch=c ; sch=s ; ks=x; shch=s; csh=s ; ts=c; zhch=s; zh=z ; tc=c

Потом остальные фирменные фишки русского языка, такие как «ю», «я», «ё», «й», «ф» и т.п.:

yu=u; je=e; oy=oi; ju=u; oj=oi; ey=ei; ph=f; ya=a; ej=ei ; yy=i; ja=a; yo=e ; ii=i; ia=a; io=e; iy=i; ye=e; jo=e ; y=i; ie=e

Ну и прочее, оставшееся:

kh=h; gh=g; '=

Метод n-грамм, метод триад

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

Организация списка ключевых слов в виде инвертированного файла, в котором роль терминов играют подстроки длины n (так называемые "n-граммы"), позволяет вести поиск по сходству и по подстроке, в большинстве случаев - без сканирования словаря. Предположим, нужно найти все термины, отличающиеся от n не более чем на k операций редактирования. Представим и в виде суммы k+1 подстрок, каждая из которых не короче n. Если такое разбиение невозможно - сканируем словарь. Если же возможно - то все подстроки разбиения обладают префиксом длины n. Для каждого префикса (являющегося как раз n-граммой) нужно считать соответствующий инвертированный список (где хранятся ссылки на слова, содержащие эту n-грамму), и для каждого слова из инвертированного списка непосредственно проверить, действительно ли оно отличается от поискового термина и не более чем на к операций редактирования.

Чтобы избежать сканирования словаря в случае коротких поисковых терминов - желательно также инвертировать и "синтетические" n-граммы, то есть подстроки вида $s и i$, где s и i, соответственно, начала и окончания слов длины n-1, а $ - специальный символ, не входящий в алфавит. Модификация метода n-грамм Вилбура-Ховайко, которую сами авторы называют методом триад (используются 3-граммы или "триады"), была разработана для минимизации числа обращений к словарю. Авторы метода предложили строить полное множество терминов, имеющих общие триады с ключевыми словами запроса, но затем - с помощью весового "коэффициента похожести" терминов словаря и запроса - на этапе чтения инвертированных списков "отсекать" малоперспективные варианты (для которых коэффициент похожести будет меньше заданного порогового значения). При этом какие-то термины могут быть пропущены; налицо компромисс между эффективностью поиска и его полнотой.

Про альтернативный метод поиска в программе FuzzyStringComparison

В программе FuzzyStringComparison используется модифицированный метод триад, предложенный в 1998 году Владимиром Кива.

Предположим есть такой текст:

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

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

   Усложним процедуру, добавив проверку на присутствие 2-буквенных подстрок первого слова во втором. Потом 3-х буквенных... не пора ли остановиться? Средняя длина слова в русском языке - 6 букв. Хотите верьте, хотите нет, но перебором 3-х буквенных подстрок (ровно половина от 6) можно ограничиться. Число успешных поисков поделим на общее число подстрок - это и будет показатель сходства.

   Примеры:

   КОЛЕСО, ОКОСЕЛ. По отдельным буквам 6 попаданий из 6. 2-х буквенные: КО, ОЛ, ЛЕ, ЕС, СО - 1 из 5. 3-х буквенные: КОЛ, ОЛЕ, ЛЕС, ЕСО - 0 из 4. Результат: (6+1+0)/(6+5+4) = 0.467.

   АРБУЗ, ТАРАКАН. 2 из 5; 1 из 4; 0 из 3. Результат: 3/12 = 0.250.

   ТАРАКАН, АРБУЗ. 4 из 7; 1 из 6; 0 из 5. Результат: 5/18 = 0.278.

   Видим, что "сходство", вообще говоря, не транзитивно. Поменяв порядок сравнения, можно получить иной результат. Чтобы побороть такой эффект, будем вычислять "коэффициент сходства", усредненный по обоим словам. Общее число совпадающих подстрок разделим на общее число подстрок: (3+5)/(12+18) = 0.267.

Краткое описание программы FuzzyStringComparison

Программа проводит транслитерацию с последующей адаптацией фонетического алгоритма для русского языка. И далее проводится сравнение в соответствии с установленными флагами.

На вход программы подаются два файла:

файл из базы-источника (по маске Для_FuzzyStringComparison_Источник*.txt);

файл из базы-приемника (по маске Для_FuzzyStringComparison_Приемник*.txt).

Оба файла содержат строки следующего формата: Код|Наименование|, например:

в базе-источнике:

02463|ящик A-Elita Box|

16115|ящик A-Elita Sport|

31403|ящик A-Elita Sputnik|

в базе-приемнике:

26683|ящик A-Elita Sputnik|

13708|ящик A-Elita малый Sport|

21436|ящик A-Elita малый SportBeg яркий|

На выходе формируется файл: FuzzyStringComparison_Результат.txt.

Файл результата имеет строки следующего формата: Код_Приемник|Наименование_Приемник|Код_Источник;Расстояние_Левенштейна|, например:

26683|ящик A-Elita Sputnik|31403;0|16115;5|24613;6|02463;7|08040;11|21620;11|02243;12|09474;12|10807;12|15352;12|

13708|ящик A-Elita малый Sport|16115;5|02463;9|31403;10|24613;10|06966;13|03118;13|07200;13|06204;14|00447;14|19550;14| 21436|

ящик A-Elita малый SportBeg яркий|16115;13|31403;14|24613;15|02463;17|09744;19|27177;19|21620;19|04494;20|02727;20|14652;20|

Коды из базы-источника выстраиваются по возрастанию расстояния Левенштейна (0 - полное соответствие).

Количество соответствий в настоящей версии программы 10 штук.

Оценка скорости работы программы FuzzyStringComparison

При использовании только флага "Использовать алгоритм Левенштейна" при сопоставлении двух баз по 30000 строк время обработки около 4-х часов.

Качество сопоставления

Traper кормушка фидер "Methody" 25-50гр 2шт. = Traper кормушка Feeder Metody 2шт 25/30/35/40/50gr

кембрик Фламинго силикон.цветной d.1,0-2,0мм 1м. = Flamingo кембрик силикон дл.1м д.1,0-2,0мм

блесна Меппс Аглия Хэви Лонг №2Tiger = блесна Mepps Heavy Aglia Long №2 Tiger

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

Примечание

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

Также обращайте внимание на кодировки сравниваемых текстовых файлов (желательно использовать ANSI).

Примеры обработок 1С можно посмотреть здесь: //infostart.ru/public/442670/.

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

Наименование Файл Версия Размер
FuzzyStringComparison.exe

.exe 520,00Kb
05.02.16
21
.exe 1.0 520,00Kb 21 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. boln 1011 11.01.16 13:03 Сейчас в теме
Как насчет "тождества визуальных двойников" (русская В = латинская B, русская Р = латинская P, и т.п.)?
Некоторые юзеры грубо вводят наименования, допуская "визуальные двойники". Они также используются для создания ников-клонов в интернете. Лет 10 назад столкнулся с этим, намучился, пришлось специальную dll писать.
4. o2005 62 11.01.16 16:36 Сейчас в теме
(1) boln, Если ошиблись с одной буквой расстояние Левенштейна будет 1. Не тождество конечно, но очень близко.
6. CheBurator 3422 11.01.16 22:50 Сейчас в теме
(1) boln, strmatch дает похожесть с учетом фонетики
10. boln 1011 11.01.16 22:59 Сейчас в теме
(6) CheBurator, здесь фонетика как раз не всегда совпадает. Латинская P - это "п", латинская H - это "х"...
12. o2005 62 12.01.16 09:32 Сейчас в теме
(10) boln, в программе FuzzyStringComparison есть фонетический алгоритм Metaphone. И при установке флага "Использовать алгоритм Metaphone" получите результат с учетом фонетического звучания.
Следует понимать, что алгоритм Metaphone изначально создавался под английский язык. В сети существует адаптация его к русскому, но на мой взгляд (опытным путем), его работа не очень хороша. Поэтому использовал идею произвести транслитерацию и применить к полученному результату алгоритм Metaphone.
JohnyDeath; boln; +2 Ответить
2. tormozit 5823 11.01.16 13:56 Сейчас в теме
Жду реализацию на встроенном языке 1С и в виде внешней компоненты. Планирую внедрять этот алгоритм в инструмент "Поиск дублей и замена ссылок (ИР)". Может и исходники приложения опубликуешь?

Еще есть древняя ВК на похожую тему http://infostart.ru/public/237186/
3. cool.vlad4 45 11.01.16 15:49 Сейчас в теме
(2) tormozit, я эту древнюю переписал (исходники же автор выложил) частично в Native (не все методы реализовал, поскольку не нужны были) и юзаю . может дойдут руки, причешу и выложу
5. o2005 62 11.01.16 16:57 Сейчас в теме
(2) tormozit, эту библиотеку я имел в виду: "Поискав то, что есть на эту тематику, нашел библиотеку, но время работы ее абсолютно не годилось для моей задачи."
Как время будет может быть сделаю внешнюю компоненту на Native.
Исходники пока выкладывать не планирую.
Программа делалась под задачу. Пример ее использования можно посмотреть здесь http://infostart.ru/public/442670/.
7. CheBurator 3422 11.01.16 22:53 Сейчас в теме
(2) tormozit, strmatch в виде ВК нормально юзается в восьмерке.
Со strmatch я много работал/работаю - считаю работает отлично!
основное время кушается на заполнение кеша, сам поиск похожих выдает итог достаточно быстро.
8. CheBurator 3422 11.01.16 22:56 Сейчас в теме
таких сравнений я написал уже наверное вагон, простенький пример http://infostart.ru/public/14255/
можно юзать ВК strmatch.dll (выложена на портале автором, даже исходники раздавал).

и похожесть строк лучше в % показывать - народу привычнее.
Evil Beaver; +1 Ответить
11. o2005 62 12.01.16 09:20 Сейчас в теме
(8) CheBurator, в ВК strmatch.dll , как пишет автор: "Важное замечание 1. Значения, выдаваемые компонентой, это НЕ ПРОЦЕНТЫ (!!!)."
В случае моей программы, как вариант, можно использовать альтернативный алгоритм, тогда разница будет в %. Другое дело что при этом падает в 3 раза производительность.
9. CheBurator 3422 11.01.16 22:58 Сейчас в теме
По опыту "идентификации" достаточно больших неформализованных прайсов - опыт показывает, что если похожей позиции нет в первых 20 позициях - то скорее всего дальше смотреть не надо...
13. V.Nikonov 119 14.01.16 14:43 Сейчас в теме
Остался вопрос: Анализируются отдельные слова? Как обработка относится к перестановке слов в фразе? Учитывается перестановка отдельных букв? Например, [Вкусный Чай] и [Чай Вкусный] сильно похожи?
14. o2005 62 14.01.16 23:06 Сейчас в теме
(13) V.Nikonov, Анализируется фраза целиком. При этом проводится транслитерация.
Результаты программы для предложенных Вами фраз [Вкусный Чай] и [Чай Вкусный]:
- расстояние Левенштейна (без Metaphone) = 8
- расстояние Левенштейна (c Metaphone) = 2
- альтернативный алгоритм (без Metaphone) = 86 %
- альтернативный алгоритм (с Metaphone) = 83 %
Но полученные результаты не должны вводить в заблуждение, что какой-то из методов сравнения лучше чем другие. На разных примерах они показывают себя по разному.
15. Zet1313 10.02.16 15:17 Сейчас в теме
Спасибо за идею и прекрасную программу!
Но почему вы взяли старый ГОСТ по транслитерации? Например в ГОСТ Р 52535.1-2006 (который применяется для транслитерации загранпаспортов и кредитных карт) буква Ю выглядит как IU , что в общем логично с точки зрения фонетики...
16. o2005 62 10.02.16 21:16 Сейчас в теме
(15) Zet1313, на мой взгляд сложно сходу определить какой из алгоритмов транслитерации будет себя лучше показывать. Как вариант, можно внедрить в программу несколько ГОСТов транслитерации, чтобы пользователь выбирал на свое усмотрение.
Оставьте свое сообщение

См. также

Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо

Инструментарий разработчика Универсальные обработки v8 1cv8.cf Абонемент ($m)

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

2 стартмани

06.10.2014    145255    1951    ekaruk    164    

Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)

Прочие инструменты разработчика Журнал регистрации Абонемент ($m)

Набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux. Готовые приложения и исходный код.

10 стартмани

26.05.2020    2658    5    YPermitin    0    

Downloader 1C

Прочие инструменты разработчика 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Консольное приложение для подготовки библиотеки дистрибутива 1С.

1 стартмани

13.04.2020    2087    0    korableg    4    

Список измененных объектов из "Отчета о сравнении конфигураций"

Прочие инструменты разработчика Россия Абонемент ($m)

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

1 стартмани

18.02.2020    1273    1    seriouskeks    1    

Консоль запросов с графом (Анализатор сложных запросов) Промо

Консоль запросов v8::УФ v8::Запросы 1cv8.cf Абонемент ($m)

Консоль запросов для анализа запросов с большим количеством временных таблиц и вложенных запросов. Отображает структуру взаимосвязей временных таблиц в виде графа. Позволяет быстро передвигаться по тексту запроса и получать результат выполнения подзапросов. Единственная консоль запросов, которая позволяет выводить результат выполнения вложенных запросов и любой части объединения запроса. Удобное получение данных запроса из отладчика включая временные таблицы. Текст запроса в структурированном виде (можно свернуть, развернуть текст подзапроса). И еще много другого, чего вы не найдете в других консолях запросов. Поддержка УФ и ОФ. Версия 0.9.1 от 18.10.2019 (поддержка WebKit).

10 стартмани

03.05.2017    93681    406    manuel    248    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

02.10.2019    15805    186    dmitrydemenew    44    

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

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

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

3 стартмани

04.09.2019    20855    21    Stepa86    44    

Упражнения на Перфоленте. Парсим технологический журнал 1С

Сервисные утилиты Инструментарий разработчика Практика программирования Разработка Абонемент ($m)

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

1 стартмани

31.07.2019    6966    0    Perfolenta    62    

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

Инструментарий разработчика Универсальные обработки v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

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

3 стартмани

28.10.2018    29326    276    ROL32    67    

Просмотр и анализ структуры базы данных (отчет на СКД)

Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.

5 стартмани

24.07.2019    18483    157    YPermitin    27    

Перфолента, первое знакомство. Новый язык программирования

Практика программирования Инструментарий разработчика Абонемент ($m)

Первое знакомство с новым языком программирования Перфолента. В статье описано назначение языка, причины его появления, основные характеристики и возможные варианты использования.

22.07.2019    18902    21    Perfolenta    165    

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

Инструментарий разработчика v8 Абонемент ($m)

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

1 стартмани

30.06.2019    10838    0    vadim1980    5    

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

Универсальные функции Инструментарий разработчика Учет ТМЦ Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

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

1 стартмани

17.08.2015    44828    155    ekaruk    31    

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

Инструментарий разработчика Jenkins v8 Абонемент ($m)

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

1 стартмани

03.06.2019    20855    5    ripreal1    89    

Сценарий PowerShell для конвертации файла правил обмена данными КД 2 в Excel

Инструментарий разработчика Загрузка и выгрузка в Excel Абонемент ($m)

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

1 стартмани

24.05.2019    3551    0    c1nil    5    

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

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.05.2019    26641    119    Diversus    42    

Faster - многофункциональный ускоритель работы программиста 1С Промо

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа Faster 8.7 позволяет ускорить процесс работы программиста 1С (и не только 1C). Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex) Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Полностью переделан механизм перехвата клавиш, теперь не зависает при обработке скриптов.

1 стартмани

24.05.2012    75470    207    moolex    145    

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

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

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

5 стартмани

09.01.2019    39300    245    informa1555    200    

Консоль Внедренца v.3.6.2 (vnedr.cf)

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.08.2018    19284    327    evvakra    42    

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

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

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

1 стартмани

27.08.2018    30751    48    dsdred    15    

Менеджер буфера обмена с поддержкой 1С - ClipAngel 1.89 Промо

Сервисные утилиты Инструментарий разработчика Абонемент ($m)

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

1 стартмани

17.01.2017    32778    69    tormozit    213    

1C Форматер кода

Инструментарий разработчика Россия Абонемент ($m)

Автоматическое форматирование кода 1С

1 стартмани

24.08.2018    7152    2    admin_at_gkgeostroy    9    

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

Инструментарий разработчика Практика программирования v8 1cv8.cf ERP2 УТ11 КА2 Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 1». В этой части будет "Микс" из OData+HTTP-Сервис(Get)+СКД. Наш пример будет работать как в браузере, так и в написанной нами обработке. Работать будем с разными версиями платформ.

1 стартмани

13.08.2018    29526    33    dsdred    0    

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

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

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

5 стартмани

09.08.2018    25395    25    informa1555    26    

Консоль запросов + ТЗ как параметры Промо

Консоль запросов v8 1cv8.cf Украина Абонемент ($m)

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

2 стартмани

12.11.2010    32712    58    Kashemir    24    

Python в работе программиста 1С

Инструментарий разработчика Абонемент ($m)

Python для помощи программисту 1С.

1 стартмани

22.06.2018    11930    0    tiger12    13    

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

Консоль запросов v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

25.05.2018    21804    255    leongl    16    

Подсветка синтаксиса 1С для программы NotePad ++

Инструментарий разработчика Абонемент ($m)

После установки подсветки, в программе "NotePad ++" будет подсвечиваться код 1С. Очень удобно работать с подсвеченным кодом... В архиве с файлом инструкция по установке....

1 стартмани

15.05.2018    9474    14    IceEvgen    4    

[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.

1 стартмани

07.10.2014    49497    200    GusevNA    75    

Работа со схемой запроса

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    40977    85    kalyaka    34    

Длинная арифметика (Bignum arithmetic) c COM-интерфейсом (ActiveX) на библиотеках MPIR

Инструментарий разработчика Практика программирования Россия Абонемент ($m)

Расчеты любой точности в вашем программном продукте, поддерживающем стандарт COM. Размер/точность длинного числа зависит только от вашей оперативной памяти. Проект основан на исходниках библиотеки MPIR, Edition 3.0.0. Полностью написан на С/С++ (COM.DLL).

1 стартмани

12.04.2018    6006    1    bedvit    4    

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

Инструментарий разработчика Информационная безопасность v8 v8::Права УТ11 Абонемент ($m)

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

10 стартмани

15.03.2018    16251    8    33lab    1    

Консоль запросов для УФ универсальная 8.3.7.3 Промо

Консоль запросов v8::УФ v8::Запросы 1cv8.cf Абонемент ($m)

Реализован программный вызов консоли для захвата "рваного" запроса, МВТ и параметров. В консоли реализована полная поддержка работы с таблицами значений. Выборочный просмотр пакетов и временных таблиц. Возможность выборочной выгрузки пакета запроса в ТЗ, с последующим её редактированием, сохранением на диск. Использование сохранённой ТЗ в качестве параметра для других запросов. Возможность обхода ТЗ в цикле с выполнением кода. Отсутствуют ошибки при наличии уничтожения временных таблиц. Замер времени выполнения каждого пакета запроса. Приличное окно настройки типа (только для параметров запроса), лёгкое преобразование в список значений и обратно. Поддержка дополнительных типов: ТЗ, Граница, Момент времени, Вид счёта, Вид движения и т.д. Форматирование типа значения при выводе запроса (NULL, пустая ссылка, пустая строка и т.п.). Наверное, самый лучший подбор ширины колонок. Возможность добавлять листы для вывода результатов запросов. Генерируется текст для конфигуратора с учётом количества результирующих пакетов, для каждого пакета можно настроить выборку или выгрузку и пересоздать текст.... Короче, лучше один раз увидеть ...

5 стартмани

12.03.2015    140514    3405    akor77    717    

Генератор уникального идентификатора GUID для вставки в код модуля

Инструментарий разработчика Россия Абонемент ($m)

Утилита предназначена для вставки в код модуля, при нажатии горячей кнопки "ALT+CTRL+G", строки сгенерированного GUIDа.

1 стартмани

14.02.2018    5692    2    sdjoker    3    

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

Работа с интерфейсом Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

18.11.2017    28396    31    bonv    10    

Полезный код для программистов 1С (часть 1). Управление свойствами элементов формы. Хранение копии данных реквизитов

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.09.2017    40125    15    vandalsvq    80    

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

Инструментарий разработчика v8 КД Абонемент ($m)

При переносе данных между различающимися данными частенько приходится смотреть в правила. И часто, чтобы выяснить, к примеру, каким документом формируются остатки по конкретному ПВД, нужно заглядывать в него и искать, какое ПКО в нем вызывается. А может вызываться и алгоритм, в котором вызывается ПКО ;-) А если правил много? Чтобы не мучить себя утомительными поисками, предлагаю воспользоваться этой обработкой.

1 стартмани

14.10.2011    21127    29    Meta    17    

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

Практика программирования Инструментарий разработчика Абонемент ($m)

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

1 стартмани

18.07.2017    37644    26    Tavalik    61    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика v8::УФ Абонемент ($m)

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

1 стартмани

04.07.2017    29229    24    grumagargler    30    

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

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

28.06.2017    33082    334    Synoecium    49    

Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена) Промо

Инструментарий разработчика Универсальные обработки Перенос данных из 1C8 в 1C8 v8 КА1 БП2.0 ЗУП2.5 УТ10 УПП1 Абонемент ($m)

Вы внедряете обмен данными между двумя типовыми или основанными на типовых БД и вам необходим инструмент, чтобы сопоставить между собой справочники этих конфигураций? Вы хотите навести порядок в обмене данными, потому что вам надоело вылавливать дублирующиеся объекты? Вам очень хочется перепоручить сопоставление объектов обменивающихся баз пользователям, но нет подходящего и понятного пользователям интерфейса? Тогда вам нужна именно эта обработка!

4 стартмани

11.11.2015    37211    133    catsam    8    

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

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

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

1 стартмани

22.05.2017    31174    94    Silenser    34    

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

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

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

1 стартмани

13.03.2017    28575    111    romasna    49    

CSV Converter

Инструментарий разработчика Универсальные обработки Разработка внешних компонент Абонемент ($m)

Представляю вам мою первую программу. CSV Converter. Компонента читает файл с разделителями и переводит в структуру, которую мы можем получить, выгрузив любую ТЗ в файл стандартной функцией "ЗначениеВФайл()".

1 стартмани

03.03.2017    13515    4    ziercool    2    

1С:EDT ("Eclipse-Конфигуратор"). Пример разработки плагина

EDT Абонемент ($m)

Видеоматериал, демонстрирующий пример разработки несложного работоспособного плагина для 1C:Enterprise Development Tools

1 стартмани

22.12.2016    33937    14    boln    52    

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

Инструментарий разработчика v8 Абонемент ($m)

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

1 стартмани

11.11.2016    26451    59    grumagargler    47    

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

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    34158    95    json    25    

Управление задачами: Канбан доска

Инструментарий разработчика БСП (Библиотека стандартных подсистем) v8 Абонемент ($m)

Конфигурация "Управление задачами" с использованием БСП. Канбан доска. Открытый код.Загрузка изменений из хранилища конфигураций 1С и связь с задачами. Проект выложен на github (ссылка в публикации). Управляемые формы. Рассылка уведомлений.

1 стартмани

02.10.2016    60273    527    BlizD    293