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

Публикация № 378879 14.07.15

Приемы и методы разработки

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

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

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

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

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

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

Ведь цикл

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

 

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

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


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

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

 

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

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

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


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

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

 

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

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

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

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

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


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

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

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

Наименование Файл Версия Размер
СохранениеЧтениеНастроекФайл

.epf 10,30Kb
44
.epf 1.0 10,30Kb 44 Скачать

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

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


Как это нет?

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

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

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

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

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

Тип: Строка. 

Описание:

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

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

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


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

См. также

Навигатор по конфигурации базы 1С 8.3 Промо

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

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.87 от 02.12.2021

3 стартмани

28.10.2018    46212    413    ROL32    72    

Универсальный редактор данных (УРД)

Инструментарий разработчика Инструменты администратора БД v8 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    6437    129    Adeptus    51    

Подсистема "Показатели объектов"

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

2 стартмани

06.03.2021    7419    6    pila86    16    

Внешняя компонента: Android tools

Мобильная разработка Разработка внешних компонент v8 v8::Mobile Абонемент ($m)

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 230KB.

1 стартмани

12.01.2021    6364    19    KAV2    13    

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Универсальные обработки Сервисные утилиты v8 Абонемент ($m)

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю...

1 стартмани

01.09.2012    67325    1379    AnryMc    46    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

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

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    10610    27    huxuxuya    11    

Внешний регламент для 1С

Прочие инструменты разработчика v8 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    9071    9    moolex    12    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    31445    300    dmitrydemenew    63    

Faster - многофункциональный ускоритель работы программиста 1С и других языков программирования Промо

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.

1 стартмани

24.05.2012    85438    967    moolex    157    

Альтернативный способ добавления элементов и реквизитов на формы

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

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

1 стартмани

09.09.2019    18422    35    bmk74    8    

Работа с релизами 1С и договорами ИТС

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    21967    65    RocKeR_13    37    

Markdown-editor в 1С (с сохранением в HTML)

Универсальные обработки Прочие инструменты разработчика v8::УФ 1cv8.cf Абонемент ($m)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019    13149    19    riposte    6    

Консоль запросов с графом (Анализатор сложных запросов) Промо

Консоль запросов v8::УФ v8::Запросы 1cv8.cf Абонемент ($m)

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

10 стартмани

03.05.2017    106511    502    manuel    289    

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

Инструментарий разработчика v8 v8::Запросы 1cv8.cf Абонемент ($m)

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

1 стартмани

03.07.2019    28983    7    m-rv    91    

Модель объекта

Инструментарий разработчика v8 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    17167    1    vadim1980    5    

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

Сервисные утилиты v8 Абонемент ($m)

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

1 стартмани

08.04.2019    25566    19    slozhenikin_com    37    

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

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

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

1 стартмани

04.11.2018    54713    541    Eugen-S    35    

Расширение: Темы для 1С 8.3

Работа с интерфейсом v8::УФ 1cv8.cf Абонемент ($m)

Расширение позволяет сменить цвет оформления для интерфейса Такси.

3 стартмани

10.02.2019    24572    148    spec8s    19    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

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

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    63358    271    informa1555    239    

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

Стартеры 1С Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

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

7 стартмани

05.12.2018    22345    23    RomikR    9    

Открывашка ячеек таблиц

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    22997    13    tormozit    38    

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом

Печатные формы документов Универсальные функции Email v8 КА1 БП2.0 УТ10 УПП1 Абонемент ($m)

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    31898    24    stvorl    1    

TextRadar - нечеткий поиск в тексте

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.09.2018    24414    32    TSSV    19    

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

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

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

1 стартмани

13.09.2018    29835    15    RocKeR_13    16    

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Консоль запросов v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    126107    3014    Evg-Lylyk    749    

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

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

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

5 стартмани

09.08.2018    37740    31    informa1555    30    

Визуализация событий на временной шкале средствами "Поле HTML документа"

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    29732    146    Plotks2017    27    

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

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

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

1 стартмани

17.07.2018    70176    25    kalyaka    17    

Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис

Мобильная разработка v8 Абонемент ($m)

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

1 стартмани

19.06.2018    20119    5    informa1555    16    

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

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

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

1 стартмани

01.06.2018    37963    97    m-rv    58    

Нечеткое сравнение строк. Метод Джаро-Винклера на 1С

Математика и алгоритмы v8::УФ 1cv8.cf Абонемент ($m)

Схожесть строк. Метод Джаро-Винклера. В обработке реализован алгоритм нечеткого сравнения строк.

3 стартмани

20.04.2018    25055    96    Serg1701    19    

Регистры правил [Расширение]

Инструментарий разработчика Информационная безопасность v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    23780    30    33lab    5    

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

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

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

1 стартмани

08.02.2018    35873    20    mvxyz    17    

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

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

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

1 стартмани

06.12.2017    34247    60    kwazi    6    

Мобильное приложение "Отчет по проделанной работе"

Мобильная разработка Учет рабочего времени Учет рабочего времени v8 Россия УУ Абонемент ($m)

Приложение выполняет фиксацию рабочего времени у клиентов, а также заявок на работы, пригодится как шаблон для разработки своего или как готовое решение для работников в сфере услуг, которые фиксируют время у клиентов. В приложении 2 документа: первый "отчет за день", второй "заявка" и полезный инструмент "Отчет задачи", который в свою очередь создан для просмотра, анализа и закрытия заявок. Тестировал на Iphone 6s.

10 стартмани

01.12.2017    29083    10    olejnikov_m    6    

Программное формирование форматированной строки в стиле html+inline CSS

Работа с интерфейсом Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    44259    46    bonv    13    

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

Сервисные утилиты v8 Абонемент ($m)

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

1 стартмани

14.11.2017    29486    96    bonv    15    

Закрываем всплывающие сообщения платформы

Сервисные утилиты v8::УФ Абонемент ($m)

Принудительное закрывание сообщений платформы 8.3.10.

1 стартмани

10.11.2017    16128    13    RomaH    8    

Система тестирования. Тренажер для тестирования. Подготовка к профессионалу по 1С (1С:Профессионал), школьные тесты, вопросы ПДД, корпоративные проверки и многое другое

Решение задач на 1С:Специалист v8::УФ Россия Абонемент ($m)

Конфигурация (программа) служит для подготовки к тестированию, а также возможности организации тестовой проверки. Функционал получился универсальный, подойдёт для подготовке к любой сдаче профессионала по платформе, ERP, бухгалтерии и др. Так же можно вносить другие тесты - вопросы по правилам дорожного движения или школьные тесты. Если у вас в компании есть внутренние обучения, с помощью данной программы вы можете закреплять пройденный курс.

1 стартмани

31.10.2017    38340    109    rpgshnik    61    

Расширенная настройка динамического списка УФ

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

31.05.2017    39655    161    tormozit    25    

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

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

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

1 стартмани

30.05.2017    170777    13    signum2009    49    

Набор подсистем "Умные таблицы"

Инструментарий разработчика v8 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    38399    105    Silenser    34