WhatsApp и 1С

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

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

COM WhatsApp Уведомления

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

"А почему бы мне не прикрутить оповещалку на 1С, которая будет отчитываться о выполнении регламентных процедур?" подумал я не имея на то необходимости ))

Решил посмотреть какие есть варианты и выиграл это сравнение WhatsApp:
- В WhatsApp можно создать группу нужных людей, в которой бот может сообщить о том, что что-то пошло не так, в этой же группе нужные люди могут скоординироваться по этому вопросу;
- СМС слишком коротки и выходят дороже, к тому же в нашем городе это нестабильный канал связи;

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

Отмазка #2
Код примеров приведён в минимально рабочее состояние. Ровно настолько, чтобы продемонстрировать саму возможность рассылки сообщений по WhatsApp из 1С.
В нём есть участки, в которых сознательно оставлена возможность для некорректной работы (отсутствие проверок, отсутствие перехвата исключений и т.д.).
Так же реализована очень малая часть потенциала API - только отправка текстовых сообщений.
Мотивирую это тем, что не хочу давать готовый инструмент в руки спамеров.

 

Предисловие

 

Если попытаться поискать официальный API WhatsApp, то можно узнать, что его не существует.
Однако задав в поиске "WhatsApp" на github можно найти 421 (в день написания публикации) проект на различных языках.

