Публикации

БСП
Разработки

Найдено результатов: 11


ДеревоЗначений вывод на управляемую форму

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

Открыть форму выбора с отбором (УФ)

Артур 46 2 3
&НаКлиенте
Процедура КнопкаВыбрать(Команда)

    НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;

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

    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДАТА");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.больше;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение=(объект.Дата);

    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
    ПараметрыВыбора.Вставить("РежимВыбора",Истина);
    ПараметрыВыбора.Вставить("МножественныйВыбор",Истина);

    ОбработкаВыбора = Новый ОписаниеОповещения("ВыбратьДокументКонец", ЭтаФорма);

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

Таблица значений на УФ с динамическим набором колонок

buketoff 28 5
    ТЗ_рез = РеквизитФормыВЗначение("ТЗДокументы");
    
    МассивРеквизитов = Новый Массив;
    
    //Удалим ранее созданные колонки в ТЗДокументы    
    Для Каждого Колонка Из ТЗ_рез.Колонки Цикл
        МассивРеквизитов.Добавить("ТЗДокументы." + Колонка.Имя);        
	КонецЦикла;
	
	ИзменитьРеквизиты(,МассивРеквизитов);
	
	//Удалим отображение таблицы на форме и создадим новую
	ЭлементТаблица = Элементы.Найти("ТЗДокументы");
	Если ЭлементТаблица <> Неопределено Тогда
		Элементы.Удалить(ЭлементТаблица);        
	КонецЕсли;     
	
	ЭлементТаблица=Элементы.Добавить("ТЗДокументы",Тип("ТаблицаФормы"));
	ЭлементТаблица.ПутьКДанным = "ТЗДокументы";
	ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;
	
	ТЗ_рез = Данные;

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

Вернуть СКД (источник данных таблица значений)

Вернуть СКД в УФ
Андрей 23 4
функция вернутьКомпоновку(СхемаКомпоновкиДанных,ВнешниеНаборыДанных)
	Настройки 					= СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	КомпоновщикМакета 			= Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки 			= КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
	ПроцессорКомпоновкиДанных 	= Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных);
	ТабДок 						= Новый ТабличныйДокумент; //этаФорма.птд1
	ПроцессорВывода 			= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабДок);
	ПроцессорВывода.НачатьВывод();
	Пока Истина Цикл
		ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
		Если ЭлементРезультата = Неопределено Тогда
			Прервать;
		Иначе
			ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		КонецЕсли;
	КонецЦикла;
	ПроцессорВывода.ЗакончитьВывод();
	//Результат.ПоказатьУровеньГруппировокСтрок(0)
	
	ТабДок.ОтображатьСетку 		= Ложь;
	ТабДок.ОтображатьЗаголовки 	= Ложь;
	ТабДок.ТолькоПросмотр 		= Истина;
	табДок.ПоказатьУровеньГруппировокСтрок(0);
	возврат ТабДок;
конецФункции  //функция вернутьКомпоновку(СхемаКомпоновкиДанных,ВнешниеНаборыДанных,квартал1 = "ХХ",год1 = "ХХХХ",квартал2 = "ХХ",год2 = "ХХХХ")

//************исполенение***************
Рез 			= Запрос.Выполнить().Выгрузить();
	  СхемаКомпоновкиДанных 		= обработкаОбъект.ЭтотОбъект.ПолучитьМакет("форма6и7кратко");
	ВнешниеНаборыДанных 		= Новый Структура;
	ВнешниеНаборыДанных.Вставить("рез",Рез);
	вернутьКомпоновку(СхемаКомпоновкиДанных,ВнешниеНаборыДанных).показать();

Добавить отбор в списке, в пользовательских настройках

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

Открыть отчет с пользовательскими настройками

acsent 82 15
    Настройки = Новый НастройкиКомпоновкиДанных;
    Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар");
    Элемент.ИдентификаторПользовательскойНастройки = "Идентификатор";
    
    ПараметрыФормы = Новый Структура("Вариант", Настройки);
    ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы);

Запустить внешнее приложение

Выполняет запуск внешнего процесса, с оповещением и ожиданием результата
bolsun 34 4
&НаКлиенте
Процедура КомандаВыполнитьПрограмму(Команда)
	
	СтрокаЗапуска = "C:\Application.exe";
	
	НачатьЗапускПриложения(Новый ОписаниеОповещения("НачатьЗапускПриложенияЗавершение", ЭтотОбъект), СтрокаЗапуска,, Истина);
	
КонецПроцедуры  

&НаКлиенте
Процедура НачатьЗапускПриложенияЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт 
    
    //Вставить обработку завершения выполнения
    
КонецПроцедуры

Добавить кнопку на форму в командную панель

Добавление кнопки в панель управления формы
СергейТ 9 1
Процедура ДобавитьКнопкуНаФормуВПанель(Форма) Экспорт
	НоваяКоманда		=Форма.Команды.Добавить("ФормаКоманднаяПанель_КомандаМояКоманда");
	НоваяКоманда.Действие="Подключаемый_ВыполнитьКоманду";
	
	Кнопка				=Форма.Элементы.Добавить("МояКнопка", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
	Кнопка.Заголовок	="Заголовок кнопки";
	Кнопка.ИмяКоманды	="ФормаКоманднаяПанель_КомандаМояКоманда";
КонецПроцедуры

Инициализация компоновщика настроек, упр формы

Инициализация компоновщика настроек, упр формы, обработка, СКД
acsent 82 15
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаСКД = ОбработкаОбъект.ПолучитьМакет("СхемаСКД");
	
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаСКД, УникальныйИдентификатор);
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
	
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);

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

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

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

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

Особенность (грабля) при работе с Характеристиками через СКД

Испытываю некоторые сложности с формулировкой сути проблемы поэтому опишу свою user-story: В конфигурации БГУ 1.0 есть возможность детализировать аналитику планирования (кассового расхода) с помощью доп. бюджетной классификации: к некоторым счетам привяз...
SDV 34 7