Передача больших пакетов через веб-сервисы

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

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

веб-сервисы интеграция обмен IIS обмен данными XDTO большие файлы

136
Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.

Введение

Использование веб-сервисов платформы 1С:Предприятие набирает обороты для решения задач интеграции: обмены данными между базами, взаимодействие с мобильными или веб-приложениями и многое другое. Огромные возможности могут покрыть любые потребности при решении задач интеграции. Если Вы разрабатываете веб-сервисы для интеграции больших / высоконагруженных баз, то возможно описанная здесь проблема будет уже не новой.

Сегодня мы поговорим о передаче больших по размеру пакетов через веб-сервис, об ограничении веб-сервера и способе решения сложившейся ситуации. Суть проблемы заключается в следующем: стандартная конфигурация веб-сервера (будь то это IIS или Apache) содержат настройки по ограничению максимального размера пакета, который может быть обработан. Для IIS максимальный размер обрабатываемого сообщения ~30 МБ, а для Apache ~16 МБ. На счет Apache могу ошибаться, т.к. при установках стандартные настройки были разными.

При создании обменов данными через веб-сервисы размер отправляемого сообщения может быть значительно больше заданных ограничений. Например, при выгрузке из УПП 1.3 документа распределения косвенных расходов размер сформированного XML-файла в сжатом виде может достигать пару сотен мегабайт! В этом случае обмен просто встанет и сервер не сможет обработать входящее сообщение.

Рассмотрим два способа решения данной проблемы: с помощью настроек веб-сервера (на примере IIS) и с помощью разработанного механизма передачи сообщения по частям.

Быстрое решение

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

 

1. Настройка через диспетчер служб IIS:

 

2. Изменение файла "web.config" в корне директории веб-приложения:


<system.webServer> 
   <security> 
      <requestFiltering> 
         <requestLimits maxAllowedContentLength="1048576000" /> 
      </requestFiltering> 
   </security> 
</system.webServer>


3. В командной строке выполнить:

cd c:\Windows\System32\inetsrv

appcmd set config "Default Web Site" -section:requestFiltering -requestLimits.maxAllowedContentLength:1048576000 -commitpath:apphost

Правильное решение
В случаях, когда размер передаваемого пакета значительно больше установленных по умолчанию ограничений, изменять конфигурацию веб-сервера не рекомендую. Если заставить принимать веб-сервер пакеты в несколько гигабайт, то это может значительно повлиять на его производительность / работоспособность. Лучше всего сделать передачу большого пакета частями. Далее рассмотрим простейшую реализацию такого механизма на платформе 1С:Предприятие с использованием веб-сервисов.


Реализация
В тестовой конфигурации сделан пример веб-сервиса для передачи пакетов частями. Общий принцип следующий: через веб-сервис передаются части файла и записываются в регистр сведений. Для всех частей файла присваивается некоторый GUID, по которому файл можно будет "склеить" обратно, а также порядковый номер части. Наглядно передачу файла размером в 170 МБ по частям с размером 5 МБ можно представить так:

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

Фактически пакет дублирует структуру регистра сведений:

Далее представлен обработчик метода веб-сервиса:

Функция executeMethod(MessagePart)
	
	Ответ = ФабрикаXDTO.Создать(ФабрикаXDTO.Пакеты.Получить("http://www.develplatform.ru").Получить("MessagePartResponse"));
	
	Попытка
		РегистрыСведений.ПринятыеЧастиПакета.ЗафиксироватьПриемЧастиПакета(
			Новый УникальныйИдентификатор(MessagePart.MessageId),
			MessagePart.PartNumber,
			MessagePart.PartData,
			MessagePart.CountOfParts,
			MessagePart.MessageName,
			MessagePart.FileExtention,
			MessagePart.FileName,
			MessagePart.Size
		);
		Ответ.Success = Истина;
	Исключение
		Ответ.Success = Ложь;	
	КонецПопытки;
	
	Возврат Ответ;
	
КонецФункции

В качестве параметра метод веб-сервиса принимает объект с типом "MessagePartRequest" и передает из него данные в функцию "ЗафиксироватьПриемПакета". Эта функция сохраняет полученные через веб-сервис данные в базу:

