Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример

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

Разработка - Практика программирования

Динамический список программное создание элементов элементы формы управляемая форма

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

https://awards.infostart.ru/img/3.png

https://awards.infostart.ru/img/infostartawards.png 2018

Добрый день, Коллеги!

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

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

	//Создание колонок на основание МассивКолонок
	Для Каждого Элемента Из МассивКолонок Цикл
		ПараметрыКолонки = СтрЗаменить(Элемента,",",Символы.ПС);
		Если СтрЧислоСтрок(ПараметрыКолонки) > 1 Тогда
			Заголовок = СтрПолучитьСтроку(ПараметрыКолонки, 1);
			ИмяКолонки = СтрПолучитьСтроку(ПараметрыКолонки, 2);
		Иначе
			Заголовок = "";
			ИмяКолонки = ПараметрыКолонки; 
		КонецЕсли;	
		НоваяКолонкаТаблицы = Элементы.Добавить(ИмяСписка + ИмяКолонки, Тип("ПолеФормы"), ТаблицаФормы);
		Если Заголовок <> "" Тогда НоваяКолонкаТаблицы.Заголовок = Заголовок; КонецЕсли;
		НоваяКолонкаТаблицы.ПутьКДанным = ИмяСписка + "." + ИмяКолонки; 	
	КонецЦикла;
	
	//Задаем действия (События) на основание СписокДействий, если он определен
	Если СписокДействий <> Неопределено Тогда 	
		ПереченьСвойств = "ПриИзменении
						|Выбор
						|ПриАктивизацииСтроки
						|ВыборЗначения
						|ПриАктивизацииПоля
						|ПриАктивизацииЯчейки
						|ПередНачаломДобавления
						|ПередНачаломИзменения
						|ПередУдалением
						|ПриНачалеРедактирования
						|ПередОкончаниемРедактирования
						|ПриОкончанииРедактирования
						|ОбработкаВыбора
						|ПередРазворачиванием
						|ПередСворачиванием
						|ПослеУдаления
						|ПриСменеТекущегоРодителя
						|ОбработкаЗаписиНового
						|ПриСохраненииПользовательскихНастроекНаСервере
						|ПередЗагрузкойПользовательскихНастроекНаСервере
						|ПриЗагрузкеПользовательскихНастроекНаСервере
						|ПриОбновленииСоставаПользовательскихНастроекНаСервере
						|ОбработкаЗапросаОбновления
						|ПриПолученииДанныхНаСервере
						|НачалоПеретаскивания
						|ПроверкаПеретаскивания
						|ОкончаниеПеретаскивания
						|Перетаскивание";
		Для Счетчик = 1 по 28 Цикл
			ИмяСвойства = СтрПолучитьСтроку(ПереченьСвойств, Счетчик);
			Элементы[ИмяСписка].УстановитьДействие(ИмяСвойства,?(СписокДействий.Свойство(ИмяСвойства),СписокДействий[ИмяСвойства],""));
		КонецЦикла;
	КонецЕсли;	

КонецПроцедуры 
 
 
Процедура на момент публикации 19.01.18 10:59

Но если мы что-то создаем программно, то должны уметь и удалять это программно. Поэтому вытекающая процедура это удаление списка:

&НаСервере
Процедура УдалениеДинамическогоСписка(ИмяСписка);	
	
	Если ЭтаФорма.Элементы.Найти(ИмяСписка) <> Неопределено Тогда
		//Удаляем реквизиты формы
	    МассивУдаляемыхРеквизитов = Новый Массив;
		МассивУдаляемыхРеквизитов.Добавить(ИмяСписка);
		ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов); 	
		
		//Удаляем эелементы формы
		Элементы.Удалить(Элементы[ИмяСписка]);	
	КонецЕсли;
	
	//Удаляем командную панель свою, если есть
	Если Элементы.Найти(ИмяСписка + "КоманднаяПанель2") <> Неопределено Тогда
		Элементы.Удалить(Элементы[ИмяСписка + "КоманднаяПанель2"]);
	КонецЕсли;
	
	//Удаляем группу созданую при условие если нужна своя командная панель
	Если Элементы.Найти("Группа" + ИмяСписка + "CоСвоейКоманднойПанелью") <> Неопределено Тогда
		Элементы.Удалить(Элементы["Группа" + ИмяСписка + "CоСвоейКоманднойПанелью"]);		
	КонецЕсли;

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

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

 

