Мой опыт использования Bitrix24 REST API

Привет всем. Опишу свой опыт использования API системы Битрикс 24.
Когда я впервые увидел API я подумал как круто что можно обращаться к элементам сделок из других программ и создавать их.

Мне поставили задачу "Необходимо перебрасывать сделки и контрагентов из 1С в Битрикс24".

Я начал копать просторы интернета в поиске как же все-таки получить авторизацию в системе.
Итак опишу все по порядку:

  1. Нужно зарегистрироваться как партнер Bitrix на сайте http://partners.1c-bitrix.ru/program/become/ 
  2. Дождаться пока вас утвердят, на вопрос "Зачем сам быть партнером" отвечает для доступа к REST API Bitrix24
  3. Зайти в кабинет партнера и перейти в раздел Приложения Битрикс24 (Маркетплейс) - Добавить приложение.
  4. В открывшемся окне заполняем информацию о приложении:
  5. Обращаю внимание на то что вы не сможете зарегистрировать приложение пока не заполните в карточке партнера договор. В Договоре постарайтесь по максимуму заполнить все поля.
  6. Обязательно при регистрации приложения ставим галочку "Использует только API"
  7. Сохраняем наше приложение с заставляем его слушать PORT 7000
  8. И тут же нажав на кнопку "Установить на свой портал Бирикс24" устанавливаем приложение на свой Битрикс. Важно дать приложению при установке все права.
  9. Когда приложение установлено на наш портал необходимо получить код (code) незнаю зачем он нужен, но его нужно получить. Для этого необходимо повесить программу которая бы слушала 7000 порт и в браузере набрать  строку вида 

  10. https://мой_портал.bitrix24.ru/oauth/authorize/?client_id=код_приложения&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A70005
    где мой портал - это имя моего портала
    код_приложения - код который можно посмотреть в кабинете партнера


  11. В ответ получим строку вида code=017d0e0823f457ba3de9df240b410f22 она нам понадобится для запроса авторизационного токкена .
  12. Дальше нужно отправить запрос методом POST, либо набрать в браузере строку следующего вида:

  13. https://мой_портал.bitrix24.ru/oauth/token/?client_id=код_приложения&grant_type=authorization_code&client_secret=секретный_ключ_приложения&redirect_uri=http%3A%2F%2Flocalhost%3A70005&code=код_получения_авторизации&scope=требуемый_набор_разрешений
      мой_портал - Имя портала
      код_получения_авторизации - Наш полученный код на предыдущем этапе
      код_приложения - мы уже знаем где его взять
      секретный_ключ_приложения - берем там же где и код приложения
    Список объектов через запятую к которым необходимо получить доступ например :
    {"access_token":"ключ для отправки запросов к REST-сервису","expires_in":3600,"scope":"user","refresh_token":"ключ для продления авторизации","domain":"мой_портал.bitrix24.ru"}
    Нам отсюда нужен только access_token




  14. Отправка запроса на примере добавления сделки в Битрикс24. Покажу пример отправки из 1С: 