Процедура ЗафиксироватьПриемЧастиПакета(Идентификатор, НомерЧасти, Данные, ВсегоЧастей, ИмяСообщения, РасширениеФайла, ИмяФайла, Размер) Экспорт
	
	Набор = РегистрыСведений.ПринятыеЧастиПакета.СоздатьНаборЗаписей();
	Набор.Отбор.ИдентификаторПакета.Установить(Идентификатор);
	Набор.Отбор.НомерЧасти.Установить(НомерЧасти);
	Запись = Набор.Добавить();
	Запись.ДанныеЧастиСообщения = Новый ХранилищеЗначения(Данные);
	Запись.ИдентификаторПакета = Идентификатор;
	Запись.НомерЧасти = НомерЧасти;
	Запись.ДатаСоздания = ТекущаяДата();
	Запись.ВсегоЧастей = ВсегоЧастей;
	Запись.ИмяСообщения = ИмяСообщения;
	Запись.РасширениеФайла = РасширениеФайла;
	Запись.ИмяФайла = ИмяФайла;
	Запись.РазмерФайла = Размер;
	Набор.Записать();
	
КонецПроцедуры

Также в конфигурацию добавлен общий модуль ОбменДаннымиWS с функциями отправки и получения файла. Функция отправки файла разбивает его на части и передает каждую часть отдельно, обращаясь к веб-сервису:

// Отправляет указанный файл на сервер через веб-сервис
//	Параметры:
//		1. ПутьКФайлуНаСервере - строка. Путь к передаваемому файлы на сервере
//		2. МаксимальныйРазмерЧастиПакетаБайт - число. Максимальный размер одной передаваемой части в байтах
//			По умолчанию 10 МБ.
//	Возвращаемое значение:
//		Уникальный идентификатор отправленного файла
//
Функция ОтправитьФайл(ПутьКФайлуНаСервере, МаксимальныйРазмерЧастиПакетаБайт = 10485760) Экспорт
	
	Slash = Символ(92); // Символ "/"
	ИдентификаторСообщения = Новый УникальныйИдентификатор;
	
	// Создаем временный каталог для сохранения в него частей исходного файла
	ВременныйКаталог = КаталогВременныхФайлов()+"SendingMessageWS"+Slash+ИдентификаторСообщения;
	СоздатьКаталог(ВременныйКаталог);
	// Разбиваем файл на части с помощью возможностей платформы
	РазделитьФайл(ПутьКФайлуНаСервере, МаксимальныйРазмерЧастиПакетаБайт, ВременныйКаталог);
	ВсеНайденныеФайлы = НайтиФайлы(ВременныйКаталог, "*");
	ИсходныйФайл = Новый Файл(ПутьКФайлуНаСервере);
	
	// Каждую часть файла отправляем через веб-сервис
	НомерЧасти = 1;
	Для Каждого Эл Из ВсеНайденныеФайлы Цикл
		Прокси = WSСсылки.SendMessageParts.СоздатьWSПрокси("http://www.develplatform.ru/SendBigMessage", "DevelPlatformRU", "DevelPlatformRUSoap");
		ТипОбъектаЗапроса = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.develplatform.ru").Получить("MessagePartRequest");
		ОбъектЗапроса = Прокси.ФабрикаXDTO.Создать(ТипОбъектаЗапроса);
		ОбъектЗапроса.MessageId = Строка(ИдентификаторСообщения);
		ОбъектЗапроса.PartNumber = НомерЧасти;
		ОбъектЗапроса.PartData = Новый ДвоичныеДанные(Эл.ПолноеИмя);
		ОбъектЗапроса.CountOfParts = ВсеНайденныеФайлы.Количество();
		ОбъектЗапроса.MessageName = "Тестовая отправка сообщения!";
		ОбъектЗапроса.FileExtention = ИсходныйФайл.Расширение;
		ОбъектЗапроса.FileName = ИсходныйФайл.ИмяБезРасширения;
		ОбъектЗапроса.Size = Эл.Размер();
		Результат = Прокси.execute(ОбъектЗапроса);
		
		НомерЧасти = НомерЧасти + 1;
	КонецЦикла;
	
	Попытка
		УдалитьФайлы(ВременныйКаталог, "*");
	Исключение КонецПопытки;
	
	Возврат ИдентификаторСообщения;
	