Пример использования (простой):

 


Пример использования (сложный):

Демонстрация работы показана на 1С:Комплексная автоматизация 2 (УТ11, ERP), но так же будет работать и в режиме мистической совместимости 8.2.13 (1С:Комплексная автоматизация 1.1), так как именно для старой доброй 1.1 и делалось и используется. Для простоты восприятия пример использования представлен на видео (без озвучки правда), сама обработка прилагается к публикации.

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

 

Пример из практики - история разработки этой процедуры

Есть некая разработка регистрации первичных документов. Управление производится через АРМы. Если в начале жизни разработки, АРМ был рассчитан всего на три документа, то мне было несложно разместить все элементы и описать логику их работы. Но время идёт и хотелки растут, вот уже документов стало пять... А потом попросили ещё пять добавить. И я чувствую, это их (бухгалтерию) не остановит. Тут я и понял, что дальнейшее сопровождение АРМа просто мучительно для меня. Переосмысление привело к разработке с нуля, не помню, кто сказал, но перефразирую: "Когда ты чувствуешь что обрастаешь г...внокодом - остановись и начни с нуля". Так и сделал.

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

Визуально для конечного пользователя на форме ничего не изменилось за исключением исчезновения "страниц" и появления переключателя "ТипДокумента". Но с технической стороны, изменения колоссальные:

 

А теперь о неприятном!

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

Казалось бы, почему бы не обратиться просто... Элементы[ИмяЭлемента]КоманднаяПанель.Автозаполнение = ЛОЖЬ, но нет такого свойства. Поэтому пришлось применять хитрости (костыли).

 

Командная панель.

Вопрос с командной панелью решил в процедуре публикации следующим образом:

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

2. Создается программно в выше созданной группе элемент группа с видом командная панель. Именно она теперь будет основной командной панелью будущего динамического списка.

3. Добавляется создаваемый программно элемент таблица формы (динамический список).

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

 

Контекстное меню.

Вопрос по отключению "Автозаполнения" в контекстном меню - решения не нашел. Подозреваю, что это невозможно технически.

 

Удачного кодинга!

 

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

Наименование Файл Версия Размер
Демонстрационный пример работы процедуры и её использования (обработка которая показана в видео)
.epf 9,96Kb
22.03.19
70
.epf 1.0.0.1 9,96Kb 70 Скачать

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

Лучшие комментарии
14. rpgshnik 2159 26.01.18 05:26 Сейчас в теме
(13) Можно)
Но в моём случае пришлось изменить всё таки запроса (как без изменения запроса не в курсе).
Но нужно это делать аккуратно, чтобы таблица не слетела и колонки не уехали.
Пример прилагаю, на основание таблицы Партнёры, добавил после дополнительное свойства "Экспедитор"... на демки КА 2.2 делал. Обработку прилагаю.

