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

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

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

speech recognition звуковое управление com объекты machine learning voice control. машинное обучение

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

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

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

Результат тестовых испытаний на примере нескольких команд:

 

 

Примененные технологии:

NAudio (open source .NET audio library) 

Google Cloud Speech-to-Text

ML.Net

 

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

Вторая - разработать механизм работы с записью звука. 

Третья - как получить команду, которую потом можно будет превратить в функцию 1С и вызвать ее. 

Четвертая - как это импортировать в 1С и обеспечить работу модуля на клиенте.

 

Выбор Speech Recognition API

Казалось бы, первое решение возможно самое простое, ведь у нас есть Windows Speech Recognition, да и подавляющее количество пользователей 1С работают в клиентах под ОС от компании Майкрософт. Примеров работы довольно много, причем готовых приложений под Visual.Net - бери, пользуйся. Один минус - нет поддержки русского языка.

Альтернативы? Либо взять облачное решение или воспользоваться open source готовым решением, которое можно будет установить на клиентском компьютере. Я выбрал первый вариант, хотя у него есть и минусы - да, вам нужен доступ в Интернет для его работы. Но и у второго варианты они есть - увеличивается дистрибутив, вычислительные затраты (вычисления, связанные с распознаванием речи ложатся на клиентский компьютер), при обновлении модуля распознавания необходимо будет обновлять его, тогда как в облачных решениях эволюция библиотеки происходит без вашего участия.  Еще один минус облачных решений - они как правило платные. Но если мы возьмем модуль от Google, то плата скажем скорее символическая.

 

 

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

Решение от Google требует регистрации в их сервисе, я не буду здесь описывать этот процесс, пройдя по ссылке вы  разберетесь что надо делать (вкратце - зарегистрироваться в Google, подключить Google Cloud, добавить Google Speech-To-Text API, получить ключ, прописать путь к нему в глобальных переменных системы). Да у пользователя это может вызвать легкий ступор. Но без ключа система работать не будет. Хотя это требуется сделать всего один раз.

Итак. После того как ключ установлен, мы можем работать с API. 

 

Запись и обработка звука

Здесь мы должны сделать примерно такой же механизм, которым пользуются многие владельцы Android-смартфонов, когда они  выполняют  голосовой поиск Google.

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

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

С решения этой задачи началась разработка библиотеки классов для 1С. То есть задача номер 4 (как это импортировать в 1С) была решена в пользу технологии COM. 

В качестве инструмента был выбран Visual.Net 2019. Язык программирования  - С#

Лучшим решением для обработки звука была признана библиотека NAudio - за простоту, понятность, наличие хорошо разобранных примеров.

 

 

В NAudio есть два ключевых класса, которые управляют записью. WaveFileWriter - класс, который собственно пишет звук, и WaveInEvent, класс, который определяет качество звука и работает с событиями. У него обработчик событий  DataAvailable - он вызывает определенную вами функцию, если получены записанные с микрофона данные. Именно здесь придется решить важную задачу: а что собственно писать для передачи в Google?

Во-первых, мы знаем старт записи - он вызывается по нажатию кнопки, но НЕ знаем когда запись нужно остановить. 

Во-вторых, следует ли писать паузы и тихую, едва разборчивую речь?

И первая и вторая проблема была решена через анализ громкости записи. Чтобы отсечь тихую речь, а также обозначить конец команды достаточно получить уровень громкости в дате, полученной по событию DataAvailable, чтобы брать из буфера, где лежит запись, только то, что нам нужно. То есть если пользователь сказал что-то, допустим “Открой оборотно-сальдовую ведомость” и замолчал, то мы отсчитаем от последнего события DataAvailable с нужным нам уровнем громкости 1 секунду и генерируем событие RecordingStopped, чтобы остановить запись.

А если пользователь говорит без остановки? Тогда введем ограничение на длину записываемой команды. Скажем, 4 секунды. И останавливаем запись по времени.

После остановки записи нам остается отправить наши данные в Google через его класс SpeechClient (метод Recognize) и ждать ответа.

 

Обработка полученной строки

