Описание библиотеки есть в справке сервера: http://www.nsoft-s.com/mcserverhelp/mcs ... ionapi.htm
Оно слегка устаревшее, но пользоваться можно.
mychat.dll работать в режиме внешней компоненты 1с,
Нет, не может, это отдельная обычная DLL библиотека, собранная в двух вариантах, x32 и x64.
А для какой конкретно версии 1С вам нужна такая компонента? Я давно не смотрел в эту сторону, возможно, получится что-то сделать сейчас.
Чат со мной
Описание работы 1С Native API есть в интернете, если нужного не найдётся, у нас на ИТС должно быть.
Вот, например http://infostart.ru/public/184119/
Чат со мной
И подскажите, где взять легальную триальную версию 1С для установки и тестирования?
Чат со мной
Шаблоны внешних компонент сейчас ищу. Объём небольшой, можно по почте выслать.
Можете скачать библиотеку http://infostart.ru/public/177766/ ?
Чат со мной
Чат со мной
Где-то в конце есть ссылка на скачивание.
Чат со мной
Чат со мной
Алексей Пикуров писал(а):И ещё. У вас есть доступ к infostart.ru ?
Можете скачать библиотеку http://infostart.ru/public/177766/ ?
Отправил на [email protected]
Начинаем крутить 1С, "по заявкам радиослушателей"
Чат со мной
Возможно, есть какой-то простой пошаговый гайд для этого?
Чат со мной
Алексей Пикуров писал(а):Кто-то может подсказать, какие действия нужно произвести, чтобы написать минимальную программу внутри 1С 8.3 и проверить работу внешнего компонента?
Возможно, есть какой-то простой пошаговый гайд для этого?
Отправил по почте.
Запускаю 1C, показывается окошко:
А что дальше? Пробовал запускать "1С Предприятие", пробовал "Конфигуратор", появляется окно с кнопками и огромным меню с тучей пунктов. Но совершенно неясно, что дальше делать. Есть какой-то гайд по тому, куда и где нажимать, и какой минимальный код писать, чтобы задействовать написанный компонент и увидеть, работает он или нет?
Чат со мной
1. Запускаем 1С
2. Добавить...
2.1. Создание новой информационной базы
2.2. Создание информационной базы без конфигурации для разработки новой конфигурации или загрузки выгруженной ранее информационной базы.
2.3. Указываем имя, и выбираем "На данном компьютере или на компьютере в локальной сети"
2.4. Выбираем путь для базы.
2.5. Оставляем все как есть. "Готово".
3. Выбираем созданную базу, жмем "Конфигуратор".
3.1. Конфигурация->Открыть конфигурацию
3.2. Закрываем 1С
3.3. Копируем файл с заменой V80\DB\1Cv8.1CD в папку куда создали базу.
3.4. Снимаем с файла атрибут "рид-онли".
3.5. Запускаем конфигуратор, если запросит преобразование - соглашайтесь.
3.6. В конечном итоге должны получить следующую картинку:
http://www.nsoft-s.com/forum/download/file.php?mode=view&id=1745
http://www.nsoft-s.com/forum/download/file.php?mode=view&id=1744
4. Весь код для 1С будет на закладке "Модуль".
5. Закрываем 1С.
6. Компилируем AddIn.Dll
7. Выкладываем DLL куда-то (тут нужно гуглить, я не работал с внешними компонентами сейчас путь не подскажу).
8. Открываем 1С предприятие.
9. Нажимаем "Пример работы с компонентой".
Вложения
Вот кстати тут про то куда нужно выкладывать... http://kb.mista.ru/article.php?id=419
В отличие от 7.7 необходимо указывать полный путь к DLL (или положить файл DLL в папку BIN платформы 1С:Предприятие). Вместо СоздатьОбъект("Addin.Имя") используется Новый("Addin.Имя"), использовать при этом ключевое слово COMОбъект не нужно.
Библиотека с InfoStart под Delphi не компилируется Ни в 7 ни в XE3, валятся ошибки. Под FreePascal не знаю, завтра попробую. Взял пример на Delphi из официального SDK под 8.0. Он тоже сразу не скомпилировался (пришлось добавлять модуль Variants в uses). Собрал DLL, подложил.
Однако после нажатия на кнопку "Пример работы с компонентой" я получаю вот что (dll библиотеку пробовал класть и в \bin и в произвольную папку, результат одинаков):
Оказывается, библиотеку нужно регистрировать в системе с помощью regsvr32. Потому что это COM-компонент. От имени администратора. После этого всё завелось и кнопка в 1С заработала.
Теперь нужно из примера сделать рабочую библиотеку для MyChat
Спасибо за содействие, буду задавать вопросы в этой теме по ходу продвижения работы.
Чат со мной
Алексей Пикуров писал(а):Оказывается, библиотеку нужно регистрировать в системе с помощью regsvr32. Потому что это COM-компонент. От имени администратора. После этого всё завелось и кнопка в 1С заработала.
Не за что. Будут вопросы - задавайте, чем смогу - помогу.
А по поводу регистрации - возможно нужно было 1с от имени админа запускать, 1с сама должна регистрировать дллку, если та не зарегистрирована...
Субьективно, COM DLL в 1С работает не сильно шустро, видны подтормаживания даже в официальном примере.
Спасибо за поддержку, вопрос уже есть
Как в 1С во встроенном языке работать с форматом JSON? Есть какая-то поддержка?
Чат со мной
Любая специализированная программа будет работать как минимум на порядок быстрее 1с (если написана по уму, а не как всегда). Другое дело, что для работы с 1с не нужно знать языков и механизмов работы с базами данных (тот же SQL например).
По поводу JSON и 1С: http://v8.1c.ru/o7/201410json/index.htm
Учебная версия 1С, что использую я, скачанная с оф.сайта - 1С:Предприятие 8.3, учебная версия (8.3.5.1248)
И не факт, что у всех людей самая свежая версия, так что ориентироваться на встроенные механизмы JSON в 1С, скорее всего, нельзя.
Буду делать тестовый пример DLL, выложу здесь для тестирования.
Чат со мной
JSON и UnJSON в 1С (версия от 27/11/2009) http://infostart.ru/public/61194/
1С 8.2 УП : Обмен данными с сайтом используя формат JSON в 1С https://helpf.pro/faq82/view/1664.html
Все это выдал гугл на запрос "JSON в 1с 8.2". Привел первые 3 ссылки...
Это неправильный подход.
Я постараюсь написать функцию внутри нашей DLL, которая на вход будет принимать строку, а на выход отдавать ESCAPE-последовательность. Таким образом строка будет корректно переводиться в JSON-like, с экранированиями символов и прочим, даже без нативной поддержки JSON в 1С.
Чат со мной
Т.е. условно:
КодВозврата = Компонента.ПодключитсяКСерверу(ИмяСервера, Порт, ИмяПользователя, Пароль);
Если КодВозврата <> 0 Тогда
Сообщить ("Ошибка подключения к серверу");
Возврат;
КонецЕсли;
КодВозврата = Компонента.НайтиПользователя (ИмяПользователя);
Если КодВозврата <> 0 Тогда
Сообщить ("Пользователь не найден");
Возврат;
КонецЕсли;
КодВозврата = Компонента.ОтправитьСообщение (ИмяПользователя, Сообщение);
Если КодВозврата <> 0 Тогда
Сообщить ("Пользователь не найден");
Возврат;
КонецЕсли;
Ну и далее в таком духе. Зачем изобретать велосипед через JSON? Есть же уже у Вас АПИ, вот через него и работать...
Чат со мной
Качаем http://www.nsoft-s.com/files/mychat/int ... k-1c8x.zip
Внутри две DLL-библиотеки. Выкладываем их в C:\Program Files (x86)\1cv8t\8.3.5.1248\bin\
Далее, в конфигурации 1С пишем что-то в этом духе:
Перем КомпонентMyChat;
Процедура ПоказатьТекстСтатусаНажатие(Элемент)
ТекстСообщения = ТекстСтатуса;
// адрес сервера, номер порта, ключ Integration API, отправитель, получатель, текст сообщения
Результат = КомпонентMyChat.SendPrivateMessage("your-server-ip", 2004, "iddqd", "0", "6", ТекстСообщения);
Сообщить(Результат); // результат работы функции
КонецПроцедуры
Процедура ПриОткрытии()
Сообщить("Версия MyChat.dll - " + КомпонентMyChat.GetMyChatLibVersion());
Сообщить("Дата MyChat.dll - " + КомпонентMyChat.GetMyChatLibReleaseDate());
Сообщить("Версия MyChatVK.dll - " + КомпонентMyChat.GetMyChatVKLibVersion());
Сообщить("Дата MyChatVK.dll - " + КомпонентMyChat.GetMyChatVKLibReleaseDate());
КонецПроцедуры
Результат=ПодключитьВнешнююКомпоненту("mychatvk.dll","MyChat", ТипВнешнейКомпоненты.Native);
Если Результат Тогда
КомпонентMyChat = Новый ("AddIn.MyChat.MyChatClass");
Иначе Сообщить("Ошибка подключения mychatvk.dll!");
КонецЕсли;
Запускаем конфигурацию и жмём кнопку (в учебной версии стандартный пример):
Если компонент загрузился успешно, мы должны в логе увидеть вот что:
Набираем текст сообщения, жмём кнопку, и в MyChat приходит уведомление:
Пробуйте, проверяйте, жду комментариев и вопросов.
Чат со мной
Вложения
Хорошо. Тогда несколько вопросов.
1. Какая у вас версия 1С?
2. Есть ли возможность попробовать на линейке 7.x?
3. Какие функции, кроме отправки приватного сообщения, вам бы понадобились?
4. Что бы вы сделали с помощью этой технологии сейчас, в своём 1С для удобства интеграции с MyChat?
5. Чего в Integration API сейчас недостаёт?
Желательно поподробнее, я сейчас готовлю документацию + расширяю API, скоро будет новый релиз, 5.13.
Чат со мной
Алексей Пикуров писал(а):Ну надо же, завелось сразу?
Сразу, скопировал дллки, ничего не регистрировал, и все заработало.
Алексей Пикуров писал(а):1. Какая у вас версия 1С?
8.2.19.116
8.3.5.1248
Алексей Пикуров писал(а):2. Есть ли возможность попробовать на линейке 7.x?
Есть, одна проблема времени сейчас чем-то серьезным заниматься нет времени совсем. Придется ждать, возможно целый месяц. Надеюсь здесь найдутся кроме меня заинтересованные пользователи.
Также могу опробовать не файловый вариант, а вариант клиент-сервер.
Алексей Пикуров писал(а):3. Какие функции, кроме отправки приватного сообщения, вам бы понадобились?
Наименование функций условное.
Функция ПодключитсяКСерверу(Параметры) - установить соединение с сервером, в дальнейшем использовать это соединение, до явного подключения к другому серверу.
Возвращает истина - подключились, ложь - соединение не установлено.
Параметры:
IPАдрес, НомерПорта
Функция ПодключитсяКСерверуПоИмени(Параметры) - установить соединение с сервером, в дальнейшем использовать это соединение, до явного подключения к другому серверу.
Возвращает истина - подключились, ложь - соединение не установлено.
Параметры:
ИмяСервера - имя сервера MyChat (частичное или полное FQDN)
НомерПорта
Можно сделать перегружаемую функцию, вот только для 1с придется вводить еще один параметр, либо сделать универсальную функцию ПодключитсяКСерверу(Сервер, Порт, ПодключатьсяПоИмени). Если ПодключатьсяПоИмени - истина, то в "Сервере" имя сервера, иначе там IP-адрес.
Функция ПолучитьСписокПользователей(БезПараметов) - возвращает таблицу значений и/или список значений. Таблица значений предпочтительнее. Поля таблицы занчений - UID, ФИО (можно по отдельности), Статус (не найден, оффлайн, онлайн, не беспокоить), ИмяДомена (если есть). Кстати по Статусу рекомендация, -1 возвращать если пользователя нет, и возвращать 2 или 0 (или сколько там по порядку), если пользователь оффлайн.
Функция НайтиПользователя (Фамилия, Имя, Отчество) - возвращает UID, либо строку таблицы значений аналогичную структуре ПолучитьСписокПользователей().
Функция НайтиПользователя (ФамилияИмяОтчество) - возвращает UID, либо строку таблицы значений аналогичную структуре ПолучитьСписокПользователей().
Функция УстановитьПользователяОтКоторогоПосылаемСообщения(Фамилия, Имя, Отчество)
Функция УстановитьПользователяОтКоторогоПосылаемСообщения(ФамилияИмяОтчество)
Функция УстановитьПользователяОтКоторогоПосылаемСообщения(UID) устанавливает от имени какого пользователя будут отсылаться сообщения, если явно не указан другой пользователь.
Возвращает истина - установили, ложь - пользователь не найден.
Функция ПослатьСообщение(Кому, Сообщение, ОтКого)
Возвращает КодОшибки. Возможно достаточно будет истина - отослано, ложь - не отослано. Но тут нужно хорошо думать...
Параметры:
Кому, варианты:
Фамилия, Имя, Отчество;
ФамилияИмяОтчество;
UID;
Сообщение - текст сообщения
ОтКого - может отсутствовать, варианты:
Фамилия, Имя, Отчество;
ФамилияИмяОтчество;
UID.
Процедура ОтключитьсяОтСервера(БезПараметров) - разрывает установленное соединение с сервером. Возможно излишнее - пока не могу сказать.
Функция ПолучитьПоследнийКодОшибки(БезПараметров) - возвращает код ошибки последней операции, для развернутого анализа.
Функция ПолучитьПараметрыПодключения(БезПараметров) - возвращает параметры которые были указаны при подключении к серверу, при условии, что было установлено соединение с сервером.
Надеюсь ничего не упустил.
Алексей Пикуров писал(а):4. Что бы вы сделали с помощью этой технологии сейчас, в своём 1С для удобства интеграции с MyChat?
Не понял вопроса.
Алексей Пикуров писал(а):5. Чего в Integration API сейчас недостаёт?
Сначала нужно изучить API, прежде чем что-либо говорить, но в ответе на вопрос 3 содержится примерное мое видение API.
Вроде все. Если что не понятно - спрашивайте, ну или можно голосом пообщаться.
Дело в том, что IntegrationAPI построен по принципу: отправил команду - получил результат, отвалился. В один заход.
Упрощённая авторизация. Минимум телодвижений.
Далее. Любая команда возвращает результат, вы видели это в консоли лога 1С. Обычный JSON-объект, текстовая строка.
По остальному - из всего списка нужны функции получения списка юзеров и поиска юзера. Я добавлю это в протокол к тем командам, что уже есть. Подробное описание будет в доке IntegrationAPI на сервере MyChat.
Чат со мной
Алексей Пикуров писал(а):
4. Что бы вы сделали с помощью этой технологии сейчас, в своём 1С для удобства интеграции с MyChat?
Не понял вопроса.
Будете ли вы применять эту технологию у себя в компании и что конкретно сделаете?
Чат со мной
Алексей Пикуров писал(а):Будете ли вы применять эту технологию у себя в компании и что конкретно сделаете?
90% что будем. Есть как минимум 2 задачи, которые можно ускорить это электронное согласование заявок на платежи, и электронное согласование документов. По документам сейчас отправляются электронные письма, что приводит к довольно большим задержкам. Оповещение через чат будет оперативнее на мой взгляд.
Чат со мной
Чат со мной
https://nsoft-s.com/mcserverhelp/index. ... mple1c.htm
Чат со мной
Чат со мной
Чат со мной
Например, когда мы поместили mychatvk.dll в каталог программы
Библиотеки выкладываются в папку \bin 1C, в документации сказано об этом.
Сообщения выдаются не нами, а 1С, мы не рулим этим процессом.
Чат со мной
Есть функция: SendChannelMessage - а вот что ей передавать?
Функции SendChannelMessage передавайте параметры: адрес_сервера, порт, пароль, UID откого, UID канала( у Главного канал 1, ТекстСообщения).
Сразу возник вопрос. Вот приходится размещать mychat.dll и mychatvk.dll в папке BIN текущего релиза 1с. Но дело в том, что релизы достаточно часто обновляются и придется не забывать файлы перемещать при обновлении.
У 1с есть файл 1сestart.exe, который автоматом запускает последний релиз. Быть может возможно положить файлы mychat рядом с этим файлом?
Я не большой специалист в 1С, внешнюю компоненту делал по той документации, что была в наличии. Попробуйте, отпишите, работает ли.
Чат со мной
а вот компонента должна лежать именно в папке BIN конфигурации.
Чат со мной
Очень хотим настроить чат в 1С. Готовы для этого даже приобрести платную версию, хотя и пользователей менее 20.
Почитайте локально:
Чат со мной
Чат со мной
Я поправил ваше сообщение, удалив неправильный линк.
Чат со мной
Чат со мной
библиотеки вбрал из каталога x64. mychat64.dll переименовал в mychat.dll
На x86 работает нормально. Может я что то не так делаю, заранее спасибо
Чат со мной
Чат со мной
Чат со мной
Нет времени посмотреть, я скачал ваш архив, но не разворачивали ещё.
Чат со мной
У вас есть ссылка на x64 версию 1С для обучения, как для x32 ?
Чат со мной
Не хотелось ставить кряк, но придётся. Поищу на рутрекере, отпишу здесь позже.
Чат со мной
Чат со мной
Чат со мной
Документация.
Чат со мной