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

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

Приемы и методы разработки - Механизмы платформы 1С

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

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

 2018

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

 

//+++ Обновление публикации от 31.08.2020 г.

//     Посмотрите новую статью "Динамическое формирование интерфейса"

//--- Обновление публикации от 31.08.2020 г.

Возникла необходимость в программном создании элементов формы, особенно такого как динамический список. Необходимо программно влиять на него полностью, включая и формирование необходимых мне колонок. Данная процедура может выполняться за сеанс формы 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
100
.epf 1.0.0.1 9,96Kb 100 Скачать

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

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

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

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

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

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


Если конфигурация на замке - можно с расширениями попробовать.
Прикрепленные файлы:
котКакВывестиДополнительныеСвойства.epf
Jesdva; nikson_1987; astafeva.tv; ldpr; ostap1972; user591389_aska_rabota; user693240_abramovskaya; Wishich; +8 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. palsergeich 19.01.18 13:14 Сейчас в теме
Код приятный.
Нужно только понимать, после ПриСозданииНаСервере добавление\удаление реквизитов - очень дорогая операция...
vovan_victory; rpgshnik; +2 Ответить
2. rpgshnik 3095 19.01.18 14:04 Сейчас в теме
(1) спасибо, учту про стоимость операции.
3. pm74 211 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 3095 24.01.18 12:53 Сейчас в теме
(5) Дельные хотелки, когда есть обратная связь особенно интересно.

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

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


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

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

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

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


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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Для себя проблему с командной панелью решил следующим образом.
Не знаю с какого релиза появилось, но после отрисовки формы в обработчике "ПриОткрытии" становится доступен список подчиненных элементов командной панели (Элементы["ИмяСписка"].КоманднаяПанель.ПодчиненныеЭлементы), по сути это стандартные команды.

Соответственно, стандартные команды скрыл, а свои добавил, и оставил те стандартные, которые были нужны.

Для контекстного меню та же ситуация.Элементы["ИмяСписка"].КонтекстноеМеню.ПодчиненныеЭлементы
Прикрепленные файлы:
rpgshnik; Vida; +2 Ответить
28. slawa 26 28.08.20 14:22 Сейчас в теме
Народ, а кто нить знает библиотеку для создания динамических форм.
Т.е. туже табличку представить на форме с разными группами
Группа1 (это строка 1)
Группа2 (строка 2)
и т.д
29. rpgshnik 3095 28.08.20 15:30 Сейчас в теме
(28) случайно речь не об этом? https://forum.infostart.ru/forum9/topic246787/#message2495803 там и вторая версия динамического списка, и всех других элементов формы
30. 7OH 67 27.10.20 04:03 Сейчас в теме
Думал тут решен вопрос, ан нет.
Список колонок я где должен взять ?
Надеялся, что тут будет реализован функционал "добавить колонки?" как при добавлении списка на форму.
31. rpgshnik 3095 27.10.20 04:09 Сейчас в теме
(30) данная публикация переосмыслена и значительно расширена в новом библиотеке функций по формированию динамического интерфейса https://infostart.ru/1c/articles/1284403/
Там есть возможность добавления колонок.
Ссылка кстати в начале публикации указана.
34. aalu14 27.07.22 16:56 Сейчас в теме
(31) Добрый день, подскажите, пожалуйста. Пытаюсь добавить колонки. Выдается ошибка " Ошибка: Ошибка при установке значения атрибута контекста (ПутьКДанным)". Делаю ровно как в посте. Заранее спасибо.
35. rpgshnik 3095 28.07.22 05:20 Сейчас в теме
(34) вы про модуль ДФИ или Про функцию динамическое формирования динамического списка?
Если про модуль-библиотеку ДФИ лучше скачайте свежую версию с ГитХаба... а если про функцию, то лучше используйте её в рамках модуля-библиотеки ДФИ так как он поддерживается и развивается. Так скажем функция переросла в новую сущность - большой модуль.

