1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp

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

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

Messenger SignalR .Net C#

Данная разработка позволяет пользователям 1С обмениваться сообщениями, файлами (до 3 мб). Запрашивать данные у клиента как Вэб или HTTP сервисах. Основано на технологиях ASP.Net SignaR который использует WebSockets и т.д. для двунаправленного обмена данными. Используется обертка над классами .Net

 

В  свое  время  делал  клиента  для  Whats  App,  и  многие  приемы  взяты  оттуда.  Но  постоянно  они  что-то  меняют.  Плюс  нельзя  отправлять  любые  файлы,  использовать  клиента  как  web  сервис  и т.д.

Эта  статья  является  продолжением  статей

  Использование  сборок  .NET  в    7.x  b  8.x.  Создание  внешних  Компонент 

(Здесь же лежат и файлы клиентов и сервера)

И

  .NET(C#)  для  1С.  Динамическая  компиляция  класса  обертки  для  использования  .Net  событий  в    через  ДобавитьОбработчик  или  ОбработкаВнешнегоСобытия 

 

В  этой  разработке  используются  обе  эти  разработки  и  служит  примером  того,  как  можно  легко  использовать  технологии  .Net  в  1С.

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

Ну,  начнем  по  порядку.  Начну  с  кода  на  1С.

Первое,  что  нам  нужно, это  подключиться.

 

Попытка

                SignalRClietHello=Врап.ПолучитьТипИзСборки("SignalRClient.SignalRClietHello",Объект.КаталогDLL+"SignalRHelloClient.dll");
                //Сборка=врап.загрузитьСборку(Объект.КаталогDLL+"SignalRHelloClient.dll");
                Клиент=Врап.СоздатьОбъект(SignalRClietHello);
                Клиент.Соединиться(Объект.АдресСервера).Wait();


                фрм=ПолучитьФорму("ВнешняяОбработка.SignalRClient.Форма.ФормаОбработки");
                ЗаполнитьЗначенияСвойств(Фрм.Объект,Объект,"АдресСервера,КаталогDLL,КаталогПолученныхФайлов,ИспользоватьСкомпилированнуюСборку");
                Фрм.врап=врап;
                Фрм.Клиент=Клиент;

                фрм.Открыть();
                Закрыть();
        исключение
                Сообщить(ОписаниеОшибки());

                //    ПоказатьПредупреждение(,Врап.ПоследняяОшибка.Message);
                Врап.ВывестиПоследнююОшибку();
        конецПопытки

При  удачном  подключении  открываем  форму  обмена  сообщениями

И  добавим  обработчики  событий

&НаКлиенте
Процедура  СоздатьОбертку(NetОбъект)
        //  Создаём  обертку  для  событий  и  подключаем  обработчики
        //ОберткаСобытий=врап.СоздатьОберткуДляСобытий(NetОбъект);
        //  Можно  использовать  уже  скомпилированную  сборку,  так  как  при
        //врап.СоздатьОберткуДляСобытий  создается  файл  ВрапперДляSignalRClient_SignalRClietHello.dll
        ПолучитьОбертку(NetОбъект);

        ДобавитьОбработчик  ОберткаСобытий.ОшибкаСобытия,ОшибкаСобытия;


        ДобавитьОбработчик  ОберткаСобытий.ПриОтключении,  ПриОтключении;
        ДобавитьОбработчик  ОберткаСобытий.ОшибкаСоединения,  ОшибкаСоединения;
        ДобавитьОбработчик  ОберткаСобытий.ПриИзмененииСостоянияСоединения,  ПриИзмененииСостоянияСоединения;
        ДобавитьОбработчик  ОберткаСобытий.ПриПолученииСообщения,  ПриПолученииСообщения;
        ДобавитьОбработчик  ОберткаСобытий.ПриАвторизации,  ПриАвторизации;
        ДобавитьОбработчик  ОберткаСобытий.ПриПолученииФайла,  ПриПолученииФайла;
        ДобавитьОбработчик  ОберткаСобытий.ПриПодключенииНовогоПользователя,  ПриПодключенииНовогоПользователя;
        ДобавитьОбработчик  ОберткаСобытий.ПриОтключенииПользователя,  ПриОтключенииПользователя;
        ДобавитьОбработчик  ОберткаСобытий.ПриПолученииКоманды,  ПриПолученииКоманды;
        ДобавитьОбработчик  ОберткаСобытий.ПриПолученииОтветаКоманды,  ПриПолученииОтветаКоманды;
        //NetОбъект==Клиент
        Клиент.Зарегистрироваться(ИмяПользователя());
КонецПроцедуры


 

Не  буду  расписывать  все  обработчики,  покажу  только  некоторые

 

/

/    параметр  Данные:Аннимный  Тип
//  Свойства  параметра
//  id:System.String
 //  ИмяПользователя:System.String
 //  СписокПользователей:System.Collections.Generic.List`1[[SignalRClient.User,  SignalRClient,  Version=1.0.0.0,  Culture=neutral,  PublicKeyToken=null]]
&НаКлиенте

Процедура  ПриАвторизации(Данные)
        пользователи=Элементы.Получатель.СписокВыбора;
        пользователи.Очистить();
        Элем=пользователи.Добавить("Всем","Всем");
        ЭтотОбъект.Получатель="Всем";

        Сообщить("ПриАвторизации  "+Врап.ВСтроку(Данные));
        ИД=  Данные.id;

        Для  каждого  Юзер    Из  Данные.СписокПользователей    Цикл

                ДобавитьНовогоПользователя(Юзер.ConnectionId,  Юзер.Name)


        КонецЦикла;
КонецПроцедуры

//    параметр  Данные:Аннимный  Тип
//  Свойства  параметра
//  ОтКого:System.String
 //  FileName:System.String
 //  id:System.String
 //  Данные:System.Byte[]
&НаКлиенте

Процедура  ПриПолученииФайла(Данные)
        Сообщить("ПриПолученииФайла  "+Врап.ВСтроку(Данные));
        Массив=Данные.Данные;
        имяФайла  =Врап.ПолучитьТип("System.IO.Path").Combine(Объект.КаталогПолученныхФайлов,  Данные.FileName);
        Врап.ПолучитьТип("System.IO.File").WriteAllBytes(имяФайла,Массив);
        ДобавитьСообщение(Данные.ОтКого,  "Отправлен  файл  "+  Данные.FileName,  Данные.id,  имяФайла);

        Клиент.ОтправитьСообщение(СтрШаблон("Получен  файл  %1  размер  %2  байт",  Данные.FileName,Врап.ОбернутьЛюбойОбъект(Данные.Данные).Length),  Данные.id);
КонецПроцедуры

//    параметр  Данные:Аннимный  Тип
//  Свойства  параметра
//  Имя:System.String
 //  сообщение:System.String
 //  IdОтправителя:System.String
&НаКлиенте
Процедура  ПриПолученииСообщения(Данные)
        Сообщить("ПриПолученииСообщения  "+Врап.ВСтроку(Данные));
        ДобавитьСообщение(Данные.Имя,Данные.сообщение,Данные.IdОтправителя,"")
КонецПроцедуры 

 

Здесь  применяются  объекты  и  статические  методы  классов  .Net,  обернутые  через  врап=новый  COMОбъект("NetObjectToIDispatch45");

Отправка  сообщений  происходит  также  через  Net  объект

&НаКлиенте
Процедура  КомандаОтправитьСообщение(Команда)
        //  Вставить  содержимое  обработчика.
        Если  ПустаяСтрока(объект.Сообщение)  Тогда
                показатьПредупреждение(,"Сообщение  не  заполнено");
                возврат
        КонецЕсли;

        ИДПолучателя=ЭтотОбъект.Получатель;

        Если  ПустаяСтрока(ИДПолучателя)  Тогда
                показатьПредупреждение(,"Не  выбран  получатель");
                возврат
        КонецЕсли;

        Если  Объект.ПоИмени  и  ИДПолучателя="Всем"  Тогда
                показатьПредупреждение(,"Нельзя  отправлять  по  имени  Всем");
                возврат
        КонецЕсли;

        Сообщение=Объект.Сообщение;
        Попытка
                Если  Объект.ПоИмени  Тогда
                        Пользователи=  Элементы.Получатель.СписокВыбора;
                        Имя=Пользователи.НайтиПоЗначению(ИДПолучателя).Представление;
                        //  Можно  отправлять  ассинхронно  без  Wait
                        //  Но  могут  быть  проблемы  с  отловом  ошибок
                        //  На  всякий  случай  поставим  1  сек  ожидания
                        //  для  предотвращения  взаимных  блокировок
                        Клиент.ОтправитьСообщениеПоИмени(Сообщение,Имя).Wait(1000);
                ИначеЕсли  Получатель="Всем"  Тогда
                        Клиент.ОтправитьСообщение(Сообщение,  "").Wait(1000);
                Иначе
                        Клиент.ОтправитьСообщение(Сообщение,ИДПолучателя).Wait(1000);
                КонецЕсли;

                Объект.Сообщение="";

        исключение
                Сообщить(ОписаниеОшибки());
                Если  Врап.ПоследняяОшибка<>  Неопределено  Тогда
                        ПоказатьПредупреждение(,Врап.ПоследняяОшибка.Message);
                КонецЕсли;
        КонецПопытки;
КонецПроцедуры

 

Реализованы  следующие  команды:  КомандаОтправитьФайл,  КомандаВычислитьСложение  (отправляется  команда  и  параметры  клиенту,  результат  получается  асинхронно).

Перейду  с  серверной  части.  Она  написана  на  Asp.Net  с  использованием  Nancy  в  котором  кроме  сервера  SignalR  реализован  сайт  с  клиентом  SignalR

Вот  реализация  Хаба

 

public  class  HelloHub  :  Hub

{

 static  List<User>  Users  =  new  List<User>();

 

 bool  ПользовательЗарегистрирован(User  user)

      {

       var  curId  =  Context.ConnectionId;

var  имя  =  Users.Where(x  =>  x.ConnectionId  ==  curId).Select (x=>x.Name).SingleOrDefault();

                        user.Name  =  имя;

                        user.ConnectionId  =  curId;

                        return  (!String.IsNullOrWhiteSpace(имя));

 }

 

 public  void  SendEcho(string  str,  string  Кому)

   {

       var  user  =  new  User();

       if  (!ПользовательЗарегистрирован(user))

            return;

 

      if  (string.IsNullOrWhiteSpace(Кому))

             Clients.Others.addMessage(user.Name,  str,  user.ConnectionId);

                  else

             Clients.Client(Кому).addMessage(user.Name,  str,  user.ConnectionId);

   }

 

  public  void  SendByName(string  str,  string  Кому)

        {

           var  user  =  new  User();

           if  (!ПользовательЗарегистрирован(user))

                 return;

 

 foreach(var  клиент  in  Users.Where(x  =>  x.Name.ToUpper()  ==  Кому.ToUpper()).Select(x  =>  x.ConnectionId))

    Clients.Client(клиент).addMessage(user.Name,  str,  user.ConnectionId);

  }

  public  void  Send(string  name2,  string  message)

       {

             var  user  =  new  User();

             if  (!ПользовательЗарегистрирован(user))

                   return;

 

              Clients.All.addMessage(user.Name,  message,  user.ConnectionId);

       }

 

  

  public  void  SendFile(string  Кому,string  FileName,  byte[]  Data,  bool  isCompressed)

     {

           var  user  =  new  User();

           if  (!ПользовательЗарегистрирован(user))

                                return;

 

          if  (Users.Any(x  =>  x.ConnectionId  ==  Кому))

              {

Clients.Client(Кому).GetFile(user.Name,FileName,user.ConnectionId,Data,isCompressed);

                }

 

  public  void  EvaluteCommand(string  Кому,string  command,  byte[]  Data,  bool isCompressed)

       {

           var  user  =  new  User();

           if  (!ПользовательЗарегистрирован(user))

                 return;

 

           if  (Users.Any(x  =>  x.ConnectionId  ==  Кому))

           {

 Clients.Client(Кому).EvaluteCommand(user.Name,command,user.ConnectionId,Data,  isCompressed);

                        }

 

                }

 

  public  void  ResultCommand(string  Кому,string  command,byte[]  Data,bool  isCompressed)

                {

                        var  user  =  new  User();

                        if  (!ПользовательЗарегистрирован(user))

                                return;

 

 

  if  (Users.Any(x  =>  x.ConnectionId  ==  Кому))

   {

 Clients.Client(Кому).ResultCommand(user.Name,command,user.ConnectionId,Data,  isCompressed);

                        }

 

                }

                //  Подключение  нового  пользователя

  

  public  void  Connect(string  userName)

  {

    var  id  =  Context.ConnectionId;

    if  (!Users.Any(x  =>  x.ConnectionId  ==  id))

       {

           Users.Add(new  User  {  ConnectionId  =  id,  Name  =  userName  });

           //  Посылаем  сообщение  текущему  пользователю

           Clients.Caller.onConnected(id,  userName,  Users);

           //  Посылаем  сообщение  всем  пользователям,  кроме  текущего

            Clients.AllExcept(id).onNewUserConnected(id,  userName);

                        }

                }

 

                //  Отключение  пользователя

  public  override  System.Threading.Tasks.Task  OnDisconnected(bool  stopCalled)

  {

       var  id  =  Context.ConnectionId;

       var  item  =  Users.FirstOrDefault(x  =>  x.ConnectionId  ==id);

            if  (item  !=  null)

                    {

                        Users.Remove(item);

                        Clients.All.onUserDisconnected(id,  item.Name);

                      }

 

                        return  base.OnDisconnected(stopCalled);

                }

        }

 

Ссылки на SignalR  Работа с SignalR

http://metanit.com/sharp/mvc5/16.1.php

Публикация вэб сервиса

http://professorweb.ru/my/ASP_NET/sites/level3/3_1.php

http://metanit.com/sharp/mvc/13.2.php

Файлы для публикации лежат в ..\SignalR\ФайлыДляПубликации\

Для сервера SignalR требуется сервер должен использовать Windows 8, Windows Server 2012 или более поздней версии, и WebSocket должен быть включен в IIS.

 http://www.asp.net/signalr/overview/getting-started/supported-platforms

Попробовал поработать с Xamarin. В общем использовать можно, но еще сыро. Проще использовать WinMobile 10.

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

 

В папке SignalRHelloClient лежит сборка для использования её в 1С

В папке SignalRClient лежит WPF приложение. Там же лежит основной модуль клиента SignalRClietHello.cs используемый обеими клиентами.

 

SignalRNancy это сервер.

 

Все файлы лежат по ссылке   Использование  сборок  .NET  в    7.x  b  8.x.  Создание  внешних  Компонент

Для использования нужна  .NET Framework 4.6

https://msdn.microsoft.com/Ru-ru/library/ms171868(v=vs.110).aspx

Для VS 2015 нужно обновление апдейт

Внешний отчет лежит в ВнешниеОтчеты\SignalRClient.epf

Написал статью на хабре по данной тематике ASP.NET Core, Angular 2, SignalR для чайников

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Serginio 806 25.12.15 16:44 Сейчас в теме
Добавил рабочий вариант для Android на Xamarin. Проверял на эмуляторе. На IOS не проверял.
2. Serginio 806 25.12.15 16:47 Сейчас в теме
Из пакетов убрал Xamarin.Forms.2.0.0.6490 он 20 мб
3. Makushimo 154 06.05.16 05:37 Сейчас в теме
а что нужно прочитать, чтобы понять то, что тут написано?
adhocprog; 1c.pro.fun; asolokha; twe; seevkik; rabota.v8.1c; Steelvan; Nizikov; VVi3ard; zif74; METAL; +11 Ответить
4. Serginio 806 06.05.16 08:11 Сейчас в теме
(3) В статье есть ссылки
Ссылки на SignalR Работа с SignalR

http://metanit.com/sharp/mvc5/16.1.php

Публикация вэб сервиса

http://professorweb.ru/my/ASP_NET/sites/level3/3_1.php

http://metanit.com/sharp/mvc/13.2.php

Если нужно только для 1С, то только опубликовать вэб сервис. Файлы здесь

http://infostart.ru/public/238584/

еще можно почитать
http://infostart.ru/public/448668/
http://infostart.ru/public/417830/
adhocprog; seevkik; +2 Ответить
Оставьте свое сообщение

См. также

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

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

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

27.01.2020    5320    ids79    25       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

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

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

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

15.01.2020    7282    John_d    21       

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

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

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

02.12.2019    9253    YPermitin    72       

Готовые переносы данных из различных конфигураций 1C Промо

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

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

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

16450 рублей

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

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

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

05.09.2019    23941    ids79    45       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

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

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

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

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

03.09.2019    15569    YPermitin    75       

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

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

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

17.08.2019    18196    ids79    16       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

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

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

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

08.08.2019    32982    ids79    36       

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

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

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

02.08.2019    18280    avalakh    21       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

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

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

26.07.2019    26978    ids79    9       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

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

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

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

17.07.2019    19518    ids79    27       

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

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

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

09.07.2019    14776    YPermitin    12       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

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

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

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

04.07.2019    12054    SeiOkami    49       

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

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

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

25.06.2019    31633    ids79    17       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

11.06.2019    16874    dmurk    144       

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

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

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

16.05.2019    27157    YPermitin    27       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Выполнение внешней обработки в фоновом задании

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    17212    Eret1k    23       

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

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

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

25.04.2019    9272    m-rv    2       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

16.04.2019    12396    m-rv    16       

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

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

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

07.04.2019    23334    ellavs    125       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

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

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

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

28.03.2019    18511    ellavs    83       

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

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

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

14.03.2019    20361    YPermitin    53