Я решил остановиться на проекте WhatsAPINet (https://github.com/perezdidac/WhatsAPINet). Этот проект содержит в себе API и демонстрацию его применения.

Казалось бы - как можно связать DLL на .Net с 1С?
Можно сделать внешнюю компоненту и использовать в своей конфигурации - мы этого делать не будем, потому что написание внешней компоненты всё-таки сложнее, чем переделка проекта под COM-объект, не будем усложнять наш пример.
Можно переделать проект так, чтобы на выходе DLL поставляла помимо экспортных методов ещё и COM-объект, который можно применять не только в 1С, но и в других отраслях (vbs-скрипты и прочее).

Скачав проект с github можно неприятно удивиться - тестовые примеры не будут работать.
Сервер Whatsapp будет ругаться на несоответствие версий, неправильный токен авторизации и так далее.
Это связано с тем, что какие-то участки протокола могут измениться в новой версии WhatsApp, а проект на github уже давненько не обновлялся.


Пилим COM-объект на C#


Где и что конкретно нужно исправить в проекте, чтобы заработали тестовые примеры я подробно расписывать не буду (смотри отмазку #2), скажу только, что нужно поправить 2 строки - версию и один из ключей, который берётся для генерации токена.
На момент публикации статьи этих исправлений будет достаточно, чтобы сервер WhatsApp был согласен с нами сотрудничать.

Далее, чтобы не таскать с собой 2 DLL-ки (API + COM-обёртка), мы изменим проект в VisualStudio таким образом, чтобы открыть нужный функционал в виде COM-объекта, поставляемого этой же DLL с API:

Готовых статей о том как написать COM-объект на .NET море, в том числе на инфостарте, поэтому не будем сильно останавливаться на этом вопросе
(например, Как написать COM-объект для 1С на Visual Studio C# 2008)

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

Открываем проект WhatsAppApi.csproj и далее по шагам:

1. Сделаем сборку видимой для COM:

Откроем файл AssemblyInfo.cs и изменим значение параметра сборки ComVisible на true

2. Добавим описание и реализацию интерфейсов

Добавим интерфейс IEvents. Он будет содержать описания событий, на которые мы сможем подписаться в 1С;



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


Добавим класс ComWrapper. Он будет наследовать IComWrapper, содержать реализацию его методов, а так же вызывать события.



3. Компилируем проект и регистрируем нашу сборку как COM

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


Чтобы зарегистрировать нашу сборку, нужно выполнить следующий Код
c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe WhatsAppApi.dll /codebase

Во вложениях есть допиленный проект со скромным функционалом (с учётом отмазки #2) и готовая скомпилированная DLL

 

Пилим обработку в 1С


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

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

 

Чтобы приступить к тестам, нам нужно зарегистрировать номер телефона в WhatsApp, получить пароль и авторизоваться. Но, перед этим, посмотрим, как мы будем работать с COM-объектом (сборка, на этом этапе, уже должна быть зарегистрирована):

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Вацап = Новый COMОбъект("WhatsAppApi.ComWrapper");
	ДобавитьОбработчик Вацап.onGetMessage, ПолученоСообщение;
КонецПроцедуры

...

&НаКлиенте
Процедура ПолученоСообщение(ОтНомера, Имя, Текст)
	НовоеСообщение = Сообщения.Добавить();
	НовоеСообщение.Дата = ТекущаяДата();
	НовоеСообщение.От = ОтНомера;
	НовоеСообщение.Кому = "Мне";
	НовоеСообщение.Текст = Текст;
	НовоеСообщение.Доставлено = Истина;
КонецПроцедуры


Механизм регистрации

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

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


 2. Сервер WhatsApp отправляет на указанный номер смс с кодом.

Тут нам пригодится телефон, смотрим, что за цифры пришли в смс сообщении.

3. Называем серверу полученные в смс цифры.

 


4. Сервер выдаёт нам пароль, который мы будем использовать для авторизации.



В коде 1С это выглядит приблизительно так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)	
	Вацап = ЭтаФорма.ВладелецФормы.Вацап();
	ДобавитьОбработчик Вацап.onRecievePassword, ПриПолученииПароля;
КонецПроцедуры


&НаКлиенте
Процедура ЗапроситьСМС(Команда)	
	Вацап.Create(НомерТелефона, "", "");
	Если Вацап.RequestCode() Тогда
		Сообщить("Запрос отправлен, ожидайте СМС сообщение");
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьКод(Команда)
	Вацап.RegisterCode(КодСМС);
КонецПроцедуры

&НаКлиенте
Процедура ПриПолученииПароля(Строка)
	Предупреждение("Пароль получен!");
	Пароль = Строка;
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
	УдалитьОбработчик Вацап.onRecievePassword, ПриПолученииПароля;
КонецПроцедуры

Механизм уведомлений, рассылки и получения сообщений

Процесс обмена сообщениями выглядит так:

1. Отправитель отправляет на сервер сообщение для указанного получателя
2. Сервер, получив сообщение, отчитывается отправителю о том, что сообщение получено сервером
3. Когда получатель получает сообщение, сервер отчитывается отправителю, что сообщение доставлено получателю

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

В коде 1С наше общение будет выглядить так:

&НаКлиенте
Перем Вацап, МойНомерТелефона;

&НаКлиенте
Функция Вацап() Экспорт
	Если Вацап = Неопределено ИЛИ Вацап = null Тогда
		Вацап = Новый COMОбъект("WhatsAppApi.ComWrapper");
	КонецЕсли;
	Возврат Вацап;
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ФормаАвторизации = ПолучитьФорму("ВнешняяОбработка.ДемонстрацияWhatsApp.Форма.ФормаАвторизации", , ЭтаФорма);
	ФормаАвторизации.ОткрытьМодально();
	Если НЕ ФормаАвторизации.Авторизован Тогда
		МойНомерТелефона = ФормаАвторизации.НомерТелефона;
		Закрыть();
		Возврат;
	КонецЕсли;
	
	ДобавитьОбработчик Вацап.onError, ПриОшибке;
	ДобавитьОбработчик Вацап.onGetMessage, ПолученоСообщение;
	ДобавитьОбработчик Вацап.onClientRecieveMessage, Доставлено;
КонецПроцедуры

&НаКлиенте
Процедура ПолученоСообщение(ОтНомера, Имя, Текст)
	НовоеСообщение = Сообщения.Добавить();
	НовоеСообщение.Дата = ТекущаяДата();
	НовоеСообщение.От = ОтНомера;
	НовоеСообщение.Кому = "Мне";
	НовоеСообщение.Текст = Текст;
	НовоеСообщение.Доставлено = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьСообщение(Команда)
	КлючСообщения = Вацап().SengMessage(Адресат, Сообщение);
	
	НовоеСообщение = Сообщения.Добавить();
	НовоеСообщение.Дата = ТекущаяДата();
	НовоеСообщение.От = "Я";
	НовоеСообщение.Кому = Адресат;
	НовоеСообщение.Текст = Сообщение;
	НовоеСообщение.КлючСообщения = КлючСообщения;
	
	Сообщение = "";
КонецПроцедуры

&НаКлиенте
Процедура Доставлено(Кому, КлючСообщения)
	Отбор = Новый Структура("Кому, КлючСообщения", Кому, КлючСообщения);
	НайденныеСтроки = Сообщения.НайтиСтроки(Отбор);
	
	Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
		НайденнаяСтрока.Доставлено = Истина;
	КонецЦикла;
КонецПроцедуры

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

 

 

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

Наименование Файл Версия Размер
Проект на c# с базовой доработкой до COM функционала

.rar 246,28Kb
24.09.14
193
.rar 246,28Kb 193 Скачать
Внешняя обработка + DLL для демонстрации работы примера

.rar 56,85Kb
24.09.14
366
.rar 56,85Kb 366 Скачать
Внешняя обработка без DLL

.epf 13,77Kb
24.09.14
82
.epf 13,77Kb 82 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. DrAku1a 1314 24.09.14 16:21 Сейчас в теме
Ого! А я в своё время искал Windows-клиента... и не нашёл... видно, искал плохо )))
2. 2casp 22 24.09.14 21:24 Сейчас в теме
Огромный плюс. Отличная статья :)
Alef; iov; +2 Ответить
3. iov 407 24.09.14 22:42 Сейчас в теме
прикрутил к регламентным заданиям .
правда код сократил, да простит меня автор
Вацап = Null;
Вацап = Новый COMОбъект("WhatsAppApi.ComWrapper");
Вацап.Create("ЛОгин", "Пароль", "");
Вацап.Login();
КлючСообщения = Вацап.SengMessage("телефон", "Напиши мне напиши ");

теперь при ошибках получаю почти оперативно сообщение до 2 минут идет (((
5. delete 240 25.09.14 00:11 Сейчас в теме
(3) iov, 2 минуты - много, проверьте скорость соединения на телефоне, возможно не успевает нормально синхронизировать сообщения.
(4) KonstB, город Норильск. Представьте себе - смс нормально уходят, но прийти адресату могут через день-два
Rustig; Elisy; +2 Ответить
103. pavel06 22.08.19 10:16 Сейчас в теме
(5)
Представьте себе - смс нормально уходят, но прийти адресату могут через день-два


Секретность, должны быть проверены.
4. KonstB 176 24.09.14 23:32 Сейчас в теме
Автор молодец!

но так чисто из любопытства:

СМС... в нашем городе это нестабильный канал связи;


Это где такой город, где мобильный инет лучше смс ? )))
Goggy; VanDiesel1; +2 Ответить
6. saint07 107 25.09.14 01:26 Сейчас в теме
Идея очень интересная,а можно ли также под Viber что-нибудь сделать ???
7. delete 240 25.09.14 01:52 Сейчас в теме
(6) saint07, если найдёте API - беглый взгляд не выявил актуальной реализации в открытом доступе, ситуация такая же, как с whatsapp'ом - API закрытое
8. spezc 654 25.09.14 08:17 Сейчас в теме
Отличная статья!
Сколько будет стоить готовая рабочая обработка и ДЛЛ (чтобы работали без отмазок))))?
Чтобы я мог прикрутить к своей рабочей конфе?
10. delete 240 25.09.14 08:40 Сейчас в теме
(8) spezc, честно говоря даже не представляю, никогда таким образом не пытался зарабатывать. А ещё, хочу напомнить, что DLL останется рабочей ровно до того момента, как WhatsApp не поменяет версию или часть протокола. Никто не может гарантировать, что сделав полностью рабочую DLL ею можно будет пользоваться неограниченное время.

Потому лишний раз предупрежу - не стоит вешать эту оповещалку на что-то важное, она может неожиданно перестать работать.

У меня есть пара идей для следующей публикации подобной тематики, в которых участвует меньше неконтролируемых посредников)
Однако нужно сначала всесторонне изучить эти идеи
14. spezc 654 25.09.14 09:05 Сейчас в теме
(10) delete, может тогда все-таки стоит подумать над коммерческой частью проекта? сделать готовое решение и поддерживать его, по мере изменения апи ватсапа? лично для меня было бы прикольно прикрутить подобную оповещалку в компании)
16. orehova123 25.09.14 10:41 Сейчас в теме
Красиво! Согласна с (14), может, подумаете над продажей и поддержкой проекта?
19. delete 240 25.09.14 14:56 Сейчас в теме
(14) spezc, (16) orehova123, раз людям интересно, подумаю над этим)
48. bpc222 2183 16.07.15 09:31 Сейчас в теме
9. k4rimov 25.09.14 08:40 Сейчас в теме
О, Норильск) 30 лет там прожил) Но свалил) С инетом и СМС там беда, подтверждаю)
Статья отличная - можно все привести к законченной подсистеме (если еще прикрутить Viber и прочие мессенджеры на возможность выбора)
11. delete 240 25.09.14 08:46 Сейчас в теме
(9) k4rimov, Viber, как и WhatsApp, имеет закрытое API, однако для WhatsApp есть репозитории на гитхабе, которые с горем пополам можно прикрутить, а вот с Viber'ом там в этом смысле слабовато. Ну и представьте как поддерживать многообразие сервисов с закрытым API да ещё и совмещать с работой.
Одна из идей, о которых я упомянул выше, заключается в отдельной подсистеме, а вот с чем она будет работать - пока не скажу, сначала руками на себе обкатаю)
12. k4rimov 25.09.14 08:48 Сейчас в теме
13. delete 240 25.09.14 09:00 Сейчас в теме
(12) k4rimov, по сути всё, что имеет открытое API можно прикрутить как уведомлялку) Хоть телеграм, хоть инстаграмм, вконтакте и т.д. Они тоже требуют отслеживания изменений в API, хотя, конечно, в случае его открытости это не составляет большого труда)
15. CatMix 7 25.09.14 10:41 Сейчас в теме
Это всё здорово, но email чем не угодил?
Отправка сообщений уже реализована, немного допилить и можно слать всё что угодно, на любой адрес, группу итд.
Rustig; borodatii; adva; TuneSoft; AllexSoft; +5 Ответить
17. DitriX 1811 25.09.14 12:38 Сейчас в теме
Ну хоть кто нибудь - сделайте прием данных от jabber, что бы можно было к гуглю подключиться и отправлять данные и получать их.
Ну плиииииз....
Там же все открыто, не надо никаких костылей :)
18. webester 32 25.09.14 14:44 Сейчас в теме
(17)Да их просто вагон. Поискомпробовали пользоваться?
20. DitriX 1811 25.09.14 15:14 Сейчас в теме
(18) иногда надо вчитываться в каммент, что бы понять его содержание.
Давайте еще раз повторю и выделю важные моменты:

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