Модуль - https://infostart.ru/1c/articles/1284403/ и на гите https://github.com/KotovDima1C/DFI/blob/master/ModuleDFI.bsl

Так же посмотрите сообщение номер 10 в этой ветке, там пример есть обработка.
36. aalu14 28.07.22 09:02 Сейчас в теме
(35)Про функцию формирования динамического списка. Если будет возможность, взгляните, пожалуйста https://forum.infostart.ru/forum9/topic285209/#message2854645
32. userMKA 13.01.22 13:45 Сейчас в теме
33. userMKA 13.01.22 13:54 Сейчас в теме
Оставьте свое сообщение

См. также

[Общий модуль] Динамическое формирование интерфейса Промо

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Библиотека готовых функций для разработки интерфейса формы и размещения на нём элементов формы с помощью программного кода.

28.08.2020    21893    rpgshnik    82    

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

Механизмы платформы 1С Платформа 1С v8.3 План видов характеристик Абонемент ($m)

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

1 стартмани

20.09.2022    1496    Alxby    8    

Что не так с таблицами формы?

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

19.09.2022    688    kalyaka    3    

Программная работа с типовыми формами истории данных

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

07.07.2022    564    zeltyr    0    

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

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

25.03.2019    54425    tormozit    59    

Точка останова с условием. Приемы и хитрости использования

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

“Точка останова с условием“ - применима в самых разнообразных ситуациях, и грамотное её применение экономит много времени разработчика 1С.

1 стартмани

10.06.2022    2896    Onwardv    8    

Использование HTML Редактора whizzywig в 1С 8.2 и 1С 8.3 платформах

Механизмы платформы 1С Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

В статье будут разобраны способы использования визуального HTML Редактора whizzywig в 1С 8.2 и 1С 8.3, который существенно меньше по размерам, чем TinyMCE, но при этом обладает большими возможностями. Показано достоинство этого редактора. Приведены обработки, которые работают как на компьютерной платформе, так и пример реализации обработки, которая предназначена для мобильной платформы. Решение испытывалось на платформах 1С 8.2.12 и 8.3.20, и мобильном клиенте 8.3.19.59.

2 стартмани

12.04.2022    653    user1206119    0    

Использование HTML Редактора NicEdit в 1С 8.2 и 1С 8.3 платформах

Механизмы платформы 1С Платформа 1С v8.3 Мобильная платформа Платформа 1C v8.2 Абонемент ($m)

В статье будут разобраны способы использования визуального HTML Редактора NicEdit в 1С 8.2 и 1С 8.3, который существенно меньше по размерам, чем TinyMCE. Показано достоинство этого редактора. Приведены обработки, которые работают как на компьютерной платформе, так и пример реализации обработки, которая предназначена для мобильной платформы. Решение испытывалось на платформах 1С 8.2.12 и 8.3.20, и мобильном клиенте 8.3.19.59.

2 стартмани

11.04.2022    907    user1206119    7    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    40279    rpgshnik    60    

Семеро одного не ждут? Асинхронное исследование асинхронности

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

08.06.2021    8192    Alxby    47    

Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В платформе 8.3.15 появились новые методы НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера(). В данной статье рассмотрено готовое решение проверенное и прекрасно работающее на тонком и веб-клиенте.

1 стартмани

25.07.2020    19416    Flashill    15    

Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    9428    user5300    3    

Некоторая работа с данными через COM Промо

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

2 стартмани

05.12.2012    61890    wowik    32    

Удаление записи из табличной части в режиме без использования модальности

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Всем привет! Появилась необходимость в написании кода удаления записи из табличной части с обратной связью в режиме без использования модальности. Но как правильно сделать нигде не нашел. Предлагаю свой вариант на растерзание.

1 стартмани

01.03.2020    2480    vaganovsergey    2    

Пауза на платформе 1С, очень нативная и очень бережная к ресурсам

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Иногда необходимо установить паузу при выполнении программных алгоритмов. К сожалению, платформа 1С не имеет решения на уровне глобального контекста, поэтому приходится разработчику придумывать "костыли и велосипеды". Решения, которые "общеприняты": либо используют внешние библиотеки (VBS, WS, ping и пр.), либо нещадно используют ресурсы (бесконечный цикл и т.п.). Хочу предложить еще одно решение, основанное на механизме управляемых блокировок платформы 1С. Итак, приступим:

