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

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

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

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

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

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

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

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

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

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

Итак.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наименование Файл Версия Размер
Работа с дополнительными формами
.epf 9,97Kb
20.09.16
8
.epf 9,97Kb 8 Скачать

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

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

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

Почему именно хранилище значения не знаю. Но на спеца по платформе есть задача в которой нужно организовать функцию подбора товаров в таб часть документа. Она решается через хранилище значения.
4. the1 388 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 102 05.11.15 12:19 Сейчас в теме
(7) Тильчик, спасибо за пример, наверняка кому-нибудь тоже пригодится. может, даже и мне )))
но это имеет смысл при передаче в другие объекты либо при передаче произвольных данных. в моем случае я бы не стал так делать. у меня и таблиц в обработке с десяток, и реквизитов в них хватает...
9. TODD22 18 05.11.15 12:32 Сейчас в теме
(8)
у меня и таблиц в обработке с десяток

Таблица.Выгрузить() и Таблица.Загрузить()
13. Wolex 102 05.11.15 12:59 Сейчас в теме
(9) TODD22, каждую? а смысл, если можно оптом?
10. herfis 283 05.11.15 12:39 Сейчас в теме
Мне кажется, я участвовал в одном из обсуждений, где было выработано такое решение. Не помню, кто именно его предложил :)
Помню, что метод глобального контекста КопироватьДанныеФормы(), к моему стыду, стал для меня открытием.
Так что статье плюс.
11. biimmap 13 05.11.15 12:40 Сейчас в теме
я в ЗУП 3.0 добавлял новые формы к документу. для того чтоб форма была связана с текущим объектом в параметрах открытия нужно добавить поле "Ключ" и записать туда "Объект.Ссылка". прекрасно работает. хотя некоторые и жалуются на производительность... типовая конфигурация не брезгует таким способом открытия форм.
12. Wolex 102 05.11.15 12:58 Сейчас в теме
(11) biimmap, да, про ключ я тоже читал. и был не прочь его использовать. но у внешней обработки нет ссылки, а у ее доп. форм параметра "ключ"
14. herfis 283 05.11.15 13:02 Сейчас в теме
(11) biimmap, В статье речь о другом.
15. biimmap 13 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 102 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 102 23.03.17 10:40 Сейчас в теме
(21) тормозов не наблюдал. использую его в своей внешней обработке для открытия доп. форм, передачи данных в них и обратно. у объекта "Обработка" чуть меньше десятка своих реквизитов, полтора десятка табличных частей, в каждой из которых от 5-ти до 15-ти реквизитов. передаётся мнгновенно
23. xSev 24.08.17 08:11 Сейчас в теме
Столкнулся с такой проблемой - команда Закрыть(Объект) возвращает значение по умолчанию(неопределенно) в процедуру обработку(РезультатВыбора).

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

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

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

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

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

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

Показать


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

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

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

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

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

См. также

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 Россия Абонемент ($m) Работа с интерфейсом

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

1 стартмани

09.09.2019    2309    4    bmk74    0       

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

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

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

1 стартмани

12.08.2019    2859    4    Yashazz    18       

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

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

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

1 стартмани

09.08.2019    4029    4    rpgshnik    37       

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

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

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

1 стартмани

09.08.2019    4157    4    nagaitseff    6       

Изменяющееся контекстное меню в 1С 8.3 44

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

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

1 стартмани

06.08.2019    4176    1    signum2009    14       

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

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

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

3 стартмани

22.04.2019    9486    51    suepifanov    61       

Шпаргалка разработчика для работы с формами 23

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

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

3 стартмани

31.10.2018    7790    68    ELAM    3       

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

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

27.10.2018    9170    11    tormozit    28       

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

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

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

1 стартмани

31.07.2018    13803    127    Plotks2017    24       

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

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

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

1 стартмани

24.07.2018    8033    16    WalterMort    27       

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

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

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

1 стартмани

17.07.2018    19436    13    kalyaka    15       

Управление состоянием формы через конечный автомат 81

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

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

1 стартмани

