Архив рубрики: Работа с формами

1с 8.1: Как программно открыть множественный подбор документов (справочников)?

Делаем обработку на примере подбора документа Перемещение товаров.

Создаем обработку. На панели размещаем кнопку Подбор




  
Процедура КоманднаяПанель2Подбор(Кнопка)
    ФормаВыбора = Документы.ПеремещениеТоваров.ПолучитьФормуВыбора(,ЭтаФорма);
    ФормаВыбора.МножественныйВыбор = Истина;
    Если Не ФормаВыбора.Открыта() Тогда
        ФормаВыбора.Открыть();
    КонецЕсли;   
   
КонецПроцедуры

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

КонецЕсли;

КонецЦикла; 

 
ФормаВыбора.Открыть();
КонецПроцедуры
 

 
признак множественного подбора предполагает подбор нескольких позиций в журнале,используя зажаты SHIFT или CTRL.

 
.Команда ФормаВыбора.Открыть();  
использованная в конце последней процедуры, позволяет повторно открыть форму подбора. Конечно, при таком способе журнал будет постоянно закрываться и открываться (будет заметно мигание), но это позволяет несложным способом настроить подбор.

1с 8.1: Как программно открыть множественный подбор документов (справочников)?

Делаем обработку на примере подбора документа Перемещение товаров.

Создаем обработку. На панели размещаем кнопку Подбор




  
Процедура КоманднаяПанель2Подбор(Кнопка)
    ФормаВыбора = Документы.ПеремещениеТоваров.ПолучитьФормуВыбора(,ЭтаФорма);
    ФормаВыбора.МножественныйВыбор = Истина;
    Если Не ФормаВыбора.Открыта() Тогда
        ФормаВыбора.Открыть();
    КонецЕсли;   
   
КонецПроцедуры

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

КонецЕсли;

КонецЦикла; 

 
ФормаВыбора.Открыть();
КонецПроцедуры
 

 
признак множественного подбора предполагает подбор нескольких позиций в журнале,используя зажаты SHIFT или CTRL.

 
.Команда ФормаВыбора.Открыть();  
использованная в конце последней процедуры, позволяет повторно открыть форму подбора. Конечно, при таком способе журнал будет постоянно закрываться и открываться (будет заметно мигание), но это позволяет несложным способом настроить подбор.

1с 8: Пример. Как использовать ПолеТабличногоДокумента

в 1С 8 есть возможность разместить на форме печатную форму макета с помощью элемента формы: Поле табличного документа.

Нужно создать Макет, а также вывести на форму элемент "Поле табличного документа"

Скачать пример использования поля табличного документа

1с 8: Пример. Как использовать ПолеТабличногоДокумента

в 1С 8 есть возможность разместить на форме печатную форму макета с помощью элемента формы: Поле табличного документа.

Нужно создать Макет, а также вывести на форму элемент "Поле табличного документа"

Скачать пример использования поля табличного документа

1с 8.1 Как в подвал табличного поля добавить итог по колонке

Как организовать вывод итогов в подвал табличного поля

ЭлементыФормы.ТабличноеПоле.Колонки["ИмяНужнойКолонки"]  

.ОтображатьИтогиВПодвале = Истина;

Но перед этим нужно включить флаг "подвал" в свойствах табличного поля или сделать это программно.


1с 8.1 Как в подвал табличного поля добавить итог по колонке

Как организовать вывод итогов в подвал табличного поля

ЭлементыФормы.ТабличноеПоле.Колонки["ИмяНужнойКолонки"]  

.ОтображатьИтогиВПодвале = Истина;

Но перед этим нужно включить флаг "подвал" в свойствах табличного поля или сделать это программно.


Выбрать элемент справочника в v 7.7 и в 8.1


Поговорим об интерактивном выборе элемента из справочника в версиях 7.7 и 8.1



В Версии 7.7 выбрать элемент справочника можно функцией Выбрать:

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



ОсновнаяФорма - можно выбрать


Для версии 8.1 выбор элемента может выглядеть так:

Спр=Справочники.Товары;
ФормаВыбора=Спр.ПолучитьФормуВыбора("ФормаВыбора");
ФормаВыбора.ЗакрыватьПриВыборе=Истина;
ФормаВыб.РежимВыбора = Истина;
 
ФормаВыбора.ОткрытьМодально();


Аналогичным образом можно выбирать и документы

Рабочая версия выглядит так:

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


 
Второй параметр в функции  ПолучитьФормуВыбора("ФормаВыбора",ЭтаФорма) - задает форму владелеца (ЭтаФорма) (подробнее описание функции смотрите в справке )

Была ситуация в версии 8.1, когда при выборе элемента из списка - элемент не выбирался, а происходило открытие для редактирования.
Проблема оказалась в коде выбираемого документа. Там был код принудительного открытия формы документа при выборе из списка:

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

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