1 стартмани

25.11.2019    5875    Sibars    63    

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

Механизмы платформы 1С Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

06.09.2019    23544    Dementor    31    

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

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

11.12.2010    59133    ildarovich    40    

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

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

06.09.2019    152299    rpgshnik    86    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Склад и ТМЦ Механизмы платформы 1С Платформа 1С v8.3 Управленческий учет Абонемент ($m)

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

3 стартмани

24.06.2019    21767    informa1555    20    

Асинхронная работа с текстовыми файлами в 1С 8.3

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В этой статье я рассмотрю основные моменты работы с текстовым файлом в 1С 8.3. (загрузка - выгрузка) в режиме отключенной модальности (асинхронно).

1 стартмани

28.02.2019    12094    signum2009    7    

XDTO - часть 3 Промо

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Мы продолжаем цикл статей по изучению подсистемы XDTO в 1С:Предприятие. Это третья часть, в которой мы будем работать непосредственно с подсистемой, рассмотрим главные строительные блоки подсистемы и рассмотрим небольшой пример кода.

3 стартмани

28.01.2013    215074    Evil Beaver    177    

Баг или фича? Неожиданное поведение платформы

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

18.02.2019    26219    Infostart    90    

Динамическое изменение формы: кнопочная форма выбора справочника

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Динамическое изменение формы на примере кнопочного выбора из справочника.

1 стартмани

18.10.2018    9577    RocKeR_13    14    

Жизненный цикл управляемой формы. Шпаргалка разработчика

Механизмы платформы 1С Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

29.06.2018    43439    stas_ganiev    26    

Заметочки про 1С:Предприятие 8 (редакция 22.06.2012) Промо

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

01.06.2010    194923    alexk-is    413    

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

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

10.04.2018    35241    Alxby    23    

Обманчивая ошибка "Данные были изменены или удалены другим пользователем"

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

25.03.2018    37930    rinat_alp2    7    

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

Механизмы платформы 1С Платформа 1С v8.3 Управляемые формы Абонемент ($m)

В управляемых формах для нас доступен мощный ресурс работы с динамическими списками посредством СКД - отборы, сортировки и далее. Но вот табличная часть (таблица значений) на управляемой форме не позволяет работать так гибко. Мы можем научить пользователей пользоваться комбинацией клавиш "Ctrl+F", но давайте немного упростим жизнь и позволим нашим пользователям настраивать отборы (осуществлять поиск) по табличной части прямо в нашем окне.

1 стартмани

22.03.2018    84001    Kim1C    23    

Методика оперативного проведения и управляемые блокировки Промо

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

25.07.2013    82274    GROOVY    176    

Динамические колонки в таблице значений из разного числа строк (как в отчёте)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

16.02.2018    14993    perepetulichka    5    

План видов характеристик (ПВХ) - с чем его едят

Механизмы платформы 1С Платформа 1С v8.3 План видов характеристик Абонемент ($m)

План видов характеристик - эта фишка нужна Аналитикам. В данной статье мы рассмотрим пример создания сложного ПВХ по учебнику Хрусталевой/Радченко. А также создадим свой собственный механизм ПВХ с двумя видами отчетов-СКД на выходе.

1 стартмани

14.02.2018    73952    jan-pechka    17    

Проверка таблицы на дублирование строк (ТаблицаЗначений, ТабличнаяЧасть) и получение массива таких строк

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Функция для проверки дублирования строк в ТаблицеЗначений или ТабличнойЧасти. Также, если необходимо, возвращает массив задублированных строк (можно обработать).

1 стартмани

05.02.2018    13192    uri1978    27    

Соответствие типов данных 1С:Предприятие 8.x в MS SQL 2008 Промо

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Соответствие типов данных 1С:Предприятие 8.x и MS SQL 2008

