Обмен большими данными между клиентом и сервером

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

Разработка - Системная интеграция - Внешние источники данных

Загрузка выгрузка datatransfer javascript xhr

69
В статье рассматривается вопрос передачи больших объемов данных, превышающих теоретический лимит сеансовых данных (4Гб за вызов) (они же временное хранилище) как с клиента на сервер, так и в обратном направлении.
  1. Проблематика.

Стандартный метод обмена данными между клиентом и сервером - временное хранилище. На одной стороне мы выполняем вызов "ПоместитьВоВременноеХранилище", получаем адрес, передаем его на другую сторону, там выполняем "ПолучитьИзВременногоХранилища". Есть пара неприятных нюансов.

А именно: 

  • За один вызов невозможно поместить во временное хранилище больше 4 Гб данных.
  • В процессе помещения данных в ВХ (здесь и далее временное хранилище) активно используются временные файлы. Точных данных нет, но в процессе помещения в темпах занимается временными файлами четырёхкратный объём помещаемого файла. Помещаете 4 Гб - потребуется ещё 16 Гб на разделе, где размещен temp. С нескромными аппетитами можно бы смириться (всё таки дисковое пространство - не самый дорогой ресурс в наши дни), если говорить об исключительности ситуаций, когда требуется обмен большими объеми данных. Если же эта операция выполняется регулярно, большим количеством пользователей, то велик шанс, что одновременно потребуется место для 10-100-Х (подставьте любое большое число загрузок, которое вам нравится) одновременных закачек, которые могут израсходовать всё свободное место на диске.
  • Из второй проблемы вытекает ещё и третья. Скорость записи на жесткий диск (в том числе во временные файлы) не бесконечна, хоть и ожидается выше скорости обмена по сети. А значит, запись пятикратного объема данных (сами данные и четырёхкратный темп для них) займёт пропорционально в 5 раз больше времени, чем если бы данные записывались ровно 1 раз.
  1. Пути решения проблемы.

  • Не передавать столько данных. Всерьёз такой способ рассматривать не будем.
  • Использовать сторонние ресурсы. Тут уже вы ограничены только собственной фантазией (ftp, webdav, облачные хранилища от различных поставщиков). Все эти способы имеют один общий недостаток. Количество операций ввода-вывода увеличивается вдвое. Один раз данные помещаются в условное облако, и только второй раз по назначению (в зависимости от направления передачи данных). Этот способ в статье рассматриваться не будет
  • Разделять файл на более мелкие части, передавать каждую часть последовательно. Вариант предполагает использование временного хранилища, а значит решает только одну из двух проблем - ограничение в 4 Гб. 
  • Использовать альтернативный транспорт, соединяющий напрямую сервер с клиентом (с некоторыми оговорками). Если не уходить в дебри с использованием внешних библиотек, позволяющих открывать TCP сокеты, платформа позволяет нам использовать как довольно гибкий транспорт http соединение с помощью объекта конфигурации http-сервис. А разработчики библиотек компании 1С даже реализовали на основе механизма http-сервисов служебную библиотеку "ПередачаДанных", которая позволяет обмениваться данными серверу 1С Предприятие с различными клиентами (не только родными). На этом способе хотелось бы остановиться более подробно. На тестах по передаче данных объемом до 20Гб средняя скорость получалась примерно в 3 раза выше, чем при передаче через временное хранилище, поддерживалась докачка прерванных загрузок, была теоретическая возможность организовать загрузку в несколько потоков. Описание библиотеки можно найти на сайте ИТС по ссылке. Отдельным пакетом передачу данных не публикуют. Библиотека входит в состав как БСП, так и БТС (из чего следует, что она присутствует во всех типовых, адаптированных для публикации во фреше), которые доступны всем желающим (с подпиской ИТС) на релизах. Библиотека выделена в отдельную подсистему "Передача данных".
  1. Как это устроено. Общее описание ландшафта.