КонецФункции

Для получения исходного файла из сохраненных в регистре сведении его частей используется следующая функция: 

// Отправляет указанный файл на сервер через веб-сервис
//	Параметры:
//		1. ИдентификаторСообщения - Уникальный идентификатор. Идентификатор, возвращенный функцией "ОтправитьФайл"
//	Возвращаемое значение:
//		Строка. Путь к собранному файлу на сервере
//
Функция ПолучитьФайл(ИдентификаторСообщения) Экспорт
	
	Slash = Символ(92); // Символ "/"
		
	// Создаем временный каталог для записи в него сохраненных ранее в базе частей
	КаталогВременныхФайлов = КаталогВременныхФайлов() +"ReceivingMessageWS";
	ВременныйКаталог = КаталогВременныхФайлов + Slash + ИдентификаторСообщения;
	СоздатьКаталог(ВременныйКаталог);
	ИмяРезультатирующегоФайла = Неопределено;
	
	// Получаем все сохраненные части в базе
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПринятыеЧастиПакета.ИдентификаторПакета,
		|	ПринятыеЧастиПакета.НомерЧасти,
		|	ПринятыеЧастиПакета.ДанныеЧастиСообщения,
		|	ПринятыеЧастиПакета.ДатаСоздания,
		|	ПринятыеЧастиПакета.ВсегоЧастей,
		|	ПринятыеЧастиПакета.ИмяСообщения,
		|	ПринятыеЧастиПакета.РасширениеФайла,
		|	ПринятыеЧастиПакета.ИмяФайла,
		|	ПринятыеЧастиПакета.РазмерФайла
		|ИЗ
		|	РегистрСведений.ПринятыеЧастиПакета КАК ПринятыеЧастиПакета
		|ГДЕ
		|	ПринятыеЧастиПакета.ИдентификаторПакета = &ИдентификаторПакета";	
	Запрос.УстановитьПараметр("ИдентификаторПакета", ИдентификаторСообщения);	
	РезультатЗапроса = Запрос.Выполнить();
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Выборка = РезультатЗапроса.Выбрать();
		
		МассивИменФайловДляОбъединения = Новый Массив;

		// Сохраняем файлы частей во временный каталог
		Пока Выборка.Следующий() Цикл
			ИмяЧастиФайла = ВременныйКаталог + Slash + Выборка.ИмяФайла + Выборка.РасширениеФайла + "." + Формат(Выборка.НомерЧасти, "ЧГ=0");
			Выборка.ДанныеЧастиСообщения.Получить().Записать(ИмяЧастиФайла);
			МассивИменФайловДляОбъединения.Добавить(ИмяЧастиФайла);
		КонецЦикла;
		// Собираем исходный файл
		ИмяРезультатирующегоФайла = КаталогВременныхФайлов + Slash + Выборка.ИмяФайла + Выборка.РасширениеФайла;
		ОбъединитьФайлы(МассивИменФайловДляОбъединения, ИмяРезультатирующегоФайла); 
		
		Попытка
			УдалитьФайлы(ВременныйКаталог, "*");
		Исключение КонецПопытки;
		
	КонецЕсли;
	
	Возврат ИмяРезультатирующегоФайла;
	
КонецФункции

Вот и все, такая простая реализация! Посмотрим на результат.

Проверка

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

Как видим, исходный файл получен с тем же размером. Задача выполнена!

Выводы

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

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

 

P.S. Оригинал статьи и другие материалы по интеграции через веб-сервисы, использование HTTP-сервисов, создание асинхронных виджетов и многое другое Вы можете найти в моем блоге www.develplatform.ru

136

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