Итак, мы получили распознанную строку, преобразованную в текст. Например “Открой оборотно-сальдовую ведомость”, или “ журнал документов реализаций покажи”. Как нам получить команду, то есть строковую команду “ОткрытьОСВ” или “ОткрытьЖурналРеализаций”? Ведь ту или иную команду можно сказать по разному, и порядок слов будет произвольный.  Например “открыть журнал реализаций”, “покажи расходные накладные”, или “открой список документов продаж” должно приводить к одной и той же команде: “ОткрытьЖурналРеализаций”.

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

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

В рамках этой статьи описать принципы работы текстового классификатора будет сложно, поэтому ограничимся очень простым объяснением. С помощью алгоритмов машинного обучения мы должны натренировать модель, которая знает наборы различных фраз и выражений, сопоставленные с определенной командой. То есть тренировочные данные будут выглядеть так, если мы говорим о команде “ЖурналРеализаций”, где слева - варианты (признаки) (X), а справа - ответы (Y).
 

журнал реализаций;ЖурналРеализаций

список реализаций;ЖурналРеализаций

журнал реализации;ЖурналРеализаций

журнал реализацией;ЖурналРеализаций

журнал расходных накладных;ЖурналРеализаций

журнал расходные накладные;ЖурналРеализаций

список продаж;ЖурналРеализаций

список документы продаж;ЖурналРеализаций

список документов продаж;ЖурналРеализаций

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

список расходных накладных;ЖурналРеализаций

расходные накладные;ЖурналРеализаций

 

А по ОСВ, скажем, так:

оборотно-сальдовая;ОборотноСальдоваяВедомость;

оборотно-сальдовую;ОборотноСальдоваяВедомость;

оборотку;ОборотноСальдоваяВедомость;

оборотка;ОборотноСальдоваяВедомость;

оборотно-сальдовая ведомость;ОборотноСальдоваяВедомость;

осв;ОборотноСальдоваяВедомость;

сальдовку;ОборотноСальдоваяВедомость;

сальдовка;ОборотноСальдоваяВедомость

бухгалтерский отчет по счетам;ОборотноСальдоваяВедомость

И т. д.

Принцип работы этой модели достаточно прост. Итак, мы получаем распознанную фразу от Google Cloud. Следующим шагом мы выбрасываем из этой фразы все ненужные нам слова, то есть те, которых нет в нашем словаре команд (список всех слов, используемых в модели). То есть из фразы “ А покажи мне, пожалуйста, ну. Ммм...эээ, ну, расходных накладных журнал, например” останется “расходных накладных журнал”.  И потом уже просим нашу модель найти наиболее подходящий ответ (команду).Так как порядок слов для нас не важен, то программа выдаст нам очевидный ответ - “ЖурналРасходныхНакладных”.

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

 

 

Сначала это было протестировано в Python,  в виду быстроты разработки, потом было переделано на ML.NET на С# и включено в библиотеку управления звуком. Это было сделано для того чтобы не перегружать библиотеку, написанную на C# питоном. (Я не поклонник IronPython).

Итак, после распознания речи наша звуковая библиотека готова передать в 1С и саму распознанную строку и команду (если она найдена).

Отдельно стоит упомянуть размышления о работе с периодами и отборами. Особенно с датами. Скажем, нам нужно сформировать ОСВ по определенному счету и за определенный период. Здесь простого решения не получится. Скажем можно сделать еще одну модель, которая будет распознавать регулярные выражения дат - “с ..по”. “ за текущий год, “ за год”,  “ за месяц” и т.д.  И уже далее осуществлять поиск периодов работая со строкой аналитически, зная какое выражение здесь указано.

Работа в 1С

После того как библиотека классов была создана в .NET и зарегистрирована в Windows,  мы можем использовать ее в 1С через технологию COM на уже клиенте. 

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

 

 

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

 

 

Возвращаемое значение - строка текста и команда, если она распознана. Команде соответствовала функция в 1С. Например:

 

 

Сначала для теста была написана внешняя обработка и события обрабатывались по кнопке. Вот так это работало:

 

 

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

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