&НаСервере
Процедура ИзменитьЗапросНаСервере()
	ТекстЗапроса = "ВЫБРАТЬ
	               |	Партнеры.Наименование КАК Наименование,
	               |	Партнеры.Клиент КАК Клиент,
	               |	Партнеры.ОсновнойМенеджер КАК ОсновнойМенеджер,
	               |	Партнеры.Комментарий КАК Комментарий,
	               |	ЕСТЬNULL(ВложенныйЗапрос.Значение, """") КАК Экспедитор,
	               |	Партнеры.Ссылка
	               |ИЗ
	               |	Справочник.Партнеры КАК Партнеры
	               |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |			ПартнерыДополнительныеРеквизиты.Ссылка КАК Ссылка,
	               |			ПартнерыДополнительныеРеквизиты.Свойство КАК Свойство,
	               |			ПартнерыДополнительныеРеквизиты.Значение КАК Значение
	               |		ИЗ
	               |			Справочник.Партнеры.ДополнительныеРеквизиты КАК ПартнерыДополнительныеРеквизиты
	               |		ГДЕ
	               |			ПартнерыДополнительныеРеквизиты.Свойство.Наименование = ""Экспедитор"") КАК ВложенныйЗапрос
	               |		ПО Партнеры.Ссылка = ВложенныйЗапрос.Ссылка";
	
	дСписок.ТекстЗапроса = ТекстЗапроса;
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьЗапрос(Команда)
	ИзменитьЗапросНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура ДобавитьКолонкиПослеИзмененияЗапроса(Команда)
	ДобавитьКолонкиПослеИзмененияЗапросаНаСервере();
КонецПроцедуры
Показать


Если конфигурация на замке - можно с расширениями попробовать.
Прикрепленные файлы:
котКакВывестиДополнительныеСвойства.epf
user693240_abramovskaya; Wishich; +2 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. palsergeich 19.01.18 13:14 Сейчас в теме
Код приятный.
Нужно только понимать, после ПриСозданииНаСервере добавление\удаление реквизитов - очень дорогая операция...
vovan_victory; rpgshnik; +2 Ответить
2. rpgshnik 2159 19.01.18 14:04 Сейчас в теме
(1) спасибо, учту про стоимость операции.
3. pm74 167 19.01.18 18:15 Сейчас в теме
(0) полезная публикация , спасибо
rpgshnik; +1 Ответить
4. Denis Nsk 21.01.18 16:36 Сейчас в теме
Спасибо большое!
Лично для меня, очень полезная публикация. Отметил в избранное на будущее.
Спасибо за потраченное время и подробное описание!
rpgshnik; +1 Ответить
5. Batchir 126 24.01.18 11:28 Сейчас в теме
Спасибо!
Появились хотелки к статье)))
1. Не хватает в статье описания того, как в таком случае устанавливать параметры динамического списка.
В "типовом" варианте это делается на сервере:
МойСписок.Параметры.УстановитьЗначениеПараметра("МойПараметр",ЗначениеМоегоПараметра);
При программном создании "МойСписок" отсутствует и будет валиться на синтаксис.
2. Было бы замечательно если бы описали формирование колонок динамического списка.
Причем с возможностью указания группировок колонок. Не всегда нужно сформировать линейный динамический список.
rpgshnik; +1 Ответить
6. rpgshnik 2159 24.01.18 12:53 Сейчас в теме
(5) Дельные хотелки, когда есть обратная связь особенно интересно.

1. Как-то я забыл про Параметры, у меня их не было, я как-то отборами привык уже))
Добавлю в саму процедуру, обновлю чуть позже.

2. Я конечно не хотел преследовать супер-универсальности, возможно подумаю, но не обещаю.
Да и цель была именно линейные списки. Возможно стоит проще постобработкой список скорректировать группировками... я и отборы не добавляю, так это точно перебор)))
9. rpgshnik 2159 25.01.18 05:54 Сейчас в теме
(5) функционал в процедуру по передачи параметров добавил, публикацию обновил.
	//Заполняем параметры если они были указаны
	Если ПараметрыЗапроса <> Неопределено Тогда
		Для Каждого Параметра из ПараметрыЗапроса Цикл
			РеквизитДинамическийСписок.Параметры.УстановитьЗначениеПараметра(Параметра.Ключ,Параметра.Значение);	
		КонецЦикла;		 
	КонецЕсли;


на второй ваше предложение, используйте группировки, ни их не отборы в процедуру добавлять не планирую
11. Batchir 126 25.01.18 10:13 Сейчас в теме
(9) Да я то что ))) Если мне нужно будет, то конечно буду использовать (и сам смогу дописать). Это хотелка была для полноты статьи: программное создание, размещение динамического списка есть, а программного управления колонками нет (размещение в группах вместе, горизонтально ...).
В любом случае ещё раз спасибо. Саму функцию закинул в шаблоны, думаю пригодиться.
rpgshnik; +1 Ответить
12. rpgshnik 2159 25.01.18 10:42 Сейчас в теме
7. Vlad_2008 13 24.01.18 13:04 Сейчас в теме
Ну синтаксис можно и обойти: ЭтаФорма["МойСписок"].Установить ...

А вот как быть с характеристиками (а-ля "доп. реквизиты" в типовых)? Их можно задать в конфигураторе в свойствах объекта, тут получается что надо все вставлять в запрос для каждой формы объекта.

И, может кто-нибудь знает, как программно добавить колонку с характеристикой, как будто пользователь вынес на форму поле Ссылка.[Мой доп реквизит] ? В запросе-то поля нет, а вот в "Изменить форму - Ссылка - Добавить поля" - есть.
8. rpgshnik 2159 25.01.18 04:44 Сейчас в теме
(7) интересно, но не сталкивался( вообще мало работаю с новыми конфигами, увяз в совместимости 8.2.13
10. rpgshnik 2159 25.01.18 06:19 Сейчас в теме
(7) Мне кажется я понял вас. Я почему-то подумал про ПВХ и дополнительные Свойства Объектов.
А вы говорите просто об реквизитах ссылочного объекта.
Тогда программно практически так же как в моей процедуре, за исключением указания пути к данным, как к объектной модели.

Пример, запрос динамического списка:
ВЫБРАТЬ
	РеализацияТоваровУслуг.Дата,
	РеализацияТоваровУслуг.Номер,
	РеализацияТоваровУслуг.Организация,
	РеализацияТоваровУслуг.Контрагент
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг


Код обработки события, к примеру по нажатию кнопки:
&НаКлиенте
Процедура ДобавитьКолонку(Команда)
	ДобавитьКолонки();
КонецПроцедуры

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


Обработка прилагается:
Прикрепленные файлы:
котКакДобавитьКолонкуПрограммноВместоИзменитьФорму.epf
13. Vlad_2008 13 25.01.18 17:43 Сейчас в теме
(10)
Не, я как раз именно про ПВХ. С реквизитами все понятно и просто. А вот как с характеристиками - вопрос?

В отчете на СКД я могу добавить поле программно (например в отбор) так:
Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]");

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

Так вот и не могу понять можем ли мы программно создать такую колонку? Как указать путь к данным?
14. rpgshnik 2159 26.01.18 05:26 Сейчас в теме
(13) Можно)
Но в моём случае пришлось изменить всё таки запроса (как без изменения запроса не в курсе).
Но нужно это делать аккуратно, чтобы таблица не слетела и колонки не уехали.
Пример прилагаю, на основание таблицы Партнёры, добавил после дополнительное свойства "Экспедитор"... на демки КА 2.2 делал. Обработку прилагаю.

&НаСервере
Процедура ИзменитьЗапросНаСервере()
	ТекстЗапроса = "ВЫБРАТЬ
	               |	Партнеры.Наименование КАК Наименование,
	               |	Партнеры.Клиент КАК Клиент,
	               |	Партнеры.ОсновнойМенеджер КАК ОсновнойМенеджер,
	               |	Партнеры.Комментарий КАК Комментарий,
	               |	ЕСТЬNULL(ВложенныйЗапрос.Значение, """") КАК Экспедитор,
	               |	Партнеры.Ссылка
	               |ИЗ
	               |	Справочник.Партнеры КАК Партнеры
	               |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |			ПартнерыДополнительныеРеквизиты.Ссылка КАК Ссылка,
	               |			ПартнерыДополнительныеРеквизиты.Свойство КАК Свойство,
	               |			ПартнерыДополнительныеРеквизиты.Значение КАК Значение
	               |		ИЗ
	               |			Справочник.Партнеры.ДополнительныеРеквизиты КАК ПартнерыДополнительныеРеквизиты
	               |		ГДЕ
	               |			ПартнерыДополнительныеРеквизиты.Свойство.Наименование = ""Экспедитор"") КАК ВложенныйЗапрос
	               |		ПО Партнеры.Ссылка = ВложенныйЗапрос.Ссылка";
	
	дСписок.ТекстЗапроса = ТекстЗапроса;
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьЗапрос(Команда)
	ИзменитьЗапросНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура ДобавитьКолонкиПослеИзмененияЗапроса(Команда)
	ДобавитьКолонкиПослеИзмененияЗапросаНаСервере();
