Совсем простой обмен HTTP, 2 функции
Разработка - Системная интеграция - Интеграция с WEB
Сам пользуюсь этими функциями, в ряде случаев чуть дорабатывая "по месту", но в основном их возможностей хватает. Позволяют быстро начать работу с большинством http-сервисов.
// Вспомогательная
Процедура СообщитьИВнестиВПротокол(инфо,рПротокол,рПояснять=Ложь) Экспорт
Если Прав(инфо,3)="!!!" Тогда
рСтатус=СтатусСообщения.ОченьВажное;
ИначеЕсли Прав(инфо,2)="!!" Тогда
рСтатус=СтатусСообщения.Важное;
ИначеЕсли Прав(инфо,1)="!" Тогда
рСтатус=СтатусСообщения.Внимание;
Иначе
рСтатус=СтатусСообщения.Информация;
КонецЕсли;
Если рПояснять Тогда
Сообщить(инфо,рСтатус);
КонецЕсли;
//
Если ТипЗнч(рПротокол)=Тип("ТекстовыйДокумент") Тогда
рПротокол.ДобавитьСтроку(инфо);
КонецЕсли;
КонецПроцедуры
// Выполняет любой запрос к соединению,при необходимости создаёт соединение,заносит в параметры ответ сервиса.
// Возвращает успешность (булево), при ошибке возвращает Ложь.
//
// Параметры:
// рПараметры - структура:
//
// Соединение - HTTP-соединение; заносится в этот ключ,если не было передано (создаётся в функции),и используется из этого ключа без изменений,если было передано;
// если значение ключа Соединение не указано или имеет иной тип,то соединение создаётся согласно значениям указанных ключей:
// Сервер -строка, обязательный (если пусто или не указано,то возвращает ошибку),если начинается с http://,то приводится к правильному виду автоматически;
// Порт - число, обязательный (по умолчанию для незащищённых 80,для защищённых 443);
// Пользователь - строка, необязательный;
// Пароль - строка, необязательный;
// Таймаут - число, необязательный (по умолчанию 0);
// ПроксиПользователь - строка, необязательный (по умолчанию пуста); если не пуста,то это признак использования прокси,в этом случае требуется передача свойств:
// ПроксиПароль - строка, необязательный;
// ПроксиСервер - строка,
// ПроксиПорт - число, необязательный (по умолчанию 0);
// ЗащищенноеСоединение - булево, необязательный; если используется,то применяется SSL;
// КраткийФорматВызова - булево, необязательный; если указан,то соединение НЕ защищённое и БЕЗ прокси.
// Если Соединение не было указано,то по завершении функции в ключ Соединение вносится созданное в ней;
//
// HTTPЗапрос - запрос с уже установленными свойствами; необязательный,если не указан,то инициализируется в функции согласно значениям указанных ключей:
// АдресРесурса или АдресСкрипта (равнозначны оба ключа) - строка,необязательный; по умолчанию "/";
// ЗаголовкиЗапроса - соответствие или фикс.соответствие, необязательный;
// ПараметрыЗапроса - структура,соответствие,фикс.соответствие или список значений (где имя ключа - Представление,а значение ключа - Значение),
// список значений используется в случае,когда важен порядок следования параметров, вносит в ком.строку строго по порядку вхождения данных в список;
// ТелоЗапроса - строка или двоичные данные,необязательный;
// уточнения для тела запроса,являющегося строкой: КодировкаТелаЗапроса (по умолчанию UTF-8),ИспользованиеByteOrderMark (по умолчанию НеИспользовать);
// ИмяФайлаТелаЗапроса - строка; необязательный;
// указание тела запроса более приоритетно, чем указание имени файла тела запроса;
// Если HTTPЗапрос был указан, то по завершении функции из рПараметры значение с ключом HTTPЗапрос удаляется,во избежание кэширования;
//
// МетодHTTP - строка,необязательный (по умолчанию GET), допустимы только значения "GET" и "POST";
//
// Протокол - текстовый документ, необязательный (по умолчанию пуст и не используется);
// Пояснять - булево; если Истина, то действия поясняются и в протокол (если ведётся), и сообщениями.
//
// По итогам работы функции при её успешном завершении в рПараметры вставляется значение с ключом HTTPОтвет. При ошибке вставляет Неопределено.
//
// Возвращает успешность (булево).
//
Функция HTTPВыполнитьЗапрос(рПараметры) Экспорт
Попытка
рПротокол=?(рПараметры.Свойство("Протокол"),рПараметры.Протокол,Неопределено);
рПояснять=?(рПараметры.Свойство("Пояснять"),рПараметры.Пояснять,Ложь);
// сразу по умолчанию
//рОтвет=Новый HTTPСервисОтвет(0,"Запрос не выполнялся"); // в релизах ниже 8.3.7 не отрабатывает
рОтвет=Неопределено;
рПараметры.Вставить("HTTPОтвет",рОтвет);
рКраткийФормат=?(рПараметры.Свойство("КраткийФорматВызова"),рПараметры.КраткийФорматВызова,Ложь);
рЗащищённое=?(рПараметры.Свойство("ЗащищенноеСоединение"),рПараметры.ЗащищенноеСоединение,Ложь);
рПользователь=?(рПараметры.Свойство("Пользователь"),рПараметры.Пользователь,"");
рПароль=?(рПараметры.Свойство("Пароль"),рПараметры.Пароль,"");
рСоединение=?(рПараметры.Свойство("Соединение"),рПараметры.Соединение,Неопределено);
Если ТипЗнч(рСоединение)<>Тип("HTTPСоединение") Тогда // надо его установить
#Область УстановкаСоединения
Если не рПараметры.Свойство("Сервер") Тогда Возврат Ложь КонецЕсли;
рСервер=СокрЛП(рПараметры.Сервер);
Если ПустаяСтрока(рСервер) Тогда Возврат Ложь КонецЕсли;
рПорт=?(рПараметры.Свойство("Порт"),рПараметры.Порт,0);
рТаймаут=?(рПараметры.Свойство("Таймаут"),рПараметры.Таймаут,0);
рПроксиПользователь=?(рПараметры.Свойство("ПроксиПользователь"),рПараметры.ПроксиПользователь,""); // признак применения прокси именно в этом
Если рКраткийФормат Тогда рЗащищённое=Ложь; рПроксиПользователь="" КонецЕсли;
//
рПрокси=Неопределено;
Если не ПустаяСтрока(рПроксиПользователь) Тогда
рПрокси=Новый ИнтернетПрокси;
рПрокси.Пользователь=рПроксиПользователь;
рПрокси.Пароль=рПараметры.ПроксиПароль;
Если рПараметры.ПроксиПорт=0 Тогда
рПрокси.Установить("HTTP",рПараметры.ПроксиСервер);
Иначе
рПрокси.Установить("HTTP",рПараметры.ПроксиСервер,рПараметры.ПроксиПорт);
КонецЕсли;
КонецЕсли;
//
Если СтрНачинаетсяС(НРег(рСервер),"http://") Тогда
рСервер=Сред(рСервер,8);
КонецЕсли;
Если рПорт=0 Тогда
рПорт=?(рЗащищённое,443,80);
КонецЕсли;
//
Если рЗащищённое Тогда
си=Новый СистемнаяИнформация;
Если Число(СтрРазделить(си.ВерсияПриложения,".",Ложь).Получить(2))>9 Тогда
рSSL=Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать),Новый СертификатыУдостоверяющихЦентровWindows());
Иначе
рSSL=Новый ЗащищенноеСоединениеOpenSSL(,Новый СертификатыУдостоверяющихЦентровWindows);
КонецЕсли;
Иначе
рSSL=Неопределено;
КонецЕсли;
//
Если рКраткийФормат Тогда
Если рЗащищённое Тогда
рСоединение=Новый HTTPСоединение(рСервер,,,,,,рSSL);
Иначе
рСоединение=Новый HTTPСоединение(рСервер);
КонецЕсли;
Иначе
Если рПрокси=Неопределено Тогда
рСоединение=Новый HTTPСоединение(рСервер,рПорт,рПользователь,рПароль,,рТаймаут,рSSL);
Иначе
рСоединение=Новый HTTPСоединение(рСервер,рПорт,рПользователь,рПароль,рПрокси,рТаймаут,рSSL);
КонецЕсли;
КонецЕсли;
//
Если ТипЗнч(рСоединение)<>Тип("HTTPСоединение") Тогда
СообщитьИВнестиВПротокол("Не удалось создать объект HTTP-соединения!",рПротокол,рПояснять);
КонецЕсли;
//
// вставим на будущее (это иногда имеет смысл кэшировать)
рПараметры.Вставить("Соединение",рСоединение);
#КонецОбласти
Иначе
рСервер=рСоединение.Сервер;
рПорт=рСоединение.Порт;
рТаймаут=рСоединение.Таймаут;
рПроксиПользователь=рСоединение.Прокси.Пользователь;
КонецЕсли;
// а эти всегда берём по итогам установленного соединения
рПроксиСервер=рСоединение.Прокси.Сервер();
рПроксиПорт=рСоединение.Прокси.Порт();
//
// выводим настройки соединения
инфо="Соединение:
|Сервер: "+СокрЛП(рСервер)+",порт: "+Строка(рПорт)+",пользователь: "+СокрЛП(рПользователь)+",таймаут: "+рТаймаут+"
|краткий формат: "+Строка(рКраткийФормат)+",защищённое: "+Строка(рЗащищённое)+Символы.ПС;
Если не ПустаяСтрока(рПроксиПользователь) Тогда
инфо=инфо+"прокси: сервер "+СокрЛП(рПроксиСервер)+",порт "+Строка(рПроксиПорт)+",пользователь "+СокрЛП(рПроксиПользователь);
Иначе
инфо=инфо+"прокси не используется";
КонецЕсли;
СообщитьИВнестиВПротокол(инфо,рПротокол,рПояснять);
//
Если ТипЗнч(рСоединение)<>Тип("HTTPСоединение") Тогда // уже без сообщения,именно выход по ошибке
Возврат Ложь;
КонецЕсли;
рЗапрос=?(рПараметры.Свойство("HTTPЗапрос"),рПараметры.HTTPЗапрос,Неопределено);
Если ТипЗнч(рЗапрос)<>Тип("HTTPЗапрос") Тогда
#Область УстановкаЗапроса
Если рПараметры.Свойство("АдресРесурса") и не ПустаяСтрока(рПараметры.АдресРесурса) Тогда
рАдресРесурса=рПараметры.АдресРесурса;
ИначеЕсли рПараметры.Свойство("АдресСкрипта") и не ПустаяСтрока(рПараметры.АдресСкрипта) Тогда
рАдресРесурса=рПараметры.АдресСкрипта;
Иначе
рАдресРесурса="/";
СообщитьИВнестиВПротокол("Используется пустой адрес ресурса для запроса.",рПротокол,рПояснять);
КонецЕсли;
//
рЗаголовки=Новый Соответствие;
Если рПараметры.Свойство("ЗаголовкиЗапроса") Тогда
Если ТипЗнч(рПараметры.ЗаголовкиЗапроса)=Тип("Соответствие") или ТипЗнч(рПараметры.ЗаголовкиЗапроса)=Тип("ФиксированноеСоответствие") Тогда
рЗаголовки=рПараметры.ЗаголовкиЗапроса;
КонецЕсли;
КонецЕсли;
//
Если рПараметры.Свойство("ПараметрыЗапроса") Тогда
Если ТипЗнч(рПараметры.ПараметрыЗапроса)=Тип("Структура")
или ТипЗнч(рПараметры.ПараметрыЗапроса)=Тип("Соответствие")
или ТипЗнч(рПараметры.ПараметрыЗапроса)=Тип("ФиксированноеСоответствие")
Тогда
Если рАдресРесурса<>"/" Тогда
разд="?";
Для каждого киз Из рПараметры.ПараметрыЗапроса Цикл
рАдресРесурса=рАдресРесурса+разд+СокрЛП(киз.Ключ)+"="+СокрЛП(Строка(киз.Значение)); разд="&";
КонецЦикла;
КонецЕсли;
ИначеЕсли ТипЗнч(рПараметры.ПараметрыЗапроса)=Тип("СписокЗначений") Тогда
// случай,когда был очень важен порядок параметров,и их разместили осознанно именно так; не сортировать!
Если рАдресРесурса<>"/" Тогда
разд="?";
Для каждого знч Из рПараметры.ПараметрыЗапроса Цикл
рАдресРесурса=рАдресРесурса+разд+СокрЛП(знч.Представление)+"="+СокрЛП(Строка(знч.Значение)); разд="&";
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//
рЗапрос=Новый HTTPЗапрос(рАдресРесурса,рЗаголовки);
//
Если рПараметры.Свойство("ТелоЗапроса") Тогда
Если ТипЗнч(рПараметры.ТелоЗапроса)=Тип("Строка") Тогда
рКодировка=?(рПараметры.Свойство("КодировкаТелаЗапроса"),рПараметры.КодировкаТелаЗапроса,Неопределено);
Если не ЗначениеЗаполнено(рКодировка) Тогда рКодировка=КодировкаТекста.UTF8 КонецЕсли;
рИспользоватьБОМ=?(рПараметры.Свойство("ИспользованиеByteOrderMark"),рПараметры.ИспользованиеByteOrderMark,Неопределено);
Если не ЗначениеЗаполнено(рИспользоватьБОМ) Тогда рИспользоватьБОМ=ИспользованиеByteOrderMark.НеИспользовать КонецЕсли;
рЗапрос.УстановитьТелоИзСтроки(рПараметры.ТелоЗапроса,рКодировка,рИспользоватьБОМ);
ИначеЕсли ТипЗнч(рПараметры.ТелоЗапроса)=Тип("ДвоичныеДанные") Тогда
рЗапрос.УстановитьТелоИзДвоичныхДанных(рПараметры.ТелоЗапроса);
КонецЕсли;
ИначеЕсли рПараметры.Свойство("ИмяФайлаТелаЗапроса") Тогда
// наличие файла не проверяем,считаем,что он есть априорно
рЗапрос.УстановитьИмяФайлаТела(рПараметры.ИмяФайлаТелаЗапроса);
КонецЕсли;
#КонецОбласти
КонецЕсли;
Если рПараметры.Свойство("HTTPЗапрос") Тогда
// удаляем из параметров,чтобы не повторялось в будущем (кэшировать его нам не надо)
рПараметры.Удалить("HTTPЗапрос");
КонецЕсли;
// выводим настройки запроса
инфо="Запрос:
|Адрес ресурса: "+рЗапрос.АдресРесурса+",заголовк"+?(рЗапрос.Заголовки.Количество()=0,"ов нет","и:");
Для каждого киз Из рЗапрос.Заголовки Цикл
инфо=инфо+"
| "+СокрЛП(киз.Ключ)+"="+СокрЛП(киз.Значение);
КонецЦикла;
Если рПараметры.Свойство("ТелоЗапроса") и ТипЗнч(рПараметры.ТелоЗапроса)=Тип("Строка") Тогда
инфо=инфо+"
|Тело запроса:"+Символы.ПС+рПараметры.ТелоЗапроса;
КонецЕсли;
СообщитьИВнестиВПротокол(инфо,рПротокол,рПояснять);
рМетодHTTP=?(рПараметры.Свойство("МетодHTTP"),ВРег(рПараметры.МетодHTTP),"");
Если ПустаяСтрока(рМетодHTTP) Тогда рМетодHTTP="GET" КонецЕсли;
//
Если рМетодHTTP="GET" Тогда
рОтвет=рСоединение.Получить(рЗапрос);
ИначеЕсли рМетодHTTP="POST" Тогда
рОтвет=рСоединение.ОтправитьДляОбработки(рЗапрос);
Иначе
СообщитьИВнестиВПротокол("Указан не поддерживаемый метод: "+рМетодHTTP+",никакое действие не выполняется!!",рПротокол,рПояснять);
Возврат Ложь;
КонецЕсли;
рПараметры.Вставить("HTTPОтвет",рОтвет);
Возврат Истина;
Исключение
инфо="HTTPВыполнитьЗапрос,общая ошибка: "+ОписаниеОшибки();
Сообщить(инфо,СтатусСообщения.Важное);
ЗаписьЖурналаРегистрации("Обмен",УровеньЖурналаРегистрации.Ошибка,,,инфо);
Возврат Ложь;
КонецПопытки;
КонецФункции
// Выполняет анализ ответа rest-сервиса как объекта HTTPОтвет,заносит в параметры результаты разбора.
// Возвращает успешность (булево),при ошибке возвращает Ложь.
//
// Параметры:
// HTTPОтвет - объект типа "HTTPСервисОтвет", обязательный; собственно разбираемый ответ;
// КодСостояния - число, вносимый;
// Причина - строка, вносимый; если КодСостояния 200, то пуста;
// ЗаголовкиОтвета - соответствие, вносимый;
// ТелоКакСтрока - булево; если указан и Истина, то читается тело ответа как строка, для уточнения кодировки используется ключ:
// КодировкаТелаОтвета - строка или КодировкаТекста, по умолчанию UTF8;
// ТелоКакДвоичныеДанные - булево; если указан и Истина, то читается тело ответа как двоичные данные;
// ТелоКакИмяФайла - булево; если указан и Истина, то возвращается имя файла, куда прочитано тело ответа;
// ТелоОтвета - результат чтения тела ответа, вносимый, если способ чтения тела не указан, то Неопределено;
// Протокол - текстовый документ, необязательный (по умолчанию пуст и не используется);
// Пояснять - булево; если Истина, то действия поясняются и в протокол (если ведётся), и сообщениями.
//
Функция HTTPРазобратьОтвет(рПараметры) Экспорт
Попытка
рПротокол=?(рПараметры.Свойство("Протокол"),рПараметры.Протокол,Неопределено);
рПояснять=?(рПараметры.Свойство("Пояснять"),рПараметры.Пояснять,Ложь);
Если Не (рПараметры.Свойство("HTTPОтвет") и ТипЗнч(рПараметры.HTTPОтвет)=Тип("HTTPОтвет")) Тогда
СообщитьИВнестиВПротокол("В структуре параметров не найден ответ сервиса!!",рПротокол,рПояснять);
Возврат Ложь;
КонецЕсли;
рОтвет=рПараметры.HTTPОтвет;
//
рПараметры.Вставить("КодСостояния",рОтвет.КодСостояния);
Если рОтвет.КодСостояния=200 Тогда
рПараметры.Вставить("Причина","");
Иначе
Попытка рПараметры.Вставить("Причина",рОтвет.Причина) Исключение рПараметры.Вставить("Причина","") КонецПопытки;
КонецЕсли;
рПараметры.Вставить("ЗаголовкиОтвета",рОтвет.Заголовки);
Если рПараметры.Свойство("ТелоКакСтрока") и ТипЗнч(рПараметры.ТелоКакСтрока)=Тип("Булево") и рПараметры.ТелоКакСтрока=Истина Тогда
рКодировка=КодировкаТекста.UTF8;
Если рПараметры.Свойство("КодировкаТелаОтвета") и ЗначениеЗаполнено(рПараметры.КодировкаТелаОтвета) Тогда
Если ТипЗнч(рПараметры.КодировкаТелаОтвета)=Тип("Строка") или ТипЗнч(рПараметры.КодировкаТелаОтвета)=Тип("КодировкаТекста") Тогда
рКодировка=рПараметры.КодировкаТелаОтвета;
КонецЕсли;
КонецЕсли;
рПараметры.Вставить("ТелоОтвета",рОтвет.ПолучитьТелоКакСтроку(рКодировка));
ИначеЕсли рПараметры.Свойство("ТелоКакДвоичныеДанные") и ТипЗнч(рПараметры.ТелоКакДвоичныеДанные)=Тип("Булево") и рПараметры.ТелоКакДвоичныеДанные=Истина Тогда
рПараметры.Вставить("ТелоОтвета",рОтвет.ПолучитьТелоКакДвоичныеДанные());
ИначеЕсли рПараметры.Свойство("ТелоКакИмяФайла") и ТипЗнч(рПараметры.ТелоКакИмяФайла)=Тип("Булево") и рПараметры.ТелоКакИмяФайла=Истина Тогда
рПараметры.Вставить("ТелоОтвета",рОтвет.ПолучитьИмяФайлаТела());
Иначе
СообщитьИВнестиВПротокол("Тело ответа игнорируется,т.к. его тип и способ обработки не указаны!",рПротокол,рПояснять);
рПараметры.Вставить("ТелоОтвета",Неопределено);
КонецЕсли;
//
Возврат Истина;
Исключение
инфо="HTTPРазобратьОтвет,общая ошибка: "+ОписаниеОшибки();
Сообщить(инфо,СтатусСообщения.Важное);
ЗаписьЖурналаРегистрации("Обмен",УровеньЖурналаРегистрации.Ошибка,,,инфо);
Возврат Ложь;
КонецПопытки;
КонецФункции
Важно обратить внимание на защищённые соединения и сертификаты, тут могут потребоваться небольшие доработки.
Применимо, начиная с 8.3.6.
Специальные предложения
См. также
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо
Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.
6500 рублей
Вариант реализации клиента SOAP на примере получения остатков из MERLION 3
14.11.2019 899 malikov_pro 0
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.
Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо
Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.
7500 рублей
Вывод отчетов из Штрих-М Торговое предприятие 5 на кассовое ПО Кассир 5 через веб-сервис 3
14.08.2019 2149 Van2507 1
Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery. Продолжение 53
08.08.2019 4398 Sedaiko 1
Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо
Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.
4500/9500 рублей
Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!
29700 руб.
Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо
Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.
9000 рублей
Парсинг сайтов из 1С на примере ломбарды.рф с помощью XPATH для ДокументDOM 67
01.04.2019 9029 starik-2005 33
Программы для исполнения 488-ФЗ: Маркировка товаров Промо
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
Устранение некоторых ошибок, обнаруженных в модуле Обмена с ВЕТИС (ФГИС Меркурий) 3
08.02.2019 4779 aks 2
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Загрузка файла из произвольной WEB-формы через HTTP-сервис 1С на сервер. 35
18.07.2018 7610 bobank 3
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Создание web-площадки на технологиях 1С, или как Водоканал сделал "Личный кабинет потребителя" 56
25.06.2018 12364 maxx 31