Шаблоны кода 1С


Добавить новый Назад

Обработка проводок по дереву

Обработка проводок по дереву

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

Вернуть СКД (источник данных таблица значений)

Вернуть СКД в УФ

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

//************исполенение***************
Рез 			= Запрос.Выполнить().Выгрузить();
	  СхемаКомпоновкиДанных 		= обработкаОбъект.ЭтотОбъект.ПолучитьМакет("форма6и7кратко");
	ВнешниеНаборыДанных 		= Новый Структура;
	ВнешниеНаборыДанных.Вставить("рез",Рез);
	вернутьКомпоновку(СхемаКомпоновкиДанных,ВнешниеНаборыДанных).показать();
Добавить комментарий

раскраска строки табличной части документа (обычные формы) по условию

раскраска строки табличной части документа (обычные формы) по условию

Процедура выбДокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
	Если (ДанныеСтроки.п="-")или(данныеСтроки.у = "+") тогда
		ОформлениеСтроки.ЦветФона = Новый Цвет(204,255,204);
	конецЕсли;
КонецПроцедуры
Добавить комментарий

пересчет реквизита табличной части обычной формы

пересчет реквизита табличной части обычной формы

Процедура Пересчет()
	СтрокаТабличнойЧасти = ЭлементыФормы.Товар.ТекущиеДанные;
	Рекв = ЭлементыФормы.Товар.ТекущаяКолонка.Данные;
	Если Рекв = "Номенклатура" Тогда
		ЦенаТ = ПолучитьЦену(СтрокаТабличнойЧасти.Номенклатура);
		СтрокаТабличнойЧасти.Цена = ЦенаТ;
		СтрокаТабличнойЧасти.Количество = 1;
		СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.Количество;
	ИначеЕсли Рекв = "Количество" Тогда	
		СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.Количество;
	ИначеЕсли Рекв = "Цена" Тогда
		СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.Количество;
	ИначеЕсли Рекв = "Сумма" Тогда	
		СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма/?(СтрокаТабличнойЧасти.Количество=0,1,СтрокаТабличнойЧасти.Количество);
	КонецЕсли;	
КонецПроцедуры
Добавить комментарий

заполнение табличного документа

заполнение табличного документа

Макет 	= ПолучитьМакет("макет");
А1 		= Макет.ПолучитьОбласть("А1");
А2 		= Макет.ПолучитьОбласть("А2");
табДок.Вывести(А1,1);
для ее = 0 по рез.Количество()-1 цикл
	А2.Параметры.Заполнить(рез[ее]);
	ТабДок.Вывести(А2,2,"импортер",истина);
конецЦикла;
табДок.ЗакончитьАвтогруппировкуСтрок();
табДок.Показать();
Добавить комментарий

Описание строки в таблице значений

Описание строки в таблице значений

ст90	= новый описаниеТипов("строка",,Новый КвалификаторыСтроки(90));
Добавить комментарий

описание даты в таблице значений

описание даты в таблице значений

Новый ОписаниеТипов ("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата))
Добавить комментарий

описание числа (15.2) в таблице значений

описание числа (15.2) в таблице значений

Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2))
Добавить комментарий

Чтение XML через DOM

Чтение XML через DOM