КонецПроцедуры
Показать


Если конфигурация на замке - можно с расширениями попробовать.
Прикрепленные файлы:
котКакВывестиДополнительныеСвойства.epf
user693240_abramovskaya; Wishich; +2 Ответить
20. Vida 11 13.12.18 11:07 Сейчас в теме
(14) В отличие от автора статьи, у вас есть реквизит дСписок - динамический список. Поэтому в указанных вводных ваш код работать не будет, а именно

дСписок.ТекстЗапроса = ТекстЗапроса;

по причине из (5) часть 1

А вот как это обойти - не придумала.
21. Vida 11 13.12.18 18:16 Сейчас в теме
(14) Так вы и есть автор! Нашла свою ошибку почему не могла параметры поменять. Создаю программно "СписокМой", а потом пытаюсь изменить параметры у "МойСписок".

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

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	Сообщить(Элемент.ТекущиеДанные.Дата);
	СписокПриАктивизацииСтрокиНаСервере(Элемент.ТекущиеДанные.Дата, Элемент.ТекущиеДанные.Номер, "СписокМой");
КонецПроцедуры
Показать
15. antont 12 03.07.18 11:41 Сейчас в теме
(13) Можно и без изменения запроса.
В качестве пути к данным указывается имя доступного поля выбора компоновщика настроек динамического списка.

