0. BaHgaJI 25 17.07.15 14:35 Сейчас в теме

Отправка СМС по протоколу SMPP через МЕГАФОН или через веб-сервис МТС (8.3 обычное приложение) Добавлено: отправка СМС мегафон по http

Конфигурация предназначена для отправки СМС по протоколу SMPP, напрямую, через МЕГАФОН.
Также в конфигурации есть отправка СМС через веб-сервис МТС.
Добавлено: отправка СМС мегафон по http

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. BaHgaJI 25 21.07.15 09:46 Сейчас в теме
Всего одно скачивание, ну не серьезно ребят) Я так старался, так старался)
2. BaHgaJI 25 14.08.15 16:03 Сейчас в теме
Если кому надо могу выложить с обработкой отчетов о доставке мегафоновских смс,
4. php5 11 11.09.15 10:50 Сейчас в теме
Классная вещь, спасибо, пригодилось мне в работе!
5. BaHgaJI 25 02.10.15 08:12 Сейчас в теме
(4) php5, Пожалуйста, это моя работа, кто-то должен!
6. Prooa 59 02.11.15 12:02 Сейчас в теме
Здравствуйте, ни как не могу зарегистрировать на Windows7x64. Создаю приложение потом компоненту, выбираю файл, винда пишет что есть такая и не ставит компоненту, а при мWinSocketActiveX = Новый COMОбъект("MSWinsock.Winsock.1"); выдает исключение, что и пропустил не подскажите? Очень нужно
7. Prooa 59 03.11.15 06:36 Сейчас в теме
(6) Prooa, зарегистрировал, но смс не отправляет, в режиме отладки видно что срабатывает только "//пришел пакет ENQUIRE_LINK" и все, что не так
8. BaHgaJI 25 03.11.15 14:33 Сейчас в теме
п(7) Prooa, проверьте пользователя и пароль
9. BaHgaJI 25 03.11.15 14:33 Сейчас в теме
(7) Prooa, ENQUIRE_LINK_RESP отправляете?
10. BaHgaJI 25 03.11.15 14:35 Сейчас в теме
(7) Prooa, или скачайте http://infostart.ru/public/393308/ там более наглядно, что приходит, что уходит
11. Prooa 59 05.11.15 05:36 Сейчас в теме
Скачал обработку все работает, а с вашей конфы не хочет
12. BaHgaJI 25 19.11.15 12:52 Сейчас в теме
(11) Prooa, походу только у вас не работает.
скорее всего не правильное значение МатрицаДанных.SetValue(7, 4); //command_id 4=submit_sm submit_multi=21
13. BaHgaJI 25 19.11.15 12:54 Сейчас в теме
(11) Prooa, и еще с этими данными надо поиграть, они тоже часто разные у всех бывают

МатрицаДанных.SetValue(17, 5); //source_addr_ton
МатрицаДанных.SetValue(18, 0); //source_addr_npi
14. BaHgaJI 25 04.12.15 12:12 Сейчас в теме
(11) Prooa, нашел в чем могла быть проблема.
в submit_sm_resp иногда приходит пакет с ошибкой если оператор по какой то причине не может отправить смс.

Добавьте в процедуру ОбработатьПакет_submit_sm_resp

КодОшибки = ВходящийПакет.GetValue(11);
Если КодОшибки <> 0 Тогда
ЗаписатьНовыйСтатусСМС("ошибка отправки");
Возврат;
КонецЕсли;


15. nikolayvg 18 10.01.16 22:29 Сейчас в теме
Здравствуйте. При установке компоненты на сервер 2008 R2 Standart возникла проблема в пункте
8. Выбираем "Установка новых компонентов", и в диалоге выбираем нужную компоненту (тип файла «все файлы»).
все выбираю, но компонента в списке не появляется. Что может быть не так?
16. BaHgaJI 25 11.01.16 09:07 Сейчас в теме
(15) nikolayvg, точно выбираете тип файла "Все файлы(*.*)" т.к. если файл в папке то он по-любому будет виден. Или в службе компонентов не появляется? Если в службе компонентов, то попробуйте любую другую компоненту добавить, а потом компоненту винсок, должна появиться.
17. nikolayvg 18 14.01.16 05:51 Сейчас в теме
(15) nikolayvg, На всякий случай для остальных:
Воспользовался советом из http://infostart.ru/public/319296/ и установил Visual Basic
18. BaHgaJI 25 10.02.16 12:27 Сейчас в теме
Если приходит ошибка 88 (0x65) надо добавить задерку при отправке смс, примерно 5 смс в секунду
19. Bayker 24.05.16 14:50 Сейчас в теме
Добрый день, заключили договор с мегафоном, прислал вот это:
1. IP-адрес крипто-сервера
2. IP-адрес SMPP ESME
3. IP-адрес крипто-сервера УФ ОАО "МегаФон"
4. IP-адрес SMS-центра УФ ОАО "МегаФон"
5. Ключ isakmp
6. transform-set:
7. PFS:
8. Isakmp policy