Попытка
            WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
              WinHttp.Option(2,"utf-8");
                WinHttp.Open("POST","https://rygroup.bitrix24.ru/rest/crm.deal.add.json",0);
                  WinHttp.SetRequestHeader("Accept-Language", "ru");
                    WinHttp.SetRequestHeader("Accept-Charset","utf-8");
                      WinHttp.setRequestHeader("Content-Language", "ru");
                        WinHttp.setRequestHeader("Content-Charset", "utf-8");
                          WinHttp.setRequestHeader("Content-type", "application/json; charset=utf-8");

                      ПараметрыПОСТ = "auth="+ПолучитьАвторизационныйТоккен()+"&fields[TITLE]="+ЗаголовокСделки+"+&fields[TYPE_ID]="+ИдентификаторТипаСделки+"&fields[STAGE_ID]="+ИдентификаторЭтапаСделки+"&fields[COMPANY_ID]="+ИдентификаторКонтрагентаСделки+"&fields[CONTACT_ID]="+ИдентификаторКонтактногоЛица+"&fields[CURRENCY_ID]="+ВалютаСделки+"&fields[DATE_CREATE]="+ДатаСозданияСделки+"&fields[COMMENTS]="+КомментарийСделки+"&fields[CLOSED] = Y";
                        WinHttp.Send(ПараметрыПОСТ);
                                ТекстОтвета = WinHttp.ResponseText();
                                Сообщить("Текст ответа : "+ТекстОтвета);


                          Генератор случайных чисел в C#

                          Случайные числа C# 

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

                          Если вам нужно получить генерацию целых или дробных чисел, то можно это сделать следующим образом: 

                          Генерация целых случайных чисел C# имеет 3 перегруженных метода: 
                          1. Возвращает значение большее нуля. Максимальное число больше 10 миллионов: Random x = new Random(); // объявление переменной для генерации чисел int n = x.Next(); 
                          2. Возвращает значение имеющееся в промежутке (min,max). При этом min значение входит в случайное число, а max не входит: int n= x.Next(-100,100); 
                          3. Возвращает целое положительное число не больше максимального: 
                          int n = x.Next(10); 
                          При этом максимальное число также не входит в генерацию случайных чисел, то есть в данном случае от 0 до 9.   

                          Генерация дробных случайных чисел В языке C# методов для генерации дробных чисел, но это не проблема, так как если нам надо получить дробные числа, мы можем сделать это следующим образом: 
                          double r = Convert.ToDouble(x.Next(-100, 100)/10.0); 

                          В данном случае мы имеем числа от -10 до 9.9. Также само, к примеру иметь положительные дробные числа: 
                          double r = Convert.ToDouble(x.Next(100)/10.0); 
                          В данном случае мы имеем генерацию от 0 до 9.9.

                          Генерация случайного числа в Java


                          Для генерации целого случайного числа в заданном диапазоне от Min до Max, обычно используется следующий паттерн:

                          Min + (int)(Math.random() * ((Max - Min) + 1))

                          В Java метод Math.random() генерирует число типа double в диапазоне [0,1). Обратите внимание, что 1 не входит в этот диапазон!
                          Чтобы получить определенный диапазон значений, сначала нужно умножить на разницу между максимумом и минимумом

                          Math.random() * ( Max - Min )

                          Это вернет нам значение в диапазоне [0,Max-Min].
                          К примеру, если мы хотим получить целые значения [5,10], нам нужно покрыть диапазон в 5 целых(int) значений. То есть:

                          Math.random() * 5

                          Данный пример будет генерировать значения в диапазоне [0,5).
                          Теперь нам нужно сдвинуть этот диапазон, чтобы минимальное значение соответствовало желаемому. Для этого мы просто добавляем значение минимума

                          Min + (Math.random() * (Max - Min))

                          Теперь мы получим значение в диапазоне [Min,Max). Продолжая наш пример, это будет [5,10):

                          5 + (Math.random() * (10 - 5))

                          Но этот вариант все равно не включает значение Max, и вообще, мы получаем значение типа double. Для того чтобы значение Max тоже входило в допустимый диапазон, нужно прибавить 1 к нашему параметру диапазона (Max - Min) и затем избавиться от дробной части приведением значения к int. Вот так:

                          Min + (int)(Math.random() * ((Max - Min) + 1))

                          Теперь то что надо! Случайное целое значение в диапазоне [Min,Max], или как в нашем случае [5,10]:

                          int rnd = 5 + (int)(Math.random() * ((10 - 5) + 1))

                          Установка сервера хранилища конфигураций «1С:Предприятия» 8.3


                          Logo_1c_8Для групповой разработки конфигурации в системе «1С:Предприятия» 8.3 используется хранилище конфигурации.  Доступ разработчиков к хранилищу конфигурации может осуществляться по локальной сети (файлы базы данных располагаются на общем сетевом ресурсе), по протоколу tcp илиhttp. Для последних двух вариантов необходима установка сервера хранилища конфигураций. Сервер хранилища конфигураций в свою очередь представляет собой сетевую службу, по умолчанию «слушающую» порт 1542 и обеспечивающую взаимодействие клиентских приложений (конфигуратора) с базой данных хранилища конфигурации. Одна служба может обслуживать несколько хранилищ конфигураций. Об установке сервера хранилища конфигураций системы «1С:Предприятия» 8.3 (справедливо и для версии 8.2) в ОС семейства Windows (в текущем примере — Microsoft Windows Server 2012 R2) и пойдет речь в данной статье.

                          0. Оглавление

                          1. Настройка каталога баз данных хранилища конфигураций
                          2. Установка файлов сервера хранилища конфигураций
                          3. Регистрация и запуск службы сервера хранилища конфигураций
                          4. Добавление правила в брандмауэр Windows
                          5. Создание нового хранилища конфигурации
                          6. Публикация хранилища конфигурации на веб-сервере IIS

                          1. Настройка каталога баз данных хранилища конфигураций

                          Сервер хранилища конфигураций следует устанавливать на том же компьютере, где будут располагаться файлы баз данных хранилища. Поэтому прежде всего определим центральный каталог сервера, в котором будут храниться файлы всех хранилищ, которых будет обслуживать данный сервер. Пусть в рамках данной статьи это будет каталог C:\1C_BASE\repository\. Также следует определить учетную запись Windows, из под которой будет происходить запуск соответствующей службы. Можно создать нового пользователя, или использовать существующую учетную запись Windows. В данном примере будем использовать локального пользователя USR1CV8 с паролем UsrPass8. Необходимо установить полные права для данного пользователя на центральный каталог сервера хранилища конфигураций.
                          ustanovka-servera-xranilishha-konfiguracii-1s_01

                          2. Установка файлов сервера хранилища конфигураций

                          На момент написания статьи сервер хранилища конфигураций существовал только как 32-разрядное приложение. Поэтому для установки файлов сервера необходим 32-разрядный дистрибутив системы «1С:Предприятия» 8.3 для Windows. Запускаем файл 1CEnterprise 8.msiиз дистрибутива поставки 1С. На странице выбора компонент выбираем компоненту «Сервер хранилища конфигураций 1С:Предприятия» (1C:Enterprise configuration repository server), а также запоминаем путь установки компоненты.
                          ustanovka-servera-xranilishha-konfiguracii-1s_02

                          3. Регистрация и запуск службы сервера хранилища конфигураций

                          Программа установки лишь копирует файлы сервера хранилища конфигураций в указанный каталог. Регистрацию соответствующей службы необходимо произвести вручную выполнив команду вида:
                          crserver.exe -instsrvc | -rmsrvc -usr <пользователь> -pwd <пароль>
                                -start | -stop
                                -port <порт> -d <каталог>
                          Параметры запуска сервера хранилища конфигураций crserver.exe сходны с параметрами запуска агента сервера «1С:Предприятия»:
                          Параметры запуска сервера хранилища конфигураций «1С:Предприятия»
                          ПараметрОписание
                            -port <порт>Рабочий порт сервера хранилища. По умолчанию используется порт 1542.
                            -d <каталог>Корневой каталог для хранилищ конфигурации. По умолчанию используется каталог %APPDATA%\1C\1Cv8\.
                            -instsrvcРегистрация сервера хранилища как сервиса.
                            -rmsrvcУдаление регистрации сервера хранилища как сервиса.
                            -usr <имя>
                          -pwd <пароль>
                          Имя пользователя, от имени которого будет зарегистрирован сервис. Этот пользователь должен обладать правом Вход в систему как сервис (Log on as a service). Кроме этого, он должен обладать правами на чтение каталога исполняемых файлов соответствующей версии системы «1С:Предприятие» и полными правами на корневой каталог хранилища конфигурации (каталог%APPDATA%\1C\1Cv8\ или тот каталог, который указан в параметре -d) и пароль для данного пользователя.
                            -startЗапуск сервиса сервера хранилища.
                            -stopОстановка сервиса сервера хранилища.
                          Зарегистрируем новый сервис с помощью программы Windows PowerShell, запустить которую можно выполнив команду powershell (для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне «Выполнить» (Run) ввести имя команды в поле «Открыть» (Open) и нажать «ОК») или кликнув по соответствующему ярлыку в панели задач.
                          zapusk-neskolkix-serverov-1spredpriyatiya-raznyx-versij_04
                          В открывшейся консоли Windows PowerShell, для удобства ввода дальнейших команд перейдем в каталог bin каталога с установленными файлами «1С:Предприятия» выполнив команду
                          cd "C:\Program Files (x86)\1cv8\8.3.5.1088\bin"
                          Затем, в рамках данного примера, выполним команду
                          .\crserver.exe -instsrvc -d C:\1C_BASE\repository -usr .\USR1CV8 -pwd UsrPass8
                          и запустим службу выполнив
                          .\crserver.exe -start
                          ustanovka-servera-xranilishha-konfiguracii-1s_03
                          Перейдем в оснастку службы (запустить которую можно выполнив команду services.msc) и убедимся что служба с именем 1C:Enterprise 8 Configuration Repository Serverзарегистрирована и запущена.
                          ustanovka-servera-xranilishha-konfiguracii-1s_04

                          4. Добавление правила в брандмауэр Windows

                          Для того чтобы сервер хранилища конфигураций был доступен другим компьютерам в сети, необходимо добавить используемый сервером порт 1542 в исключения Брандмауэра Windows (Windows Firewall). Подробно об этом читайте в статье «Добавление правила в Брандмауэр Windows Server 2012 R2».

                          5. Создание нового хранилища конфигурации

                          Как я уже говорил ранее, один сервер может обслуживать несколько хранилищ конфигурации. Файлы баз данных каждого из хранилищ должны располагаться в отдельном каталоге центрального каталога сервера хранилища конфигураций. Таким образом для создания нового хранилища, создадим в каталоге C:\1C_BASE\repository\ папку Accounting в которой будет располагаться файлы нового хранилища конфигурации.
                          ustanovka-servera-xranilishha-konfiguracii-1s_05
                          Тогда для создания и подключения к данному хранилищу необходимо будет использовать строку tcp://WIN2012/accounting, где WIN2012 — сетевое имя компьютера, на котором установлена служба, либо строку tcp://192.168.0.10/accounting, где 192.168.0.10, соответственно, IP-адрес данного компьютера. Подробно про создание нового хранилища можно прочитать в статье «Создание хранилища конфигурации «1С:Предприятия» 8.3».
                          К созданному таким образом хранилищу также возможно будет подключаться и в обход сервера, например по пути C:\1C_BASE\repository\Accounting на текущем компьютере или по пути \\WIN2012\repository\Accounting если настроить общий доступ к каталогу C:\1C_BASE\repository на данном сервере.

                          6. Публикация хранилища конфигурации на веб-сервере IIS

                          Для обращения к хранилищу конфигураций по протоколу http необходимо выполнить публикацию хранилища конфигурации на веб-сервере. Об этом читайте в статье «Публикация хранилища конфигурации на веб-сервере IIS».

                          Книги, которые должен прочитать Java программист: от новичка до профессионала

                          Книги, которые должен прочитать Java программист: от новичка до профессионала


                          [Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]

                          Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был :) ) Составить список мне помогали друзья и коллеги. Особая благодарнастьFrank AppelRüdiger HerrmannBenjamin Muskalla и Ralf Sternberg

                          Порядок книг в списке отражает мой персональный выбор. Меняйте его, как вам угодно :) Одна важная вещь — если вы покупаете книгу из этого списка, то всегда выбирайте англоязычный вариант. Даже если есть перевод на ваш родной язык, оригинальная версия почти всегда лучший выбор.

                          Beginner


                          Если вы только начали знакомство с Java, то для начала нужно познакомиться с синтаксисом языка. Существует большое количество книг для этого. Практически всегда содержание этих книг очень похоже, но вот стиль написания отличается кардинально.
                          Head First JavaJava. A Beginner s Guide 5th EditionTDD

                          Есть две книги, которые стоит порекомендовать. Head First Java нестандартная, но легкочитаемая. Как и вся серия, вы можете любить её или нет (я обожаю их). Java, A Beginner's Guide более традиционная книга, которая отлично объясняет Java. После того, как вы сполна ознакомились с синтаксисом и базовыми конструкциями, я рекомендую прочитать еще одну книгу перед тем, как переходить к следующему этапу (это справедливо и для других языков программирования).Test Driven Development (автор Kent Beck) описывает технику программирования, который мы используем в EclipseSource. ИМХО TDD должна входить в курс обучения каждого программиста.

                          Journeyman


                          Journeyman — программист, которые уже знает язык, сделал несколько небольших проектов, но которому еще предстоит развиться до профессионала. Конечно, я уверен, что вы не согласны с этим утверждением (я не был согласен, например). Но после пяти лет в этом статусе вы согласитесь :)

                          Effective JavaPragmatic ProgrammerDesign Patterns


                          Простых знаний языка недостаточно — вам необходимо углублять их. Для этих целей практически любой профессионал Java порекомендует книгу Effective Java, автор Joshua Bloch. Другая книга — The Pragmatic Programmer — похожа на сборник заметок. Она подробна раскрывает те темы, с которыми вы столкнетесь как программист, поэтому ее также обязательно надо прочитать. Но знание языка не научит вас хорошо писать программы. С моей точки зрения одна из долгосрочных задач программиста — научиться правильно создавать архитектуру приложений. Для этих целей Design Patterns Book, написаная Бандой Четырех [нет, это не те, которые левые в КПК, а распространённое название группы авторов (Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес)] — хорошее начало.
                          RefactoringClean CodeOSGI in ActionThe Clean Coder

                          Согласно книге TDD (автор Beck) золотое правило — это: красный, зеленый, рефактор. Martin Fowler объясняет последний пункт в своей книге Refactoring Book. После того, как все тесты прошли успешно и вы основательно переработали код, необходимо прочитать книгу Clean Code (Robert C. Martin) (минимум два раза). После первого раза я более чем уверен, что вы начнете думать про свой код по-другому [и вряд ли в лучшую сторону]. OSGi in Action смотриться странно в этом списке. Я добавил ее сюда, потому что я думаю, что модульность один из самых важных принципов дизайна приложений. Java-программисту просто необходимо знать OSGI. Помните, я упомянул, что вы не будете соглашаться со мной, что вы не станете Professional, пока не побудете в статусе Journeyman по крайней мере несколько лет? Я уверен, что после прочтения The Clean Coder я вас убедил. Robert C. Martin пишет про себя и свой путь развития от новичка до профессионала. Это действительно самое настоящее откровение!

                          Professional


                          Я использую слово «Professional», потому что в этом контексте его используют многие авторы. Но я не люблю использовать это слово для описания уровня программиста. «Professional» звучит так, как будто вы уже достигли вершины. Но это просто-напросто неправда. Программист никогда не может закончить свое обучение [впрочем, это справедливо для 83% профессий]. Книги, которые я поместил в эту категорию — просто более продвинутые. Они углубляются в детали или тренируют вас на роль лидера команды.
                          Java ConcurrencyWorking Eggectively with Legacy CodeProductive Projects TeamsPatterns of Enterprise Application Architecture

                          Совсем немного можно сделать в Java, не используя многопоточность. Пока вы в статусе Journeyman, скорее всего у вас в команде будет человек [ну-да, ну-да], который сможет вам помочь с этой темой. Но рано или поздно настанет момент, когда вам нужно будет научиться многопоточности самому. Brian Goetz проделал огромную работу в своей книге Java Concurrency in Practice. Быть профессионалом — значит брать ответственность. А так как вы программист — это еще значить нести ответственность за устаревший код. Micheal Feathers описал эту скучную тему немного веселее в книгеWoking Effectively with Legacy Code. Также вы должны уметь брать ответственность за свою команду. Tom DeMarco и Timothy Lister постарались раскрыть эту тему в Peopleware, где описали, как работают эфективные команды и важные характеристики таких команд. Просто объяснить трудную тему — очень тяжелая задача. Немноге авторы способны на это. Martin Fowler проделал огромную работу в книге Patterns of Enterprise Application Architecture, где подробно описал процесс проектирования ПО.

                          Не обнаружен ключ защиты программы. 1С Предприятие 8.

                          Что делать если 1С не запускается и выдает такую ошибку:

                          Не обнаружен ключ защиты программы. 1С Предприятие 8.
                          Эта ошибка может появляться по нескольким причинам:
                          Не найден ключ. 1С не смогла найти ключ из-за его отсутствия или Вы используете ключ от другого продукта. При использовании сетевого ключа нужно проверить работоспособность сети, запущен ли менеджер лицензий на компьютере с ключом, установлен ли именно сетевой ключ, открыт ли 457 порт.
                          Ключ не содержит лицензии.При установке двух ключей 1С будет использовать только один из них. Если на этом ключе нет нужной лицензии 1С выдаст ошибку. При использовании сетевого ключа, в случае работы в сети двух менеджеров лицензий с одинаковыми именами и ключами одной серии 1С может обратится к ключу не содержащему нужную лицензию, что вызовет ошибку.
                          Обнаружена служба терминалов. Нельзя использовать локальный ключ на сервере терминалов. Сетевой ключ так-же следует устанавливать на отдельный компьютер.
                          Превышено число лицензий. Если число пользователей больше количества лицензий в ключе, то возникнет ошибка. Так-же ошибка может возникнуть если используется два менеджера лицензий с одинаковыми именами и на одном из них кончились лицензии.

                          Как правильно устанавливать ключи

                          На один компьютер следует устанавливать только один ключ одной серии. Не следует устанавливать на одном компьютере локальный и сетевой ключ. Найдя локальный ключ от другого продукта 1С не будет искать сетевой ключ, а выдаст ошибку.
                          Не следует устанавливать ключ на сервер терминалов. 1С установленная на сервер терминалов, может работать только с сетевым ключом, установленным на другой компьютер.
                          При использовании двух и более ключей необходимо задать имя менеджера лицензий на каждом из компьютеров в файлеnhsrv.ini следующим образом:
                          [NHS_SERVER]
                          NHS_SERVERNAMES = SERVER1
                          Имя сервера должно состоять из латинских букв и цифр. Длинна не более 7 символов.
                          На клиентских машинах следует отредактировать файл nethasp.ini, задав имена менеджеров лицензий и их ip адреса:
                          [NH_COMMON]
                          NH_TCPIP = Enabled

                          [NH_TCPIP]
                          NH_SERVER_ADDR = 192.168.0.10, 192.168.0.11
                          NH_SERVER_NAME =server1, server2
                          При использовании сервера терминалов так-же рекомендуется явно указать имя сервера лицензий и прописать его вnethasp.ini на сервере терминалов.

                          Какие бывают ключи

                          Тип ключа легко определить по цвету.
                          Синий – локальный однопользовательский. Поставляется с продуктами лицензируемыми на одно рабочее место. Это самый простой ключ. Он не имеет встроенной памяти и не содержит никаких настроек. Маркировка ключа H4 M1 ORGL8.
                          Красный – сетевой клиентский ключ. Этот ключ имеет память и содержит в себе лицензии на 5, 10, 20, 50 или 100 пользователей. Маркировка ключа NETXX ORGL8, где ХX - количество лицензий (например NET5 ORGL8). Существуют также ключи на 300 и 500 пользователей которые имеют маркировку NET250+ ORG8A и NET250+ ORG8B. Этот ключ можно купить отдельно, в качестве дополнительных клиентских лицензий.
                          Фиолетовый - ключи для 32-битного сервера 1С Предприятие. Маркировка ключа ENSR8.
                          Зеленый – ключ для 64-битного сервера 1С Предприятие. Им поддерживается и 32-битная версия сервера 1С Предприятия. Имея лицензию на 64-битный сервер можно, использовать 32-битную версию, но не наоборот Маркировка ключа EN8SA.

                          1С Автообмен

                          В этой статье я опишу пару вариантов как настроить автоматический обмен, и как это можно реализовать в зависимости от количества розничных точек .
                          Чего я только не перепробовал, а начинал я с «Обмена через файловый ресурс», на тот момент у меня было на вооружение 10 розничных точек находившихся в разных частях города. Из 10 точек в 8 был интернет, и там я установил чудесную программу «Dropbox», ее устанавливаем на сервер и на компьютер клиента, тогда мне очень помог планировщик 1с.
                          Что для этого нужно? А нужно нам зайти в сервис→ прочий обмен данными→ выполнить обмен данными → затем выбрать настройку обмена

                          рис.1
                          Затем нужно перейти в вкладку "Интерактивный обмен", поставить галочку "Выполнить обмен данными под полными правами"



                          рис.2
                          Затем  переходим в вкладку Автоматический обмен



                          рис.3
                          Здесь выбираем свою настройку или добавляем



                          рис.4
                          десь ставим галочку  «Использовать расписание для выполнения обмена»
                          Чтобы не потерялся каждый день, в появившимся окне "Расписание",  ставим 1Повторять каждый день"



                          рис.5
                          Переходим на закладку "Дневной",  там я поставил 7200 секунд. Это означает, что обмен будет запускаться каждый день, каждые 2 часа. После этого нажимаем "Ок".



                          рис.6
                          Следуем дальше.  Переходим на закладку "Обмен по событиям"



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

                           

                          Вариант номер 2

                          Для варианта номер 2 нам уже не обойтись стандартным планировщиком 1с,  прибегнем за помощью к нашей операционке.
                          Потому что, при реализации автообмена для 30 и выше точек,  при выполнение задачи  стандартным планировщиком 1с, он повисает(((
                          1)Для начала  надо убрать галочку использовать расписание для выполнения обмена



                          рис.8
                          Затем,  нам понадобиться  программа, при помощи которой, мы с легкостью сможем создать службу.  Называется она так  
                          "anyserv".  Хочу заметить, что программа открывается под правами Администратора, иначе могут возникнуть сложности на  Win7, windows server. При открытие она выглядит так:



                          рис.9
                          В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе "Имя службы" указываем как будет называться наша служба. В "Описание службы" — любое понятное вам описание нового сервиса. Далее можно проставить нужные галочки:
                          Взаимодействие с рабочим столом — отметьте, если приложение имеет иконку в системном лотке;
                          Автозапуск службы — отметьте, если хотите, чтобы сервис запускался автоматически
                          Запустить сразу после создания — отметьте, если хотите, чтобы служба запустилась сразу после ее создания;
                          Но для нашей ситуации галочки ставить не надо!
                          Как пример работы утилиты, попробуем запустить в виде системной службы 1с



                          рис.10
                          После заполнения всех необходимых полей, нажимаем кнопку "Создать



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



                          рис.12
                          Для реализации авто-обмена, я создавал службы по названию точек.  Пойдем дальше, а дальше нам надо прописать в реестре путь к нашей базе с нашим пользователем и паролем. Для этого  заходим в пуск и в строке поиска прописываем команду “REGEDIT” 



                          рис.13
                          Дальше нам нужно будет проследовать HKEY_LOCAL_MACHINE →SYSTEM→CurrentControlSet→services→ здесь мы ищем название своей службы →Parameters→ Application



                          рис.14
                          В появившимся окне вставляем путь к вашей базе и  передаем параметры, точнее  название пользователя и пароль. Вот варианты  для файловой  базы:
                          Файловый→"C:\Program Files\1cv82\8.2.17.153\bin\1cv8.exe" ENTERPRISE /F"путь к файловой базе\" /N"пользователь" /P"пароль"
                          SQL→  "C:\Program Files (x86)\1cv82\8.2.17.153\bin\1cv8.exe" ENTERPRISE /s"имя сервера\имя базы"\" /N"пользователь" /P"пароль"

                          После того, как мы добавили путь в реестр, нам нужно создать батник,  который будет запускаться в планировщике операционной системы.  Я советую  всего лишь  создать один батник, и в нем уже прописать  очень простые команды в блокноте, и сохраняются в расширение . bat
                          net start имя службы
                          timeout 240
                          net stop имя службы
                          exit
                          где net start *это запуск службы
                           timeout 240 * таймаут (Можете увеличить или уменьшить количество секунд, в зависимости от надобности, но мне вполне хватает)
                          net stop * остановить службу
                          exit * выход


                          Так как у меня розничных точек свыше 30 прикладываю наглядный пример и прикрепляю батник



                          рис.15
                          После этого, заходим в пуск,  и в окне поиска прописываем команду: cmd для вызова командной строки. В командной строке, прописываем такую команду:  Schtasks /Create /tn "Запуск cmd" /tr cmd.exe /sc daily /st 08:00 /ri 60 /du 24:00  и нажимаем enter
                          Обозначение:
                          schtasks /create /tn -  имя задания, /tr -  выполнение задания, /sc ежеминутно [/mo {1 — 1439}] ,[/st -  время запуска, /sd -  дата запуска, /ed -  дата окончания, /s компьютер, /u - домен, пользователь /p -  пароль, /ru {[домен\]пользователь | "System"} [/rp пароль]]
                          Затем заходим в  планировщик операционной системы: пуск →все программы → стандартные→ служебные→ планировщик заданий 
                          Нам нужно найти наше задание. Открываем  его.

                          Показываю на примере:


                          рис.16
                           Ставим галочку "Выполнять с наивысшими  правами", затем переходим на вкладку
                          Действие→Нажимаем кнопку создать →обзор и указываем путь на наш батник, затем жмем "ок", должно получится вот так: 



                          рис.17
                          Жмем "ок ",  затем в планировщике нажимаем кнопку выполнить. Заходим в сервис  "активные пользователи", и видим, что наш обмен идет по истечению установленного времени.  Служба закроется, и проверить прошел ли обмен, мы можем через монитор обмена. Надеюсь, вам моя статья пригодиться!