13.01.2013    23603    Infostart    7    

Система взаимодействия. Быстрый старт

Механизмы платформы 1С Платформа 1С v8.3 Россия Абонемент ($m)

В статье описано принципиальное взаимодействие клиентского сеанса с сервером взаимодействия.

1 стартмани

28.11.2017    48823    Goleff74    27    

Асинхронность в управляемом интерфейсе 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В статье доступно объясняется про новое модное явление асинхронности, добавленное в платформу 1С. Также приложен пример асинхронной обработки по поиску файлов.

1 стартмани

15.01.2017    28015    fixin    30    

Отличия в управляемом приложении при создании нового документа без сохранения объекта

Механизмы платформы 1С Платформа 1С v8.3 1С:Бухгалтерия 2.0 Абонемент ($m)

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

1 стартмани

05.05.2016    13774    sss123    4    

74 полезности из комплексного курса по конфигурированию 1С 8.2 Промо

Механизмы платформы 1С Платформа 1С v8.3 Россия Абонемент ($m)

Курс прошел в октябре 2011 года. До этого уже была определенная подготовка (прочитал несколько книг, прошел несколько интернет-курсов и подготовился по вопросам к экзамену 1С: Профессионал по платформе 8.2). На этом курсе прошел обучение по 4 темам: основные объекты, оперативный учет, периодические расчеты и бухгалтерский учет. Хочу рассказать вам о том, что было не очевидно для меня. Надеюсь и вам пригодится.

1 стартмани

02.03.2012    13655    Flashill    65    

"Вкусные примочки" с использованием внешних печатных форм

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

Использование механизма внешних печатных форм для разных целей

1 стартмани

10.09.2013    9735    arteast    16    

Получение оборотов регистра в выбранной валюте

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

06.09.2013    13251    Tavalik    3    

Трюки 1С 8 – Управление обычными формами из общего модуля

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Трюки 1С 8 – Управление обычными формами из общего модуля

1 стартмани

02.09.2013    20060    mbm    20    

Динамический состав реквизитов Промо

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Решим не стандартную задачу. Нам необходимо добавить к документам некие реквизиты, которые появляются у объектов в зависимости от настроек (значений реквизитов документа).

14.12.2012    26134    Infostart    7    

Сравнение скорости получения имени класса через Метаданные.*.Содержит и через Метаданные().ПолноеИмя()

Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

Сравнение скорости двух методов определения класса объекта через его метаданные. Когда есть Объект, но неизвестно заранее, какой у него тип (например получен из реквизита типа ЛюбаяСсылка)

1 стартмани

08.08.2013    9623    taiba    9    

ТипЗнч vs Метаданные()

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Сравнение скорости определения типа объекта через ТипЗнч и через Метаданные

1 стартмани

15.06.2013    24862    taiba    24    

Операция, как сервисная функция, на примере «Операция» против вредоносного сервиса.

Механизмы платформы 1С Платформа 1С v8.3 1С:Бухгалтерия 2.0 Бухгалтерский учет Абонемент ($m)

Прежде всего – почему я назвал маркетинговую «мысль» вендора вредоносной? Эта воистину совково-навязчивая услуга уже украла у меня заметное количество минут, причем именно тогда, когда их было мало, и еще наверняка украдет. Цель этой статьи – помочь вам свести потери к неизбежному минимуму. В прошлой статье мы указали, что документ «Операция» может быть использован не только для записи проводок, но и для движений в таблицы регистров – сведений и накопления. В этой статье поговорим об этом подробней.

19.04.2013    12992    tango    22    

Как узнать, является значение ссылочного типа «битой ссылкой» или нет?

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Абонемент ($m)

Для платформ 1С-7.7 и 1С-8.x описаны простые способы выяснения того, является ли ссылочное значение ссылкой на несуществующий объект. Для обеих платформ выложены примеры реализации функции IsEmpty(), возвращающей признак пустого значения и флаг «битой ссылки».

1 стартмани

28.02.2013    32340    yuraos    24