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

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

Разработка - Работа с интерфейсом

УФ Дополнительные формы Реквизит объекта

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

Первая часть проблемы в том, что сам Объект (ДокументОбъект, СправочникОбъект, ОбработкаОбъект) живет на сервере, а на клиент передается только его копия с воссозданной структурой. Поэтому периодически приходится прибегать к методам вроде "РеквизитФормыВЗначение". В случае с основной формой объекта проблем почти нет. Реквизиты формы заполняются, реквизиты объекта тоже.

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

Вот и я не так давно столкнулся с этой проблемой и потратил пару часов на "курение" различных форумов. Мне нужно было сделать внешнюю обработку, у которой есть несколько дополнительных форм, в которых вводятся дополнительные данные, в том числе табличные. В этом случае все реквизиты должны храниться в реквизитах и табличных частях обработки и выводиться фрагментарно на различных формах. Этакая замкнутая мини-система. Данные из обработки потом сохраняются во внешнюю БД, но это уже отдельная история.

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

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

Итак.

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

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

На стороне основной формы мы пишем:

&НаКлиенте
Процедура ОткрытиеСправочника(Команда)
 
  ОповещениеОВыборе  = Новый ОписаниеОповещения("ОткрытиеСправочникаПослеВыбора", ЭтаФорма, Новый Структура("ИмяКоманды", Команда.Имя));
  ОткрытьФорму("ПолноеИмяФормы",, ЭтаФорма,,,, ОповещениеОВыборе, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
 
КонецПроцедуры

На стороне дополнительной формы мы пишем так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
 
  КопироватьДанныеФормы(ВладелецФормы.Объект, Объект);
 
КонецПроцедуры

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
 
  СтандартнаяОбработка         = Ложь;
  Закрыть(Объект);
 
КонецПроцедуры

И, соответственно, снова на стороне основной формы нам нужно принять результат:

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

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

Кстати, с полным именем формы тоже могут возникнуть некоторые неудобства, ведь полное имя задается как "ВнешняяОбработка.ИмяОбработки.Форма.ИмяФормы". И если обработку переименовать, то вызов доп. форм тоже придется исправить. Одно, что у нас в таком случае не меняется - это свойство ИмяФормы. Таким образом, получив полное имя основной и подменив последний фрагмент на имя доп. формы, мы получим полное имя доп. формы. И для этого можно использовать вот такую небольшую функцию:

&НаКлиенте
Функция ПолноеИмяФормы(НужноеИмя) Экспорт 
	
	НекийМассив		= СтрРазделить(ИмяФормы, ".", Ложь);
	НекийМассив[НекийМассив.ВГраница()]	= НужноеИмя;
	
	Возврат СтрСоединить(НекийМассив, ".");
	
КонецФункции

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

Наименование Файл Версия Размер
Работа с дополнительными формами

.epf 9,97Kb
20.09.16
13
.epf 9,97Kb 13 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 02.11.15 10:18 Сейчас в теме
Для решения этой задачи нужно использовать хранилище значения. Посмотрите как сделан механизм подбора для табличных частей документов.
batsy66; hornet_X; +2 Ответить
2. Wolex 113 02.11.15 11:58 Сейчас в теме
(1) TODD22, несомненно, можно использовать и хранилище значения. где-то этот вариант даже предлагался. но в моем случае меньше кода и всё работает. поскольку открытие всех форм происходит по сути в рамках одного объекта, меня такой вариант на данном этапе вполне устроил.
но если Вы объясните, почему именно "нужно", буду признателен за ликбез.
"Мы все учились понемногу,
Чему-нибудь и как-нибудь..."
3. TODD22 18 02.11.15 12:38 Сейчас в теме
(2)
но в моем случае меньше кода и всё работает.

С хранилищем кода будет столько же....

Почему именно хранилище значения не знаю. Но на спеца по платформе есть задача в которой нужно организовать функцию подбора товаров в таб часть документа. Она решается через хранилище значения.
4. the1 615 02.11.15 17:11 Сейчас в теме
(3) TODD22, так то подбор - из другой формы другого объекта ИБ. Автор же манипулирует формами и данными внутри ОДНОГО объекта. Так что решение ТС мне кажется более изящным.
Nasty_d; neocomspb; batsy66; bulpi; ojiojiowka; Ali1976; alest; Chrizt; +8 Ответить
5. inlimbo 05.11.15 06:17 Сейчас в теме
Тоже пришлось сталкиваться с подобной задачей для мобильного решения, но реквизитов было немного. Поэтому решение было связано с передачей заполненной структуры.
Беру на заметку вашу статью! спасибо!
6. Тильчик 05.11.15 07:56 Сейчас в теме
Там все просто, могу привести пример если актуально
7. Тильчик 05.11.15 08:00 Сейчас в теме
ПараметрыОткрываемойФормы = Новый Структура;
	ПараметрыОткрываемойФормы.Вставить("РабочийЦентр",Объект.РабочийЦентр);
	ПараметрыОткрываемойФормы.Вставить("АдресВХ",ПолучитьТаблицуДляРасшития());
	ОткрытьФорму("Документ.ПланВЦех.Форма.ФормаРасшивкиПоСотрудникам",ПараметрыОткрываемойФормы,ЭтаФорма);


Вот как формируется АдресВХ:

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

Возврат АдресВХ;
	
КонецФункции
Показать


На открываемой форме ПриСозданииНаСервере читаешь эти параметры.
8. Wolex 113 05.11.15 12:19 Сейчас в теме
(7) Тильчик, спасибо за пример, наверняка кому-нибудь тоже пригодится. может, даже и мне )))
но это имеет смысл при передаче в другие объекты либо при передаче произвольных данных. в моем случае я бы не стал так делать. у меня и таблиц в обработке с десяток, и реквизитов в них хватает...
9. TODD22 18 05.11.15 12:32 Сейчас в теме
(8)
у меня и таблиц в обработке с десяток

