Username:
Password:
 Log me on automatically each visit
 
Aeroion.Ru
Форумы сервера Aeroion.Ru
Welcome

Aeroion.Ru Forum Index
  » Технические форумы
   » 1Сv8: Программирование, отчёты, обработки, статьи
    » Функция. Добавление колонки данных в табличное поле формы
   для конфигураций 1C: Предприятия 8.1
printer-friendly view
AuthorФункция. Добавление колонки данных в табличное поле формы
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Location: Оренбург
Posts: 1127
Last Visited: Today at 01:43
Кредиты: 3594
Reputation: 47
Age: 41
Zodiac: Aquarius Pig

Функция предназначена в основном для изменения типовых конфигураций 1C: Предприятия 8.1, когда хочется что-то добавить, но не хочется сильно менять штатный код и формы.

Code:
// Добавляет колонку типа ПолеВвода с данными реквизита табличной части в заданную позицию коллекции колонок табличного поля
// и назначает свойства и действия для созданного элемента
//
// Параметры
//  ПозицияНовойКолонки  - Число - Индекс вставляемой колонки. Если индекс равен количеству колонок или Неопределено, то происходит добавление колонки в конец коллекции.
//  ТабличноеПолеКолонки  - ТабличноеПоле или КолонкиТабличногоПоля  - табличное поле или коллекция колонок табличного поля
//  МетаданныеРеквизита  - Метаданные - Метаданные реквизита табличной части объекта. Данное свойство позволяет указать, какие данные будут отображаться в ячейке табличного поля.
//  ОбработчикиСобытий - Структура - Структура, содержащая список наименований процедур - обработчиков событий элемента управления добавляемой колонки.
//                          Необязательно, по умолчанию неопределён
//  ТекстШапки  - Строка  - Текст, который будет выводиться в заголовке новой колонки табличного поля.
//                          Необязательно, по умолчанию синоним реквизита табличной части объекта
// Возвращаемое значение:
//   КолонкаТабличногоПоля - Вставленная колонка табличного поля.
//
Функция ДобавитьКолонкуТабличногоПоляСДанными(Знач ПозицияНовойКолонки = Неопределено, ТабличноеПолеКолонки, Знач МетаданныеРеквизита, Знач ОбработчикиСобытий = Неопределено, Знач ТекстШапки = "") Экспорт

    Если Не
ЗначениеЗаполнено(ТекстШапки) Тогда
       
ТекстШапки = МетаданныеРеквизита.Синоним;
    КонецЕсли;
    Если
ТипЗнч(ТабличноеПолеКолонки) = Тип("КолонкиТабличногоПоля") Тогда
       
КоллекцияКолонок = ТабличноеПолеКолонки;
    Иначе
       
КоллекцияКолонок = ТабличноеПолеКолонки.Колонки;
    КонецЕсли;

   
ИмяКолонки = МетаданныеРеквизита.Имя;
    Если
ПозицияНовойКолонки = Неопределено Тогда
       
НоваяКолонка = КоллекцияКолонок.Добавить(ТекстШапки);
    Иначе
       
НоваяКолонка = КоллекцияКолонок.Вставить(ПозицияНовойКолонки, ТекстШапки);
    КонецЕсли;
   
НоваяКолонка.Имя = ИмяКолонки;
   
НоваяКолонка.Данные = ИмяКолонки;
   
НоваяКолонка.Видимость = Истина;
   
НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
    Если
МетаданныеРеквизита.Тип.Типы().Количество() = 1 Тогда
        Если
Метаданные.Справочники.Содержит(Метаданные.НайтиПоТипу(МетаданныеРеквизита.Тип.Типы()[0])) Тогда
           
НоваяКолонка.ЭлементУправления.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
        КонецЕсли;
    КонецЕсли;
   
НоваяКолонка.ЭлементУправления.КнопкаОткрытия   = Истина;
   
НоваяКолонка.ЭлементУправления.КнопкаВыбора   = Истина;
   
НоваяКолонка.ЭлементУправления.КнопкаОчистки   = Истина;

    Если
ОбработчикиСобытий <> Неопределено Тогда
        Для каждого
Элемент Из ОбработчикиСобытий Цикл

            Если
ТипЗнч(Элемент.Значение) = Тип("Строка") Тогда
               
ДействиеЭлементаУправления = Новый Действие(Элемент.Значение);
            Иначе
               
ДействиеЭлементаУправления = Элемент.Значение;
            КонецЕсли;
           
НоваяКолонка.ЭлементУправления.УстановитьДействие(Элемент.Ключ, ДействиеЭлементаУправления);

        КонецЦикла;
    КонецЕсли;

    Возврат
НоваяКолонка;

КонецФункции
// ДобавитьКолонкуТабличногоПоляСДанными()


Пример использования функции в процедуре ПриОткрытии либо в переопределённом обработчике (подробнее здесь). Предполагается, что функция находится в общем модуле РаботаСФормами.
Code:
// Процедура - обработчик события "ПриОткрытии".
//
Процедура ЛксПриОткрытии()

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

    Выполнить(
РаботаСФормами.ЛксПолучитьСтароеДействиеФормы(ЭтаФорма, "ПриОткрытии"));

КонецПроцедуры
// ЛксПриОткрытии()

//Переопределяем штатный обработчик события ПриОткрытии
РаботаСФормами.ЛксУстановитьДействиеФормы(ЭтаФорма, "ПриОткрытии");

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, слать емайлы, пытаться писать в приват. Спасибо за понимание.
Please do not PM, ICQ or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Skype Name
Display posts from previous:   

Summary Rating For >> Функция. Добавление колонки данных в табличное поле формы
Average Rating: 0.00 :: Min Rating: 0 :: Max Rating: 0 :: Number of Ratings: 0
Choose Rating: 1   2   3   4   5  

Similar Topics
Topic Author Forum Replies Last Post
No new posts Функция. Определение размера данных д... Sergey 1Сv8: Программирование, отчёты, обработки, статьи 0 Tue 06 Oct, 2009 02:55 View latest post
Sergey
No new posts 2 колонки Lila Поддержка и моды для phpBB2 3 Sun 11 Feb, 2007 16:58 View latest post
Sergey
No new posts Advanced Report Hack: добавление комм...
Помогите реализовать, пожалуйста
CURANS Поддержка и моды для phpBB2 2 Fri 23 Jun, 2006 20:26 View latest post
CURANS
No new posts Подсистема Настройка контроля заполне...
Универсальный механизм контроля запол...
Sergey 1Сv8: Программирование, отчёты, обработки, статьи 0 Wed 01 Sep, 2010 03:45 View latest post
Sergey
No new posts Файл шаблонов кода для создания обраб...
Создание переопределённых обработчико...
Sergey 1Сv8: Программирование, отчёты, обработки, статьи 2 Wed 28 Dec, 2011 11:54 View latest post
Sergey




All times are UTC + 3 Hours
All times are synchronized with the forum server time
Users browsing this topic:3 Guests
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum