Использование Yandex Speechkit для распознавания речи в 1С

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

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

https json YandexSpeechKitCloud

69
Оказалось, что в этом нет ничего сложного.

     Господа! Зная, что здесь сидят мэтры 1С, прошу: не судите строго, это моя первая статья...

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

     Однажды я задумал написать для себя проект: телеграм-бота, который помогает вести семейный бюджет. Вроде всего-ничего: арендовал vds на убунте 16.4, развернул postgresql 9.6 и, конечно же, сервер 1С 8.3.12...(не помню по памяти), накидал план-проект и, соответственно, приступил к работе. Во время работы вдруг пришла идея: а почему бы не сделать так: отправлять боту аудиосообщение с командой, скажем, "поступление 5 рублей", после этого речь должна будет преобразовываться в текст и обрабатывать команду? К моменту, когда пришла эта идея, основной модуль по обработке команд из текстовых сообщений был готов.

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

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

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

Звук = СтруктураСообщения.voice;
Запрос = Новый HTTPЗапрос(BotID + "/getFile?file_id=" + Звук.file_id);
Ответ = Соединение.Получить(Запрос);
СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(СтрокаОтвет);
Структура = ПрочитатьJSON(Чтение);
			
Запрос = Новый HTTPЗапрос("/file/" + BotID + "/" + Структура.result.file_path);
Ответ = Соединение.Получить(Запрос);
ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();
			
Файл = ПолучитьИмяВременногоФайла("ogg");
ДД.Записать(Файл);

     На этом останавляваться не будем. Кому интересно - читайте документацию.

     Вот, у нас есть звуковой файл. Такие голосовые сообщения хранятся в формате .ogg, что очень удобно ввиду их небольших размеров, а также того, что Яндекс также по-умолчанию принимает именно этот формат файла. Теперь нам необходимо авторизоваться в Яндекс облаке. Во-первых, нужно похимичить с созданием платежного аккаунта, созданием каталога, назначении ему прав. Обо всём написано здесь. Четвертый пункт в этой инструкции гласит, что нужно получить IAM-токен. Здесь самое интереное: IAM-токен действителен в течение 12 часов. Получается, что его нужно периодически обновлять. Здесь описано, как это сделать. Для обновления IAM-токена нужен постоянный пользовательский OAuth-токен, который можно получить на той же странице, перейдя по ссылке в пункте 2 на вкладке API. Всё, самое сложное позади;)

     Так как IAM-токен действителен в течение 12 часов, то сначала я сделал регламентное задание. Но практика показала, что он действует меньше. Поэтому я сделал, чтобы он обновлялся при получении каждого голосового сообщения. Ничего страшного, пусть пашет;) Итак, для обновления токена создается https соединение с доменом "iam.api.cloud.yandex.net" и стандартными портами и выполняется один простой POST-запрос "/iam/v1/tokens". Заголовок один, который гласит, что мы отправляем данные в формате json. В теле запроса указываем один параметр "yandexPassportOauthToken" и в значение этого параметра указываем наш OAuth-токен. В ответе на такой запрос получаем новенький IAM-токен.