Таблица.Выгрузить() и Таблица.Загрузить()
13. Wolex 113 05.11.15 12:59 Сейчас в теме
(9) TODD22, каждую? а смысл, если можно оптом?
10. herfis 374 05.11.15 12:39 Сейчас в теме
Мне кажется, я участвовал в одном из обсуждений, где было выработано такое решение. Не помню, кто именно его предложил :)
Помню, что метод глобального контекста КопироватьДанныеФормы(), к моему стыду, стал для меня открытием.
Так что статье плюс.
11. biimmap 83 05.11.15 12:40 Сейчас в теме
я в ЗУП 3.0 добавлял новые формы к документу. для того чтоб форма была связана с текущим объектом в параметрах открытия нужно добавить поле "Ключ" и записать туда "Объект.Ссылка". прекрасно работает. хотя некоторые и жалуются на производительность... типовая конфигурация не брезгует таким способом открытия форм.
12. Wolex 113 05.11.15 12:58 Сейчас в теме
(11) biimmap, да, про ключ я тоже читал. и был не прочь его использовать. но у внешней обработки нет ссылки, а у ее доп. форм параметра "ключ"
14. herfis 374 05.11.15 13:02 Сейчас в теме
(11) biimmap, В статье речь о другом.
15. biimmap 83 05.11.15 13:07 Сейчас в теме
я обратил внимание на ссылочные типы... для обработки только хранилище значения. пример использования есть в ЗУПе 3-м. работа формы справочника штатного расписания.
16. sigmov 23.09.16 09:51 Сейчас в теме
А если записывать объект из дополнительной формы, то в базе будет перезаписан исходный объект, или будет создан новый как копия исходного?
17. sigmov 23.09.16 09:59 Сейчас в теме
(16) sigmov, Да, сам же протестировал - к сожалению элемент будет считаться "новым". (т.е. КопироватьДанныеФормы УИД не переносит)

Мое когда-то решение проблемы
Построено на РеквизитФормыВЗначение и его собратьях

