наверх
Справка / табличное поле

Табличное поле

  • Как запретить пользователю изменять порядок следования колонок в табличном поле?
  • Как запретить пользователю изменять любые настройки колонок табличного поля?
  • Как вывести информацию о том, какой отбор установлен в журнале документов?
  • Как в форме справочника установить курсор на элемент с известным наименованием?
  • Как в форме списка сделать отбор по значению реквизита?
  • Как запретить выдачу сообщения: "Введенные данные не отображены в списке, так как не соответствуют отбору" при добавлении новых элементов в справочник
  • Как заполнить ячейку табличного поля данными?
  • Как изменить цвет фона ячейки табличного поля в зависимости от значения, выводимого в нее?
  • Как в табличное поле "ВыбранныеКонтрагенты" добавить новую колонку "ОсновнойДоговор", заполнить ее значения и дать возможность открытия этих значений?
  • Как задать список выбора для колонки "ВидДокумента" табличного поля?
  • Как обеспечить возможность отбора и сортировки данных по реквизитам, не отображаемым в табличном поле формы списка справочника?
  • Как реализовать перетаскивание между элементами управления?
  • Как вывести остатки на складах в списке номенклатуры?
  • Как установить курсор на последнюю запись при регламентном обновлении табличного поля динамического списка регистра сведений?
  • Как запретить пользователю изменять порядок следования колонок в табличном поле?

    // Запрет изменения позиций ВСЕХ колонок
    ЭлементыФормы.ТабличноеПоле.ИзменятьПозициюКолонок = Ложь; 
    
    // Запрет для некоторых
    ЭлементыФормы.ТабличноеПоле.Колонки.Картинка.ИзменятьПозицию = Ложь; 
    ЭлементыФормы.ТабличноеПоле.Колонки.Код.ИзменятьПозицию = Ложь; 
    ЭлементыФормы.ТабличноеПоле.Колонки.Наименование.ИзменятьПозицию = Ложь;

    Как запретить пользователю изменять любые настройки колонок табличного поля?

    // Запрет изменения настроек ВСЕХ колонок
    ЭлементыФормы.ТабличноеПоле.ИзменятьНастройкуКолонок = Ложь; 
    
    // Запрет для некоторых
    ЭлементыФормы.ТабличноеПоле.Колонки.Картинка.ИзменятьНастройку = Ложь; 
    ЭлементыФормы.ТабличноеПоле.Колонки.Код.ИзменятьНастройку = Ложь; 
    ЭлементыФормы.ТабличноеПоле.Колонки.Наименование.ИзменятьНастройку = Ложь;

    Как вывести информацию о том, какой отбор установлен в журнале документов?

    // Вывод в надпись
    ЭлементыФормы.НадписьОтбор.Заголовок = СписокДокументов.Отбор; 
    
    // Вывод в строку сообщений
    УстановленныйОтбор = СписокДокументов.Отбор; 
    Сообщить("Элементы отбора:"); 
    
    Для Каждого ЭлементОтбора из УстановленныйОтбор Цикл 
    	Сообщить(Строка(ЭлементОтбора) + " использование = " + ЭлементОтбора.Использование); 
    КонецЦикла;

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

    ЭлементыФормы.СправочникСписок.ТекущаяСтрока = Справочники.Контрагенты.НайтиПоНаименованию("ПОСТАВЩИКИ", Истина);

    Как в форме списка сделать отбор по значению реквизита?

    СправочникСписок.Отбор.СтавкаНДС.Установить(Перечисления.СтавкиНДС.НДС18); 
    
    // Еще вариант
    СправочникСписок.Отбор.СтавкаНДС.Значение = Перечисления.СтавкиНДС.НДС18; // По какому значению отбор
    СправочникСписок.Отбор.СтавкаНДС.ВидСравнения = ВидСравнения.Равно; // Вид сравнения (равно, не равно, в списке и пр.)
    СправочникСписок.Отбор.СтавкаНДС.Использование = Истина; // Признак того, что отбор используется

    Как запретить выдачу сообщения: "Введенные данные не отображены в списке, так как не соответствуют отбору" при добавлении новых элементов в справочник

    ЭлементыФормы.ПолеСписка.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.НеПроверять;

    Как заполнить ячейку табличного поля данными?

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

    Как изменить цвет фона ячейки табличного поля в зависимости от значения, выводимого в нее?

    Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок) 
    	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл 
    		ЗначениеЯчейкиОстаток = ОформлениеСтроки.Ячейки.Остаток.Значение; 
    		Если ЗначениеЯчейкиОстаток <> Неопределено Тогда 
    			Если ЗначениеЯчейкиОстаток < 10 Тогда 
    				ОформлениеСтроки.Ячейки.Остаток.ЦветФона = WebЦвета.Красный; 
    			ИначеЕсли ЗначениеЯчейкиОстаток > 100 Тогда 
    				ОформлениеСтроки.Ячейки.Остаток.ЦветФона = WebЦвета.Желтый; 
    			КонецЕсли; 
    		КонецЕсли; 
    	КонецЦикла; 
    КонецПроцедуры

    Как в табличное поле "ВыбранныеКонтрагенты" добавить новую колонку "ОсновнойДоговор", заполнить ее значения и дать возможность открытия этих значений?

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

    Как задать список выбора для колонки "ВидДокумента" табличного поля?

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

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

    ЭлементыФормы.СправочникСписок.НастройкаОтбора.ОсновнойПоставщик.Доступность = Истина; 
    ЭлементыФормы.СправочникСписок.НастройкаПорядка.ОсновнойПоставщик.Доступность = Истина;

    Как реализовать перетаскивание между элементами управления?

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

    Как вывести остатки на складах в списке номенклатуры?

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

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

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