Добавить элемент в обычную форму

Программное создание элемента в обычной форме
Форма
Добавил: Илья Троицкий
ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), <НаименованиеЭлемента>, Истина, <Панель>);
ПолеВвода.Данные = <ПутьКДанным>;
ПолеВвода.Верх = <Верх>;
ПолеВвода.Высота = <Высота>;
ПолеВвода.Лево = <Лево>;
ПолеВвода.Ширина = <Ширина>;
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Лево, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Верх, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Низ, <КкомуПривязываемся>, <ККакойЕгоГранице>);

Имя перечисления по значению

Имя перечисления по значению
Имя перечисления по значению
Добавил: Артур
XMLСтрока(Перечисления.Виды.Вид1) 

Запись в регистр сведений (периодический, независимый)

Запись в регистр сведений (периодический, независимый)
Регистр сведений
1 Добавил: ArturR
МенеджерЗаписи = РегистрыСведений.УчетНомернойНоменклатуры.СоздатьМенеджерЗаписи();
		Пока Выборка.Следующий() Цикл
			Если Выборка.Номенклатура.Номерная Тогда
				МенеджерЗаписи.Период 		= Дата;
				МенеджерЗаписи.Место 		= Склад;			
				МенеджерЗаписи.Номенклатура = Выборка.Номенклатура;
				МенеджерЗаписи.Номер 		= Выборка.НомерАгрегата;
				МенеджерЗаписи.Статус 		= Перечисления.СтатусНоменклатуры.НаСкладе;
				МенеджерЗаписи.Записать();
			КонецЕсли;
		КонецЦикла;

Установить параметр отчета СКД

Процедура для удобной установки значения параметра отчета на СКД
СКД Отчет
2 Добавил: Илья Троицкий
Процедура УстановитьПараметр(Имя, Значение)
	
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый   ПараметрКомпоновкиДанных(Имя));
	Если Параметр <> Неопределено Тогда
		Параметр.Значение = Значение;
		Параметр.Использование = ЗначениеЗаполнено(Значение);
	КонецЕсли;


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

Проверка Модифицированности объекта

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

Конвертация даты из формата ISO8601 в дату 1С с учетом миллисекунд

Возвращает структуру с полями "Дата" и "Миллисекунды", стандартный способ преобразования даты округляет время, а в некоторых случаях важна особая точность
ISO8601 Дата Обмен
Функция КонвертироватьДатуISO8601ВДату(Дата) Экспорт

	КонвертированнаяДата = Новый Структура("Дата, Миллисекунды");
	
	АвтоконвертированнаяДата = XMLЗначение(Тип("Дата"), Дата);

	Миллисекунды = Сред(Дата, 21);
	Миллисекунды = СокрЛП(СтрЗаменить(Миллисекунды, "Z", ""));

	Если НЕ ПустаяСтрока(Миллисекунды) Тогда
		
		ЧислоМиллисекунд = Число(Миллисекунды);
		
		Если ЧислоМиллисекунд >= 500 Тогда
			
			АвтоконвертированнаяДата = АвтоконвертированнаяДата - 1;
			
		КонецЕсли;
		
	КонецЕсли;
	
	КонвертированнаяДата.Дата = АвтоконвертированнаяДата;
	
	КонвертированнаяДата.Миллисекунды = Миллисекунды;
	
	Возврат КонвертированнаяДата;

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

Проверка существание ссылки в базе

Проверка существование ссылки в базе, объект не найден типовая функция БСП
3 Добавил: acsent
Функция СсылкаСуществует(ЛюбаяСсылка) Экспорт
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	Ссылка КАК Ссылка
	|ИЗ
	|	[ИмяТаблицы]
	|ГДЕ
	|	Ссылка = &Ссылка
	|";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ЛюбаяСсылка.Метаданные().ПолноеИмя());
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", ЛюбаяСсылка);
	
	УстановитьПривилегированныйРежим(Истина);
	
	Возврат НЕ Запрос.Выполнить().Пустой();
	
КонецФункции

Удалить дубли строк в таблице значений

Удаляет дубли строк таблицы по указанным колонкам, если не указано, то ищет дубли во всем.
Таблица значений ТаблицаЗначений
1 Добавил: prog1c
Функция УдалитьДублиСтрокТаблицыЗначений(Таблица, Колонки = "") Экспорт

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

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

КонецФункции // УдалитьДублиСтрокТаблицыЗначений()

ЗаписьJSON

Формирует строку со структурой JSON без создания файла
JSON ЗаписьJSON
7 Добавил: Bezeus
	ЗаписьJSON = Новый ЗаписьJSON;
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
		ЗаписьJSON.ЗаписатьИмяСвойства("Выражение");
		ЗаписьJSON.ЗаписатьЗначение("Сумма 1 + 1");
		ЗаписьJSON.ЗаписатьИмяСвойства("Результат");
		ЗаписьJSON.ЗаписатьЗначение(2);
	ЗаписьJSON.ЗаписатьКонецОбъекта();

	ТелоЗапроса = ЗаписьJSON.Закрыть();

заполнить реквизит "СуммаДокумента "на форме документа

Табличная часть Реквизит
1 Добавил: buketoff
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры