наверх
Свободные IT публикации
быстро и доступно
логин:
пароль:

Табличное поле в 1С 8.x


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

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

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

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

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

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

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

// Вывод в надпись
ЭлементыФормы.НадписьОтбор.Заголовок = СписокДокументов.Отбор; 

// Вывод в строку сообщений
УстановленныйОтбор = СписокДокументов.Отбор; 
Сообщить("Элементы отбора:"); 

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

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

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

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

СправочникСписок.Отбор.СтавкаНДС.Установить(Перечисления.СтавкиНДС.НДС18); 

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

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

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

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

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

	// Ввести значения в ячейки строки. 
	СтрокаТаблицы.Контрагент = СтрокаТаблицы.Заказ.Контрагент; 
	СтрокаТаблицы.ДатаОтгрузки = СтрокаТаблицы.Заказ.ДатаОтгрузки; 
КонецПроцедуры

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

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

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

Если ТаблицаКонтрагентов.Колонки.Найти("ОсновнойДоговор") = Неопределено Тогда 
	МассивТипов = Новый Массив(); 
	МассивТипов.Добавить(Тип("СправочникСсылка.ДоговорыКонтрагентов")); 
	ОписаниеНужныхТипов = Новый ОписаниеТипов(МассивТипов); 
	ТаблицаКонтрагентов.Колонки.Добавить("ОсновнойДоговор", ОписаниеНужныхТипов); 
КонецЕсли; 

Для Каждого СтрокаТаблицы из ТаблицаКонтрагентов Цикл 
	СтрокаТаблицы["ОсновнойДоговор"] = СтрокаТаблицы["Контрагент"]["ОсновнойДоговорКонтрагента"]; 
КонецЦикла; 

ЭлементыФормы.ВыбранныеКонтрагенты.СоздатьКолонки(); 
ЭлементыФормы.ВыбранныеКонтрагенты.Колонки.ОсновнойДоговор.ЭлементУправления.КнопкаОткрытия = Истина;

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

Процедура ПриОткрытии() 

	СписокВидовДокументов = Новый СписокЗначений; 

	Для Каждого ДокументКонфигурации из Метаданные.Документы Цикл 
		СписокВидовДокументов.Добавить(ДокументКонфигурации.Имя); 
	КонецЦикла; 

	ЭлементыФормы.ПодборДанных.Колонки.ВидДокумента.ЭлементУправления.СписокВыбора = СписокВидовДокументов; 
КонецПроцедуры 


ЭлементыФормы.ПодборДанных.Колонки.ВидДокумента.ЭлементУправления.КнопкаСпискаВыбора = Истина;

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

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

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

Процедура НоменклатураНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) 

	// Получить значение, переданное системой. 
	Значение = ПараметрыПеретаскивания.Значение; 

	// В любом случае значением будет массив. 
	МассивЗначений = Новый Массив; 

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

	// Заполненный массив записываем в параметры. 
	ПараметрыПеретаскивания.Значение = МассивЗначений; 

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


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

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

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


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

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

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

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

Процедура СписокНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок) 

	Запрос = Новый Запрос("ВЫБРАТЬ 
		|	ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, 
		|	ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар 
		|ИЗ 
		|	РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки"); 

	МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса 
	Соответствие = Новый Соответствие; // для заполнения остатков в строках табличного поля 

	Для Каждого Строка из ОформленияСтрок Цикл 
		МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка); 
		Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); 
	КонецЦикла; 

	Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры); 

	Выборка = Запрос.Выполнить().Выбрать(); 

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

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