От дальнейшей помощи категорически отказывается, будет ли Ваша разработка работать с Тюменским мегафоном (если там вообще есть различия)?
20. BaHgaJI 25 24.05.16 17:01 Сейчас в теме
(19) Bayker, не могу сказать, по идее если по протоколу SMPP то отличий никаких не должно быть
21. SGordon1 10.06.16 12:09 Сейчас в теме
Обновление лежит отдельно , не в архиве?
22. BaHgaJI 25 10.06.16 13:09 Сейчас в теме
23. flord 48 21.07.16 15:51 Сейчас в теме
Никто не сталкивался с такой ситуацией. После отправки команды Bind_transceiver компонента переходит в состояние State = 8 (клиент закрыл подключение)?
24. BaHgaJI 25 22.07.16 08:37 Сейчас в теме
(23) flord, значит ошибка в этом пакете, проверьте логин и пароль, он чувствителен к реестру. Лучше конечно узнать у оператора, что к ним приходит и в чем ошибка.
25. flord 48 22.07.16 08:45 Сейчас в теме
Пытаемся отправлять СМС через Мегафон СПб.

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

По логу wireshark:

1. [Connection establish request (SYN): порт сервера хххх]– отправляем запрос на установку соединения
2. [Connection establish acknowledge (SYN + ACK) : порт сервера хххх] – получаем подтверждение
3. Short Message Peer to Peer, Command: Bind_transceiver, Seq: 1, Len: 41 (пакет PDU пришлось переписать не вмещался пароль)
Length: 41
Operation: Bind_transceiver (0x00000009)
Sequence #: 1
System ID: *******
Password: *******
Version (if): 0.0
Type of number: Unknown (0x00)
Numbering plan indicator: Unknown (0x34)
Address: \001\001



4. В ответ от сервера получаем:

Transmission Control Protocol, Src Port: xxxx , Dst Port: yyyyy, Seq: 1, Ack: 42, Len: 0
Source Port: xxxx
Destination Port: yyyyy
[Stream index: 16]
[TCP Segment Len: 0]
Sequence number: 1 (relative sequence number)
Acknowledgment number: 42 (relative ack number)
Header Length: 20 bytes
Flags: 0x011 (FIN, ACK)
000. .... .... = Reserved: Not set
...0 .... .... = Nonce: Not set
.... 0... .... = Congestion Window Reduced (CWR): Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...1 .... = Acknowledgment: Set
.... .... 0... = Push: Not set
.... .... .0.. = Reset: Not set
.... .... ..0. = Syn: Not set
.... .... ...1 = Fin: Set [Expert Info (Chat/Sequence): Connection finish (FIN)]
[Connection finish (FIN)]
[Severity level: Chat]
[Group: Sequence]
[TCP Flags: *******A***F]
Window size value: 8186
[Calculated window size: 65488]
[Window size scaling factor: 8]
Checksum: 0x1182 [validation disabled]
Urgent pointer: 0
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 5265]
[The RTT to ACK the segment was: 0.026876000 seconds]
[iRTT: 0.028090000 seconds]


Нигде упоминания о полученной команде Bind_transceiver_resp в логе нет.

Обработка написана для клиент-серверного варианта.
При отправке смс пользователем запускается фоновое задание.

Сначала происходит инициализация и подключение.
Если сразу после подключения State = 7, отправляем Bind_transceiver

Далее входим в бесконечный цикл обработки State
Если сразу не получили состояние State = 7, ждем его и делаем запрос.

Основная проблема если смотреть из 1с компонента сразу после отправки
Bind_transceiver переходит в режим State = 8 (клиент закрыл подключение)


Событие DataArrival ни разу не сработало – ну оно и понятно.
Не могу понять причину такого поведения.

Админы с нашей стороны и со стороны ОпСоСа говорят, что у них никакие пакеты не режутся.
26. BaHgaJI 25 22.07.16 09:05 Сейчас в теме
(25) flord, упоминания нет, потому что скорее всего Bind_transceiver кривой, скиньте как вы его переделали...
27. flord 48 22.07.16 14:25 Сейчас в теме
Функция СобратьПакет_BIND_Transceiver(sequence_number) Экспорт
                
                ИдПользователя = Справочники.СервисыSMSрассылки.Мегафон.Пользователь;
                Пароль         = Справочники.СервисыSMSрассылки.Мегафон.Пароль;
                
                ДлинаЛогина = СтрДлина(ИдПользователя);
                Если ДлинаЛогина + 1 > 16 Тогда
                               ИдПользователя = Лев(ИдПользователя, 15);
                               ДлинаЛогина = 15;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина логина + нулевой символ превышает 16 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                ДлинаПароля = СтрДлина(Пароль);
                Если ДлинаПароля + 1 > 9 Тогда
                               Пароль = Лев(Пароль, 8);
                               ДлинаЛогина = 8;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина пароля + нулевой символ превышает 9 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                Если Не ЗначениеЗаполнено(sequence_number) Тогда
                               sequence_number = 1;
                КонецЕсли;
                
                system_Тип = "";
                Длина_system_Тип = СтрДлина(system_Тип);
                interface_version = 4;
                addr_ton = 0;
                addr_npi = 0;
                address_range = "";
                Длина_address_range = СтрДлина(address_range);
                
                //Длина      header  id + zero           pass + zero        System_Тип + zero      interface_version   addr_ton  addr_npi address_range + zero
                ДлинаПакета = 16 + (ДлинаЛогина + 1) + (ДлинаПароля + 1) + (Длина_system_Тип + 1) +         1             + 1      + 1  + Длина_address_range + 1;
                Матрица = Новый COMSafeArray("VT_UI1", ДлинаПакета); // было 37
                
                // HEADER
                
                // command_length 4 octets
                Матрица.SetValue(0,0);
                Матрица.SetValue(1,0);
                Матрица.SetValue(2,0);
                Матрица.SetValue(3, ДлинаПакета); //command_length
                
                // command_id 4 octets
                Матрица.SetValue(4,0);
                Матрица.SetValue(5,0);
                Матрица.SetValue(6,0);
                Матрица.SetValue(7,9); // Operation: BIND Tranceiver (0x00000009)
                
                // command_id 4 octets
                Матрица.SetValue(8,0);
                Матрица.SetValue(9,0);
                Матрица.SetValue(10,0);
                Матрица.SetValue(11,0); //Не  используется  в PDU bind_transceiver. 
                
                // sequence_number 4 octets
                Матрица.SetValue(12,0);
                Матрица.SetValue(13,0);
                Матрица.SetValue(14,0);
                Матрица.SetValue(15, sequence_number); //уникальный номер последовательности bind_transceiver 
                
                Индекс = 16;
                
                // BODY
                
                // system_id  COctet String max16
                Для  НомерСтроки = 1 По ДлинаЛогина Цикл
                               Матрица.SetValue(Индекс, КодСимвола(ИдПользователя, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для логина
                Индекс = Индекс + 1;
                
                // password COctet String max9
                Для НомерСтроки = 1 По ДлинаПароля Цикл
                               Матрица.SetValue(Индекс, КодСимвола(Пароль, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для пароля
                Индекс = Индекс + 1;
                
                // system_Тип COctet String max13
                Если ЗначениеЗаполнено(system_Тип) Тогда
                               Для  НомерСтроки = 1 По Длина_system_Тип Цикл
                                               Матрица.SetValue(Индекс, КодСимвола(system_Тип, НомерСтроки));
                                               Индекс = Индекс + 1;
                               КонецЦикла;
                КонецЕсли;
                Матрица.SetValue(Индекс,0); // NULL для system_Тип
                Индекс = Индекс + 1;
                
                // interface_version
                Матрица.SetValue(Индекс, КодСимвола(interface_version));//interface_version = 4 (версия 4 = 3.4)
                Индекс = Индекс + 1;
                
                // addr_ton
                Матрица.SetValue(Индекс, addr_ton);
                Индекс = Индекс + 1;
                
                // addr_npi
                Матрица.SetValue(Индекс, addr_npi);
                Индекс = Индекс + 1;
                
                // address_range
                Если ЗначениеЗаполнено(address_range) Тогда
                               Для  НомерСтроки = 1 По Длина_address_range Цикл
                                               Матрица.SetValue(Индекс, КодСимвола(address_range, НомерСтроки));
                                               Индекс = Индекс + 1;
                               КонецЦикла;
                КонецЕсли; 
                Матрица.SetValue(Индекс,0); // NULL для address_range
                Индекс = Индекс + 1;
                
                // увеличиваем номер запроса
                sequence_number = sequence_number + 1;
                
                Возврат Матрица;
                
КонецФункции
Показать
28. BaHgaJI 25 22.07.16 15:13 Сейчас в теме
(27) flord, ну мой совет поставить после пароля

Матрица.SetValue(29,0);
Матрица.SetValue(30,0);
Матрица.SetValue(31,0);

Матрица.SetValue(32,0);
Матрица.SetValue(33,52);
Матрица.SetValue(34,1);
Матрица.SetValue(35,1);

Матрица.SetValue(36,0);

Там где циферки слева соотвественно ваш индекс.
Просто эти значения четко подобраны и менять их не стоит.
29. BaHgaJI 25 22.07.16 15:19 Сейчас в теме
(27) flord, так же у вас не верно Матрица.SetValue(Индекс, КодСимвола(interface_version));//interface_version = 4 (версия 4 = 3.4)

Должно быть так interface_version 0x34 = 52
30. BaHgaJI 25 22.07.16 15:22 Сейчас в теме
(27) flord, и вот эти должны быть = 1

addr_ton = 0;
addr_npi = 0;
31. flord 48 22.07.16 15:28 Сейчас в теме
Если оставить так – то «съедаются» последние несколько символов пароля.


Если смотреть описание pdu из описания протокола

Матрица.SetValue(32,0); это system_тип
Матрица.SetValue(33,52); это interface_version
Матрица.SetValue(34,1); это addr_ton
Матрица.SetValue(35,1); это addr_npi

Матрица.SetValue(36,0); это address_range

Я прав?

А за что отвечают эти значения, не подскажете?:

Матрица.SetValue(29,0);
Матрица.SetValue(30,0);
Матрица.SetValue(31,0);
32. BaHgaJI 25 22.07.16 18:46 Сейчас в теме
(31) flord, Уже не помню за что отвечают, что-то разделитель, что то просто не нужно и по умолчанию 0, методом тыка подбирал, как пароль может съедаться? попробуйте вот так:
Функция СобратьПакет_BIND_Transceiver(sequence_number) Экспорт
                
                ИдПользователя = Справочники.СервисыSMSрассылки.Мегафон.Пользователь;
                Пароль         = Справочники.СервисыSMSрассылки.Мегафон.Пароль;
                
                ДлинаЛогина = СтрДлина(ИдПользователя);
                Если ДлинаЛогина + 1 > 16 Тогда
                               ИдПользователя = Лев(ИдПользователя, 15);
                               ДлинаЛогина = 15;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина логина + нулевой символ превышает 16 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                ДлинаПароля = СтрДлина(Пароль);
                Если ДлинаПароля + 1 > 9 Тогда
                               Пароль = Лев(Пароль, 8);
                               ДлинаЛогина = 8;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина пароля + нулевой символ превышает 9 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                Если Не ЗначениеЗаполнено(sequence_number) Тогда
                               sequence_number = 1;
                КонецЕсли;
                
                system_Тип = "";
                Длина_system_Тип = СтрДлина(system_Тип);
                interface_version = 4;
                addr_ton = 0;
                addr_npi = 0;
                address_range = "";
                Длина_address_range = СтрДлина(address_range);
                
                //Длина      header  id + zero           pass + zero        System_Тип + zero      interface_version   addr_ton  addr_npi address_range + zero
                ДлинаПакета = 16 + (ДлинаЛогина + 1) + (ДлинаПароля + 1) + (Длина_system_Тип + 1) +         1             + 1      + 1  + Длина_address_range + 1;
                Матрица = Новый COMSafeArray("VT_UI1", ДлинаПакета); // было 37
                
                // HEADER
                
                // command_length 4 octets
                Матрица.SetValue(0,0);
                Матрица.SetValue(1,0);
                Матрица.SetValue(2,0);
                Матрица.SetValue(3, ДлинаПакета); //command_length
                
                // command_id 4 octets
                Матрица.SetValue(4,0);
                Матрица.SetValue(5,0);
                Матрица.SetValue(6,0);
                Матрица.SetValue(7,9); // Operation: BIND Tranceiver (0x00000009)
                
                // command_id 4 octets
                Матрица.SetValue(8,0);
                Матрица.SetValue(9,0);
                Матрица.SetValue(10,0);
                Матрица.SetValue(11,0); //Не  используется  в PDU bind_transceiver. 
                
                // sequence_number 4 octets
                Матрица.SetValue(12,0);
                Матрица.SetValue(13,0);
                Матрица.SetValue(14,0);
                Матрица.SetValue(15, sequence_number); //уникальный номер последовательности bind_transceiver 
                
                Индекс = 16;
                
                // BODY
                
                // system_id  COctet String max16
                Для  НомерСтроки = 1 По ДлинаЛогина Цикл
                               Матрица.SetValue(Индекс, КодСимвола(ИдПользователя, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для логина
                Индекс = Индекс + 1;
                
                // password COctet String max9
                Для НомерСтроки = 1 По ДлинаПароля Цикл
                               Матрица.SetValue(Индекс, КодСимвола(Пароль, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для пароля
                Индекс = Индекс + 1;
         
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,52); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,1); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,1); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0);
                
                Возврат Матрица;
                
КонецФункции
Показать
33. flord 48 29.07.16 09:51 Сейчас в теме
(32) Выяснилось, что по нашему заключенному договору с Мегафоном в этой системе Bind_transceiver не поддерживается
(Либо у Мегафона в принципе не поддерживается Bind_transceiver).
Работает Bind_transmitter.

A PDU на запрос BIND был правильным – изменил команду и заработало.
Спасибо за помощь!
34. BaHgaJI 25 29.07.16 11:03 Сейчас в теме
(33) flord, Вот оно че, у нас мегафон на Bind_transceiver работает
35. Revolver_61 02.08.16 14:45 Сейчас в теме
Подскажите, что означает ошибка "Код Ошибки Постоянного Приложения Приемника ESME (ESME Receiver Permanent App Error Code)" ?
Приходит в пакете submit_sm_resp
36. BaHgaJI 25 03.08.16 08:30 Сейчас в теме
(35) Revolver_61,
1. неверные параметры в отправленном submit_sm.
2. от smsc других регионов и операторов пришел ответ о невозможности принять смс по разным причинам.
3. закончились деньги на лицевом счету, необходимо обратиться к своему менеджеру для выяснения вопроса.
37. BaHgaJI 25 03.08.16 08:31 Сейчас в теме
(35) Revolver_61, часто эта ошибка приходит если отправляется смс на городской номер
38. Tanis 07.01.17 16:49 Сейчас в теме
Доброго времени!

Подскажите как именно работает с МТС? Обработку пока не скачивал.

В описании сказано. что вводится логин и пароль (МД5). Эти "учетки" просто пользователя (своего личного) или после договора компании с МТС о доставке смс?
По какому шлюзу обмен идет?

Спасибо!
39. BaHgaJI 25 09.01.17 08:21 Сейчас в теме
Добрый день! Договор с МТС нужен, у них есть апи по SOAP. (веб сервис). В моей конфигурации пример этого веб-сервиса, в принципе самому там не сложно настроить.
40. real_alexasha 10.03.17 12:22 Сейчас в теме
Здравствуйте!

Без создания регламентных заданий, обработка РассылкаSMSМегафон отправляет сообщения?
41. BaHgaJI 25 20.03.17 11:13 Сейчас в теме
42. cyborg55 28 01.06.17 13:23 Сейчас в теме
Добрый день. Пытаюсь отправить через мтс. Не получается. Как мне получить пароль в формате MD5? Это мне мтс должен в таком формате предоставить?
43. BaHgaJI 25 04.06.17 00:05 Сейчас в теме
(42) нет, мтс предоставляет в обычном формате, в мд5 на любом сайте конквертните, например http://decodeit.ru/md5
44. Spakus 13.09.17 14:09 Сейчас в теме
Здравствуйте.
Скачал конфигурацию, пытаюсь отправить СМС через МТС.
При запуске регламентного задания вываливается ошибка (см. скриншот) в функции "ПолучитьСтатистику" при вызове метода "GetStatistics".

В чем ошибка?
Прикрепленные файлы:
45. BaHgaJI 25 18.09.17 15:22 Сейчас в теме
(44) В конфигураторе удалите ws ссылку и добавьте заново такую же.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день