Цифровая подпись. Документооборот КОРП 2.1

Публикация № 1390258 24.02.21

Управленческий учет - Документооборот и делопроизводство

документооборот подпись утверждение

Вставка виртуальной цифровой подписи (грифа утверждения) в автозаполняемые шаблоны word для Документооборот КОРП 2.1. Генерация картинки подписи происходит на сервере с помощью утилиты ImageMagick. Поддерживаемые форматы doc. Заполнение происходит на стороне клиента. Формат docx не поддерживается, т.к. он заполняется на сервере! При желании можно дописать.

При внедрении 1С: ДО КОРП 2.1 у одного из заказчиков было принято решение внедрить механизм виртуальной ЭП (электронной подписи) для визуализации наличия подписи (грифа утверждения) в документах.

Работает на релизе 1С: ДО КОРП 2.1.19.22.

1. В шаблон документа doc необходимо вставить тэг "ВставитьФаксимиле".

2. В архиве ECP_Emul.rar макет цифровой подписи в формате png и psd (Adobe Photoshop CC 2019) + файл конфигурации с изменениями.

3. Добавить два общих макета "ШаблонОтметкиПодписано", "ШаблонОтметкиУтверждено".

4. Добавить глобальные модули "ОбщийБизнес" и "ОбщийБизнесКлиент".

5. Добавить в справочник "Файлы" новый реквизит "ПодписанФаксимиле" (тип булево).

6. Доработать глобальные модули "РаботаСКартинками", "РаботаСФайламиКлиент", "РаботаСФайламиВызовСервера". В коде поиск по комментарию "виртуальная цифровая подпись".

 

В модуль "РаботаСКартинками" добавить функцию:

//виртуальная цифровая подпись
Функция СформироватьЭмуляторПодписи(ОписаниеЭП, МакетСертификат, Формат = "PNG") Экспорт
	
	ФайлыКУдалению = Новый Массив;
	
	ПутьФайлаШаблона = ПолучитьИмяВременногоФайла(Формат);
	МакетСертификат.Записать(ПутьФайлаШаблона);
	ФайлыКУдалению.Добавить(ПутьФайлаШаблона);
	
	ПараметрыDraw = Новый Массив;
	
	ПараметрыDraw.Добавить(
		СтрШаблон(
			"text %1, %2 '%3'",
			205,
			105,
			ОписаниеЭП.Фамилия));
			
	ПараметрыDraw.Добавить(
		СтрШаблон(
			"text %1, %2 '%3'",
			10,
			140,
			ОписаниеЭП.Имя + " " + ОписаниеЭП.Отчество));
			
	ПараметрыDraw.Добавить(
		СтрШаблон(
			"text %1, %2 '%3'",
			90,
			227,
			Формат(ОписаниеЭП.ДатаПодписи, "ДЛФ=DT")));				
			
	ПараметрыСоздания = Новый Массив;
	
	ПараметрыСоздания.Добавить(
		СтрШаблон("convert %1", ПутьФайлаШаблона));		
			
	ПараметрыСоздания.Добавить(
		СтрШаблон(" -fill ""#536AC2"" -pointsize 32 -draw ""%1""", 
			СтрСоединить(ПараметрыDraw, " ")));
			
	ПараметрыDraw = Новый Массив;	
	ПараметрыDraw.Добавить(
		СтрШаблон(
			"text %1, %2 '%3'",
			80,
			185,
			ОписаниеЭП.Хэш));	
			
	ПараметрыСоздания.Добавить(
		СтрШаблон(" -fill ""#536AC2"" -pointsize 22 -draw ""%1""", 
			СтрСоединить(ПараметрыDraw, " ")));		
	
	ПараметрыСоздания.Добавить("-resize 35%");
		
	ПутьНовогоФайла = ПолучитьИмяВременногоФайла("PNG");
	
	ПараметрыСоздания.Добавить(ПутьНовогоФайла);
	
	ПараметрыImageMagick = СтрСоединить(ПараметрыСоздания, " ");
	
	ЗапуститьImageMagick(ПараметрыImageMagick, ФайлыКУдалению);
	
	Возврат Новый ДвоичныеДанные(ПутьНовогоФайла);
	
КонецФункции
//виртуальная цифровая подпись

В Модуле "РаботаСФайламиКлиент" изменить код процедур и функций:

// Сохранение файлов 
// 
// Параметры
//  ДанныеСохраняемыхФайлов  - структура, со список значений с данными файлов и общей информацией о файлах
//  УникальныйИдентификатор - уникальный идентификатор формы
//  ТипПапки - пользовательская настройка, в которую будет сохранена папка
//  СохранитьБезДиалогаПользователя - не спрашивать у пользователя путь сохранения файла.
//                                    Путь будет взят из ДанныеСохраняемыхФайлов.ПутьВыбора.
//  НеСпрашиватьВариантСохранения - автоматически сохранять файл с именем типа 
//                                  "Имя файла(1).Расширение файла" в случае совпадения имен.
//                                  В противном случае будет выдан диалог пользователя для 
//                                  выбора варианта сохранения.
Функция СохранитьФайлы(
	ОписаниеОповещения,
	ДанныеСохраняемыхФайлов, 
	УникальныйИдентификатор, 
	ТипПапки = "ПапкаДляСохраненияФайлов", 
	СохранитьБезДиалогаПользователя = Ложь, 
	НеСпрашиватьВариантСохранения = Ложь) Экспорт
	
	#Если ВебКлиент Тогда
		ПоказатьПредупреждение(, НСтр("ru = 'В Веб-клиенте сохранение файлов не поддерживается.'"));
		Возврат "";
	#КонецЕсли
	
	ПутьВыбора = ДанныеСохраняемыхФайлов.ПутьВыбора;
	
	Если Не СохранитьБезДиалогаПользователя Тогда
		
		ВыборКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
		ВыборКаталога.Каталог = ПутьВыбора;
		
		Если ВыборКаталога.Выбрать() Тогда
			
			ПутьВыбораПрежний = ПутьВыбора;
			ПутьВыбора = ВыборКаталога.Каталог;
			ПутьВыбора = ФайловыеФункцииКлиент.НормализоватьКаталог(ПутьВыбора);
			
			ПутьВыбора = ФайловыеФункцииКлиент.НормализоватьКаталог(ПутьВыбора);
			Если ПутьВыбораПрежний <> ПутьВыбора Тогда
				ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("НастройкиПрограммы", ТипПапки, ПутьВыбора);
			КонецЕсли;
			
		Иначе
			
			ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
			Возврат "";
			
		КонецЕсли;
		
	КонецЕсли;
	
	Номер = 0;
	Для Каждого СписокСтрока Из ДанныеСохраняемыхФайлов.СписокДанныхФайлов Цикл
		
		ДанныеФайла = СписокСтрока.Значение;
		
		Если ДанныеФайла.ТребуетсяСоздатьВизуализациюЭП
			И ДанныеФайла.ВизуализацияЭПДобавлена = Ложь Тогда 
			
			#Если Не ВебКлиент И Не МобильныйКлиент Тогда
				// для doc файла заполним на клиенте - если не веб клиент
				СоздатьВизуализациюЭПВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
			#КонецЕсли	
			
		КонецЕсли;
		
		//виртуальная цифровая подпись
		Если ДанныеФайла.ТребуетсяСоздатьВизуализациюФаксимиле
			И ДанныеФайла.ВизуализацияФаксимилеДобавлена = Ложь Тогда 
		
			#Если Не ВебКлиент И Не МобильныйКлиент Тогда
				// для doc файла заполним на клиенте - если не веб клиент
				ОбщийБизнесКлиент.СоздатьВизуализациюФаксимилеВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
			#КонецЕсли	
		
		КонецЕсли;
		//виртуальная цифровая подпись
		
		ДанныеСохраняемыхФайлов.СписокДанныхФайлов[Номер].Значение = ДанныеФайла;
		Номер = Номер + 1;
	
	КонецЦикла;	
	
	КоличествоФайлов = ДанныеСохраняемыхФайлов.КоличествоФайлов;
	ОбщийРазмерВМб = ДанныеСохраняемыхФайлов.ОбщийРазмер / (1024 * 1024);
	
	#Если Не ВебКлиент Тогда
		ТекстПояснения =
			СтрШаблон(
				НСтр("ru = 'Выполняется сохранение %1 файлов (%2 Мб)...
					|Пожалуйста, подождите.'"),
				КоличествоФайлов, 
				ФайловыеФункцииКлиентСервер.ПолучитьСтрокуСРазмеромФайла(ОбщийРазмерВМб));	
		Состояние(ТекстПояснения);
	#КонецЕсли
	
	ПутьВыбора = ФайловыеФункцииКлиент.НормализоватьКаталог(ПутьВыбора);
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("НомерФайла", 0);
	ПараметрыВыполнения.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
	ПараметрыВыполнения.Вставить("ОписаниеОповещения", ОписаниеОповещения);
	ПараметрыВыполнения.Вставить("ДанныеСохраняемыхФайлов", ДанныеСохраняемыхФайлов);
	ПараметрыВыполнения.Вставить("ТипПапки", ТипПапки);
	ПараметрыВыполнения.Вставить("СохранитьБезДиалогаПользователя", СохранитьБезДиалогаПользователя);
	ПараметрыВыполнения.Вставить("НеСпрашиватьВариантСохранения", НеСпрашиватьВариантСохранения);
	ПараметрыВыполнения.Вставить("ПутьВыбора", ПутьВыбора);
	
	Обработчик = Новый ОписаниеОповещения("СохранитьФайлыМассивФайловТонкийКлиент", ЭтотОбъект, ПараметрыВыполнения);
	ВыполнитьОбработкуОповещения(Обработчик);
	Возврат "";
	
КонецФункции

// Процедура печати Файла
//
// Параметры
//  ДанныеФайлов  - массив структур с данными файла
//  УникальныйИдентификатор - уникальный идентификатор формы
//
Процедура НапечататьФайлы(ДанныеФайлов, УникальныйИдентификатор = Неопределено) Экспорт
	
	Оповестить("ОбновитьСписокПоследних");
	
	Номер = 0;
	Для Каждого ДанныеФайла Из ДанныеФайлов Цикл
		
		Если ДанныеФайла.ТребуетсяСоздатьВизуализациюЭП
			И ДанныеФайла.ВизуализацияЭПДобавлена = Ложь Тогда 
			
			#Если Не ВебКлиент И Не МобильныйКлиент Тогда
				// для doc файла заполним на клиенте - если не веб клиент
				СоздатьВизуализациюЭПВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
			#КонецЕсли	
			
		КонецЕсли;
		
		//виртуальная цифровая подпись
		Если ДанныеФайла.ТребуетсяСоздатьВизуализациюФаксимиле
			И ДанныеФайла.ВизуализацияФаксимилеДобавлена = Ложь Тогда 
		
			#Если Не ВебКлиент И Не МобильныйКлиент Тогда
				// для doc файла заполним на клиенте - если не веб клиент
				ОбщийБизнесКлиент.СоздатьВизуализациюФаксимилеВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
			#КонецЕсли	
		
		КонецЕсли;
		//виртуальная цифровая подпись
		
		ДанныеФайлов[Номер] = ДанныеФайла;
		Номер = Номер + 1;
	
	КонецЦикла;	
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("НомерФайла", 0);
	ПараметрыВыполнения.Вставить("ДанныеФайлов", ДанныеФайлов);
	ПараметрыВыполнения.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
	Обработчик = Новый ОписаниеОповещения("НапечататьФайлыВыполнение", ЭтотОбъект, ПараметрыВыполнения);
	ВыполнитьОбработкуОповещения(Обработчик);
	
КонецПроцедуры

// Сохранение на диск Файла
// 
// Параметры:
//   ОбработчикРезультата - ОписаниеОповещения, Неопределено - Описание процедуры, принимающей результат работы метода.
//   ДанныеФайла  - структура с данными файла.
//   УникальныйИдентификатор - уникальный идентификатор формы.
//
// Возвращаемое значение:
//   Строка - выбранный полный путь файла.
//
Процедура СохранитьКак(ОбработчикРезультата, ДанныеФайла, УникальныйИдентификатор) Экспорт
	
	Если ДанныеФайла.ТребуетсяСоздатьВизуализациюЭП
		И ДанныеФайла.ВизуализацияЭПДобавлена = Ложь Тогда 
		
		#Если Не ВебКлиент И Не МобильныйКлиент Тогда
			// для doc файла заполним на клиенте - если не веб клиент
			СоздатьВизуализациюЭПВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
		#КонецЕсли	
		
	КонецЕсли;
	
	//виртуальная цифровая подпись
	Если ДанныеФайла.ТребуетсяСоздатьВизуализациюФаксимиле
		И ДанныеФайла.ВизуализацияФаксимилеДобавлена = Ложь Тогда 
		
		#Если Не ВебКлиент И Не МобильныйКлиент Тогда
			// для doc файла заполним на клиенте - если не веб клиент
			ОбщийБизнесКлиент.СоздатьВизуализациюФаксимилеВФайлеDoc(ДанныеФайла, УникальныйИдентификатор);
		#КонецЕсли	
		
	КонецЕсли;
	//виртуальная цифровая подпись
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ОбработчикРезультата", ОбработчикРезультата);
	ПараметрыВыполнения.Вставить("ДанныеФайла", ДанныеФайла);
	ПараметрыВыполнения.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
	
	Если ФайловыеФункцииСлужебныйКлиент.РасширениеРаботыСФайламиПодключено() Тогда
		СохранитьКакСРасширением(ПараметрыВыполнения);
	Иначе
		СохранитьКакБезРасширения(ПараметрыВыполнения);
	КонецЕсли;
	
КонецПроцедуры

// Открыть файл для просмотра из карточки документа
Процедура ОткрытьФайлДокумента(Файл, Форма) Экспорт 
	
	Если Не ЗначениеЗаполнено(Файл) Тогда 
		Возврат;
	КонецЕсли;
	
	Если Форма.Модифицированность И
		Форма.Параметры.Свойство("Ключ") И
		ЗначениеЗаполнено(Форма.Параметры.Ключ) Тогда
		Если НЕ Форма.Записать() Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Попытка 
		ПредыдущийАдресФайла = Форма.ПредыдущийАдресФайла;
	Исключение
		ПредыдущийАдресФайла = Неопределено;
	КонецПопытки;
	
	ДанныеФайла = РаботаСФайламиВызовСервера.ДанныеФайлаДляОткрытия(
		Файл, 
		Неопределено, 
		Форма.УникальныйИдентификатор, 
		Неопределено, 
		ПредыдущийАдресФайла);
		
	Если ДанныеФайла.ТребуетсяСоздатьВизуализациюЭП
		И ДанныеФайла.ВизуализацияЭПДобавлена = Ложь Тогда 
		
		#Если Не ВебКлиент И Не МобильныйКлиент Тогда
			// для doc файла заполним на клиенте - если не веб клиент
			СоздатьВизуализациюЭПВФайлеDoc(ДанныеФайла, Форма.УникальныйИдентификатор);
		#КонецЕсли	
		
	КонецЕсли;
	
	//виртуальная цифровая подпись
	Если ДанныеФайла.ТребуетсяСоздатьВизуализациюФаксимиле
		И ДанныеФайла.ВизуализацияФаксимилеДобавлена = Ложь Тогда 
		
		#Если Не ВебКлиент И Не МобильныйКлиент Тогда
			// для doc файла заполним на клиенте - если не веб клиент
			ОбщийБизнесКлиент.СоздатьВизуализациюФаксимилеВФайлеDoc(ДанныеФайла, Форма.УникальныйИдентификатор);
		#КонецЕсли	
		
	КонецЕсли;
	//виртуальная цифровая подпись
	
	КомандыРаботыСФайламиКлиент.Открыть(ДанныеФайла);
	
КонецПроцедуры

В модуле "РаботаСФайламиВызовСервера" изменить код процедур и функций:

// Функция возвращает структуру, содержащую различные сведения о Файле и версии
// Параметры
//  ФайлСсылка  - СправочникСсылка.Файлы - файл
//  ВерсияСсылка  - СправочникСсылка.ВерсииФайлов - версия файла
//  ИдентификаторКлиента - Строка - переданный ИдентификаторКлиента
//
// Возвращаемое значение:
//   Структура - структура с данными файла
Функция ДанныеФайла(ФайлСсылка, ВерсияСсылка = Неопределено, ИдентификаторКлиента = Неопределено) Экспорт
	
	Запрос = Новый Запрос;
	
	Если ВерсияСсылка = Справочники.ВерсииФайлов.ПустаяСсылка() Тогда
		ВерсияСсылка = Неопределено;
	КонецЕсли;
	
	Если ВерсияСсылка = Неопределено Тогда
		
		Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ
			|	Файлы.Ссылка КАК Ссылка,
			|	Файлы.Код КАК Код,
			|	Файлы.Редактирует КАК Редактирует,
			|	Файлы.ТекущаяВерсия КАК ТекущаяВерсия,
			|	Файлы.ВладелецФайла КАК ВладелецФайла,
			|	Файлы.ХранитьВерсии КАК ХранитьВерсии,
			|	Файлы.ПометкаУдаления КАК ПометкаУдаления,
			|	Файлы.ДатаЗаема КАК ДатаЗаема,
			|	Файлы.Зашифрован КАК Зашифрован,
			|	Файлы.ПодписанЭП КАК ПодписанЭП,
			|	ЕСТЬNULL(ВерсииФайлов.ПолноеНаименование, """") КАК ПолноеНаименование,
			|	ЕСТЬNULL(ВерсииФайлов.Расширение, """") КАК Расширение,
			|	ЕСТЬNULL(ВерсииФайлов.Размер, 0) КАК Размер,
			|	ЕСТЬNULL(ВерсииФайлов.НомерВерсии, 0) КАК НомерВерсии,
			|	ЕСТЬNULL(ВерсииФайлов.ПутьКФайлу, """") КАК ПутьКФайлу,
			|	ЕСТЬNULL(ВерсииФайлов.Том, ЗНАЧЕНИЕ(Справочник.ТомаХраненияФайлов.ПустаяСсылка)) КАК Том,
			|	ЕСТЬNULL(ВерсииФайлов.ДатаМодификацииУниверсальная, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаМодификацииУниверсальная,
			|	ЕСТЬNULL(ВерсииФайлов.Автор, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)) КАК Автор,
			|	ЕСТЬNULL(ВерсииФайлов.СтатусИзвлеченияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыИзвлеченияТекстаФайлов.ПустаяСсылка)) КАК СтатусИзвлеченияТекста,
			|	ЕСТЬNULL(ВерсииФайлов.СтатусРаспознаванияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыРаспознаванияТекста.ПустаяСсылка)) КАК СтатусРаспознаванияТекста,
			|	ЕСТЬNULL(ВерсииФайлов.ТипХраненияФайла, ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ПустаяСсылка)) КАК ТипХраненияФайла
			|ИЗ
			|	Справочник.Файлы КАК Файлы
			|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВерсииФайлов КАК ВерсииФайлов
			|		ПО Файлы.ТекущаяВерсия = ВерсииФайлов.Ссылка";
		
		Если ТипЗнч(ФайлСсылка) = Тип("Массив") Тогда 
			Запрос.Текст = Запрос.Текст + " ГДЕ Файлы.Ссылка В (&Файл) ";
		Иначе
			Запрос.Текст = Запрос.Текст + " ГДЕ Файлы.Ссылка = &Файл ";
		КонецЕсли;
		
		Запрос.Параметры.Вставить("Файл", ФайлСсылка);
		
	Иначе
		
		Если ФайлСсылка <> Неопределено Тогда 
			Запрос.Текст = 
				"ВЫБРАТЬ РАЗРЕШЕННЫЕ
				|	Файлы.Ссылка КАК Ссылка,
				|	Файлы.Код КАК Код,
				|	Файлы.Редактирует КАК Редактирует,
				|	Файлы.ТекущаяВерсия КАК ТекущаяВерсия,
				|	Файлы.ВладелецФайла КАК ВладелецФайла,
				|	Файлы.ХранитьВерсии КАК ХранитьВерсии,
				|	Файлы.ПометкаУдаления КАК ПометкаУдаления,
				|	Файлы.ДатаЗаема КАК ДатаЗаема,
				|	Файлы.Зашифрован КАК Зашифрован,
				|	Файлы.ПодписанЭП КАК ПодписанЭП,
				|	ЕСТЬNULL(ВерсииФайлов.ПолноеНаименование, """") КАК ПолноеНаименование,
				|	ЕСТЬNULL(ВерсииФайлов.Расширение, """") КАК Расширение,
				|	ЕСТЬNULL(ВерсииФайлов.Размер, 0) КАК Размер,
				|	ЕСТЬNULL(ВерсииФайлов.НомерВерсии, 0) КАК НомерВерсии,
				|	ЕСТЬNULL(ВерсииФайлов.ПутьКФайлу, """") КАК ПутьКФайлу,
				|	ЕСТЬNULL(ВерсииФайлов.Том, ЗНАЧЕНИЕ(Справочник.ТомаХраненияФайлов.ПустаяСсылка)) КАК Том,
				|	ЕСТЬNULL(ВерсииФайлов.ДатаМодификацииУниверсальная, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаМодификацииУниверсальная,
				|	ЕСТЬNULL(ВерсииФайлов.Автор, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)) КАК Автор,
				|	ЕСТЬNULL(ВерсииФайлов.СтатусИзвлеченияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыИзвлеченияТекстаФайлов.ПустаяСсылка)) КАК СтатусИзвлеченияТекста,
				|	ЕСТЬNULL(ВерсииФайлов.СтатусРаспознаванияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыРаспознаванияТекста.ПустаяСсылка)) КАК СтатусРаспознаванияТекста,
				|	ЕСТЬNULL(ВерсииФайлов.ТипХраненияФайла, ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ПустаяСсылка)) КАК ТипХраненияФайла
				|ИЗ
				|	Справочник.Файлы КАК Файлы
				|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВерсииФайлов КАК ВерсииФайлов
				|		ПО (ИСТИНА)
				|ГДЕ
				|	Файлы.Ссылка = &Файл
				|	И ВерсииФайлов.Ссылка = &Версия";
			
			Запрос.Параметры.Вставить("Файл", ФайлСсылка);
			Запрос.Параметры.Вставить("Версия", ВерсияСсылка);
		Иначе
			Запрос.Текст = 
				"ВЫБРАТЬ РАЗРЕШЕННЫЕ
				|	Файлы.Ссылка КАК Ссылка,
				|	Файлы.Код КАК Код,
				|	Файлы.Редактирует КАК Редактирует,
				|	Файлы.ТекущаяВерсия КАК ТекущаяВерсия,
				|	Файлы.ВладелецФайла КАК ВладелецФайла,
				|	Файлы.ХранитьВерсии КАК ХранитьВерсии,
				|	Файлы.ПометкаУдаления КАК ПометкаУдаления,
				|	Файлы.ДатаЗаема КАК ДатаЗаема,
				|	Файлы.Зашифрован КАК Зашифрован,
				|	Файлы.ПодписанЭП КАК ПодписанЭП,
				|	ЕСТЬNULL(ВерсииФайлов.ПолноеНаименование, """") КАК ПолноеНаименование,
				|	ЕСТЬNULL(ВерсииФайлов.Расширение, """") КАК Расширение,
				|	ЕСТЬNULL(ВерсииФайлов.Размер, 0) КАК Размер,
				|	ЕСТЬNULL(ВерсииФайлов.НомерВерсии, 0) КАК НомерВерсии,
				|	ЕСТЬNULL(ВерсииФайлов.ПутьКФайлу, """") КАК ПутьКФайлу,
				|	ЕСТЬNULL(ВерсииФайлов.Том, ЗНАЧЕНИЕ(Справочник.ТомаХраненияФайлов.ПустаяСсылка)) КАК Том,
				|	ЕСТЬNULL(ВерсииФайлов.ДатаМодификацииУниверсальная, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаМодификацииУниверсальная,
				|	ЕСТЬNULL(ВерсииФайлов.Автор, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)) КАК Автор,
				|	ЕСТЬNULL(ВерсииФайлов.СтатусИзвлеченияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыИзвлеченияТекстаФайлов.ПустаяСсылка)) КАК СтатусИзвлеченияТекста,
				|	ЕСТЬNULL(ВерсииФайлов.СтатусРаспознаванияТекста, ЗНАЧЕНИЕ(Перечисление.СтатусыРаспознаванияТекста.ПустаяСсылка)) КАК СтатусРаспознаванияТекста,
				|	ЕСТЬNULL(ВерсииФайлов.ТипХраненияФайла, ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ПустаяСсылка)) КАК ТипХраненияФайла
				|ИЗ
				|	Справочник.Файлы КАК Файлы
				|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВерсииФайлов КАК ВерсииФайлов
				|		ПО (ИСТИНА)
				|ГДЕ
				|	ВерсииФайлов.Ссылка = &Версия
				|	И Файлы.Ссылка = ВерсииФайлов.Владелец";
			
			Запрос.Параметры.Вставить("Версия", ВерсияСсылка);
		КонецЕсли;    
		
	КонецЕсли;    
	
	МассивДанныеФайла = Новый Массив;
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		ДанныеФайла = Новый Структура;
		ДанныеФайла.Вставить("Ссылка", Выборка.Ссылка);
		ДанныеФайла.Вставить("КодФайла", Выборка.Код);
		ДанныеФайла.Вставить("Редактирует", Выборка.Редактирует);
		ДанныеФайла.Вставить("Владелец", Выборка.ВладелецФайла);
		ДанныеФайла.Вставить("НавигационнаяСсылка", ПолучитьНавигационнуюСсылку(Выборка.Ссылка));
		
		ДанныеФайла.Вставить("КоличествоЗанятыхФайлов", -1); // -1  - значит не задано
		
		Если ВерсияСсылка <> Неопределено Тогда
			ДанныеФайла.Вставить("Версия", ВерсияСсылка);
		Иначе
			ДанныеФайла.Вставить("Версия", Выборка.ТекущаяВерсия);
		КонецЕсли;    
		
		ДанныеФайла.Вставить("ТекущаяВерсия", Выборка.ТекущаяВерсия);
		
		СтруктураКлюча = Новый Структура("Файл", ДанныеФайла.ТекущаяВерсия);
		КлючЗаписи = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьКлючЗаписи(СтруктураКлюча);
		НавигационнаяСсылкаТекущейВерсии = ПолучитьНавигационнуюСсылку(КлючЗаписи, "ДвоичныеДанныеФайла");
		ДанныеФайла.Вставить("НавигационнаяСсылкаТекущейВерсии", НавигационнаяСсылкаТекущейВерсии);
		
        КодировкаТекущейВерсии = ПолучитьКодировкуВерсииФайла(ДанныеФайла.ТекущаяВерсия);
        ДанныеФайла.Вставить("КодировкаТекущейВерсии", КодировкаТекущейВерсии);
		
		ДанныеФайла.Вставить("Размер", Выборка.Размер);
		ДанныеФайла.Вставить("НомерВерсии", Выборка.НомерВерсии);
		ДанныеФайла.Вставить("ДатаМодификацииУниверсальная", Выборка.ДатаМодификацииУниверсальная);
		ДанныеФайла.Вставить("Расширение", Выборка.Расширение);
		ДанныеФайла.Вставить("ПолноеНаименованиеВерсии", СокрЛП(Выборка.ПолноеНаименование));
		ДанныеФайла.Вставить("ХранитьВерсии", Выборка.ХранитьВерсии);
		ДанныеФайла.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
		ДанныеФайла.Вставить("АвторТекущейВерсии", Выборка.Автор);
		ДанныеФайла.Вставить("Зашифрован", Выборка.Зашифрован);
		ДанныеФайла.Вставить("ПодписанЭП", Выборка.ПодписанЭП);
		ДанныеФайла.Вставить("ДатаЗаема", Выборка.ДатаЗаема);
		
		ДанныеФайла.Вставить("ПутьКФайлу", Выборка.ПутьКФайлу);
		ДанныеФайла.Вставить("Том", Выборка.Том);	   
		ДанныеФайла.Вставить("ТипХраненияФайла", Выборка.ТипХраненияФайла);	   
		
		Если ДанныеФайла.Зашифрован Тогда
			МассивСертификатовШифрования = ПолучитьМассивСертификатовШифрования(ДанныеФайла.Ссылка);
			ДанныеФайла.Вставить("МассивСертификатовШифрования", МассивСертификатовШифрования);
		КонецЕсли;    
		
		НаЧтение = ДанныеФайла.Редактирует <> Пользователи.ТекущийПользователь();
		ДанныеФайла.Вставить("НаЧтение", НаЧтение);
		
		ДанныеФайла.Вставить("ЗанятСДругогоКомпьютера", Ложь);
		ДанныеФайла.Вставить("ИмяДругогоКомпьютера", "");
		Если ДанныеФайла.Редактирует = Пользователи.ТекущийПользователь() Тогда
			
			Если Не ФайловыеФункции.ЕстьЗаписьДляТекущегоИдентификатора(ДанныеФайла.Версия, ИдентификаторКлиента) Тогда
			
				ИмяКомпьютера = "";
				Если ФайловыеФункции.ЕстьДанныеЗаемаСДругогоКомпьютера(ДанныеФайла.Версия, 
						ИмяКомпьютера, ИдентификаторКлиента) Тогда
					ДанныеФайла.ЗанятСДругогоКомпьютера = Истина;
					ДанныеФайла.ИмяДругогоКомпьютера = ИмяКомпьютера;
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЕсли;	
		
		ВРабочемКаталогеНаЧтение = Истина;
		ВРабочемКаталогеВладельца = Ложь;
		ИмяКаталога = ФайловыеФункции.ПолучитьПутьКРабочемуКаталогуПользователя();
		Если ИмяКаталога = Неопределено Тогда
			ИмяКаталога = "";
		КонецЕсли;    
		
		Если ВерсияСсылка <> Неопределено Тогда
			ИмяФайлаСПутемВРабочемКаталоге = ПолучитьИмяФайлаСПутемИзРегистра(ВерсияСсылка, ИмяКаталога, ВРабочемКаталогеНаЧтение, ВРабочемКаталогеВладельца);
		Иначе
			ИмяФайлаСПутемВРабочемКаталоге = ПолучитьИмяФайлаСПутемИзРегистра(Выборка.ТекущаяВерсия, ИмяКаталога, ВРабочемКаталогеНаЧтение, ВРабочемКаталогеВладельца);
		КонецЕсли;    
		
		ДанныеФайла.Вставить("ПолноеИмяФайлаВРабочемКаталоге", ИмяФайлаСПутемВРабочемКаталоге);
		ДанныеФайла.Вставить("ВРабочемКаталогеНаЧтение", ВРабочемКаталогеНаЧтение);
		ДанныеФайла.Вставить("РабочийКаталогВладельца", "");
		
		РедактируетТекущийПользователь = (ДанныеФайла.Редактирует = Пользователи.ТекущийПользователь());
		ДанныеФайла.Вставить("РедактируетТекущийПользователь", РедактируетТекущийПользователь);
		
		СтатусИзвлеченияТекстаСтрока = "НеИзвлечен";
		Если Выборка.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен Тогда
			СтатусИзвлеченияТекстаСтрока = "НеИзвлечен";
		ИначеЕсли Выборка.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.Извлечен Тогда
			СтатусИзвлеченияТекстаСтрока = "Извлечен";
		ИначеЕсли Выборка.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.ИзвлечьНеУдалось Тогда
			СтатусИзвлеченияТекстаСтрока = "ИзвлечьНеУдалось";
		КонецЕсли;    
		ДанныеФайла.Вставить("СтатусИзвлеченияТекста", СтатусИзвлеченияТекстаСтрока);
		
		СтатусРаспознаванияТекстаСтрока = "НеНужноРаспознавать";
		Если Выборка.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.НеРаспознано Тогда
			СтатусРаспознаванияТекстаСтрока = "НеРаспознано";
		ИначеЕсли Выборка.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.НужноРаспознать Тогда
			СтатусРаспознаванияТекстаСтрока = "НужноРаспознать";
		ИначеЕсли Выборка.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.Распознано Тогда
			СтатусРаспознаванияТекстаСтрока = "Распознано";
		ИначеЕсли Выборка.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.Распознается Тогда
			СтатусРаспознаванияТекстаСтрока = "Распознается";
		ИначеЕсли Выборка.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.НеНужноРаспознавать Тогда
			СтатусРаспознаванияТекстаСтрока = "НеНужноРаспознавать";
		КонецЕсли;    
		ДанныеФайла.Вставить("СтатусРаспознаванияТекста", СтатусРаспознаванияТекстаСтрока);
		
		ДанныеФайла.Вставить("ПодписанФаксимиле", Выборка.Ссылка.ПодписанФаксимиле);//виртуальная цифровая подпись
		
		МассивДанныеФайла.Добавить(ДанныеФайла); 
		
	КонецЦикла;
	
	// если был передан массив - возвращаем массив
	Если ТипЗнч(ФайлСсылка) = Тип("Массив") Тогда 
		Возврат МассивДанныеФайла;
	КонецЕсли;
	
	Если МассивДанныеФайла.Количество() > 0 Тогда 
		Возврат МассивДанныеФайла[0];
	Иначе
		ВызватьИсключение НСтр("ru = 'У пользователя недостаточно прав на исполнение операции над базой данных.'");
	КонецЕсли;
	
КонецФункции

// Функция возвращает структуру, содержащую различные сведения о Файле и версии.
//
// Параметры:
//  ФайлВерсияСсылка        - СправочникСсылка.Файлы, СправочникСсылка.ВерсииФайлов - файл или версия файла.
//  ИдентификаторФормы      - УникальныйИдентификатор - уникальный идентификатор формы.
//  РабочийКаталогВладельца - Строка - в ней возвращается рабочий каталог владельца файла.
//  ПредыдущийАдресФайла    - Строка - в ней возвращается рабочий каталог владельца файла.
//
// Возвращаемое значение:
//   Структура - структура с данными файла. См. ПолучитьДанныеФайла.
//
Функция ДанныеФайлаДляОткрытия(ФайлСсылка, ВерсияСсылка = Неопределено, ИдентификаторФормы = Неопределено,
	РабочийКаталогВладельца = Неопределено, ПредыдущийАдресФайла = Неопределено,
	НеПолучатьВизуализациюЭП = Ложь) Экспорт
	
	Если ПредыдущийАдресФайла <> Неопределено Тогда
		Если НЕ ПустаяСтрока(ПредыдущийАдресФайла) И ЭтоАдресВременногоХранилища(ПредыдущийАдресФайла) Тогда
			УдалитьИзВременногоХранилища(ПредыдущийАдресФайла);
		КонецЕсли;
	КонецЕсли;
	
	ДанныеФайла = ДанныеФайла(ФайлСсылка, ВерсияСсылка);
	
	Если РабочийКаталогВладельца = Неопределено Тогда
		РабочийКаталогВладельца = РабочийКаталогПапки(ДанныеФайла.Владелец);
	КонецЕсли;
	ДанныеФайла.Вставить("РабочийКаталогВладельца", РабочийКаталогВладельца);
	
	Если ДанныеФайла.РабочийКаталогВладельца <> "" Тогда
		ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
			ДанныеФайла.ПолноеНаименованиеВерсии, ДанныеФайла.Расширение);
		ПолноеИмяФайлаВРабочемКаталоге = РабочийКаталогВладельца + ИмяФайла;
		ДанныеФайла.Вставить("ПолноеИмяФайлаВРабочемКаталоге", ПолноеИмяФайлаВРабочемКаталоге);
	КонецЕсли;
	
	ПредыдущийАдресФайла = ДанныеФайла.НавигационнаяСсылкаТекущейВерсии;
	
	ПротоколированиеРаботыПользователей.ЗаписатьПолучениеФайла(ДанныеФайла.Ссылка);
	
	ЗаписатьОбращениеКВерсииФайла(ДанныеФайла.Версия);
	РаботаСПоследнимиОбъектами.ЗаписатьОбращениеКОбъекту(ДанныеФайла.Ссылка);
	
	ОбщийБизнес.ДобавитьВизуализациюФаксимиле(ДанныеФайла, ИдентификаторФормы);//виртуальная цифровая подпись
	
	Если НеПолучатьВизуализациюЭП = Ложь Тогда
		
		ДобавитьВизуализациюЭП(ДанныеФайла, ИдентификаторФормы);
				
		Если ДанныеФайла.ВизуализацияЭПДобавлена = Истина Тогда
			
			ДанныеФайла.ПолноеИмяФайлаВРабочемКаталоге = ""; // не берем из кеша
			УдалитьИзРегистра(ДанныеФайла.Версия); // удалим инфо из кеша
			
			Возврат ДанныеФайла;
		КонецЕсли;	
		
	Иначе	
		
		ДанныеФайла.ПолноеИмяФайлаВРабочемКаталоге = ""; // не берем из кеша
		УдалитьИзРегистра(ДанныеФайла.Версия); // удалим инфо из кеша
		
	КонецЕсли;
	
	ТипХраненияФайла = ДанныеФайла.Версия.ТипХраненияФайла;
	
	Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске И ДанныеФайла.Версия <> Неопределено Тогда
		
		УстановитьПривилегированныйРежим(Истина);
		
		Запрос = Новый Запрос;
		
		Запрос.Текст =
		"ВЫБРАТЬ
		|	ВерсииФайлов.ПутьКФайлу КАК ПутьКФайлу,
		|	ВерсииФайлов.Том КАК Том
		|ИЗ
		|	Справочник.ВерсииФайлов КАК ВерсииФайлов
		|ГДЕ
		|	ВерсииФайлов.Ссылка = &Версия";
		
		Запрос.Параметры.Вставить("Версия", ДанныеФайла.Версия);
		
		ДанныеФайлаТом = Справочники.ТомаХраненияФайлов.ПустаяСсылка();
		ДанныеФайлаПутьКФайлу = "";
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Следующий() Тогда
			ДанныеФайлаТом = Выборка.Том;
			ДанныеФайлаПутьКФайлу = Выборка.ПутьКФайлу;
		КонецЕсли;
		
		Если НЕ ДанныеФайлаТом.Пустая() Тогда
			ПолныйПуть = ФайловыеФункцииСлужебный.ПолныйПутьТома(ДанныеФайлаТом) + ДанныеФайлаПутьКФайлу; 
			Попытка
				ДвоичныеДанные = Новый ДвоичныеДанные(ПолныйПуть);
				// Работаем только с текущей версией - для не-текущей ссылку получаем в ПолучитьНавигационнуюСсылкуДляОткрытия.
				ДанныеФайла.НавигационнаяСсылкаТекущейВерсии = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ИдентификаторФормы);
			Исключение
				// Запись в журнал регистрации.
				СсылкаНаФайл = ?(ФайлСсылка <> Неопределено, ФайлСсылка, ВерсияСсылка);
				СообщениеОбОшибке = СформироватьТекстОшибкиПолученияФайлСТомаДляАдминистратора(
					ИнформацияОбОшибке(), СсылкаНаФайл);
				
				ЗаписьЖурналаРегистрации(
					НСтр("ru = 'Файлы.Открытие файла'",
					     ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
					УровеньЖурналаРегистрации.Ошибка,
					Метаданные.Справочники.Файлы,
					ФайлСсылка,
					СообщениеОбОшибке);
					
				ТипВладельцаФайла = ТипЗнч(ДанныеФайла.Владелец);
				Если ТипВладельцаФайла = Тип("СправочникСсылка.ПапкиФайлов") Тогда
					ПредставлениеВладельца = ПолныйПутьПапки(ДанныеФайла.Владелец);
				Иначе
					ПредставлениеВладельца = ДанныеФайла.Владелец;
				КонецЕсли;
				ПредставлениеВладельцаФайла = СтрШаблон(
					НСтр("ru = 'Присоединен к %1 : %2'"),
					Строка(ТипВладельцаФайла),
					ПредставлениеВладельца);
					
				ВызватьИсключение ФайловыеФункцииСлужебныйКлиентСервер.ОшибкаФайлНеНайденВХранилищеФайлов(
					ДанныеФайла.ПолноеНаименованиеВерсии + "." + ДанныеФайла.Расширение,
					,
					ПредставлениеВладельцаФайла);
					
			КонецПопытки;
		КонецЕсли;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ДанныеФайла.ПолноеИмяФайлаВРабочемКаталоге) Тогда
		ОбновитьДатуОбращенияФайлыВРабочемКаталогеКомпьютера(ДанныеФайла.Версия);
	КонецЕсли;	
	
	Возврат ДанныеФайла;
	
КонецФункции // ДанныеФайлаДляОткрытия()

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

7. Финиш.

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

Наименование Файл Версия Размер
Цифровая подпись Документооборот КОРП 2.1:

.rar 105,39Kb
4
.rar 105,39Kb 4 Скачать

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

Оставьте свое сообщение

См. также

Конструктор печатных форм для ЗУП 3.1 по шаблонам MSOffice и OpenOffice Промо

Печатные формы документов Документооборот и делопроизводство Документооборот и делопроизводство v8 v8::СПР ЗУП3.x Абонемент ($m)

Данная обработка позволяет быстро создавать печатные формы документов на основании документов из программы 1С ЗУП8 версии 3.1. Печатные формы можно заполнять на основании следующих документов: "Прием на работу", "Прием на работу списком", "Кадровый перевод", "Кадровый перевод списком", "Перемещение в другое подразделение", "Договор ГПХ" Обработка протестирована на платформе 1С:Предприятие 8.3 (8.3.12.1714) релиз ЗУП 3.1.9.187 Тонкий клиент (файловый или клиент-сервер) Установленный Microsoft office (2003 и выше) или OpenOffice/LibreOffice 09/04/2019 Исправил ошибку, возникающую, если наименование вида расчета содержит скобки.

10 стартмани

02.11.2017    30675    290    zabaluev    60    

Корректировка стандартной выгрузки файла ЭД для Диадока

Документооборот и делопроизводство Интеграция с сервисами v8 БП3.0 Абонемент ($m)

Расширение подменяет в стандартной выгрузке ЭД из 1С ИД отправителя и получателя на такой, который используется в Диадок при загрузке документов.

1 стартмани

24.11.2021    681    5    77dream77    1    

Устранение проблемы с правами доступа. Документооборот КОРП 2.1

Документооборот и делопроизводство Роли и права v8 ДО Абонемент ($m)

Обработка позволяет открыть доступ для пользователей в конфигурации 1С: Документооборот КОРП 2.1, связанных с отсутствием необходимых записей в регистрах сведений СоставСубъектовПравДоступа и ПользователиВКонтейнерах. Проблема выражается в отсутствии доступа к папкам внутренних документов и непосредственно внутренним документам (см.рисунок).

1 стартмани

01.11.2021    1137    6    baturo    0    

Распознавание текста с использованием OCR Tesseract

Документооборот и делопроизводство v8 ДО Россия Абонемент ($m)

В 1С:Документооборот полнотекстовый поиск по содержимому отсканированных документов возможен, но не так хорош, как бы хотелось. Всё дело в качестве распознавания сканов. Поднимаем процесс распознавания на новую высоту с использованием Xpdf и OCR Tesseract.

5 стартмани

17.10.2021    1410    3    soulner    2    

Печать конвертов из 1С Промо

Пакетная печать Документооборот и делопроизводство Документооборот и делопроизводство v8 1cv8.cf Россия Абонемент ($m)

Внешняя печатная форма для печати конвертов формата C4 и C5. Печать с полной разметкой почтового конверта и размещением адресов отправителя и получателя, включая индекс.

1 стартмани

07.12.2015    34903    17    sashs1980    7    

Управление пользователями в документообороте

Документооборот и делопроизводство Роли и права v8 ДО Россия Абонемент ($m)

Обработка "Управление пользователями в документообороте" позволяет создавать новых пользователей и обновлять права у текущих пользователей. Возможно назначать права группе пользователей и пакетно создавать пользователей с одинаковыми правами. Облегчает рутинную работу при регулярной работе с правами пользователей.

1 стартмани

13.10.2021    1384    3    Smikle    0    

Модуль для интеграции 1С с бесплатным файлообменником FilesFM (аналог DropMeFiles) с возможностью работы без регистрации

Документооборот и делопроизводство Файловые протоколы обмена, FTP Внешние источники данных WEB Адаптация типовых решений Облачные сервисы, хостинг v8 1cv8.cf Абонемент ($m)

Модуль позволяет автоматически выгружать любой файл в бесплатный файлообменник "Files.fm" без регистрации и получить ссылку для его загрузки. В качестве примера описан способ интеграции модуля с типовой конфигурацией. Также описаны функции модуля, доступные для разработчика и методы работы с ними!

1 стартмани

09.10.2021    1970    2    Nabi    5    

Преобразование doc/docx в PDF для 1С: Документооборот 8 КОРП, ПРОФ, ДГУ через обработчик бизнес-событий

Документооборот и делопроизводство v8 ДО Абонемент ($m)

Обработчик после регистрации нужного вида документа выполняет конвертацию файлов, прикрепленных к внутреннему документу формата doc/docx, в формат PDF и добавляет эти файлы к документу. Не требует изменений в конфигурации.

1 стартмани

05.10.2021    1405    1    vashkostya    1    

Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2 Промо

Универсальные обработки Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Абонемент ($m)

В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.

5 стартмани

05.09.2016    28243    176    SEOAngels    11    

Удобная настройка доступности по состоянию (быстрое изменение элементов) для 1С: Документооборот 2.1 КОРП/ПРОФ/ДГУ

Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

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

1 стартмани

05.10.2021    1220    4    vashkostya    0    

Проверка настройки заполнения для скриптов 1С:Документооборот

Документооборот и делопроизводство Тестирование и исправление v8 ДО Абонемент ($m)

Доброго времени суток, коллеги. После обновления базы 1С:Документооборот , при проверке заполнения файла по шаблону вылезла ошибка "Следующие реквизиты или скрипты настройки заполнения файла заданы не корректно:...". Захотел узнать, какие ещё скрипты заполнены не корректно. Написал обработку для проверки и исправления всех скриптов.

1 стартмани

19.09.2021    1404    4    Andrei_Ivanov    6    

Формирование XML документа (УПД, счет, накладная, СФ и прочее)

Документооборот и делопроизводство Обмен через XML v8 БП3.0 УТ11 Россия Абонемент ($m)

С помощью этого кода для документов базы формируется XML-файл, который можно отправить через ЭДО СБИС, Диадок и пр. Поддерживается все форматы, которые поддерживает библиотека БЭД.

1 стартмани

24.08.2021    1863    35    blackhorse1976    4    

Приемная руководителя, редакция 1.1 Промо

Документооборот и делопроизводство Управленческий учет (прочее) v8 Абонемент ($m)

Приемная руководителя, редакция 1.1. Конфигурация на управляемых формах (интерфейс - Такси) с открытым кодом, создана для секретарей.

1500 руб.

19.05.2015    31044    22    10    

Групповая отправка документов по электронной почте (Счет на оплату покупателя, Реализация товаров и услуг, Счет фактура выданный, Сверка взаиморасчетов). ERP 2

Документооборот и делопроизводство Email Взаиморасчеты Оптовая торговля v8 v8::БУ ERP2 БУ Абонемент ($m)

Обработка "Групповая отправка документов по электронной почте" для конфигурации ERP Управление предприятием 2. Позволяет гибко выбирать документы и отправлять их контрагентам.

8 стартмани

12.08.2021    2184    1    MaxxiMiliSan    4    

Оригинал получен

Документооборот и делопроизводство Обработка документов v8 КА2 Россия БУ УУ Абонемент ($m)

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

3 стартмани

31.07.2021    1949    1    Tatoshka_    2    

Прослеживаемость товара в Диадок (РНПТ). Подключаемый модуль для в УПП 1.3, УТ 10.3

Документооборот и делопроизводство Оптовая торговля v8 УТ10 УПП1 БУ Абонемент ($m)

С июля 2021 года введена прослеживаемости товаров с передачей данных через ЭДО. На данный момент в модуле Диадок (5.42.10) не реализовано заполнение РНПТ, и предлагаемый подключаемый модуль решает эту проблему.

1 стартмани

21.07.2021    3220    32    itmind    6    

Реестр договоров для 1С:Бухгалтерии Промо

Обработка документов Обработка справочников Документооборот и делопроизводство Документооборот и делопроизводство v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Реестр договоров для 1С:Бухгалтерии - дополнительная обработка для конфигурации "Бухгалтерия предприятия", версия 3.0

5 стартмани

28.10.2014    52678    116    RespectSoft    26    

Доработка Диадок для 1С. Заполнение графы 5а в УПД (с 01.07.2021). Подключаемый модуль

Документооборот и делопроизводство Оптовая торговля Бухгалтерский учет v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

С 1 июля 2021 года действует новая форма УПД, такое изменение принято постановлением №534 от 02.04.2021 г. Правительством Российской Федерации. В форме УПД в данной редакции появилась графа 5а. Мне так и не удалось разобраться - обязательна она к заполнению или нет - в типовой форме в 1С:Бухгалтерия она заполняется, а в Диадок - нет. И было бы пофиг, но некоторые наши клиенты отказались принимать УПД с прочерком в строке 5а. Служба поддержки Диадок сообщила, что заполнение - не является обязательным, доработка - платная, тикет - закрыт :) Поэтому здесь Вы можете скачать Подключаемый модуль для Диадок, который заполняет графу 5а - Документы основания.

1 стартмани

06.07.2021    10982    107    AlxPop    37    

Конфигурация в помощь автоюристам, работающим со станциями технического обслуживания (СТО)

Документооборот и делопроизводство v8 8.3.14 Автомобили, автосервисы Аудит и бухгалтерские услуги, юриспруденция Россия УУ Абонемент ($m)

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

1 стартмани

09.06.2021    1627    3    macrosina    4    

401-й сравнительно простой способ добавить пользовательские автоподстановки

Документооборот и делопроизводство v8 ДО Россия УУ Абонемент ($m)

Несмотря на большое количество публикаций на тему пользовательских автоподстановок, решил "вставить свои 5 копеек". В данном варианте от пользователя после установки расширения не требуется программирования или какой-то сложной настройки, Достаточно настроить необходимые дополнительные свойства внутренних документов типа "Справочник.Пользователи" и "Обновить автоподстановки" в контекстном меню "Адресной книги".

1 стартмани

03.06.2021    4567    2    fvr2000    2    

Учет канцтоваров для секретаря - тонкий клиент (без информационной базы, на файлах excel) Промо

Документооборот и делопроизводство Универсальные обработки Загрузка и выгрузка в Excel Документооборот и делопроизводство v8 1cv8.cf Абонемент ($m)

Обработка включает для каждого файла загрузки из excel новую колонку в табличное поле обработки (управляемая форма, тонкий клиент), рассчитывает и выводит общие итоги. Табличку на тонком клиенте выводит в табличный документ. Обработка не использует информационную базу и независима от её структуры, только файлы эксель. Результат объединения тоже сохраняется в файл.

1 стартмани

11.09.2012    23899    22    ksnik    10    

Формирование файла типа xml для формализованных электронных передаточных и корректировочных документов и неформализованного электронного документа Счет на основании документа бухгалтерии

Обмен через XML Документооборот и делопроизводство v8 v8::БУ БП3.0 Россия БУ НУ НДС Абонемент ($m)

Обработка служит для формирования файла типа xml для следующих формализованных документов: счета-фактуры (СЧФ), документа об отгрузке товаров (выполнении работ), передаче имущественных прав (документа об оказании услуг) (ДОП), универсального передаточного документа (СЧФДОП-УПД), корректировочного счета-фактуры (КСЧФ), документа, подтверждающего согласие (факт уведомления) покупателя на изменение стоимости отгруженных товаров (выполненных работ, оказанных услуг), переданных имущественных прав (ДИС), универсального корректировочного документа (КСЧФДИС-УКД) и неформализованного документа Счет на основании документа, созданного в 1С: Бухгалтерия предприятия БП 3.0 для последующей загрузки на сайт оператора электронного документооборота. После загрузки файла на сайт можно при необходимости скорректировать документ и отправить его на согласование или подпись. Формализованные документы формируются по формату, утвержденному приказом ФНС России от 19.12.2018 г.№ ММВ-7-15/820@ и приказом ФНС России от 12.10.2020 г. № ЕД-7-26/736@ Прослеживаемые товары обрабатываются в соответствие с форматом ФНС, обработка маркированных товаров не реализована.

5 стартмани

28.05.2021    4456    21    fxfan    4    

Сопоставь несопоставленное - пример работы с сопоставлением номенклатуры контрагентов

Обработка справочников Документооборот и делопроизводство v8 УНФ БП3.0 Абонемент ($m)

Пример использования встроенных типовых конфигураций 1С, в которых есть механизмы сопоставления номенклатуры контрагентов из ЭДО с номенклатурой самой базы 1С.

1 стартмани

24.05.2021    4224    5    delta    1    

Подсистема "Пользовательские автоподстановки" для 1С: Документооборот 2.1

Документооборот и делопроизводство Управление бизнес-процессами (BPM) v8 ДО Россия УУ Абонемент ($m)

Подсистема позволяет описать собственные алгоритмы автоподстановок исполнителей задач бизнес-процессов. Механизмы подсистемы может использовать любой компетентный пользователь/программист.

1 стартмани

12.05.2021    2730    8    Lok`Tar    11    

Согласование документов 1С:Документооборот и 1С:Консолидация из Outlook 2010-2013 без запуска 1С (с исходниками) Промо

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

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

1 стартмани

16.07.2012    82170    420    Aleksey.Bochkov    123    

Печать и подпись на любых печатных формах 1С (УФ)

Документооборот и делопроизводство WEB v8 v8::УФ УНФ ERP2 БП3.0 УТ11 ЗУП3.x Россия Абонемент ($m)

Обработка для выгрузки любых печатных форм (УТ 11, БП 3.0, УНФ 1.6, ERP) в сервис Sigs.ME для установки на них печати и подписей.

1 стартмани

12.05.2021    3219    0    1psspam    1    

Уведомления 1С: Документооборот через Telegram

Документооборот и делопроизводство v8 ДО Россия УУ Абонемент ($m)

В данной публикации я хочу поделиться расширением, с помощью которого можно отключить создание задач ознакомления для бизнес-процессов "Согласование" и "Утверждение" в 1С: Документооборот. Изменен штамп электронной подписи. Также был добавлен модуль для уведомления пользователей через Telegram.

1 стартмани

27.04.2021    3154    12    dronicbest    1    

Адресная книга для 1С:Документооборот

Документооборот и делопроизводство v8 ДО Абонемент ($m)

Реализация через http-сервис публикации адресной книги для документооборота.

1 стартмани

27.04.2021    5013    2    SaschaG    7    

Визуализация электронной подписи на документе Adobe PDF с указанием положения

Документооборот и делопроизводство v8 ДО Россия Абонемент ($m)

Делать визуализацию по ГОСТ Р 7.0.97-2016 исходящего документа в формате MS Word мы уже умеем. А если пришел входящий документ в виде картинки или в формате Adobe PDF подписанный ЭЦП, что будем делать? Итак, набив руку на предыдущих работах, готов замахнуться на визуализацию ЭП на документах Adobe PDF и графических файлах.

5 стартмани

26.04.2021    4448    12    soulner    10    

Перенос скриптов автозаполнения файлов между видами внутренних документов в конфигурации Документооборот 2.1

Обработка справочников Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

Дополнительная обработка, которая позволяет перенести необходимые скрипты заполнения шаблона файла Microsoft Word от одного вида внутреннего документа к другому.

1 стартмани

25.03.2021    2939    9    szv    0    

Автоматическое закрытие повторных задач согласования по предмету

Управление бизнес-процессами (BPM) Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

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

1 стартмани

03.03.2021    2726    6    Capitullo    0    

Помощник Документооборота - реестр задач для 1С:Документооборот

Документооборот и делопроизводство v8 ДО Россия УУ Абонемент ($m)

Помощник Документооборота - реестр задач - обработка для 1С:Документооборот, удобный инструмент для работы с задачами.

1 стартмани

17.02.2021    3248    17    a_l_e_xj    0    

Быстрый просмотр документов PDF и картинок в 1С:Документооборот 2.1

Документооборот и делопроизводство v8 v8::Бизнес-процессы ДО Россия УУ Абонемент ($m)

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

2 стартмани

02.02.2021    3804    33    timm00    14    

Массовая рассылка документов контрагентам через Whatsapp

Документооборот и делопроизводство v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Рассылает списку контрагентов выбранные печатные формы через Whatsapp. Тестировалась на Бухгалтерии 3.0.87.28.

2 стартмани

16.01.2021    4096    7    Плюшкин_    0    

Рукописная подпись PDF документа в 1С:Документооборот через смартфон/планшет

Документооборот и делопроизводство v8 ДО Абонемент ($m)

Расширение для 1С:Документооборот для наложения рукописной подписи в PDF файле. Расширение позволяет накладывать разное количество подписей пользователей в одном документе. Подписание происходит в Android приложении. Вы можете интегрировать подписание документов в свое приложение. Данное расширение как один из вариантов применения использования подписи. Открытое API для интеграции с любыми 1С конфигурациями и приложениями.

1 стартмани

28.11.2020    5424    9    perevalsky    13    

Учет состояний оригиналов первичных документов

Документооборот и делопроизводство v8 УПП1 Россия БУ УУ Абонемент ($m)

Совсем недавно фирма 1С анонсировала в новой версии 1С:ERP 2.5 подсистему учета состояний оригиналов в первичных документах. Представляю вашему вниманию аналогичную подсистему для 1С:УПП 1.3.

10 стартмани

16.11.2020    5164    9    E_Babaylova    10    

Вставка штампа в файлы PDF

Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

Как неправильно регистрировать входящие документы? Надо распечатать сопроводительное письмо, зарегистрировать документ в программе, на бумажном носителе поставить штамп, вписать номер и дату и заново отсканировать документ в карточку входящего письма. А как правильно?

1 стартмани

11.11.2020    9523    46    soulner    12    

История выполнения задач

Документооборот и делопроизводство Task Manager v8 ДО Россия УУ Абонемент ($m)

Расширенная история выполнения задач для комплексных бизнес-процессов (расширение) для конфигурации Документооборот КОРП

1 стартмани

27.10.2020    4761    37    Lok`Tar    4    

Виджет - делегирование прав

Документооборот и делопроизводство v8 ДО Россия Абонемент ($m)

Дополнительный настраиваемый виджет - делегирование прав (расширение) для конфигурации Документооборот КОРП.

1 стартмани

27.10.2020    4287    16    Lok`Tar    1    

Удаление электронных документов (ЭДО) у помеченных на удаление документов

Документооборот и делопроизводство Чистка данных Обработка документов v8 1cv8.cf Абонемент ($m)

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

1 стартмани

05.10.2020    4672    26    rokhin    7    

Чат бот 1С: Что ты умеешь ? Вывод вариантов действий (расширение)

Документооборот и делопроизводство Практика программирования v8 ДО Россия Абонемент ($m)

Выводит все используемые состояния чат-бота на данный момент времени.

1 стартмани

05.10.2020    4129    0    floodprog    0    

Расширенный обзор процессов в 1С: Документооборот 2.1 КОРП

Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

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

10 стартмани

29.09.2020    5419    21    rusmm93    0    

Проверка условий маршрутизации в 1С: Документооборот

Документооборот и делопроизводство v8 ДО УУ Абонемент ($m)

Проверка условий маршрутизации в 1С: Документооборот, проверка условий, созданных "В режиме конструктора" и "Комбинация из других условий". Проверка непосредственно из условия. Изменение конфигурации не требуется (расширение).

5 стартмани

23.09.2020    4645    13    sulig    5    

Настраиваемые печатные формы для Word

Документооборот и делопроизводство v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.09.2020    5153    26    FatPanzer    16    

Выгрузка файлов ЭДО из 1С для OZON, УТ 11.4, УНФ 1.6

Оптовая торговля Розничная торговля Документооборот и делопроизводство WEB v8 УНФ УТ11 УУ Абонемент ($m)

Обработка позволяет выгружать файлы УПД или ТОРГ-12 в формате XML напрямую из 1С. Выгруженные файлы можно отправлять Ozon в системе электронного документооборота Контур.Диадок.

3 стартмани

18.08.2020    4555    20    KVIKS    8    

Выгрузка XML-файла УПД для отправки через ЭДО СБИС, Диадок и т.п.

Оптовая торговля Документооборот и делопроизводство Обмен через XML v8 v8::БУ БП3.0 Оптовая торговля, дистрибуция, логистика Россия БУ Абонемент ($m)

С помощью этой обработки для документа "Реализация товаров и услуг" формируется XML-файл УПД, который можно отправить через ЭДО СБИС, Диадок и пр.

1 стартмани

17.08.2020    18656    116    vasilievil    16    

Расширение для 1С Документооборот 2.1 - Ручной поиск документов по штрих-коду после потокового сканирования

Обработка документов Поиск данных Документооборот и делопроизводство Сканер штрих-кода v8 ДО Россия Абонемент ($m)

Возможность поиска документа по ШК для прикрепления к ним нераспознанных изображений, после потокового сканирования.

2 стартмани

05.08.2020    5051    0    Steffan    0