На вызывающей форме:
//{{ [+](фрагмент добавлен) <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
#Область РедактированиеОбъектовВСтороннихФормах
// Шаблон редактирования объекта в подформе (автор: Лелеко)

// Вызывает редактирование открытых в данной форму объектов в сторонней форме
// Параметры:
//	ИмяФормы - строка - путь открываемой формы (по стандарту она должна иметь реквизит 'объект' объектного типа)
//  Реквизит - строка - имя реквизита передаваемого для редактирования
//	ПараметрыФормы - структура - параметры которые будут переданы в открываемую форму
//	ПараметрыОбратногоВызова - структура - параметры, которые получит "ОбработкаРезультатовРедактированияОбъектаВСтороннейФорме" в одноименный параметр
&НаКлиенте
Процедура ВызовРедактированияВСтороннейФорме(ИмяФормы, Реквизит = "Объект", ПараметрыФормы = Неопределено, ПараметрыОбратногоВызова = Неопределено)

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

КонецПроцедуры

// Обрабатывает результаты редактирования объектов в сторонних формах
// Параметры:
//	ОбъектРезультат - объект - отредактированный объект (ДанныеФормыСтруктура)
//	ПараметрыОбратногоВызова - структура - переданные при вызове параметры
Процедура ОбработкаРезультатовРедактированияОбъектаВСтороннейФорме(ОбъектРезультат, ПараметрыОбратногоВызова)
	
	Если ОбъектРезультат <> Неопределено Тогда
		// {{ Предобработка <вставьте свой код сюда>
		// }}
		ЗначениеВРеквизитФормы(
			ДанныеФормыВЗначение(
				ОбъектРезультат, 
				ТипЗнч(РеквизитФормыВЗначение(ПараметрыОбратногоВызова.Реквизит))),
			ПараметрыОбратногоВызова.Реквизит);
		// {{ Постобработка <вставьте свой код сюда>
		// }}
	КонецЕсли;
		
КонецПроцедуры

#КонецОбласти
//}} <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
Показать
На принимающей форме:
//{{ [+](фрагмент добавлен) <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
#Область РедактированиеОбъектовВСтороннихФормах

// Событие создания на сервере (может вызвать ошибку компиляции модуля)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПриСозданииНаСервереУстановкаОбъекта(Отказ, СтандартнаяОбработка);
КонецПроцедуры

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

// Команда сохранения результатов исполнения
&НаКлиенте
Процедура Заполнить(Команда)
	Закрыть(ЭтаФорма.Объект);
КонецПроцедуры

#КонецОбласти
//}} <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ='yyyy.MM.dd HH:mm:ss'">
Показать
18. dgolovanov 23.09.16 15:07 Сейчас в теме
(17) sigmov, круто у вас настроен шаблон вставки кода автора изменения ))
19. Wolex 113 23.09.16 15:08 Сейчас в теме
(17) sigmov, не приходило в голову проверить запись. спасибо, взял на заметку.
нечто подобное Вашему решению у меня тоже в мыслях было. пока не наткнулся на описанное в статье. сэкономило много времени.
20. rasswet 82 28.09.16 08:43 Сейчас в теме
благодарю, думаю многим будет полезно
21. suepifanov 22.03.17 09:31 Сейчас в теме
Делал редактирование зависимой табличной части документа в диалоге, где редактируемая табличная часть открывается с отбором по значению первой табличной части.

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

Как у этот метода с производительностью?
Документ самописный и достаточно объемный - 4 таб. части, десятки реквизитов...
22. Wolex 113 23.03.17 10:40 Сейчас в теме
(21) тормозов не наблюдал. использую его в своей внешней обработке для открытия доп. форм, передачи данных в них и обратно. у объекта "Обработка" чуть меньше десятка своих реквизитов, полтора десятка табличных частей, в каждой из которых от 5-ти до 15-ти реквизитов. передаётся мнгновенно
23. xSev 24.08.17 08:11 Сейчас в теме
Столкнулся с такой проблемой - команда Закрыть(Объект) возвращает значение по умолчанию(неопределенно) в процедуру обработку(РезультатВыбора).