Наименование Файл Версия Размер
Передача больших пакетов через веб-сервисы частями
.cf 50,78Kb
05.12.15
44
.cf 0.1 50,78Kb 44 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. script 206 06.12.15 09:40 Сейчас в теме
Данная методика давно уже используется во многих типовых решения для обмена с мобильным клиентом. Только регистр там называется ОчередиСообщений. Ну нужно сказать что деление файла на части хоть и позволяет передать много данных, но существенно тормозит процесс обмена. Все как всегда, что быстрее работать с одним большим файлом или с кучей мелких.
2. YPermitin 4944 06.12.15 10:11 Сейчас в теме
(1) script, спасибо за информацию. Там это реализовано немного сложнее. Но принцип, согласен, тот же.
3. DitriX 1713 06.12.15 15:25 Сейчас в теме
А еще до мобильной - это есть все в бсп :)
Но есть и другое решение - вам надо с УТП забрать файл в 1Гб, и поместить его, например, в документооборот, не важно.
Действия такие - документооборот подключается к УТП (возможно по инициализации самой УТП) и забирает оттуда файл в 1Гб без ограничений :)
4. YPermitin 4944 06.12.15 16:36 Сейчас в теме
(3) DitriX, только не говорите, что он подключается по COM =)
5. bonv 894 07.12.15 11:59 Сейчас в теме
В первую очередь, говоря про передачу больших файлов, следует отметить, что использование SOAP имеет накладные расходы в виде увеличения объема передаваемых данных на 33%.
Лучше использовать голый HTTP.
9. YPermitin 4944 07.12.15 22:13 Сейчас в теме
(5) bonv, согласен, можно и JSON использовать, уже будет легче. Совершенству нет предела)
13. Dementor 584 09.12.15 12:00 Сейчас в теме
(5) bonv, если использовать бинарный тип (hexBinary), то накладные расходы SOAP будут всего лишь в добавлении envelope-обвязки пакета - можно пренебречь. Сам к сожалению не экспериментировал, так как мне были доступны для передачи файлы кодированные в Base64 (как раз эти самые потери 33% на увеличении объема), но если возможность в платформе есть, то и имеется вероятность отличная от нуля, что это работает.

При передаче файлов POST-ом по протоколу HTTP та же петрушка, что и при SOAP - данные часто передают типом application/x-www-form-urlencoded
YPermitin; +1 Ответить
16. YPermitin 4944 09.12.15 13:18 Сейчас в теме
(13) Dementor, Вы правы, сам SOAPовский конверт имеет незначительный вес, а вот преобразование в base64 увеличивает размер передаваемых данных на треть.

(14) premier, проще отслеживать состояние передачи пакета, можно запросами платформы получать состояния передачи пакетов и т.д., а с каталогом пришлось бы для этого делать "извраты" с чтением файлов и т.д. Сами данные пакета не обязательно записывать в регистр сведений, можно в нем хранить лишь путь к файлу части пакета на диске (что-то вроде хранения файлов в томах). На рабочей базе лучше реализовать периодическую очистку этого регистра, чтобы старые пакеты в нем не хранились долго.

Вариантов реализации масса)
17. bonv 894 10.12.15 07:56 Сейчас в теме
(13) срочно учить матчасть!
если использовать бинарный тип (hexBinary), то накладные расходы SOAP будут всего лишь в добавлении envelope-обвязки пакета - можно пренебречь

Если использовать hexBinary, то расходы будут 100%. hexBinary использует для отображения одного байта 2 символа.

А вот MTOM в платформе еще пока нет. Так что только голый HTTP.

При передаче файлов POST-ом по протоколу HTTP та же петрушка, что и при SOAP - данные часто передают типом application/x-www-form-urlencoded

А application/x-www-form-urlencoded то тут причем. Данный формат предназначен для передачи параметров веб-формы. Для передачи бинарных данных никто его в здравом уме использовать не будет.
6. bonv 894 07.12.15 12:03 Сейчас в теме
(0)
Slash = Символ(92); // Символ "/"
....
ВременныйКаталог = КаталогВременныхФайлов()+"SendingMessageWS"+Slash+ИдентификаторСообщения;

