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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как при добавлении элемента в табличное поле сразу уходить в выбор элемента?

Позволяем пользователю сразу уходить в выбор элемента без лишних нажатий мышью, следующий образом по нажатию одной кнопки:

Процедура КоманднаяПанельПользователиДобавитьПользователя(Кнопка)
ЭлементыФормы.Пользователи.ДобавитьСтроку();
СтрокаПользователя = ЭлементыФормы.Пользователи.ТекущаяСтрока;
ФормаПользователя = Справочники.Пользователи.ПолучитьФормуВыбора(,ЭлементыФормы.Пользователи.ТекущаяКолонка.ЭлементУправления, ЭлементыФормы.Пользователи.ТекущаяСтрока);
ФормаПользователя.Открыть();
КонецПроцедуры

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

Сохранение цвета и шрифта 1С в текст/реквизит/XML

Может использоваться в сложных отчетах, когда требуется хранить настройки цвета и текста ячеек.
В 1С цвет не всегда имеет формат RGB, к примеру в случае веб цветов и стилей. Тогда возникают сложности, данная функция позволяет решить много проблем.
Конвектируем настройки цвета и фона в текст и сохраняем в XML.
Фрагмент кода ниже с преобразованием цвета и шрифта ниже:
//перекодировать в текст: значения шрифта и цвета
Лайк если помогло :)

Процедура МояПроцедура
ТекстШрифт = Значение1С_ВСтроку(мШрифт);
ТекстЦветШрифта = Значение1С_ВСтроку(мЦветТекста);
ТекстЦветФона = Значение1С_ВСтроку(мЦветФона);

//получить ситемные значения шрифта и цвета из текста
еШрифт = Значение1С_ИзСтроки(ТекстШрифт);
еЦветШрифта = Значение1С_ИзСтроки(ТекстЦветШрифта);
еЦветФона = Значение1С_ИзСтроки(ТекстЦветФона);

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

Функция Значение1С_ВСтроку(тЗнач)
Возврат ЗначениеВСтрокуВнутр(тЗнач);
КонецФункции

Функция Значение1С_ИзСтроки(тСтрока)
Возврат ЗначениеИзСтрокиВнутр(тСтрока);
КонецФункции

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

Вызов функции модуля объекта из управляемой формы (УП 8.2)

&НаКлиенте
Процедура ВыгрузитьExcel(Команда)
ВыгрузитьExcelНаСервере();
КонецПроцедуры

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