Процедура ОбновитьIAMЯндекс()
	
	СоединениеЯндекс = Новый HTTPСоединение("iam.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type","application/json");
	Запрос = Новый HTTPЗапрос("/iam/v1/tokens",Заголовки);
	СтрокаТела = "{""yandexPassportOauthToken"": """ + Константы.OAUTHТокен.Получить() + """}";
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);	
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);
	
	Константы.IAMТокенЯндекс.Установить(СтруктураОтвета.iamToken);
	
КонецПроцедуры

     Итак, ещё одна часть завершена. Теперь, наконец, самое интересное - отравить яндексу запрос на распознавание речи. Ах да, ещё нюанс... Помните, что нужно было создать каталог в Яндекс облаке? Нам нужен ID этого каталога. Это совсем не сложно - смотрите здесь.

     И финишная прямая. Создаем новое https соединение с доменом "stt.api.cloud.yandex.net"и стандартными портами. Создаем POST-запрос "/speech/v1/stt:recognize/". В заголовках указываем стандартный "Content-Type=application/json", А также наш IAM-токен. Имя заголовка "Authorization", значение - "Bearer " + наш токен. В параметрах запроса только один обязательный - "folderId", в значение которого вписываем ID нашего каталога. О других параметрах читайте в документации. В тело запроса вставляем наши двоичные данные, полученные с сервера телеграм.

СоединениеЯндекс = Новый HTTPСоединение("stt.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
Заголовки = Новый Соответствие();
Заголовки.Вставить("Authorization", "Bearer " + Константы.IAMТокенЯндекс.Получить());
Заголовки.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/speech/v1/stt:recognize/?topic=general&folderId=" + Константы.ИДПапкиЯндекс.Получить() + "&lang=ru-RU",Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДД);
Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);					
СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
			
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(СтрокаОтвет);
СтруктураОтвета = ПрочитатьJSON(Чтение);
ТекстСообщения = СтруктураОтвета.result;

     Всё. В ответе на последний запрос будет результат - строка. После этого делаем с этой строкой всё, что душе угодно;)

     Итак, организовать распознавание речи в текст сделать не так уж сложно. Конечно, не во всяком бизнесе это пригодится. Но зато мне очень круто говорить своему боту, а он делает всё, что я ему скажу;)

     Полный листинг того, что получилось, прилагаю внизу. Если вам оказалась эта статья полезной и интересной, или же у вас есть объективные отзывы и комментарии, буду рад о них узнать. Если статья окажется полезной, то в дальнейшем напишу про прочие фишки, которые я использовал при создании бота, а, может, даже и про то, как этот бот создается. И ещё раз прошу: не судите строго.. Всем спасибо за внимание!

Функция ПолучитьТекстИзГолосовогоСообщения(СтруктураСообщения)
	Если СтруктураСообщения.Свойство("voice") Тогда
		// получаем уникальный код звукового файла
		Звук = СтруктураСообщения.voice;
		Запрос = Новый HTTPЗапрос(BotID + "/getFile?file_id=" + Звук.file_id);
		Ответ = Соединение.Получить(Запрос);
		СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
		Чтение = Новый ЧтениеJSON;
		Чтение.УстановитьСтроку(СтрокаОтвет);
		Структура = ПрочитатьJSON(Чтение);
		
		// получаем двоичные данные 
		Запрос = Новый HTTPЗапрос("/file/" + BotID + "/" + Структура.result.file_path);
		Ответ = Соединение.Получить(Запрос);
		ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();	
		
		// обновляем IAM-токен
		ОбновитьIAMЯндекс();

		// получаем готовый результат
		СоединениеЯндекс = Новый HTTPСоединение("stt.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
		Заголовки = Новый Соответствие();
		Заголовки.Вставить("Authorization", "Bearer " + Константы.IAMТокенЯндекс.Получить());
		Заголовки.Вставить("Content-Type", "application/json");
		Запрос = Новый HTTPЗапрос("/speech/v1/stt:recognize/?topic=general&folderId=" + Константы.ИДПапкиЯндекс.Получить() + "&lang=ru-RU",Заголовки);
		Запрос.УстановитьТелоИзДвоичныхДанных(ДД);
		Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);						
		СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
			
		Чтение = Новый ЧтениеJSON;
		Чтение.УстановитьСтроку(СтрокаОтвет);
		СтруктураОтвета = ПрочитатьJSON(Чтение);			
		Возврат СтруктураОтвета.result;	
	Иначе
		Возврат Неопределено;	
	КонецЕсли;
КонецФункции

Процедура ОбновитьIAMЯндекс()
	
	СоединениеЯндекс = Новый HTTPСоединение("iam.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type","application/json");
	Запрос = Новый HTTPЗапрос("/iam/v1/tokens",Заголовки);
	СтрокаТела = "{""yandexPassportOauthToken"": """ + Константы.OAUTHТокен.Получить() + """}";
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);	
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);
	
	Константы.IAMТокенЯндекс.Установить(СтруктураОтвета.iamToken);
	
КонецПроцедуры

26.08.2019 обновлено. В процедуре обновления IAM-токена изменил метод получения ответа. Теперь вместо создания временного файла использую объект HTTPОтвет.

69

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

Комментарии
Избранное Подписка Сортировка: Древо
1. for_sale 796 26.08.19 10:25 Сейчас в теме
Желательно давать ссылку на оригинальный апи от производителя, этот сайт тлгрм, насколько я понимаю, с телеграмом не аффилирован и там могут быть как минимум устаревшие данные а как максимум что-нибудь злонамеренное.
3. RomanCrow13 86 26.08.19 10:32 Сейчас в теме
2. for_sale 796 26.08.19 10:28 Сейчас в теме
Но в целом спасибо за статью, интересно!
4. ltfriend 416 26.08.19 13:29 Сейчас в теме
А зачем в ОбновитьIAMЯндекс используется временный файл?
7. RomanCrow13 86 26.08.19 14:08 Сейчас в теме
(4)На самом деле правда не зачем. Просто хотел показать, что так тоже можно. Исправлю, чтобы глаза не мозолило)
5. AzagTot 37 26.08.19 13:30 Сейчас в теме
Это здорово, что появляются такие работы!

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

Представьте себе - вы лежите на диване и "плюёте в потолок" а перед вами трёхмерная голограмма конфигуратора 1С и вы голосом даёте команды для написания программы или правки формы).

Интересно, когда настанет это время...
araatt; chebser; CyberCerber; RomanCrow13; +4 Ответить
12. YanTsys 12 26.08.19 20:45 Сейчас в теме
(5) На языке мозоли будут...
13. chebser 4 27.08.19 09:05 Сейчас в теме
(12) а в коде - больше мата
the1; THEBESTolo4b; maxopik2; araatt; YanTsys; tricolor; +6 Ответить
30. the1 392 31.10.19 11:58 Сейчас в теме
(13) Больше? В смысле, он и сейчас у Вас там есть? ))
31. chebser 4 01.11.19 11:17 Сейчас в теме
(30) у меня нет, но в чужом коде попадался
6. skv_79 167 26.08.19 14:05 Сейчас в теме
8. Darklight 19 26.08.19 15:29 Сейчас в теме
Здорово, но, как мне кажется - тут всё упрётся в первую очередь в качество распознавания речи. На мой взгляд, оно должно идти по заранее заданной карте ожиданий ключевых слов (что-то типа карты правил синтаксического разбора, но для звука) - понятно, что внутри сервиса Яндекса есть своя такая карта с кучей вариантов паттернов произношение, но она заточена на отдельные слова и простые фразы, а не на специфику бизнес-логики команд. Вот если бы можно было загружать свою карту лексического разбора (свою семантику команд) и получать ответ уже скомпонованный строгим образом согласно данной семантики - вот это было бы здорово и продвинуло бы применение данного сервиса в реальных задачах голосового управления. А так всё будет сводится к тому, чтобы писать сложные лексические анализаторы той абракадабре, которую пришлёт сервис распознавания - причём без каких-либо вариантов ветвления распознавания - когда получается околесица и хочется получить иные варианты толкования в надежде что они окажутся более подходящими. А значит такое управление будет часто давать сбои - что очень негативно скажется на его практическом применении.

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

Вообще - подобный сервис уже надо бы встраивать в платформу 1С (желательно без необходимости таскать звуковые семплы в web и обратно, хотя как вариант - можно допустить наличие отдельного сервера в сети компании - тот же сервер взаимодействий для этой роли вполне подходит). Конечно в ближайшие годы этого ожидать от компании было бы излишне наивно - но через пару десятилетий - голосовое управление и ввод текста явно должно стать мировым трендом в программном обеспечении!
9. RomanCrow13 86 26.08.19 15:45 Сейчас в теме
(8)
Насчет качества: согласен, что под бизнес-логику механизм не заточен. Конечно, при отправке запроса в параметр "topic" можно указать языковую модель, но самому описать эту модель нельзя. И, думаю, это трудоемкий процесс.
Тесты и статистику привести был бы рад. но дело в том, что я перестал работать над проектом несколько месяцев назад. Всё здорово да, но отдавать 150 р/мес за vds с минималками оказалось менее целесообразно, чем покупку приложения за 300 р насовсем. Конечно, можно провести тесты локально, подумаю. Может, в следующей статье.
Насчет последнего пункта согласен полностью. Ждать от 1С распознавание речи в близжайшие года крайне безумно оптимистично.
15. Darklight 19 27.08.19 09:32 Сейчас в теме
(9)
Конечно, при отправке запроса в параметр "topic" можно указать языковую модель, но самому описать эту модель нельзя

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



Ждать от 1С распознавание речи в ближайшие года крайне безумно оптимистично

В ближайшие годы - да. Но если за 20 лет компания так и не анонсирует подобного сервиса - то вот это будет уже глупо с её стороны
Но да - 20 лет срок ого-го как не малый 8-ка столько может и не проживёт...
16. Crazy_Max 59 27.08.19 12:57 Сейчас в теме
(15)Когда вышла 8-ка, самым распространённым анекдотом про неё было: "Судя по изменениям в 8-ке по сравнению с 7.7, можно с уверенностью утверждать, что 9-я версия будет с 3-мерным интерфейсом и голосовым управлением".
Кто ж знал, что это будет не шутка?
Мысли имеют свойство материализовываться...
17. Darklight 19 27.08.19 17:20 Сейчас в теме
(16)Вначале нулевых многие грёзили киберфантастикой (в на основе литературных и кинематографических образов, созданных в третьей четверти XX века) - мол ещё несколько десятилетий и ПО преобразится - уйдёт в виртуальное пространство, где управление будет голосовое или через манипулирование 3D структурами). Десятилетия шли - а воз и ныне там. Но, правда с голосовым управлением всё-таки ситуация сейчас активно начала двигаться в практическом применении. В MS Office голосового интеллектуального ассистента встроят уже в следующем поколении, ну а в смартфонах и умных колонках он уже появился, и относительно активно используется потребителями (а ещё в смарт телевизорах - но тут меньше).

Голосовой сервис можно встроить в 8-е поколение платформы - как я упомянул выше - центр взаимодействий для этого очень хорошо подходит. Но просто встроить голосовой сервис мало - нужно встраивать голосового интеллектуального ассистента - который смог бы относительно осмыслено взаимодействовать с голосовым сервисом на пользовательском уровне (а на программном уровне имел бы относительно не очень сложный API своего конфигурирования).

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

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

Да и программистам в IDE такие ассистенты, помогающие быстро создавать код и проводить его анализ и рефакторинг - были бы весьма полезны - вот это уже наверное да - задел для 9-го поколения платформы 1С: Предприятие - лет так через 30-50 - и вряд ли раньше :-(
28. Crazy_Max 59 03.09.19 11:17 Сейчас в теме
(17)
многие грёзили киберфантастикой

Честно говоря, я очень надеюсь на какие-то нейроинтерфейсы вместо классических органов чувств и методов воздействия. Они то же имеют неплохое развитие сейчас, и в перспективе должны быть гораздо комфортнее в использовании: они не должны перекрывать естественных каналов взаимодействия с реальностью. 3Д, дополненная реальность - вообще плохо приживается, отнимая основной наш канал получения информации. Голос то же не очень хорош тем, что требуется со стороны информационной системы постоянно усложнять логику для повышения результативности взаимодействия. А вот нейроинтерфейс вместо этого должен позволять нашему мозгу неограниченно развивать скилл взаимодействия с компьютером.
29. Darklight 19 03.09.19 11:47 Сейчас в теме
(28)Дополненная реальность как раз имеет высокие перспективы развития и основные каналы связи с окружающим миром она как раз не отнимает. Нейроинтерфейсы - это пока вообще за гранью научного прогресса - всё что существует на практике- полная чушь, пригодная разве что как помощь инвалидам - просто от безисходности.
Полное погружение в VR - вещь перспективная - но ещё более далёкая, чем простые нейроинтерфейсы. А ограниченное погружение в 3D - вещь "сама в себе" - определённые перспективы имеет - но лишь в узких кругах - поэтому реально не получит распространения.
Ещё есть управление жестами (в т.ч. через камеры) - штука тоже очень ограниченная по применению, но её не стоит совсем сбрасывать со счетов - у неё тоже есть свои перспективы применения и реальная нынешняя практика использования.
Голосовое управление - конечно же тоже очень ограничено - но у него есть реальная практика применения - она будет расширяться, но вряд ли до конца века сможет занять весомую долю рынка систем взаимодействия человека и компьютера (а в следующем веке - уже возможности AR должны с лихвой перекрывать все другие способы взаимодействия, а к концу XXII может и нейроинтерфейсы подтянутся - но я бы не стал расссчитывать на их более ранее применение).

Другое дело - это то, что вторая половина XXI века теъхнологически будет нацелена на рост возможностей AI и глубины его применения при взаимодействии с пользователями. Что приведёт к тому, что, к концу века, количество информации, требующей ввода от человека и количество поступающих от него команд (как и вообще количество профессиональных операторов ПК) существенно сократится - на порядки сократится. Компьютеры буквально всё будут понимать с полуслова - и выполнять огромное число операций, не требующих прямого управления сто стороны человека. Поэтому, то как человек будет взаимодействовать с компьютером - будет, скорее всего, не так важно - и простого жестового и голосового управления может быть вполне достаточно (+ широкие возможности визуализации AR).

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

Поэтому AI ассистентов нужно начинать развивать уже сейчас - они важнее - чем голосовое управление!
11. blackhole321 1100 26.08.19 18:20 Сейчас в теме
(8)
Вообще - подобный сервис уже надо бы встраивать в платформу 1С (желательно без необходимости таскать звуковые семплы в web и обратно, хотя как вариант - можно допустить наличие отдельного сервера в сети компании - тот же сервер взаимодействий для этой роли вполне подходит).


Тогда можно использовать что-то типа: https://developer.microsoft.com/ru-ru/windows/speech
14. Darklight 19 27.08.19 09:27 Сейчас в теме
(11)Да, тут скорее всего нужно партнёрство. Разрабатывать голосовой сервис с нуля дело хлопотное (но возможное, если бы, скажем, компания 1С захотела распространить сервис не только на одну линейку своих продуктов, а как, Микрософт или Яндекс внедряла бы сервис в диверсифицированную линеку своих продуктов, и предлагала свой API для использования сторонним партнёрам и частным лицам; но компания 1С не ведёт такую политику - её бизнес унитарно сосредоточен в нескольких областях, которые мало между собой пересекаются).

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

Компании 1С проще договориться с отечственными вендорами, чем с западными, причём гораздо проще договориться с Яндексом, чем с Микрософтом (у которого на 1С есть "зуб" за отказ в продаже 1С: Предприяте мелкомягним).

Да и на фоне указания "партии" на импортозамещение - вероятность партнёрства с любым западным вендором вообще очень мала! А отечественных, предоставляющих, голосовые сервисы - по пальцам одной руки пересчитать можно - и, по большей части, все они очень слабы. Но если в них вложиться (а деньги, компания 1С, наверняка найти смогла бы) - то не одним Яндексом можно было бы обойтись. Именно так бы я на месте Нураливых и сделал бы - это классический мировой подход - приобретение небольших компаний с перспективными технологиями, нуждающихся в финансировании.

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

Так что, уже в ближайшем будущем серьёзному ПО без таких голосовых сервисов не обойтись. Но на их разработку нужно время - даже на доведение до ума полуготовых разработок - скорее сего потребуется не менее 5-10 лет. Так что, таким проектом правильно было бы начинать уже сейчас. Чтобы через 10 лет предложить хотя бы примитивное голосовое решение внутри платформы 1С Предприятие 8.5, а к 8.6 создать уже вполне удобного и практичного голосового ассистента, который на голову должен превосходить то, что сейчас есть на рынке - чтобы иметь реальное практическое повседневное и серьёзное применение в бизнес приложениях
10. hasp_x 154 26.08.19 16:56 Сейчас в теме
Наглядный пример того, что лентяи двигают прогресс:))
18. Lion_LexXx 1 28.08.19 06:22 Сейчас в теме
Добрый день! Подскажите пожалуйста как сделать запрос на синтез речи. По аналогии с распознаванием речи делаю, распознавание речи работает, а синтез речи возвращает ошибку "404 page not found".

АдресСервера = "tts.api.cloud.yandex.net";
	iamToken = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ";
	folderId = "ХХХХХХХХХХХХХХХ";
	ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows( СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows()); 
	
	СоединениеЯндекс = Новый HTTPСоединение(АдресСервера, 443, , , , 20, ssl, Неопределено);
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Authorization", "Bearer " + iamToken);
Запрос = Новый HTTPЗапрос("/speech/v1/tts:synthesize/?text=Hello" + "&lang=en-US" + "&folderId=" + folderId ,Заголовки);
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);
	Сообщить("Ответ.КодСостояния " + Ответ.КодСостояния);
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();

	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);			
	result = СтруктураОтвета.result;
Показать


В соответствии с инструкцией из заголовков убрал:
Заголовки.Вставить("Content-Type", "application/json");

Инструкция генерации речи:
https://cloud.yandex.ru/docs/speechkit/tts/request
19. RomanCrow13 86 28.08.19 06:30 Сейчас в теме
(18)
Привет! Столкнулся с этой же проблемой. Хотел сделать синтезирование речи, чтобы потом сообщали об остатках аудиосообщением. Хотя в Curl всё отлично срабатывает.
Но, во-первых, вижу, что ты отправляешь запрос не правильно. Нужно вписывать параметры в тело запроса, а не в сам запрос. Так запрос должен быть просто "/speech/v1/tts:synthesize/". Тело пишешь строкой (по аналогии получения iam-токена), далее отправляешь для обработки.
Но и это у меня не срабатывает. Я грешу на то, что текст сообщения нужно перекодировать в url, но и даже это у меня не сработало. Скорее всего нужно правильно написать строку параметров запроса...
20. RomanCrow13 86 28.08.19 07:20 Сейчас в теме
(19)
Добавка (только что проверил): Если убрать content-type=application/jsob, то по-умолчанию встанет application/octet-stream
22. Lion_LexXx 1 28.08.19 11:05 Сейчас в теме
(20)
octet-stream


application/octet-stream стандарт пересылки, подразумевающий бинарное содержимое файлов?
21. Lion_LexXx 1 28.08.19 11:02 Сейчас в теме
(19)
Ответ техподдержки Яндекс:

Служба поддержки

Здравствуйте!

Вероятнее всего в вашем запросе генерируется некорректный URL, который приводит к ошибке 404 NOT FOUND.
Рекомендуем вам проверить работу с использованием cURL по примеру из документации: https://cloud.yandex.ru/docs/speechkit/tts/request#wav

Примеры использования 1С для работы с API вы можете найти в интернете, например:
https://ediweb.com/ru-ru/support/kb/403
https://helpme1c.ru/rabota-s-http-zaprosami-get-i-post-v-yazyke-1s-8-3-8-2-v-primerax#ref_c_6
23. RomanCrow13 86 28.08.19 11:05 Сейчас в теме
(21)
В общем я написал запрос к Curl и выполнил в 1С помощью ЗапуститьПриложение()
24. Lion_LexXx 1 28.08.19 12:48 Сейчас в теме
(19) Получилось!
В заголовок вставил:
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");


Рабочий код:

	АдресСервера = "tts.api.cloud.yandex.net";	
	iamToken = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ";
	folderId = "ХХХХХХХХХХХХХХХ";
	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows( СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows()); 
	
	СоединениеЯндекс = Новый HTTPСоединение(АдресСервера, 443, , , , 20, ssl, Неопределено);
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Authorization", "Bearer " + iamToken);
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");
	
	СтрокаТела = 
	"text=Привет мир!" + 
	"&lang=ru-RU" + 
	"&folderId=" + folderId 
	;
	
	Запрос = Новый HTTPЗапрос("/speech/v1/tts:synthesize", Заголовки);
	
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	ТелоКакСтрока = Запрос.ПолучитьТелоКакСтроку();
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);
	Сообщить("Ответ.КодСостояния " + Ответ.КодСостояния);
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	ДвоичныеДанныеОтвет = Ответ.ПолучитьТелоКакДвоичныеДанные();
	ИмяФайла = "C:\yandex\speechYandex.ogg";
	ДвоичныеДанныеОтвет.Записать(ИмяФайла);
Показать
25. script 207 28.08.19 21:48 Сейчас в теме
Да ничего здесь сложного нет.

Посмотрите какие функции чаще всего выполняют пользователи:
1. Найти и открыть какой то документ.
2. Создать новый/справочник документ и заполнить его.
3. Сформировать отчет за период и с отборами.

Даже, описанная в этой статье, технология уже позволяет это реализовать.
Представьте это в виде расширения типа:
Бухгалтер говорит: Эй 1С, Найди и открой расходную номер 123 от 27.08.

Уже от этого бухи просто поплывут от изумления.
К 8-марта можно ради прикола сделать или 1-апреля
Lion_LexXx; RomanCrow13; acanta; +3 Ответить
26. RomanCrow13 86 29.08.19 02:15 Сейчас в теме
(25)
Хах)
В принципе интересно. Нужно придумать только, как в 1С захватить звук. Скорее всего надо писать внешнюю компоненту с использованием OpenAl. Попробую что-нибудь такое сделать)
Lion_LexXx; +1 Ответить
27. DO_WHILE_LOOP 330 29.08.19 10:52 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

05.09.2019    13222    ids79    44       

Обмен данными. Консистентность vs Многопоточность 25

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Интеграция

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

03.09.2019    4280    m-rv    1       

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

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

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

08.08.2019    14350    ids79    30       

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

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

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

04.06.2019    17062    YPermitin    49       

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

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

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

25.04.2019    6247    m-rv    2       

Как настроить правильную техподдержку (helpdesk, service desk на коленке) 38

Статья Программист Бизнес-аналитик Руководитель проекта Нет файла v8 УУ Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Бесплатно (free) Управление услугами и сервисом

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

24.04.2019    8287    siddy    0       

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

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

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

16.04.2019    8894    m-rv    16       

Копирование числовых ячеек из 1С в Excel 26

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

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

15.01.2019    11738    itriot11    21       

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 487

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

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

14.11.2018    35609    GeterX    93       

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

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

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

10.11.2018    22390    ids79    40       

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 277

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

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    37134    stas_ganiev    72       

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

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

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

15.10.2018    21591    tormozit    100       

Из Excel в 1С запросом 33

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Загрузка и выгрузка в Excel

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

14.08.2018    14363    m-rv    5       

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

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

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

25.06.2018    20324    olegtymko    47       

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

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

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

01.06.2018    22277    m-rv    21       

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

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

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

23.05.2018    18074    slozhenikin_com    19       

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

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

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

13.05.2018    12131    Rustig    9       

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 96

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    17007    V.Stavinsky    11       

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

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

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

19.02.2018    37236    ildarovich    44       

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

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

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

11.12.2017    26632    milkers    23       

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

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

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

05.12.2017    22062    itriot11    34       

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

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

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

19.11.2017    143029    MaxS    251       

Обзор имеющихся библиотек OneScript 300

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) OneScript

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

14.11.2017    32059    nixel    85       

Программные перечисления, ч.2: приемы кэширования при разработке 67

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

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

30.10.2017    22152    unichkin    18       

Легкий способ обновления измененной конфигурации 41

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Инструментарий разработчика

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    19113    avk72    63       

Работа с Excel 298

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

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

23.10.2017    27251    arakelyan    39       

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

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

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

10.09.2017    35230    tormozit    72       

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

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

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

04.09.2017    44423    m-rv    60       

Как просто запомнить алгоритм программного вывода в СКД 207

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

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

01.09.2017    42564    unichkin    15       

Как формируется GUID? 470

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

"Коллеги, есть идеи, как получить последнюю созданную характеристику? Реквизиты полностью идентичны(код, наименование, и т.п.)."(c) "Насколько я знаю, ссылка не обеспечивает последовательность, а только уникальность."(c) "Я сделал по Максимум(Ссылка). Но, чета, мне кажется, это неправильно."(c) "Слышал что в ГУИд содержится как раз время создания и по всей логике вещей сортировка по ссылке должна сортировать по моменту создания объекта"(c) Сколько раз вы слышали такие фразы? На удивление я не обнаружил информации по этой теме, пришлось разбираться самому...

16.06.2017    54958    kuzyara    56       

Использование инструментов разработчика для отладки обменов КД 2.0 67

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

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    23209    unichkin    3       

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

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

Поскольку к конвертации обращаюсь время от времени и какие-то детали забываются, хочу выделить несколько пунктов, чтобы "было где посмотреть". Статья сделана преимущественно «для себя», так что просьба не судить строго. (Примечание читающим/комментирующим: код в примерах очень сильно сокращен.)

16.03.2017    63809    perepetulichka    26       

Online телефонный справочник из 1С: Зарплата и управление персоналом 34

Статья Системный администратор Программист Нет файла v8 ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) WEB

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    19637    ruha    14       

Библиотека стандартных подсистем (Механизм БСП) 74

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

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

03.03.2017    53093    V.Stavinsky    21       

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

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Тестирование и исправление

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    44938    3    Vladimir Litvinenko    20       

Отладка подключаемых обработок 196

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

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

04.01.2017    45088    unichkin    77       

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

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

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

10.12.2016    30554    unichkin    45       

РИБ 200 узлов. Середина пути 116

Статья Системный администратор Программист Нет файла v8 Розница Россия Бесплатно (free) Распределенная БД (УРИБ, УРБД)

Между настройкой и поддержкой РИБ на 2 узла и на 10 большой разницы нет, а вот когда число удаленных точек переваливает за сотню, приходится решать уже совсем другие вопросы

25.10.2016    34814    comol    215       

Использование git для доработки типовых конфигураций 1С 230

Статья Программист Нет файла v8 Беларусь Украина Россия Бесплатно (free) Математика и алгоритмы

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    188677    pumbaE    31       

Отладка конфигураций на мобильной платформе 109

Статья Программист Нет файла v8 Бесплатно (free) Мобильная разработка

Настройка и подключение отладчика для отладки конфигураций на мобильной платформе.

25.09.2016    36295    spezc    44       

Обновление доработанной Бухгалтерии предприятия. Как проверить и убедиться, что все сделано хорошо? 89

Статья Системный администратор Программист Бухгалтер Нет файла v8 БП2.0 Бесплатно (free) Практика программирования

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

05.09.2016    25156    kraynev-navi    33       

Старые обработки в новом (Управляемом) интерфейсе 101

Статья Программист Нет файла v8 v8::УФ Windows Бесплатно (free) Практика программирования

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

12.08.2016    58456    valerasv    7       

Регистры сведений 1С. Как это устроено. 729

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Основная идея публикации - собрать в одном месте информацию о внутреннем устройстве такой абстрактной сущности, как "Регистр сведений 1С" и ответить на ряд вопросов: Что происходит при записи регистра в различных режимах? Что такое на самом деле "СрезПервых" и "СрезПоследних"? Как оптимально выбрать структуру регистра? Это та информация, владея которой, начинаешь лучше понимать как это работает и как правильно использовать регистры сведений.

05.08.2016    151206    Sergey.Noskov    155       

Простая и быстрая эмуляция операций с битовыми строками 67

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

Битовые строки могли бы упростить реализацию некоторых алгоритмов на языке платформы «1С: Предприятие 8». Но пока в платформе операций с битовыми строками нет. В то же время уже сделанные попытки смоделировать эти операции преобразованиями над числами опираются на циклы обработки отдельных битов, что плохо сказывается на скорости их работы. Предлагается новое простое решение, основанное на представлении битовых строк строками символов «0» и «1». Приводится примеры кода выполнения основных логических операций AND, OR, XOR, NO без использования циклов. В качестве прикладной задачи рассмотрено получение последовательных значений кода Грэя, который можно использовать для ускорения перебора вариантов.

22.06.2016    26397    ildarovich    14