среда, 11 мая 2016 г.

Как установить отбор в управляемой форме списка (УП)


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

//использование: помещаем на форму списка поле-фильтр "МойРеквизит", в событии при изменении "МойРеквизит", прописываем:
&НаКлиенте
Процедура УведомлениеОтборПриИзменении(Элемент)
УстановитьОтборПоКолонкеВФормеСписка(Список,"МойРеквизит",ВидСравненияКомпоновкиДанных.Равно,МойРеквизит);
КонецПроцедуры

четверг, 5 мая 2016 г.

Открытие управляемой формы с передачей параметров в управляемом режиме

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

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

воскресенье, 27 марта 2016 г.

Быстрый выбор из выпадающего списка в табличном поле

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

среда, 16 марта 2016 г.

Автоматическое создание колонок в табличном поле на основании таблицы значений

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МассивСсылок = ПреобразоватьСтрокуСчетовВМассивСсылок(СписокКодовСчетов);
Если МассивСсылок <> Неопределено Тогда
ТаблицаСсылокСчетов = Новый ТаблицаЗначений;
ТаблицаСсылокСчетов.Колонки.Добавить("Ссылка",Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"),"Счет");
Для Каждого Элем Из МассивСсылок Цикл
НоваяСтрокаТЗ = ТаблицаСсылокСчетов.Добавить();
НоваяСтрокаТЗ.Ссылка = Элем;
КонецЦикла;
ЭлементыФормы.ТабличноеПоле1.Значение = ТаблицаСсылокСчетов;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецЕсли;
КонецПроцедуры

Программное переключение страниц(закладок) панели формы 1С

Процедура СчетаПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница = 2 Тогда
//...
ИначеЕсли ТекущаяСтраница = 3 Тогда
//...
ИначеЕсли ТекущаяСтраница = 5 Тогда
Если Вопрос("Загрузка параметров может занять длительное время(до нескольких минут), продолжить?",
РежимДиалогаВопрос.ДаНет, 0,,"Внимание: длительная операция")
= КодВозвратаДиалога.Нет Тогда
ЭлементыФормы.Панель1.ТекущаяСтраница = ЭлементыФормы.Панель1.Страницы.Страница1; //перейти на первую страницу
Возврат
КонецЕсли;
   //...
КонецЕсли;
КонецПроцедуры

Вызов конструктора запроса 1С программно

Процедура ТаблицаНастройкиВременныхТаблицТекстЗапросаНачалоВыбора(Элемент, СтандартнаяОбработка)
ТекстЗапроса = Элемент.Значение;
КонструкторЗапроса = Новый КонструкторЗапроса();

Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
КонструкторЗапроса.Текст = ТекстЗапроса;
КонецЕсли;

КонструкторЗапроса.ОткрытьМодально();
КонецПроцедуры

вторник, 15 марта 2016 г.

Как использовать кнопку регулирования в поле выбора (пример)?

//пример использования кнопки регулирования
Кидаем на форму поле выбора, связываем с реквизитом формы ПредставлениеШаблонаОформления с типом произвольный.
Добавляем кнопку регулирования в свойствах в поле выбора, в событии Регулирование прописываем:

Процедура ПолеВыбораОформлениеРегулирование(Элемент, Направление, СтандартнаяОбработка)
СписокВыбора = ЭлементыФормы.ПолеВыбораОформление.СписокВыбора;  //получаем ссылку на список выбора
ТекЭлем = СписокВыбора.НайтиПоЗначению(Оформление); //получаем ссылку на текущее значение поля выбора
тИндекс = СписокВыбора.Индекс(ТекЭлем); //получаем индекс
сИндекс = тИндекс + Направление * (-1);
Если сИндекс < 0
ИЛИ сИндекс = СписокВыбора.Количество() Тогда
Возврат //отменяем действие если при переключении список закончился
КонецЕсли;
ПредставлениеШаблонаОформления = СписокВыбора[сИндекс].Значение; //устанавливаем выбранное значение
КонецПроцедуры