Дальнейшая разработка

Планы по дальнейшей разработке следующие: 

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

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

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

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Aleksandr55555 104 17.03.21 05:31 Сейчас в теме
А я долго не мог понять логотип и его связь с темой. Я изначально увидел силуэт человека (плечо - острый нос - ирокез). Оказалось, что нужно было смотреть не на жёлтое, а на красное.
olya1990; DrAku1a; velemir; +3 Ответить
3. velemir 63 17.03.21 07:36 Сейчас в теме
(1) Да, логотип не очень удачный.)
2. Aleksandr55555 104 17.03.21 05:31 Сейчас в теме
Тематика - интересная, необычная. Много работы проделано как при разработке, так и при создании статьи! Автору плюс.
4. D_e_X_T_e_R 532 17.03.21 08:09 Сейчас в теме
Прикольно, спасибо.
5. informa1555 1932 17.03.21 08:21 Сейчас в теме
Приветствую! А тут нет команды активации получается? Ну типа "Ок, Google", "Алиса", "Привет BMW" и т.д. То что кнопкой запускается это ладно, а как понять что команду уже можно диктовать? У меня например говоришь фразу "Привет 1С" или что подобное, она отвечает, потом говоришь команду "Привет, 1С": простейший голосовой ассистент для 1С. UPD: с исходниками Тут понятно что программа готова прослушать команду, а у вас я по видео не понял когда этот момент наступает...

PS. "писи-софт" - это что такое?
olya1990; velemir; +2 Ответить
6. velemir 63 17.03.21 08:38 Сейчас в теме
(5) Я видел вашу работу, отлично! И по comp vision ваши разработки очень вдохновляют (есть тоже идеи проектов).

Нажимаешь на кнопку (сейчас это cntr+w на клавиатуре) и говоришь, пока клавиша (хот кей) удерживается (там появляется иконка "Запись команды", то запись идет. Как на телефоне. Запись останавливается после паузы или по времени. Ключевых слов не надо.

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

"PS. "писи-софт" - это что такое?"

РС СОФТ - это начало нашей новой компании), которая работает на стыке 1С и других технологий, в том числе и машинного обучения.
7. informa1555 1932 17.03.21 08:41 Сейчас в теме
(6) А т.е. пока держишь нажатым - говоришь, отпустил - команда обрабатывается? Тогда да, удобно в принципе!
8. velemir 63 17.03.21 08:43 Сейчас в теме
(7) нажал - говоришь, да. отпускать не обязательно, конец записи сам определится по паузе в речи. это и будет команда.
19. papami 43 17.03.21 10:44 Сейчас в теме
(8)
Это правильная логика. Держать микрофон не всегда оптимально. Особенно, если используется беспроводная гарнитура. Та же Алиса постоянно слушает и сажает батарею.
9. salexdv 1947 17.03.21 08:44 Сейчас в теме
speechkit от Яндекс не пробовали? Это, конечно, субъективно, но мне показалось, что с распознаванием русского у него чуть лучше дела обстоят. Правда и задача у меня была специфическая, нужно было целые и дробные числа распознавать.
11. informa1555 1932 17.03.21 08:47 Сейчас в теме
13. salexdv 1947 17.03.21 08:49 Сейчас в теме
(11) Всё так, но стоит он не сильно много, если не диктовать 24/7. Я за время тестирования потратил целых 70 рублей за 1,5 месяца. В итоге, правда, пришлось от него отказаться, но не из-за денег, а из-за специфики задачи.
14. velemir 63 17.03.21 08:50 Сейчас в теме
(11) Гугл тоже платный). Там лимит есть по времени. Но копейки стоит.
12. velemir 63 17.03.21 08:49 Сейчас в теме
(9) видел. но гугл отлично на русском отрабатывает, по крайне мере особых проблем не наблюдалось.

яндекс тоже можно попробовать, просто опыт работы с гугл апи у меня есть (хотя тут вообще все элементарно).

И вот еще есть open source