ЕМаил = Элементы.Добавить("ЕМаил",Тип("ПолеФормы"),Элементы.Список);
	ЕМаил.ПутьКДанным ="Список.Ссылка.[E-mail]";
16. Vlad_2008 13 03.07.18 16:26 Сейчас в теме
(15)
Работает, спасибо!

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

С добавленной программно колонкой все хорошо, вот только в настройках формы она "автоматом" не сохраняется, но это уже другая история ...
17. t0202 9 17.08.18 10:11 Сейчас в теме
Спасибо, успешно воспользовался Вашей процедурой.

Заметил один недостаток.

В массиве колонок желательно поменять местами заголовок и имя колонки.
У меня заголовки колонок оказались с запятыми и пришлось это поправить.
rpgshnik; +1 Ответить
18. rpgshnik 2159 17.08.18 10:59 Сейчас в теме
19. Daynestro07 07.11.18 15:12 Сейчас в теме
Дельная статья. Интересно только, есть ли способ получить массив выводимых колонок автоматически, из запроса?

upd Уже неактуально
rpgshnik; +1 Ответить
22. mikl79 109 19.12.18 15:38 Сейчас в теме
Большое спасибо автору!!!
Очень нужная Процедура - воспользовался, применил в расширении, вообще стараюсь программно в расширении добавлять на форму реквизиты, табл.части, кнопки, теперь и динам.список смогу.
Единственное, мне нужно вывести динам.список на отдельную страницу.
rpgshnik; +1 Ответить
23. mikl79 109 19.12.18 16:21 Сейчас в теме
немного доработал Процедуру - добавил еще один параметр, чтобы выводилось на страницу
24. rpgshnik 2159 20.12.18 03:45 Сейчас в теме
(23) не смог понять, а параметра - "ДобавитьВ" не достаточно? Интересно.
25. mikl79 109 20.12.18 11:27 Сейчас в теме
(24), действительно воспользовался параметром "ДобавитьВ", но перед вызовом процедуры программно создал новую страницу
rpgshnik; +1 Ответить
26. mikl79 109 20.12.18 11:53 Сейчас в теме
Не сразу заметил, что вы используете при добавлении элементов на форму процедуры Добавить и Вставить, в чем их разница - не понял.
"Вставить" в отличие от "Добавить" только содержит 4-й параметр "Элемент" - Элемент, перед которым должен быть вставлен новый элемент. Если не указан, то элемент будет вставлен в конец.
А так вроде делают одно и тоже, но это наверное вопрос риторический - разработчикам.
rpgshnik; +1 Ответить
Оставьте свое сообщение

См. также

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

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

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

1 стартмани