Раз уж вы так ловко умеете обращаться с гуглом, то может вы поможете мне с поиском данного решения? Ибо мои скромные навыки не позволили найти его.
В замен, я готов вам перечислить 50$m. Я думаю за поиск готового варианта с использованием ВК для 1С 8.2,8.3, которая умеет работать с джабером гугла и получать и отправлять сообщения - должно хватить :)
22. webester 32 26.09.14 10:04 Сейчас в теме
(20)
иногда надо вчитываться в каммент, что бы понять его содержание

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

Взято отсюда http://infostart.ru/public/83685/
21. fomix 26 25.09.14 15:42 Сейчас в теме
Автор молодец! Спасибо за подробную инструкцию.
23. acsent 1149 26.09.14 15:24 Сейчас в теме
Эх, а ведь все апи идет через вызовы типа
https://v.whatsapp.net/v2/code?cc={0}&in={1}&to={0}{1}&method={2}&mcc={3}&mnc={4}
Поэтому можно обойтись без лишних компонент
SvetaBr; Rustig; +2 Ответить
24. delete 240 27.09.14 07:59 Сейчас в теме
(23) acsent, с одной стороны - да, можно, с другой - многое придётся пилить с нуля (шифрование, разбор пакетов, построение пакетов, обработку событий стороны сервера и т.д.).
Но, в итоге, нет ничего невозможного)
alexn1ne; +1 Ответить
29. acsent 1149 30.09.14 11:42 Сейчас в теме
(24) Весь код уже есть на С. Нужно только перевести на 1С )))
dreadlord; +1 Ответить
33. delete 240 01.10.14 16:02 Сейчас в теме
(29) acsent, и правда, всего-то)
(31) tunesoft, сложность, пожалуй, для тех, кто не знаком с другими яп (c# в нашем случае), а ненадёжность - полностью согласен, огромный минус
(32) victor-tm, к сожалению оч загружен по работе, в ближайшее время ждать готового решения не стоит

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

насчёт коммерческого решения тоже есть нюанс - в трактовке некоторых юристов это может быть не очень-то и законно)
34. spezc 654 02.10.14 12:59 Сейчас в теме
(33) delete,
сделать коммерческую версию. выложить демку и рабочую за 5000р (ценообразование за вами). с учетом того, сколько скачано и сколько звезд - думаю профит будет нормальный) можно несколько ночей на разработку выделить)
27. AlX0id 29.09.14 14:03 Сейчас в теме
(23) acsent,
Да можно и свой сервер запилить, что в общем случае даже проще, пожалуй.
28. webester 32 29.09.14 14:52 Сейчас в теме
(27)И второй ватсапп в аппстор :)
25. zoytsa 27.09.14 08:23 Сейчас в теме
26. van2 27.09.14 12:01 Сейчас в теме
Спасибо за статью) Интересно почитать подобные материалы.
30. mzelensky 53 01.10.14 09:55 Сейчас в теме
Да, клевая статья. Спасибо автору за идею и примеры!
31. TuneSoft 01.10.14 10:04 Сейчас в теме
Автор молодец.
Основной минус данного решения: сложность и ненадёжность.
32. victor-tm 01.10.14 12:28 Сейчас в теме
Требуем коммерческую версию на УТ10.3!!!!
35. dj_serega 371 02.10.14 15:32 Сейчас в теме
Крутяк. Не знаю на сколько это актуально, так как imap на телефоне можно настроить и почту отправлять так что...
Тут разве что сравнение чата и почтовика.
36. hazd 05.10.14 23:41 Сейчас в теме
нужная вещь, автору спасибо)
37. AndreyNit 50 09.10.14 09:36 Сейчас в теме
Автору однозначно плюс. Спасибо, разработка пригодилась.
38. flyer 230 31.10.14 13:06 Сейчас в теме
Господа хотел поинтересоваться кто нибудь прикрутил возможность отправки изображений?
39. victor-tm 26.11.14 22:37 Сейчас в теме
Что на счет коммерческой версии?
41. pswd 27.11.14 13:13 Сейчас в теме
(39) victor-tm,
А можно услышать что вы хотите от коммерческой версии? Какие требования к ней?
40. flyer 230 27.11.14 08:42 Сейчас в теме
да не помешала бы. очень нужна рабочая версия с отправкой изображений
42. delete 240 27.11.14 18:48 Сейчас в теме
Коммерческой версии не будет
Извините
43. androgin 19.12.14 00:00 Сейчас в теме
RegAsm : error RA0000 : Unable to locate input assembly 'WhatsAppApi.dll' or one of its dependencies.
44. delete 240 24.12.14 13:58 Сейчас в теме
(43) androgin, Проверьте, есть ли путь к фрэймворку в переменной среды (можно посмотреть пример тут - http://www.jagjot.com/2014/01/register-c-vb-net-dll-regasm-gacutil/)
45. Ti_Gor1 21.01.15 08:42 Сейчас в теме
смс не приходят при регистрации. как можно решить?
длл зарегистрировал, при регистрации ком объект создан. такое ощущение что в правах винды где то проблема. (вин8)
46. delete 240 22.01.15 10:40 Сейчас в теме
(45) Ti_Gor1, уже давно изменилась версия официального приложения и токен. Чтобы всё заработало, нужно брать свежую библиотеку с github, если нужные изменения в неё уже внесли
47. Serginio 819 15.05.15 16:15 Сейчас в теме
Про DLL на .Net с 1С?
Можно так
Использование сборок .NET в 1С 7.x b 8.x 
http://infostart.ru/public/238584/

Ну и использование NuGet https://www.nuget.org/packages/WhatsAppAPI/
49. BaHgaJI 28 06.10.15 11:46 Сейчас в теме
А если я вытащу токен из приложения Whats app dll ка заработает?
50. Serginio 819 06.10.15 14:42 Сейчас в теме
Вот рабочий вариант https://github.com/mgp25/Chat-API-NET
Проверил рабочий. Правда я через 47
Скомпилируй и замени WhatsAppApi.dll

Победил отправку файлов
59. farkhod 15 18.11.15 20:42 Сейчас в теме
(50) Serginio,
Скомпилируй и замени WhatsAppApi.dll


Можно попросить готовый вариант dll?

Спасибо заранее
60. Serginio 819 19.11.15 10:34 Сейчас в теме
(59) Смотря какой вариант DLL тебе нужен. Если по сабжу то проси автора. Есть вариант для тестов генерации событий
http://infostart.ru/public/417830/
Там в класс добавлена запуск цикла.


Сборка=врап.загрузитьСборку(ФайлwhatsappFor1C); 
	whatsappFor1C=Сборка.GetType("WhatsAppApi.WhatsApp");
	Вацап=врап.СоздатьОбъект(whatsappFor1C,Телефон,Пароль,Логин,false,false);
	
 СоздатьОбертку(Вацап);
 Вацап.Connect();
  Сообщить(Врап.ВСтроку(Вацап.ConnectionStatus));


  Процедура OnLoginSuccess(Данные)
               Сообщить(Врап.ВСтроку(Данные));
			   Вацап.ProcessChat();

            КонецПроцедуры
51. stoned 09.11.15 22:25 Сейчас в теме
Камрады! Подскажите с отправкой изображений.
Добавил метод
public void SengMessageImage(string toPhoneNum, byte[] ImageData, ApiBase.ImageType imgtype)
{
instance.SendMessageImage(toPhoneNum, ImageData, imgtype);
return;
}

И никак не могу корректно передать этот ImageData!
Я так понимаю со стороны он ComSafeArray. Но как его заполнить правильно из картинки не догоняю!
Пытался переделать его через string Base64

public void SengMessageImage(string toPhoneNum, string ImageData, ApiBase.ImageType imgtype)
{
instance.SendMessageImage(toPhoneNum, Convert.FromBase64String(ImageData), imgtype);
return;
}

На стороне 1с
Данные = Base64Строка(ЭлементыФормы.Картинка.Картинка.ПолучитьДвоичныеДанные())

Данные = СтрЗаменить(Данные, Лев(Данные,4),"")
Данные = СтрЗаменить(Данные , Символы.ПС, "");
Вацап.SengMessageImage(Адресат, Данные, 0);

Подвешивает 1с!
52. Serginio 819 09.11.15 23:40 Сейчас в теме
Если у тебя вертится цикл с PollMessages();
то тебе нужно подправить в UploadFile
int i = 0;
            while (this.uploadResponse == null && i <= 100)
            {
                i++;
                //  this.pollMessage();
                System.Threading.Thread.Sleep(100);
}


Ну и представить номер
ApiBase.GetJID(toPhoneNum)
53. stoned 10.11.15 00:28 Сейчас в теме
То есть вместо
<=10 поставить <=100?

А вот это не понял где!

ApiBase.GetJID(toPhoneNum)
54. Serginio 819 10.11.15 08:15 Сейчас в теме
Вместо
// this.pollMessage();
нужно
System.Threading.Thread.Sleep(100);

Так как для получения событий у тебя наверное уже крутится цикл с pollMessage() и они блокируют друг друга
WhatsApp.cs метод

protected WaUploadResponse UploadFile(string b64hash, string type, long size, byte[] fileData, string to, string contenttype, string extension)
55. Serginio 819 10.11.15 08:21 Сейчас в теме
instance.SendMessageImage(ApiBase.GetJID(toPhoneNum), Convert.FromBase64String(ImageData), imgtype);
56. stoned 10.11.15 11:03 Сейчас в теме
(55) Serginio, Спасибо! Все заработало!
57. Serginio 819 12.11.15 15:50 Сейчас в теме
Выложил статью .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

Именно большое количество событий в WhatsAppApi сподвигло меня на динамическую генерацию и компиляцию класса обертки и генерации модуля 1С для использования событий
58. spezc 654 12.11.15 22:17 Сейчас в теме
ждем коммерческий продукт
61. set5553 25.11.15 05:42 Сейчас в теме
Обнови ДЛЛ, токен и тд, по теме, если этот вариант скачаю, запыхает?
62. gusen_it 29.11.15 01:58 Сейчас в теме
Спасибо автору.
Вопрос всем кто использует. Работает без глюков? и как часто нужно перекомпилировать DLL ку, что бы решение работало?
63. stoned 30.11.15 14:15 Сейчас в теме
dll нужно пересобирать когда ключ меняют в программе.
Отправка текстов работает нормально, а вот картинки никак не хочет отправлять на рабочей базе!
Хотя у меня, с компьютера шлет все отлично и картинки и текст.
Возможно это связано с тем, что у меня выделенный канал. А на рабочей базе, 4g модем.
Я уже не знаю где искать причину!
64. set5553 02.12.15 10:15 Сейчас в теме
Где брать рабочий токен?
65. stoned 02.12.15 18:57 Сейчас в теме
(64) set5553, рабочий токен в библиотеке на гитхабе, ссылка есть выше.
66. set5553 03.12.15 05:29 Сейчас в теме
(65) stoned, вы про эту ссылку? https://github.com/mgp25/Chat-API-NET
{\"status\":\"fail\",\"reason\":\"old_version\"}
68. stoned 04.12.15 10:30 Сейчас в теме
Чего то подкрутили, ошибка авторизации!
На гитхабе пишут что сеть, однако до сих пор не пашет с утра.

https://github.com/mgp25/Chat-API-NET/issues/106
69. Serginio 819 04.12.15 14:55 Сейчас в теме
70. set5553 04.12.15 19:20 Сейчас в теме
(69) Serginio, кстати, на наш формат постоянно ругается, что можно сделать? номер +996701775777 +996 код станы, 701 код оператора, 775777 номер телефона
71. Serginio 819 05.12.15 14:03 Сейчас в теме
По моему они поменяли протокол авторизации. То, что раньше подключалось, сейчас говорит oldversion
72. Serginio 819 05.12.15 14:07 Сейчас в теме
73. Serginio 819 05.12.15 14:12 Сейчас в теме
Кстати WaUploadResponse подправили
 while (this.uploadResponse == null && i <= 100) 
262             { 
263                 if (m_usePoolMessages) 
264                     System.Threading.Thread.Sleep(500); 
265                 else 
266                 this.pollMessage(); 
267                 i++; 
268             } 
Показать
75. set5553 09.12.15 13:53 Сейчас в теме
Настроил, все работало и сегодня перестал авторизовываться. Посмотрел, номер заблокировали. Как быть? Из за чего заблокировали? Как обходить это?
76. astraborz 6 20.02.16 22:49 Сейчас в теме
Народ добрый вечер. кто-нибудь решил проблему с внедрением вацап в 1С? У кого работает нормально, отпишитесь пожалуйста
80. bpc222 2183 04.03.16 11:20 Сейчас в теме
(76) astraborz,

у меня работает :)
77. Serginio 819 24.02.16 14:48 Сейчас в теме
Посмотри. В декабре еще делал
Прикрепленные файлы:
WhatsApp.zip
78. astraborz 6 25.02.16 11:07 Сейчас в теме
(77) Serginio, Спасибо большое. сегодня испытаю. а у тебя до сих пор работает? интересная тема? мне это нужно чтобы в указанное время руководству шли отчеты всякие остатки, а картинки можно отправлять
81. paulpit 18 08.03.16 11:26 Сейчас в теме
(77) Serginio,
Скачал декабрьский архив.
При попытке получения пароля на мой номер: +79166123636
ругается:
Could not request code using either sms. SMS: {"status":"fail","reason":"old_version"}

79. Serginio 819 25.02.16 11:47 Сейчас в теме
Не знаю не пользуюсь, но тем кому делал вроде не жалуются. Картинки можно отправлять. Но лучше использовать свой сервер http://infostart.ru/public/434771/
Вацап постоянно авторизацию меняет, блокирует
82. Serginio 819 09.03.16 19:41 Сейчас в теме
значит опять токен поменяли
83. sarun 31 10.03.16 09:53 Сейчас в теме
"Could not request code using either sms. SMS: Удаленный сервер возвратил ошибку: (407) Требуется аутентификация посредника."
84. ROM_1C 683 10.11.16 13:43 Сейчас в теме
У меня ошибка регистрации компоненты
RegAsm : error RA0000 : Unable to locate input assembly 'c:\WhatsAppApi.dll' or one of its dependencies.

Вчем же дело?
85. ROM_1C 683 10.11.16 15:15 Сейчас в теме
43, как то решили проблему?
86. spenser123 13.01.17 13:34 Сейчас в теме
(85) если посмотрите саму статью и посмотрите что используют репозиторий на github - репозиторий оттуда был удален...
87. ROM_1C 683 13.01.17 16:46 Сейчас в теме
88. spenser123 13.01.17 17:24 Сейчас в теме
(87) конкретно эта работать не будет точно, возможно есть другие версии (или написать свою обертку для другого живого qpi на github), цель статьи, вроде, в этом и заключалась - показать как сделать обертку самому.
90. spenser123 16.01.17 10:18 Сейчас в теме
(89) деньги просить? это как? у них есть банальное платное API?
91. Serginio 819 16.01.17 11:38 Сейчас в теме
Да чего то жене разные сообщения приходят. Я вацапом не пользуюсь.
92. cmd_vasec 34 12.10.17 10:29 Сейчас в теме
Данная разработка живая? Стоит качать?
93. gorevg 13 16.10.17 12:58 Сейчас в теме
Не работает... На этапе отправки смс с кодом:
Процедура ЗапроситьСМС(Команда) 
 Вацап.Create(НомерТелефона, "", "");
 Если Вацап.RequestCode() Тогда
  Сообщить("Запрос отправлен, ожидайте СМС сообщение");
 КонецЕсли;
КонецПроцедуры


Вацап.RequestCode() - возвращает ложь...
Konstatine; +1 Ответить
94. user643091_tvs-sm 02.04.18 09:21 Сейчас в теме
Здорово! Интересная идея.
96. leobrn 315 05.09.18 17:25 Сейчас в теме
Актуально ещё ? Работает ?
97. Sakh1CPRO 29.11.18 14:31 Сейчас в теме
Обработка мертвая, ошибка при открытии: -2147221005(0x800401F3): Недопустимая строка с указанием класса
99. delete 240 29.11.18 17:53 Сейчас в теме
(97)
0x800401F3


Зарегистрировать класс не пробовали?

Вообще, уже нет смысла качать и использовать эти файлы.
Обработка уже давным-давно не актуальна.
Читайте внимательнее.

Используйте статью как общее руководство.
98. Sakh1CPRO 29.11.18 14:39 Сейчас в теме
Автор, в чем проблема?
Konstatine; +1 Ответить
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

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

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

1 стартмани

25.03.2019    30342    10    tormozit    44    

Краткое руководство по внесению изменений в конфигурацию

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

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

1 стартмани

13.01.2020    14385    17    sapervodichka    41    

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

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

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

1 стартмани

07.10.2019    26644    14    HostHost    40    

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

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

06.09.2019    17039    11    Dementor    30    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    17285    4    m-rv    86    

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

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

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

3 стартмани

04.09.2019    20870    21    Stepa86    44    

Процедура ПриКомпоновкеРезультата

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

Коллекция кода

1 стартмани

26.07.2019    31808    13    vasilev2015    63    

1С:Ассемблер. Немного летнего веселья!

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

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

1 стартмани

21.06.2019    26345    76    Evil Beaver    119    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    27593    86    m-rv    57    

Простые примеры сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

12.06.2019    26811    19    Hatson    22    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

22.04.2019    29658    32    riposte    63    

Баг или фича? Неожиданное поведение платформы

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

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    21518    0    YPermitin    89    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    25480    19    mvxyz    17    

HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX

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

Тестируем возможности HTML в новой версии 8.3.14 платформы на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX.

1 стартмани

29.01.2019    26688    90    Synoecium    46    

Отладка сложных отчетов на СКД

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

Расширение для отладки сложных отчетов на СКД (в т.ч. для собираемых программно "на лету") и быстрого перехода к отладке таких отчетов в консоли запросов и отчетов на СКД.

1 стартмани

28.12.2018    24613    85    maxx    58    

Реализация простого http-сервиса "Просмотр карточки номенклатуры(товара) в браузере"

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

Практический пример реализации простого http-сервиса средствами 1С Предприятие 8.3. Обеспечивает просмотр списка товаров и просмотр данных товара в браузере.

1 стартмани

07.12.2018    20834    16    dmitry1975    32    

Нечеткий поиск одним запросом Промо

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

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

1 стартмани

28.12.2015    25103    66    vasvl123    9    

Использование подсистемы БСП "Заполнение объектов"

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    23716    12    ids79    23    

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

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

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

1 стартмани

27.08.2018    30775    48    dsdred    15    

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

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

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

5 стартмани

09.08.2018    25404    25    informa1555    26    

Работа с публикациями "Инфостарт" Промо

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    18830    12    RocKeR_13    16    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    39299    17    kalyaka    16    

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

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    73847    23    dsdred    24    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    27377    11    SITR-utyos    13    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Практика программирования v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    25693    8    wowik    3    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному

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

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    41142    33    dsdred    36    

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

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

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

1 стартмани

24.04.2018    40992    85    kalyaka    34    

Асинхронная запись и чтение файла без использования модальных методов и временных файлов

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

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

1 стартмани

10.04.2018    26303    19    Alxby    23    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    44704    36    Demanoidos    60    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов

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

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    33140    54    rpgshnik    48    

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

Печатные формы документов Практика программирования Универсальные функции v8 1cv8.cf Абонемент ($m)

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    36585    27    agent00mouse    0    

Практика доступа в базу 1С через протокол oData. Чтение данных

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

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    87455    300    Dementor    48    

Как нарисовать граф на 1С Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

09.08.2013    68753    206    ildarovich    117    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

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

1 стартмани

06.12.2017    24831    49    kwazi    6    

Простой бесплатный DashBoard с помощью http сервиса

Практика программирования v8 Абонемент ($m)

Как создать свой DashBoard без дополнительных затрат и сложных технических доработок.

1 стартмани

25.11.2017    51765    63    dewersia    32    

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

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

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

1 стартмани

24.09.2017    40142    15    vandalsvq    80    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    47819    32    ildarovich    41    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    28964    127    PLAstic    54    

Макеты СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Рассмотрены некоторые типовые задачи, которые решаются с помощью предопределенных макетов, а также перечислены несколько случаев, для которых макеты не подходят

1 стартмани

25.07.2017    90949    122    json    27    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    116548    13    signum2009    46    

Простой способ индексирования интервалов Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    38127    38    ildarovich    22    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов

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

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    47326    15    DarkAn    86    

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

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

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

1 стартмани

13.03.2017    28601    111    romasna    49    

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

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

Чуть более комплексное описание, чем на других ресурсах

1 стартмани

30.10.2016    140633    954    json    66    

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

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

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

1 стартмани

03.10.2016    34165    95    json    25