Черт, вы это серьезно? Разделитель задаете через это Символ(92)?
memb3r; vtas; YPermitin; +3 Ответить
8. YPermitin 4944 07.12.15 22:12 Сейчас в теме
(6) bonv, Это не то, что вы подумали! =D
7. comol 4073 07.12.15 14:05 Сейчас в теме
Круто! Вопрос только один: А нафига зачем??? Одно дело упростить себе жизнь и использовать SOAP для построения событийной модели обмена... Другое дело лить через http протокол файлы. Ну и выгружайте тогда уж в файл, притом лучше не XML, а хотя бы FI тогда уж... а по SOAP передавайте ссылку на него...
memb3r; YPermitin; skif47; Mick2iS; +4 Ответить
10. YPermitin 4944 09.12.15 08:49 Сейчас в теме
(7) comol, сразу забыл ответить, сорри)
Так то оно так, но если переход на обмен через веб-сервисы выполняется со старого транспорта, который выполнял выгрузку в XML, то время на изменение обмена может очень дорого стоить компании. Компромиссный вариант - изменить вид транспорта и немного механизмы обработки сообщений, вместо переписки основной части выгрузки и загрузки данных.
11. skif47 321 09.12.15 08:59 Сейчас в теме
В одной своей разработке тоже уткнулся в относительно большие размеры сообщений, передаваемых через SOAP (в моем случае 7-8 МБ).
Загрузка с тестового сервера Амазон во Франкфурте не прошла: отвалилось по таймауту.
Стал на стороне сервера сжимать ответ сервера в ZIP и передавать его тем же SOAP как base64Binary (http://www.w3.org/2001/XMLSchema). Средний размер файла оказался уже около 500 КБ. Распаковка в XML и парсинг в XDTO объект проблем не вызвала, поскольку сам объект WSProxy предоставляет заодно и фабрику XDTO, которой уже можно парсить разжатые ответы.
Протестировал то же самое со сжатием FastInfoSet вместо XML - выигрыш получился незначительный.
Если вместо SOAP использовать HTTP, тоже будет некоторый выигрыш.

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

В любом случае за тему плюс ))
12. Dementor 584 09.12.15 11:35 Сейчас в теме
Идея интересная, если делать тиражное решение для абстрактного клиента, на инфраструктуру которого не возможно повлиять.
Но на своем опыте могу сказать - при задаче частого обмена большими файлами проще в веб-сервере убрать ограничение для опубликованной базы.
15. YPermitin 4944 09.12.15 13:10 Сейчас в теме
(12) Dementor, админы негодуют, когда просишь убрать ограничения. В принципе я с ними согласен)
14. premierex 09.12.15 12:37 Сейчас в теме
(0) А я вот не понял смысла промежуточной записи файлов в регистр сведений. Почему сразу в каталог с неким GUID их не писать, а имена коротких файлов для дальнейшего объединения запоминать в массиве?
18. rail21111991 30.12.15 13:54 Сейчас в теме
Оставьте свое сообщение

См. также

Списание (корректировка) задолженности контрагентов УНФ 1.6 4

Инструменты и обработки Программист Бухгалтер Внешняя обработка (ert,epf) v8 УНФ Украина БУ Дебиторская и кредиторская задолженность Абонемент ($m) Закрытие периода Обработка документов

Обнуление задолженности контрагентов в конфигурации "Управление небольшой (нашей) фирмой" версии 1.6 с помощью документа "Корректировка регистров".

1 стартмани

24.07.2019    2003    3    DMon    1       

Вам нравятся запросы в 1С? 12

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    8858    1    m-rv    70       

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android 21

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 v8::Mobile Розница УНФ ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Внешние источники данных Сканер штрих-кода Терминал сбора данных Работа с интерфейсом Мобильная разработка

Простой мобильный терминал сбора данных для iOS и Android, не требующий сложных настроек и установки дополнительных программ. Для выгрузки базы штрихкодов и загрузки собранных штрихкодов в документы учетной системы используется Яндекс Диск или облачный сервис и расширение конфигурации. Работает с конфигурациями Розница 2, УНФ 1.6, УТ 11, ERP, КА2.

3 стартмани

22.04.2019    9406    51    suepifanov    61       

Регистрация документов с измененной суммой 2

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

Обработка берет информацию из истории изменения документов. Удобна для администраторов, когда документы с измененной суммой по какой-то причине не регистрируются в плане обменов. Можно регистрировать не все документы, а только те, которые были изменены.

1 стартмани

20.04.2019    3374    1    ryan    0       

Блин, мы забыли включить регламентные задания… 51

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Сервисные утилиты

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    6319    10    slozhenikin_com    36       