https://cmusphinx.github.io/
15. velemir 63 17.03.21 08:51 Сейчас в теме
(9) Яндекс не пробовал, но знаю. Еще есть cmusphinx. Он бесплатный и открытый код.
10. nestokay 67 17.03.21 08:46 Сейчас в теме
Интересная идея, спасибо.
16. salexdv 1947 17.03.21 08:59 Сейчас в теме
Если стоит задача распознавания ограниченного количества команд, можно использовать фейсбуковскую платформу wit.ai. Она бесплатная, но в настройке довольно замороченная. Плюсом её является то, что на выходе для разных команд можно получить один результат. Например, можно настроить так, что для фраз "оборотно-сальдовая ведомость" и "оборотка" на выходе будет "ОСВ". С распознаванием русского у неё, правда, встречаются косяки, но для определенных задач вполне может подойти.
17. velemir 63 17.03.21 09:02 Сейчас в теме
(16) ну у меня так и сделано, что вы можете говорить как угодно , и по натренированной модели программа подыщет то, что лучше всего подходит. хоть "сальдовка", хоть "осв", хоть "бухгалтерский отчет по счетам". причем порядок слов не имеет значение.

это может пригодится еще и в расшифровке более сложных команд в комплексе. скажем " создай документ реализцию с отбором ко контрагенту вася пупкин".
18. salexdv 1947 17.03.21 09:09 Сейчас в теме
(17) Это я понял. Просто написал, как вариант решения подобной задачи, не используя ML.NET. В wit.ai настраиваются и сами фразы и дообучение модели можно выполнить, но мне думаются, что ваше решение лучше распознает фразу "оборотно-сальдовая", всё таки фейсбуковская балалайка немного для другого, типа "Включи свет", "Сделай тише" и т.п. Кроме того она больше ориентирована на английский язык.
21. velemir 63 17.03.21 12:27 Сейчас в теме
(18) Интереснее самому обучить модель, поднять немного свои скилы по ML. Вообще думаю мы скоро увидим время когда ML придет в 1С, и вместо тем о том как "раскрасить колоночки в отчете" мы будем обсуждать программирование 1с-ботов)
25. Yashazz 3753 17.03.21 22:51 Сейчас в теме
(21) Знаете, лет 10-15 назад я мечтал примерно о том же. Но и по сей день самые горящие задачи с востребованными решениями - это "почему себестоимость кривая", "опять на остатках краснота" и, конечно, "у меня все крыжики пропали!!!"
26. velemir 63 18.03.21 09:12 Сейчас в теме
(25)В наших силах приблизить будущее и сделать работу интереснее. Тем более что AI технологии развиваются и безусловно за ними будущее.
20. user621724_Dimav1979 306 17.03.21 10:56 Сейчас в теме
22. hiduk 104 17.03.21 14:06 Сейчас в теме
Это новое слово в науке и технике!
А команда "Сделать всё" поддерживается?:)
23. velemir 63 17.03.21 14:47 Сейчас в теме
(22) если хорошо вложиться в ИИ то можно сделать очень многое... но это пока размышления.
24. Yashazz 3753 17.03.21 22:49 Сейчас в теме
Забавная, но, имхо, бесполезная игрушка. Так, попробовать свои силы да поиграть в обучение ИИ. Ещё понимаю, озвучка исходящей из 1С информации, но вот автоматизировать входящий поток, тем более не данные, а управление... Крайне сомнительно.

Как мне однажды сказал шеф склада и логистики одной крупной конторы, "да мне проще пятерых тупых практикантов нанять, чем эти ваши голосовые команды делать".
27. strelec13 14 18.03.21 11:51 Сейчас в теме
(24)
"да мне проще пятерых тупых практикантов нанять, чем эти ваши голосовые команды делать"