Для простоты считаем, что существует сервер предприятия на хосте srv1c, на котором размещена информационная база base1. В базе внедрена библиотека ПередачаДанных. Информационная база и http-сервисы на веб-сервере Apache2.4, опубликованном на хосте srvweb со следующими endpoint-ами:

Адреса методов "ПередачаДанных"

Endpoint Наименование Метод Описание Роли Способ публикации
/base1 сама база   Позволяет открыть базу в вебклиенте, в тонком клиенте по WS-ссылке Зависит от конфигурации  
/base1/hs/dt/storage/{Storage}/{ID} ХранилищеИИдентификатор   Операции с файлами в логическом хранилище по идентификатору.    
    get Запрос получает токен на скачивание файла из логического хранилища Полные права, удаленный доступ Публикация без явного указания учетных данных. Требует аутентификации
    post Запрос получает токен на загрузку файла в логическое хранилище Полные права, удаленный доступ Публикация без явного указания учетных данных. Требует аутентификации
/base1/hs/dt/volume/{VolumeID}/* ТомИПутьКФайлу        
    get Запрос получает токен на скачивание файла из тома Полные права, удаленный доступ Публикация без явного указания учетных данных. Требует аутентификации
    post Запрос получает токен на загрузка файла в том Полные права, удаленный доступ Публикация без явного указания учетных данных. Требует аутентификации
/base1/hs/dt/download/{ID} Получить get По предварительно полученному токену отдает клиенту данные Полные права, передача данных (анонимный доступ) Публикация под учетной записью служебного пользователя, которому назначена только роль "Передача данных (анонимный доступ)"
/base1/hs/dt/upload/{ID} Отправить put По предварительно полученному токену загружает данные от клиента на сервер Полные права, передача данных (анонимный доступ) Публикация под учетной записью служебного пользователя, которому назначена только роль "Передача данных (анонимный доступ)"

Схема работы:

1. Формируем запрос. Он может быть сформирован как через вызовы методов http-сервиса ХранилищеИИдентификатор и ТомИПутьКФайлу (в этом случае необходимо указать свои учетные данные для аутентификации), так и с помощью серверного вызова: "РегистрСведений.ВременныеИдентификаторыЗапросов.ЗарегистрироватьЗапрос". В этом случае дополнительная аутентификация не нужна, использутся учетные данные текущего сеанса.

2. Ответ на запрос содержит токен. В дальнейшем этот токен используется для анонимного доступа к сервисам "передачи данных". Токен может быть использован только для той операции, которая была запрошена в запросе. Нельзя запросить скачивание файла А, а вместо этого загрузить на сервер файл Б. Токен действителен в течение 10 минут после регистрации запроса. После каждого обращения по токену время его жизни продляется на 10 минут.

3. Запрос может отправлять и получать как данные целиком, так и какую-то порцию. Это поведение регулируется http заголовком Content-Range.

  1. Пример реализации загрузки данных на сервер в тонком клиенте

Рассмотрим последовательность действий, которые необходимо совершить для отправки данных из тонкого клиента на сервер. Предполагаем, что http-сервис настроен и опубликован. Считаем, что файл доступен через диалог выбора файла и выбираем его:

АдресВХранилище = "";
ДополнительныеПараметры = Новый Структура;
ОписаниеОповещения = Новый ОписаниеОповещения("ВыборФайлаОповещение", ЭтотОбъект, ДополнительныеПараметры);
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Диалог.МножественныйВыбор = Ложь;
Диалог.Показать(ОписаниеОповещения);

 

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

&НаКлиенте
Процедура ПоместитьФайлНаСерверПослеОпределенияРазмера(Размер, ДополнительныеПараметры) Экспорт
	
	Попытка
		
		Если Цел(Размер / ДополнительныеПараметры.РазмерЧасти) = (Размер / ДополнительныеПараметры.РазмерЧасти) Тогда
			ВсегоЧастей = Цел(Размер / ДополнительныеПараметры.РазмерЧасти);
		Иначе
			ВсегоЧастей = Цел(Размер / ДополнительныеПараметры.РазмерЧасти) + 1;
		КонецЕсли;
				
		СтруктураПубликации = Неопределено;
		ИдентификаторЗапроса = Неопределено;
		ЗаполнениеПараметровПубликацииНаСервере(ИдентификаторЗапроса, ДополнительныеПараметры, Размер, СтруктураПубликации);
				
		Соединение = Новый HTTPСоединение(СтруктураПубликации.Хост, , , , , , 
			?(СтруктураПубликации.Схема = "https", Новый ЗащищенноеСоединениеOpenSSL, Неопределено), Ложь);
		Если НЕ СтрЗаканчиваетсяНа(СтруктураПубликации.ПутьНаСервере, "/") Тогда
		
			СтруктураПубликации.ПутьНаСервере = СтруктураПубликации.ПутьНаСервере + "/";
			
		КонецЕсли;
		url = СтрШаблон("%1upload/%2",СтруктураПубликации.ПутьНаСервере, ИдентификаторЗапроса);
		Запрос = Новый HTTPЗапрос(url);
		Файл = Новый Файл(ДополнительныеПараметры.ИмяФайлаНаКлиенте);
		Размер = Файл.Размер();
		Порция = ДополнительныеПараметры.РазмерЧасти;
		Обработано = 0;
		Если Размер <= Порция Тогда
			Количество = Размер;
		Иначе
			Количество = Порция;
		КонецЕсли;
		
		ФайловыйПоток = ФайловыеПотоки.ОткрытьДляЧтения(ДополнительныеПараметры.ИмяФайлаНаКлиенте);
		ОбработаноЧастей = 0;		
		Пока Размер > Обработано Цикл
			ТекстСостояния = НСтр("ru='Идет загрузка файла на сервер (%1 из %2)...'");
			ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСостояния, ОбработаноЧастей, ВсегоЧастей);
			ПроцентВыполнения = Окр(ОбработаноЧастей * 100 / ВсегоЧастей, 3);
			
			Состояние(ТекстСостояния, ПроцентВыполнения);
			Количество = Мин(Размер - Обработано, Порция);
			Буфер = Новый БуферДвоичныхДанных(Количество);
			ФайловыйПоток.Прочитать(Буфер, 0, Количество);
			ИнтервалТекст = "bytes "+Формат(Обработано, "ЧН=0; ЧГ=0");
			Обработано = Обработано + Количество;
			ИнтервалТекст = ИнтервалТекст+"-"+Формат(Мин(Размер-1,Обработано-1), "ЧН=0; ЧГ=0")+"/"+Формат(Размер, "ЧН=0; ЧГ=0");
			Запрос.Заголовки.Вставить("Content-Range", ИнтервалТекст);
			Запрос.УстановитьТелоИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Буфер));
			Ответ	 = Соединение.Записать(Запрос);
			Если Ответ.КодСостояния >= 200 И Ответ.КодСостояния < 300 Тогда
				ОбработаноЧастей = ОбработаноЧастей + 1;
			Иначе
				ТекстСообщения = НСтр("ru = 'При загрузке файла произошла ошибка: %1'");
				ВызватьИсключение СтрШаблон(ТекстСообщения, Ответ.ПолучитьТелоКакСтроку());
				Прервать;
			КонецЕсли;
		КонецЦикла;
		ОтветJSON = Ответ.ПолучитьТелоКакСтроку();
#Если НЕ Вебклиент Тогда
		ЧтениеJSON = Новый ЧтениеJSON;
    	ЧтениеJSON.УстановитьСтроку(ОтветJSON);
		ОтветСтруктура = ПрочитатьJSON(ЧтениеJSON); 
		ИдФайлаВыгрузки = Новый УникальныйИдентификатор(ОтветСтруктура["id"]);
#КонецЕсли
		Исключение // По каким-то причинам файл разделить не удалось.
		
		ОписаниеОшибки = ОписаниеОшибки();
		Сообщить(ОписаниеОшибки);
		
	КонецПопытки;
				
КонецПроцедуры

Вызов "ЗаполнениеПараметровПубликацииНаСервере" регистрирует запрос на сервере от имени текущего пользователя, что в дальнейшем позволит анонимно отправлять http запросы без аутентификации. Образец работы с библиотечными вызовами будет приложен в файлах. Далее инициализируются http соединение, запрос уже на анонимный http сервис upload. Открывается файловый поток на чтение и последовательно вычитывается в буфер указанное в настройках количество байт. Запрос дополняется заголовком "Content-Range", используемым на сервере для "склейки" фрагментов передаваемого файла, и отправляется на сервер. Эта процедура циклически повторяется, пока все данные из файла не будут переданы. Последний ответ сервера содержит идентификатор файла в логическом хранилище (для его дальнейшего использования).

  1. Пример реализации скачивания данных с сервера в тонком клиенте

Тут всё просто:

  • как то находим наш идентификатор
  • формируем запрос на скачивание, как в предыдущем пункте
  • формируем полный URL загружаемого файла
  • делаем гиперссылку с этим URL на форме

На самом деле немного сложнее, но об этом в последнем разделе

  1. Пример реализации загрузки данных на сервер в веб-клиенте

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

 

А вот java script позволяет. Поэтому было принято решение для веб клиента экспроприировать диалог выбора файла прямо из браузера со всеми стилями и использовать его в своих корыстных целях. HTML форма диалога выбора файла позволяет перетаскивать файл(ы) drag'drop-ом, сразу несколько (хотя это и запрещено в примере), показывает полосу прогресса (чего в 8.3.15 так и не сделали), ну и конечно же работает с библиотекой "Передача данных". Более подробно смотрите внешнюю обработку в приложениях к статье.

  1. Концепт скачивания данных с сервера в веб-клиенте

Тут нужен небольшой экскурс в непростую историю развития браузеров и стандартов html5 в частности. Для предыдущего пункта использовался достаточно удобный, всеми принятый стандарт FileReader API. А вот для аналогичных операций при скачивании файлов нужен противоположный процесс - запись. А вот с этим из соображений безопасности у браузеров очень туго. File Writer так и не вышел из статуса черновика, был с горем пополам в какой то момент реализован Мозиллой, можно сказать, что его не существует. Однако файл загружать хочется. 

Можно это делать тем же способом, как предложено в п.5. Однако тут начинаются неприятные неожиданности на этапе открытия ссылки для скачивания. Браузер непонятно чем занимается, крутит колесико минуту-несколько, потом, возможно показывает диалог скачивания файла, а нередко ошибку 504. Что бы это значило, задумался я?

Проанализировав активность на сервере (дисковую в первую очередь) было выяснено, что файл после запроса начинает бродить по темпам. Сначала его копирует сервер предприятия, потом веб-сервер, потом (в моём случае на внешний мир смотрел ещё 1 слой из nginx в роли reverse proxy) ещё раз это делает nginx. И вот, пока идёт копирование файла во временные, колёсико крутится и мы ждём. Если файл не успевает скопироваться за настроенное время ожидания - привет 504 (Gateway timeout). 

На просторах интернета было найдено решение по рекомендации "лучших собаководов". Оно достаточно зависит от используемого веб-сервера.

Методика называется "контролируемая загрузка", состоит в следующем. Клиент запрашивает какой то ресурс. В нашем случае: https://host/ib/hs/dt/download/queryid. Вебсервер передает этот запрос на backend (на сервер предприятия), который добавляет в ответ специальные заголовки, которые говорят вебсерверу, какой файл отдавать. Примеры (правда для php) можно посмотреть в этой статье на хабре. Здесь приведу пример для nginx в режиме reverse proxy. 

1. В конфиге нашего сервера объявляем дополнительный "internal" location. Это важно. Доступ к файловой системе, указанной в этом location будет только у сервера, клиенты даже случайно не смогут получить доступа к содержимому каталога или даже самим файлам по прямой ссылке. Возможно использование как локальных файловых систем, так и смонтированных cifs и nfs шар.

location /protected/ {
  internal;
  root   /some/path;
}

2. В коде http-сервиса на стороне сервера предприятия добавляем специальные заголовки к ответу. В отличие от стандартной передачи файла в ответе сервера, в тело ответа не добавляются двоичные данные файла, а используется заголовок "X-Accel-Redirect". В переменной ИмяФайла формируется путь до файла в location, например, если файл фактически находится в /some/path/protected/file1.txt, то в переменной ИмяФайла должно находиться значение /protected/file1.txt. Ознакомиться с документацией по этому механизму можно здесь

Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("X-Accel-Redirect", ИмяФайла);
Ответ.Заголовки.Вставить("Content-Disposition", СтрШаблон("attachment; filename=""%1""", ИмяФайла));
Ответ.Заголовки.Вставить("Content-Type", "application/octet-stream");

Аналогичный инструмент существует для Apache (если вам не нужен reverse proxy) - mod_xsendfile, так же есть (вроде бы) модуль для IIS, но этот вопрос я не изучал, поэтому советовать ничего не буду.

 

PS: Не судите строго за не совсем ИС тематику публикации. Очень огорчает распространенное мнение, что 1С - это медленно, местячковый продукт для своих целей и своего рынка.

PPS: файл внешней обработки "выдирался" из конфигурации, возможно содержит ошибки.  Тестирование проводилось на конфигурации Менеджер сервиса 1.0.83.10. Если будут проблемы, с удовольствием помогу разобраться в комментариях и/или обновлениях статьи.

69

Скачать файлы

Наименование Файл Версия Размер
Обмен большими данными между клиентом и сервером:
.epf 13,20Kb
27.08.19
1
.epf 1.0 13,20Kb 1 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. muskul 28.08.19 03:49 Сейчас в теме
Более интересно почему получается 4-х кратное увеличение размера
2. SlavaKron 28.08.19 07:53 Сейчас в теме
(1) Может поиому что это сериализованные данные. Однако не могу подтвердить 4-кратное превышение.
4. logos 148 28.08.19 08:55 Сейчас в теме
(2) А проверить никакой проблемы нет. Возьмите (или сгенерируйте) 3.5 Гб мусора (например) и попробуйте "ПоместитьВоВременноеХранилище". Пока крутится колесико, смотрите за остатком свободного места, можно ещё через монитор производительности смотреть в какие файлы в это время идёт запись на сервере предприятия.
3. logos 148 28.08.19 08:53 Сейчас в теме
(1) Там дело даже не в сериализации, как то совершенно бестолково наполняется параллельно несколько тмп файлов, каждый до полного размера передаваемых данных, потом производится копирование между ними, пока оно, наконец, не осядет в сеансовых данных. Вот на пике получается 4х-кратный размер.
5. markers 243 28.08.19 13:02 Сейчас в теме
Я вот только одно не понял, пока это всё качается, тонкий клиент висит же. Не проще Curl`ом качать? Получается асинхронно.
Для меня подобная тема актуальная, так как надо в некоторых магазинах качать начальные образа РИБа для этого магазина (Которые весят >5Gb) и качать самой 1С (Тонким клиентом) не возможно, так как клиент будет тупо висеть. По этому сделали загрузку Curl`ом, 1С просто запускает процесс скачивания с FTP который на сервере у нас лежит и не ждет скачки, только иногда проверяет, не скачался ли там файл
7. logos 148 28.08.19 14:13 Сейчас в теме
(5) Тонкий висит, веб не висит. xhr запросы выполняются асинхронно. В этом плане, как ни странно, веб клиент оказался гибче.
6. frkbvfnjh 562 28.08.19 13:47 Сейчас в теме
Прочел до половины и ничерта не понял. Что значит
В базе внедрена библиотека ПередачаДанных
? О чем вообще речь, что такое библиотека ПередачаДанных? Её нужно внедрять? Как ее внедрять? Нужен БСП или речь о технологии 1cFresh? Можно ли внедрить в не типовые конфигурации и без БСП? Вы бы хоть дали краткие данные, что нужно иметь, что бы это все заработало. Те кто понимает о чем речь, они наверное и так знают про все, о чем здесь написано, а для тех кто ни знает, даже не понятно с какой стороны к этому подойти.
8. logos 148 28.08.19 14:22 Сейчас в теме
(6) Действительно, отдельным пакетом передачу данных не публикуют. Библиотека входит в состав как БСП, так и БТС, которые доступны всем желающим (с подпиской ИТС) на релизах. Библиотека выделена в отдельную подсистему "Передача данных".
9. frkbvfnjh 562 29.08.19 05:37 Сейчас в теме
(8) Спасибо, теперь более понятно. Это пояснение не помешало бы в статье
10. logos 148 29.08.19 08:43 Сейчас в теме
11. frkbvfnjh 562 29.08.19 08:55 Сейчас в теме
12. o.nikolaev 195 29.08.19 09:37 Сейчас в теме
Отличная статья. Без воды и рассусоливаний, все по делу. Спасибо!
13. -vito- 378 29.08.19 14:33 Сейчас в теме
Спасибо. Очень интересные метод.
Что касается нескольких копий файлов, это происходит не только при работе с ВременнымХранилищем, но и при любом обмене между Клиентом и Сервером. Например, при загрузке из Конфигуратора файлов cf или dt, при получении данных формы (большого объема). Как минимум получается 2 "копии" файла, как максимум, 4.
14. Andrefan 02.09.19 09:45 Сейчас в теме
Спасибо, познавательно. Могли бы привести примеры необходимости передачи такого объема данных с к на с?
15. logos 148 02.09.19 14:54 Сейчас в теме
(14) В моём случае это была загрузка бэкапов локальной базы в облако.
16. ValeriVP 1017 09.09.19 14:13 Сейчас в теме
у меня вопросы.
1) Проблема передачи данных из памяти или файла с диска клиента?

Если из памяти:
2) откуда их столько???
3) если накопили все ж - почему не положить временно на диск?

Если файл:
4) чем не нравятся методы ПолучитьФайл и ПоместитьФайл?
17. logos 148 09.09.19 15:09 Сейчас в теме
(16)
1. Это не важно.
2. Соответственно пропускаем
3. Любая операция ввода-вывода - это время. Файл размером 8Гб копируется ощутимое время.
4. ПоместитьФайл считается синхронным вызовом, недоступен в вебклиенте.
Глобальный контекст (Global context)
НачатьПомещениеФайла (BeginPutFile)
Доступен, начиная с версии 8.3.13.
...поскипал...
Описание:
Начинает помещение файла из локальной файловой системы во временное хранилище.

Работает с временным хранилищем. Вы точно читали о чём статья? В первом разделе я описывал, почему мне не подходила работа с временным хранилищем:
1. Ограничение на размер порции данных
2. Нерациональное использование временных файлов.
Оставьте свое сообщение

См. также

Перенос данных УТ 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 руб.

Использование хранимых процедур MS SQL Server в 1С 39

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf MS SQL Абонемент ($m) Внешние источники данных

Потребовалось мне как-то построить сложный запрос к внешнему источнику данных, на что платформа радостно послала меня в гугл. Немного подумав, решил написать в SQL процедуру, которая принимала бы какие-то параметры и возвращала какую-то таблицу значений с данными.

1 стартмани

03.12.2019    4792    3    Dedushka    26       

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

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

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

Вебхук. Путь Телеграма 66

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Внешние источники данных Интеграция

Долгое (на самом деле нет) и нелегкое путешествие телеграма к неведомым (из за РКН) конфигурациям 1С. Памятка себе.

1 стартмани

03.10.2019    7898    5    platonov.e    12       

Получение изображения с IP-камеры 26

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Внешние источники данных

Получение изображения JPG с IP-камеры в виде двоичных данных. В 1С может применяться для фотографирования объектов.

1 стартмани

10.09.2019    5547    18    sivin-alexey    8       

Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо

Выбирайте и голосуйте за самые интересные доклады, лучшие из них попадут в окончательную программу митапа. Голосование продлится до 30 января 2020 года.

Описание формата внутреннего представления данных 1С в контексте обмена данными 158

Статья Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных Разработка

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    8163    7    Dementor    27       

Согласование задач из Outlook 53

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Windows Абонемент ($m) Внешние источники данных

Согласование задач непосредственно из почтовой программы, в моем случае Outlook 2013 без каких-либо дополнительных настроек. Из почты отправляется GET запрос к HTTP-сервису 1С, который в свою очередь выполняет задачу.

1 стартмани

06.09.2019    4182    10    duhh    17       

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

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

Телеграм 1С – почти коробка 45

Инструменты и обработки Программист Пользователь Архив с данными v8 Windows Абонемент ($m) Внешние источники данных

Почему это решение называется «почти коробка»? Потому, что это почти коробочное решение. С его помощью, просто добавив подсистему в конфигурацию, уже можно начинать взаимодействовать с мессенджером Telegram.

10 стартмани

20.08.2019    6545    20    zfilin    59       

Расширение Бром для интеграции с 1С 15

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Внешние источники данных WEB

Из этой статьи вы узнаете, как можно быстро и просто синтегрироваться с любой конфигурацией 1С при помощи расширения Бром.

1 стартмани

06.08.2019    2836    4    itworks    10       

Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 17 февраля по 13 марта 2020 года. Промо

Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом

9000 рублей

Конфигурация для обмена данными (интеграционная шина) 28

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Windows Абонемент ($m) Внешние источники данных WEB

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

4 стартмани

08.07.2019    4871    19    miha-28    15       

Интеграция 1С с Битрикс CRM через REST API 18

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных

На фоне неутихающего обострения «бизнеса» по внедрению СРМ-систем остро встают вопросы обмена данными с уже существующими системами. В статье рассматривается выгрузка контактов, товаров и сделок из 1С в Битрикс CRM через REST API, приложена обработка для тестирования.

1 стартмани

28.06.2019    10029    13    muzipov    7       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

Пример работы с viber из 1С, отправка сообщений из 1С в viber 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных

Обработка разработана для примера отправки сообщений в viber из 1С.

1 стартмани

16.05.2019    5815    47    Isa816    19       

Шаблон http-сервиса для вашего проекта 92

Инструменты и обработки Программист Архив с данными v8 v8::Mobile 1cv8.cf Абонемент ($m) Внешние источники данных WEB Мобильная разработка

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    10024    60    MarkoSokolov    47       

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

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

6500 рублей

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки 127

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных Обмен через XML WEB Разработка

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    20269    21    riposte    63       

WhatsApp чат для 1С 15

Инструменты и обработки no Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Внешние источники данных

WhatsApp чат для 1С. Расширение конфигурации, подходит для любых конфигураций 1С (управляемые формы).

5 стартмани

15.04.2019    4575    20    ManyakRus    19       

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

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

Доработка функционала отправки дополнительных реквизитов 1С: ЭДО для Татнефть 18

Инструменты и обработки Бухгалтер Расширение (cfe) v8 ERP2 БУ Документооборот и делопроизводство Абонемент ($m) Внешние источники данных

Подключаемое расширение к конфигурации ERP с функционалом отправки дополнительных реквизитов 1С ЭДО для Татнефть (№ и дата договора, подразделение, автор, примечание) в электронных документах Счет-фактуры и ТОРГ-12 Проверялось на 1С:ERP Управление предприятием 2.4.6.160.

2 стартмани

07.04.2019    4700    10    sapervodichka    6       

Аутентификация на внешних сервисах посредством OAuth 83

Статья Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Информационная безопасность Внешние источники данных

Пример подключения к сервисам Google из 1С с помощью протокола OAuth и получения данных с внешнего сервиса.

1 стартмани

03.04.2019    9767    8    binx    9       

22 января состоится вебинар "Использование технологии блокчейн в 1С" Промо

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

990 рублей

Формирование xml файла ЭДО (СБИС, Диадок, Такском и т.п.) для типовых документов (счета-фактуры, накладные) 12

Инструменты и обработки Программист Бухгалтер Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Документооборот и делопроизводство Абонемент ($m) Внешние источники данных Обмен через XML

Не все типовые документы типовых конфигураций 1С можно выгрузить в файл формата xml ЭДО. Например счет-фактуру, на текущий момент момент это не предусмотрено. Обработка позволяет сделать это.

4 стартмани

30.03.2019    14928    122    capitan    60       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.130.х, КА 2.4.11.х и ERP 2.4.11.х! Промо

Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.

29700 руб.

Декларации по формам 11 и 12 алкогольной продукции, интеграция с ПО Декларант-Алко 20

Отчеты и формы Бухгалтер Архив с данными v8 Розничная и сетевая торговля (FMCG) Россия БУ Розничная торговля Абонемент ($m) Регламентированная отчетность Внешние источники данных

Конфигурация на обычных формах, платформа 1С 8.2.19.130 и выше, с помощью которой можно сформировать Декларации по формам 11 и 12 алкогольной продукции, гибрид/интеграция с ПО Декларант-Алко версии 4.31.05 и выше.

1 стартмани

25.03.2019    3990    8    independ    6       

Работа с Active Directory из 1С (загрузка / выгрузка данных) 20

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Внешние источники данных

Загрузка данных из Active Directory / Изменение информации пользователя в AD из 1С.

1 стартмани

26.02.2019    6634    53    Смешной 1С    6       

PgConf.Russia 2020. 3-5 февраля 2020 г. Москва. Промо

PGConf.Russia – международная техническая конференция по открытой СУБД PostgreSQL, ежегодно собирающая более 700 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения. Для участников сообщества infostart.ru скидка 5% на участие в конференции.

от 12350 рублей

Телеграм + 1С + Вебхуки + Апач + Самоподписанный сертификат 50

Статья Программист Архив с данными v8 Windows Абонемент ($m) Внешние источники данных

Много строк исписано про интеграцию Телеграма и 1С. Но нигде не увидел полной инструкции по установке и настройке вебхуков. Попробую её написать.

1 стартмани

26.02.2019    8930    10    alexlx    29       

Универсальное расширение 1С для Google Таблиц и Документов 95

Статья Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Внешние источники данных

Эта статья для тех, кто использует G Suite и 1С. Готовое решение для выгрузки отчетов и печатных форм из баз 1С в Google Диск в формате Google Таблиц и Google Документов. Информация по его внедрению. Описание создания и настройки проекта в GCP.

1 стартмани

31.01.2019    9290    22    Maria18    16       

Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо

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

7500 рублей

HTTP API Диадок. Загружаем в Диадок любой документ. Посредством POST и GET запросов 20

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных

Поставили задачу через HTTP API Диадок (diadoc-api.kontur.ru) отправить любой файл в Диадок и подписать его (например, служебную записку в формате пдф). Посредством POST и GET запросов.

2 стартмани

14.01.2019    6144    12    John_d    6       

Применение средств MS SQL R service для 1С 56

Статья Программист Нет файла v8 1cv8.cf MS SQL Абонемент ($m) Внешние источники данных

Некоторое время назад Microsoft добавила в MS SQL сервер службы машинного обучения, позволяющие выполнять программный код на языках программирования R и Python. В статье будет продемонстрирована общая схема и принцип того, как можно использовать данные службы в контексте разработки на 1С. 

1 стартмани

25.11.2018    11042    Robbi    14