17.08.2015    44227    155    ekaruk    31    

Жизнь в стиле RPG

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

Работа выполнялась на платформе 8.3.16.1148. Пока мой город на карантине, появилось чуть больше свободного времени (процентов на 15) - решил попробовать сделать для себя в 1С то, что давно хотел. У меня на телефоне есть приложение "RPG in real life", оно мне помогает в мотивации важных дел, но кажется немного неудобным. Решил сделать что-то похожее в 1С, с моими основными "хотелками". Данная разработка позволяет получать миссии, за выполнение которых начисляются баллы, влияющие на повышение уровней своих навыков.

1 стартмани

08.04.2020    1418    0    ErrorEd88    5    

Запуск фонового задания во внешней обработке без регистрации в справочнике "Дополнительные отчеты и обработки"

Практика программирования v8::УФ ЗУП3.x Россия Абонемент ($m)

Описал, как показать прогресс выполнения длительной операции во внешней обработке, и при этом не регистрировать обработку в справочнике "ДополнительныеОтчетыИОбработки". Проверял на БСП версии "3.1.2.264".

1 стартмани

09.03.2020    2742    7    VinnieThePOOH    5    

Методика обновления формы объекта данных при изменении объекта

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

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

1 стартмани

09.03.2020    5265    0    tormozit    13    

Безопасная работа с транзакциями во встроенном языке Промо

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

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    28557    9    tormozit    44    

Подкидывание монеты

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

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

1 стартмани

25.02.2020    1066    1    a_kudaev    2    

Выгрузка любого запроса или таблицы значений в текст JSON

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

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

1 стартмани

07.02.2020    4965    16    user796054    18    

Маршрутизация Яндекс-карт в 1С (обычные и управляемые формы)

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

Обработка показывает пример построения маршрута между двумя точками.

3 стартмани

03.02.2020    1802    3    Denr83    0    

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

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

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

1 стартмани

03.07.2019    16570    4    m-rv    86    

Вывод сообщений в HTML поле средствами 1С

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

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

2 стартмани

31.01.2020    4269    5    burni4    16    

Как в 1С создать паутинку "как на Инфостарте"

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

Добрый день, уважаемы коллеги! В этой статье я расскажу, как в 1С создать отчет - "паутинку" на примере отчета по компетенциям сотрудника (разрабатывала на платформе 1С:Предприятие 8.3 (8.3.13.1865).

1 стартмани

15.01.2020    7936    4    user660153_aleks.pisanets    13    

Программное создание письма EML с вложениями

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

Внешняя обработка, которая создает письмо EML с вложениями и сохраняет на диск.

1 стартмани

10.01.2020    1663    2    info1i    0    

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

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

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

1 стартмани

01.06.2018    26746    86    m-rv    57    

Обмен данными с Android через USB

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

Обработка с примером обмена данными конфигурации 1С через USB. Без установки Web сервера и настройки WiFi.

1 стартмани

23.12.2019    2296    3    asdfgcom    2    

Преобразование объекта Отбор компоновки данных в Запрос

Практика программирования Прочие инструменты разработчика v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    2452    2    okon-teh    2    

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

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

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

1 стартмани

17.12.2019    5966    2    azhilichev    5    

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

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

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

1 стартмани

08.02.2018    24253    19    mvxyz    17    

Решение задач по мотивам статьи "30 задач. Странных и не очень"

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

Обработка по мотивам статьи: https://infostart.ru/public/1161686/

1 стартмани

04.12.2019    2226    2    batsy66    9    

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

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

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

1 стартмани

03.12.2019    2317    6    Denr83    0    

html + css + js в поле HTML документа 1С на примере решения задачи ханойских башен

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

Рассматривается пример использования html + css + js в полеHTMLдокумента 1с. Вызов функций javascript со стороны 1С с передачей параметров. Решение головоломки "Ханойская башня" с визуализацией в среде 1С.

1 стартмани

11.11.2019    4545    6    mangushov    0    

Нечеткий поиск одним запросом Промо

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

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

1 стартмани

28.12.2015    23903    62    vasvl123    9    

Пример подключения к информационной базе через COMConnector

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

Пример подключения создан для обычной и управляемой формы. Позволяет подключиться "На сервере 1С:Предприятия" и "На данном компьютере или на компьютере в локальной сети", подключение производится через логин/пароль или с помощью аутентификации Windows.

1 стартмани

23.10.2019    8066    1    IncomeGroup    20    

Генерация QR кода для любых конфигураций 1С (обычные и управляемые формы)

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

Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет "КомпонентаПечатиQRКода". Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).