Это сколько нужно времени, чтобы каждому из пятерых тупых практикантов каждый раз устные команды давать и при том,
после выполнения очередной устной ПРОСТОЙ команды (на сложные команды, а тем более задачи они тупо не способны),
они тупо будут ждать следующей простой устной или письменной команды :)
28. RealEscander 835 22.03.21 14:45 Сейчас в теме
Кабинет... все что-то бубнят в микрофоны... Забегает чел и на весь кабинет:
Shoutdown... Yes!
29. lunjio 65 16.04.21 14:05 Сейчас в теме
Команды - "Закрой все окна", "Закрыть все окна", "Закрой окна" будут одинаково интерпретироваться ? что-то мне подсказывает, что нет, а посему особой ценности кроме как Just for fun не вижу.
30. velemir 63 17.04.21 17:21 Сейчас в теме
(29) "Что-то" вам подсказывает неверно, потому что в данной разработке использованы и технологии машинного обучения, где на каждую команду есть много интерпретаций , которые можно пополнять. Причем в произвольном порядке слов. Так что не только "закрой окна" но и "окна закрой" - будет интерпретироваться одинаково.
31. vec435 15 29.04.21 21:42 Сейчас в теме
в принципе сказать фразу "Эска, создай документ "Отпуск" с движениями по регистру "как я провел" и по регистру "этим летом" с реквизитами "шашлыки,девочки,пиво,море" и услышать в ответ фразу "какой тип у реквизита пиво?" - не так и сложно наверно
Оставьте свое сообщение

См. также

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

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

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

27.01.2016    79373    Serginio    113    

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

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

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

06.04.2021    3958    Neti    7    

Неочевидные нюансы записи управляемой формы

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

Разберем несколько нюансов записи управляемой формы.

02.04.2021    5189    SeiOkami    49    

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

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

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

25.03.2021    15657    rayastar    47    

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

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

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

28.12.2020    5348    comol    31    

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

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

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

30.08.2020    13166    quazare    34    

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

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

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

08.05.2020    44646    user5300    17    

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

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

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

27.01.2020    45153    ids79    26    

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

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

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

10.12.2016    39030    unichkin    74    

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

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

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

15.01.2020    33391    John_d    22    

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

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

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

30.12.2019    25879    kuzyara    38    

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

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

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

02.12.2019    19992    YPermitin    61    

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

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

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

15.10.2018    32856    tormozit    105    

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

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

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

22.11.2019    10437    Sibars    19    

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

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

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

07.10.2019    34580    HostHost    41    

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

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

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

01.10.2019    43519    Yashazz    50    

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

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

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

20.09.2012    79893    tormozit    131    

О программе Postman для тестирования API и для чего она нужна 1С-нику

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

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    15902    budidich    29    

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

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

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

06.09.2019    74972    rpgshnik    70    

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

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

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

05.09.2019    62485    ids79    55    

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

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

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

11.07.2007    50888    tormozit    49    

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

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

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

05.09.2019    35783    YPermitin    25    

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

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

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

03.09.2019    27745    YPermitin    81    

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

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

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

17.08.2019    38427    ids79    16    

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

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

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

10.09.2017    47809    tormozit    74    

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

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

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

08.08.2019    117837    ids79    69    

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

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

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

02.08.2019    47993    avalakh    26    

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

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

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

31.07.2019    32209    json    15    

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

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

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

25.04.2019    16690    m-rv    3    

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

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

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

26.07.2019    83514    ids79    14    

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

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

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

17.07.2019    41845    ids79    27    

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

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

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

09.07.2019    29693    YPermitin    14    

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

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

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

16.04.2019    21318    m-rv    17    

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

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

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

04.07.2019    20720    SeiOkami    50    

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

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

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

02.07.2019    65457    ids79    17    

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

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

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

25.06.2019    64019    ids79    26    

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

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

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

01.06.2018    33269    m-rv    22    

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

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

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

11.06.2019    27952    dmurk    147    

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

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

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

16.05.2019    52807    YPermitin    30    

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

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

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

07.04.2019    39137    ellavs    127    

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

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

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

05.12.2017    29100    itriot11    34    

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

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

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

28.03.2019    29201    ellavs    90    

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

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

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

14.03.2019    36075    YPermitin    53    

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

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

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

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

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

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

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

10.11.2018    39074    ids79    40    

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

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

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

26.02.2019    25238    Vladimir Litvinenko    28    

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

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

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

25.07.2018    30508    grumagargler    31    

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

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

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

03.02.2019    49870    ids79    11