Сохранение (чтение) настроек внешней обработки в файл (управляемые формы)

29.06.21

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СохранениеЧтениеНастроекФайл
.epf 10,30Kb ver:1.0
47
47 Скачать (1 SM) Купить за 1 850 руб.

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

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

То, что это возможно легко понять по намёкам на форумах, однако ни одного законченного решения найти не удалось. Что ж, к этому нам не привыкать, начинаем придумывать велосипед.

Пробуем сначала сохранить значения всех реквизитов формы в файл. Поиски в интернете приводят нас к процедуре ЗначениеВФайл и функции ЗначениеВСтрокуВнутр, приём последней пользоваться как бы не рекомендуется, якобы она предназначена для обмена с 7.7. Обе конструкции языка доступны только на сервере и толстом клиенте, поэтому возникает вопрос, как бы обойти значения всех реквизитов формы &НаСервере.

Ведь цикл

Для Каждого Реквизит Из Объект Цикл
КонецЦикла;

выдаст вполне ожидаемую не для всех ошибку: Итератор для значения не определен.

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

Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты("Объект") Цикл
   ЗначениеРеквизита = Объект[Реквизит.Имя];
КонецЦикла;

Казалось бы, теперь всё просто, однако не совсем. Табличная часть, как и таблица значений имеют не совсем  ожидаемый тип значений, их тип ДанныеФормыКоллекция. А ведь они должны быть обязательно выгружены для сохранения, иначе в файле получим только их уникальные индификаторы. 

В результате этого знания получаем:

// Сохраняет все данные формы в файл ПолноеИмяФайлаНастроек
&НаСервере
Процедура ЭкспортНастроекВФайлНаСервере(ПолноеИмяФайлаНастроек)
	
	Настройки = Новый Структура;
	Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты("Объект") Цикл
	  
		ЗначениеРеквизита = Объект[Реквизит.Имя];
		Если ТипЗнч(ЗначениеРеквизита) = Тип("ДанныеФормыКоллекция") Тогда
			Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита.Выгрузить());
			Продолжить;
		КонецЕсли;
	
		Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита);
	
  	КонецЦикла;                          
  
	Попытка
		ЗначениеВФайл(ПолноеИмяФайлаНастроек, Настройки);
	Исключение
		Сообщить("Ошибка при сохранении файла настроек: " + ОписаниеОшибки());
	КонецПопытки;
  
КонецПроцедуры

// Выбор файла для сохранения настроек и вызов серверной процедуры сохранения файла
&НаКлиенте
Процедура ЭкспортНастроекВФайл(Команда)
	
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Фильтр = НСтр("ru = 'Файлы TXT'") + "(*.txt)|*.txt|";
	ДиалогСохраненияФайла.Фильтр = Фильтр;
	ДиалогСохраненияФайла.МножественныйВыбор = Ложь;

	Если ДиалогСохраненияФайла.Выбрать() Тогда
		ЭкспортНастроекВФайлНаСервере(ДиалогСохраненияФайла.ПолноеИмяФайла);
	КонецЕсли; 
	
КонецПроцедуры

 

Это даже работает, но радоваться рано - этот код неправильный! Мы допустили одну из самых распространенных ошибок при написании кода на управляемых формах. Выбрав имя файла на клиенте, а потом передав его на сервер, мы забыли, что при клиент-серверном режиме работы код, выполняемый на стороне сервера, будет запущен под другим пользователем. И далеко не факт, что этот пользователь будет иметь доступ туда (например, локальный диск терминальной сессии по RDP), куда мы сохраняем файл.

Поэтому переписываем код, сохраняем файл теперь на клиенте, правда придётся воспользоваться не очень рекомендуемой функцией ЗначениеВСтрокуВнутр:

// Сохраняет все данные формы в строку и возвращает её
&НаСервере
Функция ЭкспортНастроекВСтрокуНаСервере()
	
	Настройки = Новый Структура;
	Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты("Объект") Цикл
	  
		ЗначениеРеквизита = Объект[Реквизит.Имя];
		Если ТипЗнч(ЗначениеРеквизита) = Тип("ДанныеФормыКоллекция") Тогда
			Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита.Выгрузить());
			Продолжить;
		КонецЕсли;
	
		Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита);
	
  	КонецЦикла;                          
	
	Возврат ЗначениеВСтрокуВнутр(Настройки);
	
КонецФункции

// Выбор файла для сохранения настроек и сохранение файла используя данные полученные на сервере
&НаКлиенте
Процедура ЭкспортНастроекВФайл(Команда)
	
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Фильтр = НСтр("ru = 'Файлы TXT'") + "(*.txt)|*.txt|";
	ДиалогСохраненияФайла.Фильтр = Фильтр;
	ДиалогСохраненияФайла.МножественныйВыбор = Ложь;

	Если ДиалогСохраненияФайла.Выбрать() Тогда
		
		СтрокаНастроек = ЭкспортНастроекВСтрокуНаСервере();
		Если СтрокаНастроек <> "" Тогда
			Попытка
				ФайлНастроек = Новый ЗаписьТекста(ДиалогСохраненияФайла.ПолноеИмяФайла);
				ФайлНастроек.Записать(СтрокаНастроек);
				ФайлНастроек.Закрыть();
			Исключение
				Сообщить("Ошибка при сохранении настроек на клиенте: " + ОписаниеОшибки());
			КонецПопытки;
		КонецЕсли;
		
	КонецЕсли; 
	
КонецПроцедуры

 

 

Теперь перейдём к загрузке из файла. Мы не будем использовать, как мы уже выяснили, следующий неправильный код с передачей только имени файла на сервер:

// Заполняет значения всех реквизитов формы из файла ПолноеИмяФайлаНастроек
Процедура ИмпортНастроекИзФайлаНаСервере(ПолноеИмяФайлаНастроек)
	
	Попытка
		Настройки = ЗначениеИзФайла(ПолноеИмяФайлаНастроек);
	Исключение
		Сообщить("Ошибка при чтении файла настроек: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
  
	Для Каждого ЭлементНастройки Из Настройки Цикл
	  
		Попытка
			Если ТипЗнч(Объект[ЭлементНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") Тогда
				Объект[ЭлементНастройки.Ключ].Загрузить(ЭлементНастройки.Значение);
				Продолжить;
			КонецЕсли;
	    	Объект[ЭлементНастройки.Ключ] = ЭлементНастройки.Значение;
		Исключение
			Сообщить("Ошибка при импорте настроек: " + ОписаниеОшибки());
		КонецПопытки;
	
  	КонецЦикла;                          
  
КонецПроцедуры


// Выбор файла для загрузки настроек и вызов серверной процедуры загрузки файла
&НаКлиенте
Процедура ИмпортНастроекИзФайла(Команда)
	
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Фильтр = НСтр("ru = 'Файлы TXT'") + "(*.txt)|*.txt|";
	ДиалогСохраненияФайла.Фильтр = Фильтр;
	ДиалогСохраненияФайла.МножественныйВыбор = Ложь;

	Если ДиалогСохраненияФайла.Выбрать() Тогда
		ИмпортНастроекИзФайлаНаСервере(ДиалогСохраненияФайла.ПолноеИмяФайла);
	КонецЕсли; 
	
КонецПроцедуры

 

А напишем другой вариант, например, используя временное хранилище:

// Заполняет значения всех реквизитов формы из временого хранилища, адрес которого указан в АдресВременногоХранилища
Процедура ИмпортНастроекИзВременногоХранилищаНаСервере(АдресВременногоХранилища)
	
	Если НЕ ЭтоАдресВременногоХранилища(АдресВременногоХранилища) Тогда
		Возврат;
	КонецЕсли;
	
	ИмяВременногоФайлаНаСервере = ПолучитьИмяВременногоФайла();
	Попытка
		ПолучитьИзВременногоХранилища(АдресВременногоХранилища).Записать(ИмяВременногоФайлаНаСервере);
		Настройки = ЗначениеИзФайла(ИмяВременногоФайлаНаСервере);
		УдалитьФайлы(ИмяВременногоФайлаНаСервере);
	Исключение
		Сообщить("Ошибка при загрузке настроек на сервере: " + ОписаниеОшибки());
		УдалитьФайлы(ИмяВременногоФайлаНаСервере);
		Возврат;
	КонецПопытки;
  
	Для Каждого ЭлементНастройки Из Настройки Цикл
	  
		Попытка
			Если ТипЗнч(Объект[ЭлементНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") Тогда
				Объект[ЭлементНастройки.Ключ].Загрузить(ЭлементНастройки.Значение);
				Продолжить;
			КонецЕсли;
	    	Объект[ЭлементНастройки.Ключ] = ЭлементНастройки.Значение;
		Исключение
			Сообщить("Ошибка при импорте настроек: " + ОписаниеОшибки());
		КонецПопытки;
	
  	КонецЦикла;                          
  
КонецПроцедуры

// При выборе файла вызов серверной процедуры загрузки файла из временного хранилища
&НаКлиенте
Процедура ОбработатьВыборФайлаИмпорта(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	
	Если НЕ Результат Тогда
		Возврат;
	КонецЕсли;
	
	ИмпортНастроекИзВременногоХранилищаНаСервере(Адрес);
	
КонецПроцедуры


// Выбор файла для загрузки настроек
&НаКлиенте
Процедура ИмпортНастроекИзФайла(Команда)
	
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Фильтр = НСтр("ru = 'Файлы TXT'") + "(*.txt)|*.txt|";
	ДиалогСохраненияФайла.Фильтр = Фильтр;
	ДиалогСохраненияФайла.МножественныйВыбор = Ложь;

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

 

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

Чтобы не насиловать файловую систему временными файлами, давайте перепишем код, без использования временного хранилища, но с использованием не очень рекомендуемой функции ЗначениеИзСтрокиВнутр:

// Заполняет значения всех реквизитов формы из строки СтрокаНастроек
Процедура ИмпортНастроекИзСтрокиНаСервере(СтрокаНастроек)
	
	Если НЕ ЗначениеЗаполнено(СтрокаНастроек) Тогда
		Сообщить("Ошибка. Пустое значение в настройках, импорт не произведён.");
		Возврат;
	КонецЕсли;
	
	Попытка
		Настройки = ЗначениеИзСтрокиВнутр(СтрокаНастроек);
	Исключение
		Сообщить("Ошибка при загрузке настроек на сервере: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
  
	Для Каждого ЭлементНастройки Из Настройки Цикл
	  
		Попытка
			Если ТипЗнч(Объект[ЭлементНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") Тогда
				Объект[ЭлементНастройки.Ключ].Загрузить(ЭлементНастройки.Значение);
				Продолжить;
			КонецЕсли;
	    	Объект[ЭлементНастройки.Ключ] = ЭлементНастройки.Значение;
		Исключение
			Сообщить("Ошибка при импорте настроек: " + ОписаниеОшибки());
		КонецПопытки;
	
  	КонецЦикла;                          
  
КонецПроцедуры

// Выбор файла для загрузки настроек и вызов серверной процедуры загрузки
&НаКлиенте
Процедура ИмпортНастроекИзФайла(Команда)
	
	ДиалоЧтенияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Фильтр = НСтр("ru = 'Файлы TXT'") + "(*.txt)|*.txt|";
	ДиалоЧтенияФайла.Фильтр = Фильтр;
	ДиалоЧтенияФайла.МножественныйВыбор = Ложь;

	Если ДиалоЧтенияФайла.Выбрать() Тогда
		
		Попытка
			ФайлНастроек = Новый ЧтениеТекста(ДиалоЧтенияФайла.ПолноеИмяФайла);
			СтрокаНастроек = ФайлНастроек.Прочитать();
			ФайлНастроек.Закрыть();
		Исключение
			Сообщить("Ошибка при чтении настроек на клиенте: " + ОписаниеОшибки());
			Возврат;	
		КонецПопытки;
			
		ИмпортНастроекИзСтрокиНаСервере(СтрокаНастроек);
		
	КонецЕсли; 
	
КонецПроцедуры 


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

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

Внешняя обработка сохранить настройки в файл чтение настроек из файла

См. также

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    24019    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51255    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36589    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    72094    180    150    

122

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

60000 руб.

05.10.2022    10793    13    8    

15

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

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

46444 41800 руб.

05.12.2019    43815    44    50    

42

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Что же Вы получаете? 2 способа обмена объектами – с ОДИНАКОВОЙ структурой и с ОТЛИЧАЮЩЕЙСЯ! Забудьте о том, что не могли ранее перенести данные между базами, из-за того, что изменилась структура объектов в одной из них с обновлением конфигурации – теперь это в прошлом! Теперь не помеха для обмена изменение состава реквизитов объекта (измерений, ресурсов)/состава табличных частей/реквизитов табличных частей/типов реквизитов! А так же получаете быстрый алгоритм обмена, с возможностью указания уровня выгрузки объектов по ссылкам! 3 способа обмена - ФАЙЛ, HTTP, COM: Система слежения за дублями предопределенных элементов при загрузке; Система поиска связей объектов для выгрузки; Отборы для каждого объекта конфигурации в отдельности; Динамическая замена произвольных ссылок при обмене; Выбор регистров движений для выгрузки. (Обновление от 27.06.2024, версия 9.1 - 10.1)

16800 руб.

28.08.2012    208849    303    281    

656

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х Платные (руб)

Перенос данных с 1С:Комплексной автоматизации 1.1 в 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях КА 1.1 (1.1.115.1) и КА 2.5 (2.5.19.x).

35000 31500 руб.

20.06.2019    53897    251    125    

101
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 15.07.15 07:03 Сейчас в теме
Тема актуальная по сохранению и восстановлению настроек во временный для переноса собственных обработок. За приведенные шаблоны кода автору большой плюс - буду тестировать.
Вот даже столкнулся с интересной ситуацией: дорабатываешь типовой отчет для УТ 10.3 в дополнительной форме "настройки", куда выносятся собственные реквизиты-галочки или путь к сохранению в другие форматы (Excel, txt, xml...) и для удобства пользователя ставишь в обычной форме Сохранять значения и эти реквизиты в сохранение - нифига. Даже под полными правами пользователя. Главное и роли админские и все везде включено, а нужно шаманство в режиме предприятия для включения в группу админов.
Еще аналогичное тоже при всех админских "ролях и правах" что на УФ, что на обычных при вызове обработок из справочника внешних отчетов и обработок часть функционала не настраивается, кнопки "серые", а вызывать из главного меню не всегда удобно. Самый вроде бы оптимальный вариант сохранять и читать текстовый файл из каталога пользователя причем автоматически. Или тоже автоматически подстраиваться под чтение-запись в ХранилищеЗначения справочника.
По идее нужен универсальный кусок кода чтоб вставлять его даже в типовые внешние обработки и отчеты чтоб читал-записывал настройки и писал если что про ошибку и нужно уже в ручном режиме исправлять ситуацию (нет прав на запись в каталог пользователя и прочее). Или когда такой вариант не сработал чтоб были системные события СохранитьЗначение и ВосстановитьЗначение. Самое главное что даже в роли "ПолныеПрава" в конфигураторе стоит сохранение настроек пользователя. Может, где-то программно срабатывает обработчик в коде конфигурации, причем у каждой свой. У кого будут какие идеи по модификации предложенного автором решения. Делать диалог выбора файла и отсылать файл текста, можно, но не хотелось бы для массовых решений.
2. iodine 88 15.07.15 09:42 Сейчас в теме
(1) kostyaomsk, я считаю, что правильнее разобраться с правами, чем использовать сохранение и чтение настроек из файла. У меня нет под рукой УТ 10.3, поэтому не могу сказать как там правильно всё настроить, но в других достаточно легко. Например, в БП 3 достаточно добавить роль с правом "Сохранение данных пользователя" и назначить эту роль через профиль нужному пользователю.
jobkostya1c_ERP; +1 Ответить
3. pacas 9 26.10.15 12:25 Сейчас в теме
Спасибо! Помогла статья
4. aevdovin 7 23.02.16 15:29 Сейчас в теме
Большое спасибо!!!! Это очень полезная обработка!!! А главное - толковое объяснение проблемных моментов....ведь действительно при решении схожей задачи я прибегнул изначально к знаниям из спеца по платформе: ПриСохраненииДанныхВНастройкахНаСервере, ПриВыгрузке...... и т.д.. Затем немного работы с файлами, с хранилищами. Вроде уже не раз когда-то схожие задачи делал - и всегда натыкался на те же пороги - что и описано в статье. Очень рад, что нашелся специалист - который подробно описал возможные преграды при решении такой задачи, а в самой обработке показал пример выгрузки/загрузки настроек и данных реквизитов внеш.обработки. Спасибо!
5. xxx90 36 19.10.16 09:11 Сейчас в теме
Спасибо за объяснение и обработку(очень пригодилась)!
6. Alna 26.07.17 08:30 Сейчас в теме
Спасибо, пригодилась! Причем, действительно, много в сети, но как-то разрозненно, а здесь, спасибо автору за труд, - собрал в одном месте и не поленился прокомментировать.
7. ixijixi 1913 29.06.18 10:22 Сейчас в теме
Если внимательно посмотреть код, то легко заметить, что после получения данных из временного хранилища (с типом ДвоичныеДанные) мы вынуждены записать их во временный файл. Другого нормального способа получить данные с типом Строка из временного хранилища попросту нет.


Как это нет?

Глобальный контекст.ПолучитьСтрокуИзДвоичныхДанных (Global context.GetStringFromBinaryData)
Глобальный контекст (Global context)
ПолучитьСтрокуИзДвоичныхДанных (GetStringFromBinaryData)
Синтаксис:

ПолучитьСтрокуИзДвоичныхДанных(<ДвоичныеДанные>, <КодировкаТекста>) 
Параметры:

<ДвоичныеДанные> (обязательный)

Тип: ДвоичныеДанные. 
Двоичные данные, которые требуется преобразовать в строку. 
<КодировкаТекста> (необязательный)

Тип: КодировкаТекста; Строка. 
Кодировка текста может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Значение по умолчанию: UTF8. 
Возвращаемое значение:

Тип: Строка. 

Описание:

Преобразует двоичные данные в строку с заданной кодировкой текста.

Доступность: 

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). 
Показать
8. iodine 88 29.06.18 13:51 Сейчас в теме
(7)
ПолучитьСтрокуИзДвоичныхДанных


Вы на дату статьи посмотрите. В 8.3.11 появилась ПолучитьСтрокуИзДвоичныхДанных, до этого не было.
9. ixijixi 1913 29.06.18 15:00 Сейчас в теме
(8) Принято. Но статью можно и обновить ;)
10. strelvan 80 18.05.21 09:36 Сейчас в теме
Спасибо, идея хорошая. Но может кому пригодится В этой строке: Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты("Объект") Цикл .... Лучше использовать так: Для Каждого Реквизит Из ЭтотОбъект.ПолучитьРеквизиты() Цикл
Ivan_777777; +1 Ответить
Оставьте свое сообщение