1 стартмани

11.10.2019    5775    31    dm1try    0    

Индикатор выполнения (прогресс-бар) с таймером остаточного времени выполнения (обычное приложение + УФ)

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

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

1 стартмани

08.10.2019    3474    8    slayer-ekb    5    

Отправка электронной почты с помощью локального почтового клиента из 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    20328    13    stvorl    0    

Описание формата внутреннего представления данных 1С в контексте обмена данными

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

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

1 стартмани

06.09.2019    15679    11    Dementor    29    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    35100    0    rpgshnik    60    

Обновление данных в ячейках таблицы формы на управляемых формах

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

На очередном проекте решал задачу по расчету значений колонок в табличных полях формы. Задача казалась достаточно простой. Однако возникла необходимость работать не только с реквизитами формы типа «ТаблицаЗначений», но и с типом «ДеревоЗначений». Релиз платформы 8.3.13.1644

1 стартмани

15.08.2019    3613    0    BraunAlex    2    

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

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

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

1 стартмани

13.09.2018    17335    12    RocKeR_13    16    

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

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

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

1 стартмани

12.08.2019    10035    6    Yashazz    18    

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

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

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

1 стартмани

09.08.2019    12861    16    nagaitseff    6    

Организация функционала наценок по позициям либо сегментам номенклатуры в УТ 11.4

Ценообразование, анализ цен Практика программирования Ценообразование, анализ цен Разработка v8::ОУ v8::УФ УТ11 Россия УУ Абонемент ($m)

В статье описан один из методов реализации задачи установки скидок/наценок в соответствии с заданным процентом по позициям/сегментам номенклатуры. Так-же продемонстрирован принцип создания произвольного запроса к ИБ в виде цен. Протестировано на релизе Управление торговлей, редакция 11.4.8.92.

1 стартмани

07.08.2019    3425    1    cheiser1982    2    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

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

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    24579    8    wowik    3    

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

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

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

1 стартмани

06.08.2019    12553    2    signum2009    15    

Запрет запуска более одного сеанса на рабочем месте (Розница 2.2)

Практика программирования Разработка v8 v8::УФ Розница Россия Абонемент ($m)

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

2 стартмани

04.08.2019    4264    1    aximo    5    

Универсальная печать штрихкодов Windows, Linux, x86, x64. Управляемые формы. Веб-клиент. Пример

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

Универсальная печать штрихкодов Windows, Linux, x86, x64. Управляемые формы. Веб-клиент. Сделана на основе компонент печати штрихкодов фирмы 1с под платформу 1с windows32, windowsx64, linux32, linux64. Типы штрихкодов для генерации - EAN8, EAN13, EAN128, Code39, Code128, Code16k, PDF417, Standart (Industrial) 2 of 5, Interleaved 2 of 5, Расширение Code39, Code93, ITF14, RSS14, CodaBar, EAN13 AddOn 2, EAN13 AddOn 5. Сделана как пример для внедрения. Наиболее оптимальный вариант для веб-клиента. Пример сделан в виде cf файла. Работоспособность проверялась на ERP 2.4.8.84, ЗУП 3.1.9.187, Розница 2.2.11.30, УНФ 1.6.17.128, БГУ 2.0.61.28, ЗКГУ 3.1.9.187, КА 2.4.7.127, УТ 11.4.7.128, БП 3.0.69.35, Документооборот КОРП ПРОФ 2.1.13.28.

2 стартмани

17.07.2019    4168    20    ivanchai    4    

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

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

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

5 стартмани

09.08.2018    24319    25    informa1555    26    

Генерация QR кодов через API Google (обычные и управляемые формы)

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