функция читаемХМЛ2014(путь,атр) экспорт
	х 		= новый массив;
	y 		= новый массив;
	мДОМ 	= новый ПостроительDOM;
	
	заявка = новый таблицаЗначений;
	заявка.Колонки.Добавить("номерДок");
	заявка.Колонки.Добавить("клиент");
	заявка.Колонки.Добавить("адрес");
	заявка.Колонки.Добавить("товар");
	заявка.Колонки.Добавить("кодТовара");
	заявка.Колонки.Добавить("количество");
	заявка.Колонки.Добавить("цена");
	заявка.Колонки.Добавить("сумма");
	
	чтение 	= Новый ЧтениеXML ;
	чтение.ОткрытьФайл(сокрЛП(путь));
	мДокументДОМ = мДОМ.Прочитать(чтение);
	чтение.Закрыть();
	номерДок = "";
	клиент   = "";
	адрес    = "";
	_documents =  мДокументДОМ.ПолучитьЭлементыПоИмени("documents");
	для каждого а1 из _documents цикл
		_preorder = а1.ПолучитьЭлементыПоИмени("preorder");
		для каждого а2 из _preorder цикл
			_ттн = а2.дочерниеУзлы;
			для каждого а21 из _ттн цикл
				если (а21.имяУзла = "innercode") тогда
					номерДок =а21.ТекстовоеСодержимое;
				конецЕсли; 
				если (а21.имяУзла = "buypointjuridicalname") тогда
					клиент   = а21.ТекстовоеСодержимое;
				конецЕсли;
				если (а21.имяУзла = "buypointaddress") тогда
					адрес    = а21.ТекстовоеСодержимое;
				конецЕсли;
			конецЦикла;
			_item = а2.ПолучитьЭлементыПоИмени("item");
			для каждого а3 из _item цикл
				_товар  = а3.ДочерниеУзлы;
				хх = заявка.Добавить();
				хх.номерДок = номерДок;
				хх.клиент   = клиент;
				хх.адрес    = адрес;
				для каждого а4 из _товар цикл
					если  (а4.имяУзла = "SKUname") тогда
						хх.товар = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "SKUcode")тогда 
						хх.кодТовара = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "quantity")тогда 
						хх.количество = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "priceDiscount")  тогда
						хх.цена = а4.ТекстовоеСодержимое;
					конецЕсли;
					если (а4.имяУзла = "amount")  тогда
						хх.сумма = а4.ТекстовоеСодержимое;
					конецЕсли;
				конецЦикла;
			конецЦикла;
		конецЦикла;
	конецЦикла;
	
	
	//мРазыменовательПИ = мДокументДОМ.СоздатьРазыменовательПИ(мДокументДОМ);
	//мЗапрос		= "/documents/preorders/preorder/body/item/*";
	//мХПуть		= мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
	//мРезультат	= мХПуть.Вычислить(мДокументДОМ);
	//мРодитель	= мРезультат.ПолучитьСледующий();
	//пока мРодитель <> неопределено цикл
	//	//если  мРодитель.ИмяЭлемента = "body" тогда
	//	//	  
	//	//	
	//	//	сообщить("");
	//	//	мРодитель=мРезультат.ПолучитьСледующий();
	//	//	продолжить;
	//	//конецЕсли;	 
	//	х.Добавить( мРодитель.ИмяЭлемента+" "+мРодитель.ТекстовоеСодержимое);
	//	сообщить(мРодитель.ИмяЭлемента+" "+мРодитель.ТекстовоеСодержимое);
	//	мРодитель=мРезультат.ПолучитьСледующий();
	//конецЦикла;
	
	возврат заявка;
конецФункции  //функция читаемХМЛ2014(путь)
Добавить комментарий

Обработка подбора в управляемой форме

Обработка подбора в управляемой форме

&НаКлиенте //часто стоит указать &наСервере
Процедура выбратьТовар(Команда)
	 ст = новый структура;
	 ст.Вставить("товар", элементы.списокПодбора.текущиеДанные.товар);
	 ст.Вставить("цена"	, элементы.списокПодбора.текущиеДанные.цена);
	 //этаФорма.результат = ПоместитьВоВременноеХранилище(ст);
	 этаФорма.ВладелецФормы.адресПодбора = ст;
	 этаФорма.ВладелецФормы.выполнитьПодбор();
	 этаФорма.Закрыть();
КонецПроцедуры //Процедура выбратьТовар(Команда)

&НаКлиенте
процедура выполнитьПодбор() Экспорт
	ст 					= этаФорма.адресПодбора;
	адресПодбора 		= неопределено;
	хх 					= объект.товар.Добавить();
	хх.номенклатура 	= ст.товар;
	хх.ценаВход 		= ст.цена;
	хх.цена 			= ст.цена;
	хх.количество 		= 1;
	хх.сумма 			= хх.количество*хх.цена;	
конецПроцедуры
Добавить комментарий

TurboConf

Удобный поиск шаблонов кода

прямо в Конфигураторе

Узнать подробнее