19.06.2018    9886    11    kalyaka    35       

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

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

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

2 стартмани

17.06.2018    7115    14    DrAku1a    4       

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

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

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

1 стартмани

18.02.2018    11344    16    Yashazz    13       

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

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

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

1 стартмани

03.01.2018    19508    2    kraynev-navi    40       

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

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

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

1 стартмани

18.11.2017    19126    24    bonv    5       

Размеры управляемой формы 100

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

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

1 стартмани

08.10.2017    17494    46    json    8       

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

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

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

1 стартмани

20.07.2017    13828    49    lazarenko    16       

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

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

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

1 стартмани

31.05.2017    24079    143    tormozit    20       

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

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

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

1 стартмани

23.11.2016    14803    91    igel9780    16       

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

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

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

2 стартмани

19.10.2016    24097    186    Erne100    24       

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

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

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

1 стартмани

03.10.2016    15852    78    Artem-B    19       

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

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

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

1 стартмани

27.09.2016    12718    15    Fragster    6       

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

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

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

2 стартмани

30.08.2016    18824    125    Stepa86    15       

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

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

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

1 стартмани

17.02.2016    38440    45    yuraos    17       

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

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

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

1 стартмани

29.01.2016    11454    74    ram3    27       

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

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

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

1 стартмани

13.10.2015    21290    82    dmzubr    23       

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

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

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

1 стартмани

09.10.2015    28653    133    pbazeliuk    6       

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

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

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

1 стартмани

30.09.2015    20638    183    ivanov660    26       

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

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

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

1 стартмани

13.07.2015    39441    421    ПерваяСистема    140       

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

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

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

3 стартмани

13.06.2015    11937    120    yuraskid    29       

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

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

02.06.2015    21596    31    unichkin    9       

Управляемая форма 1С 8.2 (8.3) – работа с деревом значений и таблицей значений. Часть I (Основы) 64

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

Как известно, в платформе 1С 8.1 не составляло никакого труда связать дерево значений с табличным полем на форме, единственное, что при этом нужно было не забыть, так это СоздатьКолонки(). В управляемом приложении 1С 8.2 (8.3) сделать это не так просто, как кажется на первый взгляд. В данной статье речь пойдет о программном создании дерева значений (таблицы значений) на управляемой форме в управляемом приложении 1С

2 стартмани

14.05.2015    69543    25    ll13    13       

[БП 3.0] [ЗУП 3.1 ] [БГУ 2.0] [УТ 11.4 ] [Расширения] Отключение регламента, оповещений и пр. 43

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 v8::БУ БП3.0 Россия Windows Абонемент ($m) Работа с интерфейсом

