Все публикации

БСП
Разработки

Найдено публикаций: 3


Таблица значений

обход таблицы и работа с ней по условию
Максим1C 7 1
//Создаем таблицу значений
	ТабЗнч = Новый ТаблицаЗначений;
	ТабЗнч.Колонки.Добавить("Наименование");
	ТабЗнч.Колонки.Добавить("Значение");
	
	//Заполняем ТЗ
	Для н=1 По 100 Цикл
		
		СтрокаТЗ = ТабЗнч.Добавить();
		СтрокаТЗ.Наименование = "Н"+н;
		СтрокаТЗ.Значение = "К"+н;
		
		//Здесь каждый 10-й элемент делаем дубляжом
		Если (н%10)=0 Тогда
			СтрокаТЗ2 = ТабЗнч.Добавить();
			СтрокаТЗ2.Наименование = "Н"+н;
			СтрокаТЗ2.Значение = "К"+н;
		КонецЕсли;
		
	КонецЦикла;
	
	//Перебираем заполненное ТЗ
	Для й=0 По ТабЗнч.Количество()-1 Цикл
		
		//Не даем провалиться индексу за грани
		Если й>ТабЗнч.Количество()-1 Тогда
			
			Прервать;
			
		КонецЕсли;
		
		//Пропускаем первый элемент
		Если й=0 Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		//Ну и собственно сравниваем значения текущего с предыдущем
		Если ТабЗнч[й].Наименование = ТабЗнч[й-1].Наименование Тогда
			
			ТабЗнч[й-1].Значение = ТабЗнч[й-1].Значение + ", " + ТабЗнч[й].Значение;
			
			ТабЗнч.Удалить(й);
			
		КонецЕсли;
		
	КонецЦикла;

Обход иерархии справочника 2

Иерархия добавим в массив
Максим1C 7 1
Функция ПолучитьВерхнегоРодителяНоменклатуры(мНом)
	
	ЗапросПодразделения = Новый Запрос; 
		ЗапросПодразделения.Текст = 
			"ВЫБРАТЬ
			|   Номенклатура.Ссылка КАК Ссылка
			|ИЗ
			|    Справочник.Номенклатура КАК Номенклатура
			|ГДЕ
			|    Номенклатура.Ссылка = &Ссылка
			|ИТОГИ ПО
			|    Ссылка ТОЛЬКО ИЕРАРХИЯ";
		ЗапросПодразделения.УстановитьПараметр("Ссылка",мНом);

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

Заполнение реквизитов формы из ТЧ

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


&НаСервере
Процедура УстановитьЗначениеЭлемента(ИмяЭлемента,ЗначениеЭлемента)
	
	ПутьКДаннымЭлемента = ВернутьПутьКДаннымЭлемента(ИмяЭлемента);
	Если Лев(ПутьКДаннымЭлемента,7) = "Объект." Тогда
		
		ПутьКДаннымЭлемента = СтрЗаменить(ПутьКДаннымЭлемента,"Объект.","");
		Объект[ПутьКДаннымЭлемента] = ЗначениеЭлемента;
		
	Иначе
		
		ЭтаФорма[ПутьКДаннымЭлемента] = ЗначениеЭлемента;
		
	КонецЕсли;
	
КонецПроцедуры


&НаСервере
Процедура УстановитьЗначениеЭлементаТабличнойЧасти(ТЧИмя,ИмяЭлемента,ЗначениеЭлемента)

	ПутьКДаннымТЧ = ВернутьПутьКДаннымЭлемента(ТЧИмя);

	Если Лев(ПутьКДаннымТЧ,7) = "Объект." Тогда
		
		ПутьКДаннымТЧ = СтрЗаменить(ПутьКДаннымТЧ,"Объект.","");
		Если Объект[ПутьКДаннымТЧ].Количество() = 0 Тогда
			
			СтрокаТЧ = Объект[ПутьКДаннымТЧ].Добавить();
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		Иначе
			
			СтрокаТЧ = Объект[ПутьКДаннымТЧ].Получить(0);
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		КонецЕсли;
		
	Иначе
		
		Если ЭтаФорма[ПутьКДаннымТЧ].Количество() = 0 Тогда
			
			СтрокаТЧ = ЭтаФорма[ПутьКДаннымТЧ].Добавить();
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		Иначе
			
			СтрокаТЧ = ЭтаФорма[ПутьКДаннымТЧ].Получить(0);
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		КонецЕсли;
		
	КонецЕсли;

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

&НаСервере
Функция ВернутьПутьКДаннымЭлемента(ИмяЭлемента)

	Возврат Элементы[ИмяЭлемента].ПутьКДанным;

КонецФункции