Форма родитель:
&НаКлиенте
Процедура ПродатьАбонемент(Команда)

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

КонецПроцедуры

&НаКлиенте
Процедура ПродатьАбонементПослеЗакрытияФормы(РезультатВыбора, ДопПараметры) Экспорт

	КопироватьДанныеФормы(РезультатВыбора, Объект);

КонецПроцедуры

Показать


Форма приёмник:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	КопироватьДанныеФормы(ВладелецФормы.Объект, Объект);
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Закрыть(Объект);
КонецПроцедуры

Показать
24. Wolex 113 24.08.17 15:59 Сейчас в теме
(23) а обе формы относятся к одной и той же обработке? обработка встроенная или внешняя?
25. xSev 28.08.17 12:37 Сейчас в теме
(24) к одной обработке, обработка встроенная.
сделал в итоге через оповещение формы
26. Wolex 113 29.08.17 16:09 Сейчас в теме
(25) несколько раз перечитал ваш код, сравнил с рабочим у меня. всё должно работать. значит, где-то идёт переназначение или ещё что-нибудь. если предоставите cf или хотя бы обработку, попробую найти проблему
27. xSev 31.08.17 07:11 Сейчас в теме
(26)
Может дело в том, что конфигурация в режиме совместимости интерфейса 8.2 и режиме совместимости 8.3.2 работает?
Конфигурация самописная
Прикрепленные файлы:
РМК.epf
28. Wolex 113 06.09.17 21:54 Сейчас в теме
(27) режим совместимости, похоже, ни при чем. у меня она тоже не сработала.
а вот новая, там же добавленная - сработала. возможно, вы при создании доп. форм указывали "произвольная", а не "форма обработки"?
во вложении с моей добавленной формой
Прикрепленные файлы:
РМК.epf
29. Will79 15.09.18 12:29 Сейчас в теме
Не приходилось решать подобную задачу в далеком 2015-м. Сегодня, в 2018 на 8.3.11 у меня кода получилось значительно меньше, просто вызываю КопироватьДанныеФормы() для передачи данных в обе стороны.
Родительская форма:
ОткрытьФорму(ПолноеИмяФормы("ФормаПараметровПоискаРесурсов"),,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Дочерняя форма:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	КопироватьДанныеФормы(ВладелецФормы.Объект, Объект);
КонецПроцедуры

&НаКлиенте
Процедура МояКоманда(Команда)
	КопироватьДанныеФормы(Объект, ВладелецФормы.Объект);
	Закрыть();
КонецПроцедуры
Показать
Galukich; +1 Ответить
Оставьте свое сообщение

См. также

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

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

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

1 стартмани

09.09.2019    11452    18    bmk74    4    

Интерактивная справка по объектам 1С (автономное расширение)

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

База знаний, подключаемая к объектам основной базы. Ведётся интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    5702    27    sapervodichka    30    

Визуальный html WYSIWYG редактор без сторонних библиотек на управляемых формах

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

Простой и удобный html редактор без сторонних библиотек.

1 стартмани

31.08.2020    3143    7    ivanov660    10    

Делаем из СКД Excel (ну, почти)

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

Несложный в использовании способ внедрить в обычный отчет СКД возможность редактировать значения ресурсов отчета (а-ля Excel) и получать отредактированные значения для дальнейшей обработки.

1 стартмани

26.01.2020    9000    13    herfis    16    

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

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

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

1 стартмани

31.05.2017    32523    150    tormozit    23    

Индикация прогресса выполнения фонового задания на управляемой форме внешней обработки

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

Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".

1 стартмани

27.12.2019    10388    15    1sig    14    

Декомпиляция условного оформления

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

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

2 стартмани

23.12.2019    7603    35    XilDen    6    

Многоуровневые списки выбора с оформлением элементов

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

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

1 стартмани

17.12.2019    8392    2    azhilichev    5    

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

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

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

1 стартмани

27.10.2018    17033    12    tormozit    31    

Удобный выбор из таблицы/дерева в УФ

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

Выбор из таблицы значений или дерева значений в выпадающем списке рядом с полем ввода - УФ, быстро и просто!

1 стартмани

12.08.2019    13354    7    Yashazz    18    

[Механизм интерфейса] Свой флажок (чекбокс)

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

Создадим свой флажок для интерфейса, используем простой универсальный алгоритм.

1 стартмани

09.08.2019    15803    18    rpgshnik    43    

Отбор на управляемой форме из списка значений

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

Пример простого удобного отбора любых данных ссылочного типа на управляемой форме. Работа обработки проверена на релизе: 1С:Предприятие 8.3.13.1513.

1 стартмани

09.08.2019    17871    20    nagaitseff    6    

Лучший подарок для бухгалтера - счёты 8.2 (со звуком) Промо

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

(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.

1 стартмани

13.05.2011    40357    24    Tatitutu    45    

Обработка-редактор HTML

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

Редактор HTML для управляемого интерфейса 8.3.

1 стартмани

10.06.2019    8107    64    ValeriVP    11    

Рисуем и распознаем нарисованное при помощи нейросети

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

Используем нейронную сеть для распознавания нарисованных объектов.

1 стартмани

03.10.2018    14463    44    DO_WHILE_LOOP    28    

Рисуем диаграммы в metadata.js

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

Не одной же литературой заниматься?

1 стартмани

20.09.2018    16890    3    1c-intelligence    77    

Универсальная ТТН (Т-1 от 2011 г. и 1-Т от 1997 г.) для платформы 1С 8.3 Промо

Печатные формы документов Оптовая торговля Производство готовой продукции (работ, услуг) Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Учет ТМЦ v8 КА1 БП3.0 УТ11 Россия БУ УУ Платные (руб)

Внешняя печатная форма ТТН (Товарно-транспортной накладной Т-1 от 25.07.11) и 1-Т с сохраняемыми реквизитами для конфигураций: Бухгалтерия Предприятия (БП) редакции 3.0, Управление торговлей (УТ) версии 11.x. Скорее всего, подойдет и для других типовых, не было возможности проверить.

3500 руб.

19.10.2016    21441    8    12    

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

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

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

1 стартмани

31.07.2018    23762    139    Plotks2017    27    

Продвинутое рисование в табличном документе (стрелок и не только)

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

Вспоминаем геометрию и основы компьютерной графики. Матрицы и аффинные преобразования на плоскости.

1 стартмани

24.07.2018    15726    18    WalterMort    29    

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

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

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

1 стартмани

17.07.2018    47253    17    kalyaka    16    

Интерактивный интерфейс Промо

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

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

1 стартмани

29.10.2011    18173    2    Vin_Tik    9    

Иерархическая диаграмма

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

Концепция диаграммы по иерархической структуре данных, например по номенклатуре (продажи или остатки на складах).

2 стартмани

17.06.2018    13755    16    DrAku1a    6    

Рисуем стрелки в табличном документе

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

Рисуем стрелки средствами 1С .

1 стартмани

01.06.2018    15420    9    pm74    9    

Программная работа с графическими схемами. Готовое решение

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

Работоспособное, проверенное на практике, простое и удобное программное управление графическими схемами.

1 стартмани

18.02.2018    18632    20    Yashazz    13    

Цветовые схемы для конфигуратора 1С (Популярные цветовые схемы для C# - теперь и для 1С) (Теперь 8.2 - 8.3) Промо

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

Тёмные цветовые схемы кода. То, что было доступно всем передовым средствам разработки, теперь доступно и на 1С. 13.12.17 UPD: Теперь работает с платформой 8.3

3 стартмани

07.10.2013    35095    86    Chernov_Dmitriy    82    

Тестирование интерфейса в обычном приложении 8.2 при помощи SikuliX

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

Как же не хватает клиента тестирования на платформе 8.2. Не кликнешь на кнопку, не выберешь из списка, не проверишь видит ли надпись пользователь. Воспользуемся внешним инструментом SikuliX, который позволит нам протестировать функционал форм. Данный инструмент легко встраивается в линию сборки и может "дружить" с уже известным многим Open-source продуктами.

1 стартмани

03.01.2018    29545    5    kraynev-navi    41    

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

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

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

1 стартмани

18.11.2017    32059    35    bonv    10    

Программное создание элементов графической схемы (через XSLT)

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

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

1 стартмани

20.07.2017    21058    62    lazarenko    18    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

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

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

1 стартмани

13.07.2015    47125    428    ПерваяСистема    147    

Простой редактор плана помещения JavaScript

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

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    21019    94    igel9780    22    

Настройка начальной страницы (Рабочего стола)

Работа с интерфейсом Рабочее место Универсальные обработки v8 1cv8.cf Абонемент ($m)

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

2 стартмани

19.10.2016    37486    217    Erne100    24    

[Расширение] Стартовые страницы. Автозапуск форм при старте 1С. (8.3.9+, без доработки конфигурации)

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

Уверен, что в большинстве случаев список справочников, отчетов, обработок (объектов 1С в целом), к которому обращаются пользователи после запуска конфигурации 1С, раз от раза меняется не сильно. Так почему бы немного не упростить процесс открытия часто используемых форм? Данное расширение позволяет настроить автоматическое открытие различных форм объектов сразу после запуска 1С. Список форм настраивается индивидуально для каждого пользователя. Работает на платформе 8.3.9, без доработки конфигурации.

1 стартмани

03.10.2016    21528    82    Artem-B    20    

V8Reader (с расширенным анализом форм) Upd. Промо

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

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

1 стартмани

27.01.2012    75418    573    bambr1975    303    

Конструктор условного оформления

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

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

1 стартмани

27.09.2016    17201    16    Fragster    7    

HTTP-сервис: отчеты [Расширение]

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

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    26736    135    Stepa86    15    

Механизм доп. реквизитов и сведений

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

Как к новому справочнику подключить механизм дополнительных реквизитов и сведений

2 стартмани

23.06.2016    26095    30    piffoff    16    

Кнопки управления группировками табличного документа для управляемых форм Промо

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

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

1 стартмани

02.06.2015    26516    23    unichkin    9    

Блокировка баннеров при помощи расширения

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

Примеры использования расширений

1 стартмани

09.06.2016    14021    12    oslokot    16    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    49830    50    yuraos    17    

Визуальный редактор цветовых схем подсветки синтаксиса 1С + импорт схем Visual Studio

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

Данная обработка призвана облегчить настройку рабочего места программиста 1С, а именно улучшить визуальное восприятие кода, уменьшить утомляемость, и, как следствие, увеличить общую производительность труда!

1 стартмани

29.01.2016    15711    79    ram3    27    

Инструмент для создания веб приложений на основе 1С REST сервиса

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

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

1 стартмани

13.10.2015    26743    77    dmzubr    23    

Асинхронная загрузка данных на Управляемую Форму. Прогресс бар (УФ 8.3). Индикация состояния процесса

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

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

1 стартмани

09.10.2015    36042    128    pbazeliuk    6    

Визуальный html редактор на управляемых формах

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

Мы рассмотрим некоторые особенности и возможности подключения сторонних визуальных html редакторов на javascript - TinyMCE, CK Editor. С помощью приложенной обработки Вы сможете попробовать в действии полноценный и удобный визуальный html редактор, а при желании перенести подобный функционал к себе.

1 стартмани

30.09.2015    29202    205    ivanov660    41    

Универсальное настраиваемое рабочее место (Версия 2.0)

Универсальные обработки Работа с интерфейсом Рабочее место v8 1cv8.cf Абонемент ($m)

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

3 стартмани

13.06.2015    17079    54    yuraskid    29