Облегчить жисть БП 3.0 отключением всякого разного можно! Обработка позволяет отключить ряд оповещений, регламентных заданий (подробно описано в http://infostart.ru/public/303564/). Кроме того, позволяет более подробную настройку использования: - Регламентных и фоновых заданий; - Информации для форм; - Задач бухгалтера (где они есть). 21.01.2019 Версии с новым режимом совсместимости для основных конфигураций С удовольствием выслушаю (по возможности реализую) сообщество, что ещё можно сделать, чтобы программа работала по шустрее.

1 стартмани

04.03.2015    22302    131    Alex_E    17       

Подсистема "Планировщик" (версия 1.1) 138

Отчеты и формы no Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Работа с интерфейсом

Конфигурация с подсистемой "Планировщик" (календарь). Бесплатная открытая версия для свободного использования не включает двустороннюю интеграцию с сервисом Google и Outlook.com.

5 стартмани

02.03.2015    55603    463    vandalsvq    62       

Анимация фона элементов на форме в стиле JQuery 74

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

К сожалению, у платформы 1С не так много красивостей, которыми обычно сдабривают формы обычных web-страниц. Нам недоступны эффекты JQuery и других javascript-библиотек. А иногда хочется сделать необычно, красиво и удобно.

1 стартмани

18.02.2015    13837    27    kraynev-navi    9       

Произвольное размещение и добавление кнопок на управляемых формах пользователем 37

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

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

1 стартмани

07.11.2014    16152    43    tvixeg    14       

[ТАКСИ] Шаблон внешней обработки...и не только 207

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

Обработка предназначена для лентяев, к каковым, в первую очередь, отношу себя. Это в некотором роде шпаргалка в виде шаблона внешней обработки. Для создания новой копируем эту, удаляем ненужное, вставляем нужное - получаем результат. Чем ваять с нуля, каждый раз прописывая одно и то же, проще использовать заготовку, подобную этой... 24.11.2018 - Версия 1.21 - что-то добавил, что-то поправил.... 16.04.2019 - По просьбам трудящихся (немногочисленным, правда) оставил последнюю версию 1.21, дабы не было путаницы... 17.04.2019 - Версия 1.22 Вернул пример сохранения табличного документа в разных форматах и чтения DBF из версии 1.16 (как потерялось - сам не понял)

2 стартмани

22.09.2014    45971    687    Alex_E    27       

Визуализация и интерактивное изменение дерева значений. 68

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

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

1 стартмани

01.08.2014    16741    99    Belkin_Sergey    27       

Локализация конфигурации с помощью Google 13

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

Обработка позволяет выполнять перевод интерфейсов в любой конфигурации 1С средствами Google. За основу взята обработка: http://infostart.ru/public/190890/

1 стартмани

06.06.2014    15399    32    x-tremeall    6       

Прогресс-бар длительных серверных операций (БСП) 45

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

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

1 стартмани

23.04.2014    23990    255    herfis    14       

Алгоритмы. Часть 1.1. Динамические соединения. 186

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

Конспект первой лекции из свежего курса Принстонского университета США за 2014 год. Вольный перевод с английского с реализацией примеров на 1С. Курс в целом достаточно интересный и полезный для общего развития. Перевел и адаптировал только первую лекцию (в 1 части 11 лекций, 2 часть - еще не завершена преподавателями). Первоисточник на английском - https://www.coursera.org/course/algs4partI. Если сообщество посчитает материал полезным - займусь переводом следующих лекций (но это довольно трудоемко). Enjoy! :)

1 стартмани

04.04.2014    27745    23    Aleksey.Bochkov    33       

HTML редактор для 1С (1С HTML IDE) 74

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

Стандартный для 1с интерфейс не всегда может удовлетворить заказчика. В этом случае возникает необходимость реализовывать некоторые формы с использованием HTML. Как известно, встроенный в 1с объект "поле табличного документа" работает с использованием старых технологий. В результате, страничка, написанная в сторонней IDE в 1с может отображаться как угодно, но только не так как требуется. Когда у меня появилась задача сделать рабочий стол на HTML я сразу понял, что писать веб-код необходимо сразу на платформе 1с, что бы видеть результат Online и корректировать его. Для меня веб-программирование заканчивается знанием тега . Разнообразные глюки и особенности веб-среды мне просто неизвестны, поэтому сразу видеть что получается - самое то. Представляю один из результатов моей работы - IDE на управляемых формах, задача которой - генерация HTML документа, который будет правильно отображаться в 1с.

1 стартмани

20.02.2014    25454    170    Nikola23    28       

Изучаем мобильную платформу 8.3.4: геопозиционирование 155

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

Блеск и нищета geo-инструментов мобильной платформы 8.3.4. Пишем письмо турецкому султану. Но Чекин, как в Foursquare уже реально!

1 стартмани

14.02.2014    57060    198    barelpro    43       

Графический индикатор процесса в табличной части на Управляемых формах 50

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

Графический индикатор процесса на Управляемых формах, для любой ячейки в табличной части формы

1 стартмани

04.02.2014    18370    88    amyd    25       

Яндекс-карта (API 2) + геокодер Яндекс 49

Инструменты и обработки no Внешняя обработка (ert,epf) v8 Россия Абонемент ($m) Работа с интерфейсом

Пример использования Яндекс-карт с возможностью поиска по строке или получением адреса по клику на карте

28.01.2014    29688    1590    BenGunn    44