Безопасная работа с транзакциями во встроенном языке 184

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

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

1 стартмани

25.03.2019    13063    7    tormozit    35       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 508

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

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24589    242    bonv    102       

Валовая прибыль для УПП 1.3, КА 1.1 в режиме РАУЗ (работа типового отчета без доработок конфигурации) 5

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

Простое и мгновенное решение для использования типового отчета "Валовая прибыль" в конфигурациях "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1" (а также отраслевых решений на их базе) при включенном режиме РАУЗ (расширенная аналитика учета затрат). Не требует настройки или изменения конфигурации, либо может быть, для дополнительного удобства, интегрировано в нее с минимальными доработками.

2 стартмани

21.01.2019    5496    6    stvorl    3       

Централизованное управление списком доступных баз 1С у пользователей 7

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Россия Windows Абонемент ($m) Стартеры 1С Сервисные утилиты Рабочее место

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

5 стартмани

05.12.2018    4513    7    RomikR    7       

Многопоточная обработка данных 43

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 v8::УФ 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad) Администрирование данных 1С

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    10370    43    _ASZ_    14       

Обнуление остатков регистров бухгалтерии и накопления 40

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::БУ v8::ОУ v8::УФ КА1 БП2.0 ЗУП2.5 УТ10 УПП1 УНФ БГУ ERP2 БП3.0 УТ11 УХ КА2 ЗУП3.x Россия Абонемент ($m) Универсальные обработки Чистка базы

Обработка позволяет обнулить остатки по регистру накопления или бухгалтерии на определенную дату. Поддерживается большинство типовых конфигураций (БП 3, БП 2, УТ 11, УТ 10, ЗУП 3, ЗУП 2, БГУ 2, БГУ 1, ERP, УПП, КА 2, КА 1, УХ 3, УХ 1, УНФ). Гибкая настройка (отборы, заполнение реквизитов и любых полей корр. счета, возможность обнулять ресурсы выборочно). Несколько режимов работы. Два интерфейса: простой и с расширенным набором настроек.

2 стартмани

19.11.2018    8653    162    morozov.sv    30       

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек. 32

Инструменты и обработки Системный администратор Компонента, плагин (dll, vbs,..) v8 1cv8.cf Россия Windows Абонемент ($m) Чистка базы Сервисные утилиты Администрирование данных 1С

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

1 стартмани

04.11.2018    17922    278    Eugen-S    33       

HTTP Сервисы: Путь к своему сервису. Часть 4 101

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

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 3». В предыдущих частях мы уже о многом поговорили. В этой части поговорим про размер сообщений, о файлах, о порциях и немножко, о регламентах.

1 стартмани

28.09.2018    12321    15    dsdred    11       

Работа с публикациями "Инфостарт" 13

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    8063    10    RocKeR_13    12       

Помощник корректировки остатков ЕГАИС в небольшом магазине. Розница 2.2 12

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

Данная обработка упрощает корректировку остатков алкогольной продукции небольшого магазина, где предполагается передача всей продукции в торговый зал сразу после приемки.

5 стартмани

08.09.2018    13491    78    asdfgcom    45       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 62

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    14596    23    informa1555    26       

Работа с данными выбора 38

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.07.2018    19397    13    kalyaka    15       

Очистка периодических регистров посредством T-SQL (удаление записей, кроме среза последних) 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Чистка базы

Обработка для ленивых. Составит вместо Вас запрос для SQL, который удалит все не актуальные записи (т.е все, кроме среза последних)

5 стартмани

22.06.2018    8137    14    Alexander.Shvets    9       

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105

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

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    18873    86    m-rv    57       

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному 236

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

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    25933    24    dsdred    34       

Как выполнить отчет на СКД через COM и получить данные отчета? 85

Статья Программист Архив с данными v8 УПП1 Россия Windows Абонемент ($m) Практика программирования

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    17101    10    wowik    3       

Автоматическое заполнение графиков в ЗУП 3.1 6

Инструменты и обработки Бухгалтер Архив с данными v8 v8::СПР ЗУП3.x Россия БУ Зарплата Учет рабочего времени Абонемент ($m) Обработка справочников

Данная разработка будет актуальна для организаций с большим количеством графиков (несколько десятков/сотен).

1 стартмани

05.05.2018    7872    14    notserioussam    1       

Работа со схемой запроса 169

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

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

1 стартмани

24.04.2018    26956    70    kalyaka    34       

Добавление возможности в конфигурации ЗУП 3.1 работать с фотографиями сотрудников (Зарплата и Управление Персоналом, редакция 3.1) 17

Инструменты и обработки Бухгалтер Расширение (cfe) v8 v8::СПР ЗУП3.x БУ Управление персоналом (HRM) Абонемент ($m) Обработка справочников

Добавление возможности в ЗУП 3.1 работать с фотографиями сотрудников (физических лиц). Расширение тестировалось на релизе ЗУП 3.1.5.129.

1 стартмани

09.04.2018    14335    45    charivnick    3       

Повышение качества разработок и онлайн контроль ошибок 163

Статья no Расширение (cfe) v8 Абонемент ($m) Журнал регистрации

Анализ ошибок и сбор ошибок журнала регистраций из десятков и сотен баз в одном месте.

09.03.2018    19090    136    DitriX    47       

Заполняем по шаблону (по умолчанию) 68

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

08.02.2018    17305    20    mvxyz    17       

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов 122

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    24174    61    rpgshnik    46       

Корректировка остатков ЕГАИС, возврат из регистра 2, загрузка ТТН из файлов, другое для УТ10.3 15

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 v8::ОУ УТ10 Россия БУ Розничная торговля Абонемент ($m) Обработка документов

Набор обработок для автоматизации работы с ЕГАИС: Обработка корректировки остатков ЕГАИС для УТ 10.3, аналогичная имеющимся в УТ 11, Рознице 2.2. Автоматически формирует документы "Передача в торговый зал", "Акт постановки на баланс в торговом зале", "Акт списания в торговом зале". Обработка возврата из регистра 2 с подбором справок Б. Обработка формирования ТТН из файлов xml.

1 стартмани

24.01.2018    16714    5    biz-intel    3       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

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

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21238    21    agent00mouse    0       

Расчет начисления зарплаты со сложной формулой, по данным из внешнего источника. ЗУП 3.1 35

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Абонемент ($m) Обработка документов Загрузка и выгрузка в Excel

Расчет начисления зарплаты со сложной формулой, по данным из внешнего источника по данным экономического отдела. ЗУП 3.1.

3 стартмани

20.12.2017    23614    29    mvv1975    5       

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП 26

Инструменты и обработки Программист Расширение (cfe) v8 БП3.0 Абонемент ($m) Практика программирования Универсальные печатные формы

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    17717    52    kwazi    6       

Копирование меню в Трактир Management 2

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

Механизм копирования меню в Трактир Management. Данная обработка расширяет функционал типового решения Трактир Management, позволяя быстро вводить в эксплуатацию новую точку путём создания нового меню на основании имеющегося.

1 стартмани

28.11.2017    13217    1    integrator1983    0       

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз 44

Инструменты и обработки Системный администратор Приложение (exe) v8 Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

14.11.2017    14353    85    bonv    15       

Очистка регистрации обмена 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::ОУ УТ10 Абонемент ($m) Чистка базы

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

1 стартмани

19.09.2017    8961    4    serg-lom89    0       

Расширения конфигураций 1С: учимся перехватывать методы 110

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

30.05.2017    81274    14    signum2009    45       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38206    166    DarkAn    86       

Упрощение работы с актами сверки в УТ/КА/УПП - вывод номеров счетов в документе и печатной форме 3

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 КА1 УТ10 УПП1 БУ УУ Дебиторская и кредиторская задолженность Абонемент ($m) Обработка документов Печатные формы документов

Обычно акт сверки с клиентами содержат информацию о документах реализации товаров (накладных) и выполненных платежах. Но платежи делаются на основании счетов, номера которых отсутствуют в актах, что затрудняет собственно сверку. Данная обработка находит соответствующие расходным накладным счета/заказы, показывает их в форме документа и выводит в печатную форму акта.

2 стартмани

12.05.2017    11423    2    denmax    2       

Автокликер для 1С 70

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