Обработка абсолютно автономна, не привязана ни к версии БСП, ни к виду конфигурации. Может работать как для типовых, так и для самописных конфигураций. Содержит обычную и управляемую формы, поэтому запустится в любом режиме. Единственное, что нужно для ее работы - это подключение к интернету, так как для генерации QR кодов используется сервис Google.

1 стартмани

22.06.2019    4496    6    lisrws    5    

Несколько документов на основании одного

Практика программирования Обработка документов v8::УФ Абонемент ($m)

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

1 стартмани

10.06.2019    4646    3    mvxyz    8    

Работа с графической схемой в объектной модели DOM

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

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    7190    5    botokash    19    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

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

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

1 стартмани

14.08.2016    43951    36    Demanoidos    60    

Индикатор выполнения длительных операций на сервере 1С 8.3 (управляемые формы)

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

Индикатор выполнения (отображение прогресса) длительных операций в тонком клиенте 1С:Предприятия 8.3, когда полностью весь код исполняется на сервере, а клиент просто ждёт завершения. Используются внешние средства (либо командное окно Windows, либо приложение Java).

1 стартмани

03.06.2019    11358    0    D.B.Sokolov    20    

Картинки во внешней печатной форме (Шапка и табличная часть)

Печатные формы документов Практика программирования Разработка v8::ОУ v8::УФ УТ11 Россия Абонемент ($m)

Способы вывести на печать картинку в шапке и в табличной части внешней печатной формы. Управление торговлей, редакция 11 (11.4.7.150).

1 стартмани

27.05.2019    7628    7    Povinger    1    

Спутник программиста - каркасная конфигурация начинающим программистам 1С

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

Спутник программиста - каркасная конфигурация с примерами для разработки начинающим программистам 1С.

1 стартмани

23.05.2019    12387    98    bulas    27    

Как нарисовать граф на 1С Промо

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

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

1 стартмани

09.08.2013    68131    206    ildarovich    117    

Поле "Отбор" в управляемой форме используя СКД

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

Пример, который осуществляет отбор ссылок при помощи СКД, макет компоновки создается программно.

1 стартмани

17.05.2019    6540    6    artms    0    

Табличная часть из дополнительных реквизитов с обработкой событий в расширении

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

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

1 стартмани

13.05.2019    7685    2    mvxyz    17    

Вывод вариантов СКД в таблицы на управляемой форме

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

Задача стояла такая: есть 2 различных запроса, результаты которых выгружаются на форму обработки в таблицы значений (далее ТЗ) и программно "соприкасаются" между собой определенным образом (как именно- в рамках данной статьи неважно). Нюанс в том, что запросы должны иметь свой компоновщик настроек и могут интерактивно на форме изменяться пользователем. На оригинальность публикации не претендую - изначально в рамках поставленной задачи пытался найти что-то подобное (уже готовый шаблон) на инфостарте, возможно "плохо искал" ;)

05.04.2019    9081    3    artkor    1    

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

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

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

1 стартмани

17.07.2018    37052    17    kalyaka    16    

Автоматическая генерация технологических карт на основе графической схемы

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

В статье описывается способ генерация технологических карт на основе заданного графической схемой техпроцесса. Рассматриваются вопросы программного взаимодействия с объектом "графическая схема" и приведен механизм обхода графической схемы для получения карты техпроцесса. Тестировалось на платформе 8.3.12.

1 стартмани

27.03.2019    4063    1    all_net    0    

Печать отчета с предварительным вопросом пользователю

Практика программирования Разработка v8 v8::УФ 1cv8.cf БП3.0 УТ11 ЗУП3.x Абонемент ($m)

Возможность указать параметры, перед тем как распечатать отчет. (управляемые формы).

2 стартмани

16.03.2019    2731    0    user-z99999    0    

Создание и редактирование таблиц в поле HTML документа

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

Создание и редактирование таблиц в поле HTML документа. Тестировалось на 1С:Предприятие 8.3.12.1616

1 стартмани

16.03.2019    5408    10    lastpioneer    2    

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

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

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

1 стартмани

12.03.2019    27998    8    ni_cola    28