пришлось добавить условие: если существует форма владелец, то производить выбор. В результате получилось так:

Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

    Если ЭтаФорма.ВладелецФормы = Неопределено Тогда      //Добавлено условие - в случае, если Форма-Владелей не определена

        Если ТекЗначениеУчета.Значение=Перечисления.ВидУчетаЛБ.Соптовары Тогда

            СтандартнаяОбработка = Ложь;

            ФормаСпецификации = ВыбраннаяСтрока.ПолучитьФорму("ФормаДокументаРозничнаяЛБ");

            ФормаСпецификации.Открыть();

        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Ещё можно глянуть более подробный материал здесь 

Выбрать элемент справочника в v 7.7 и в 8.1


Поговорим об интерактивном выборе элемента из справочника в версиях 7.7 и 8.1



В Версии 7.7 выбрать элемент справочника можно функцией Выбрать:

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



ОсновнаяФорма - можно выбрать


Для версии 8.1 выбор элемента может выглядеть так:

Спр=Справочники.Товары;
ФормаВыбора=Спр.ПолучитьФормуВыбора("ФормаВыбора");
ФормаВыбора.ЗакрыватьПриВыборе=Истина;
ФормаВыб.РежимВыбора = Истина;
 
ФормаВыбора.ОткрытьМодально();


Аналогичным образом можно выбирать и документы

Рабочая версия выглядит так:

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


 
Второй параметр в функции  ПолучитьФормуВыбора("ФормаВыбора",ЭтаФорма) - задает форму владелеца (ЭтаФорма) (подробнее описание функции смотрите в справке )

Была ситуация в версии 8.1, когда при выборе элемента из списка - элемент не выбирался, а происходило открытие для редактирования.
Проблема оказалась в коде выбираемого документа. Там был код принудительного открытия формы документа при выборе из списка:

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

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

пришлось добавить условие: если существует форма владелец, то производить выбор. В результате получилось так:

Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

    Если ЭтаФорма.ВладелецФормы = Неопределено Тогда      //Добавлено условие - в случае, если Форма-Владелей не определена

        Если ТекЗначениеУчета.Значение=Перечисления.ВидУчетаЛБ.Соптовары Тогда

            СтандартнаяОбработка = Ложь;

            ФормаСпецификации = ВыбраннаяСтрока.ПолучитьФорму("ФормаДокументаРозничнаяЛБ");

            ФормаСпецификации.Открыть();

        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Ещё можно глянуть более подробный материал здесь 

Как программно добавить кнопку в Панель формы 1с 8.1

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

Мы хотим на Панель ОсновныеДействияФормы поместить новую кнопку

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

Если ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Найти("ИмяКнопки")=Неопределено Тогда // проверяем: есть ли уже такая кнопка?

ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
ДействиеКнопки = Новый Действие("ОсновныеДействияФормыНазваниеИмяКнопки");

КнопкиФормы =ЭлементыФормы.ОсновныеДействияФормы.Кнопки;
НоваяКнопка =КнопкиФормы.Добавить("ИмяКнопки",ТипКнопки,"Имя Кнопки",ДействиеКнопки);
НоваяКнопка.Картинка = БиблиотекаКартинок.ПиктограммаВашейКнопки;
НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка; // можно выбрать другие варианты "Авто", "Надпись" или "Надпись и Картинка"
КнопкиФормы.Сдвинуть(НоваяКнопка,(-1)*КнопкиФормы.Количество()-1); // сдвигаем кнопку в крайнее правое положение
КонецЕсли;

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

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




Программно добавлена кнопка с изображением значка Word


Как программно добавить кнопку в Панель формы 1с 8.1

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

Мы хотим на Панель ОсновныеДействияФормы поместить новую кнопку

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

Если ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Найти("ИмяКнопки")=Неопределено Тогда // проверяем: есть ли уже такая кнопка?

ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
ДействиеКнопки = Новый Действие("ОсновныеДействияФормыНазваниеИмяКнопки");

КнопкиФормы =ЭлементыФормы.ОсновныеДействияФормы.Кнопки;
НоваяКнопка =КнопкиФормы.Добавить("ИмяКнопки",ТипКнопки,"Имя Кнопки",ДействиеКнопки);
НоваяКнопка.Картинка = БиблиотекаКартинок.ПиктограммаВашейКнопки;
НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка; // можно выбрать другие варианты "Авто", "Надпись" или "Надпись и Картинка"
КнопкиФормы.Сдвинуть(НоваяКнопка,(-1)*КнопкиФормы.Количество()-1); // сдвигаем кнопку в крайнее правое положение
КонецЕсли;

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

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




Программно добавлена кнопка с изображением значка Word