03.04.2017    23274    69    slava_1c    49       

Загрузка номенклатуры по штрихкоду: Управление Торговлей 11.3; Розница 2.2; Розница для Казахстана 2.2 99

Инструменты и обработки Системный администратор Программист Бухгалтер Внешняя обработка (ert,epf) v8 v8::ОУ v8::УФ Розница УТ11 Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Россия УУ Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Обработка справочников Ценообразование, прайсы

Розница 2.2, Управление Торговлей 11.3. Создание номенклатуры из интернета с помощью сканера штрихкодов либо терминала сбора данных. Варианты создания, автовыбор наилучшей позиции, источники, цены, загрузка картинки - всё это очень гибко и просто настраивается. Текущие открытые источники: barcode-list.ru(на текущий момент не работает); goodsmatrix.ru; ean13.info(может не работать капча); barcodes.olegon.ru. Автор программы не несёт ответственность за информацию, предоставляемую перечисленными выше открытыми источниками, так же не отвечает за их работоспособность. Данные источники принадлежат не автору программы. Данная программа нужна лишь для автоматизированного поиска информации на них.

10 стартмани

30.03.2017    39757    49    myALKleon    37       

DroidRAC2 - консоль администрирования кластера серверов 1С:Предприятие 8.3 под Android 25

Инструменты и обработки Системный администратор Приложение (apk) v8 1cv8.cf Android Абонемент ($m) Администрирование данных 1С

DroidRAC2 - клиент для RAS-сервиса кластера серверов платформы 1С:Предприятие 8.3 под Android.

1 стартмани

24.02.2017    14338    12    user700211_a.straltsou    11       

Статистика базы данных с отбором по подсистемам (кол-во и открытие списков: документов, справочников, регистров) и анализ наличия основных реквизитов: универсальная обработка (два файла - обычный и управляемый режим) 5

Инструменты и обработки Системный администратор Программист Архив с данными v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Статистика базы данных

Универсальная обработка для статистики базы данных (документы, справочники, регистры, отчеты) с отбором по подсистемам и с анализом наличия основных реквизитов (организации, контрагенты, договора, номенклатура, сотрудники, физлица, валюта). Возможность просмотра списка документов или справочников или регистров при активизации в колонке "Документы, справочники, регистры, отчеты" в текущей строке. Полезная обработка для консультации пользователей, где искать метаданные в каком интерфейсе, т.к. подсистема указывает в каком интерфейсе находятся метаданные (документы, справочники, регистры, отчеты).

1 стартмани

20.02.2017    12656    46    strelec13    11       

Удаление помеченных объектов, замена ссылок. Обычное и управляемое приложение. Не монопольно, включая рекурсивные ссылки, с отбором по метаданным и произвольным запросом 90

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

Обработка удаления помеченных объектов с расширенным функционалом. Работает в обычном и управляемом приложении. Монопольный и разделенный режим работы. Отображение и отбор по структуре метаданных. Отборы данных произвольными запросами. Копирование и сохранение отборов. Удаление циклических ссылок (рекурсия). Представление циклических в виде дерева с отображением ключевых ссылок, не позволяющих удалить текущий объект информационной базы. Удаление записей связанных независимых регистров сведений. Групповая замена ссылок. Индикатор прогресса при поиске и контроле ссылочности.

10 стартмани

31.10.2016    39610    520    m..adm    184       

Простой способ индексирования интервалов 180

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

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

1 стартмани

28.09.2016    31514    39    ildarovich    22       

Что нам стоит Push построить 37

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

Попробовал некоторое время назад, push сообщения, реализованные в платформе. Понравилось, но есть несколько минусов, на примере одной программы сообщений (не буду показывать пальцем), спустя некоторое время, сообщения переставали приходить онлайн, а на компьютере приходили моментально, при этом сами смартфоны звались флагманами. Читал позднее статью, где описывалось, что проблема на стороне смартфонов, что-то вроде технологий энергосбережения, но точно не помню. Также немалый минус доступно только для смартфонов.

1 стартмани

08.09.2016    21667    23    PloAl    8       

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора. 23

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Обработка документов Универсальные обработки Обмен через XML

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    27411    146    Aphanas    4