Публикации

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

Записать текстовый файл без BOM

Для тех кому нужно записать текстовый файл без BOM-раздела. Основная суть в записи через файловый поток
ПутьФайла = ПолучитьИмяВременногоФайла();

СтрокаТекста = "текст";

ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст(СтрокаТекста);		
ТекстовыйФайл.Записать(ПутьФайла, КодировкаТекста.UTF8, Символы.ПС);

ФайловыйПоток = Новый ФайловыйПоток(ПутьФайла,РежимОткрытияФайла.Создать);
ТекстовыйФайл.Записать(ФайловыйПоток,КодировкаТекста.UTF8, Символы.ПС, Ложь);

ФайловыйПоток.Закрыть();

Клиент TurboStore

Программа добавляет в Конфигуратор "ТурбоПоиск", который ищет сразу по нескольким источникам данных: сервису FastCode, библиотеке стандартных подсистем (БСП) и каталогу разработок TurboStore.
bolsun 33 4
Бесплатно

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз Промо

Быстрое и надежное обновление файловых и серверных баз, защита от шифровальщиков, автоматическое обновление доработанных конфигураций и расширений, а также многое другое.
bolsun
950 руб.

Формат изображения (уменьшить,обрезать,масштабировать,сжать)

Формат изображения (уменьшить,обрезать,масштабировать,сжать)
Артур 40 1 4
&НаКлиенте
Процедура сжатьФото(Фото)
	МаксимальнаяШирина	= 700; 
	МаксимальнаяВысота	= 400;
			
	ОбрезкаЛ	=  200;
	ОбрезкаВ	=  0;
	ОбрезкаП	=  200;
	ОбрезкаН	=  0;
	
    // Создаем объект
    ФайлКартинка = Новый COMОбъект("WIA.ImageFile");
    ФайлКартинка.LoadFile(Фото);

    //Сообщить("Картинка: " + Картинка.Имя);
    //Сообщить("    Расширение файла: " + ФайлКартинка.FileExtension);
    //Сообщить("    Ширина: " + ФайлКартинка.Width);
    //Сообщить("    Высота: " + ФайлКартинка.Height);
    //Сообщить("    Размер: " + Окр(ФайлКартинка.FileData.Count / 1024, 2) + " Кб");
        
    ФайлПрогресс = Новый COMОбъект("WIA.ImageProcess"); ///ФайлПрогресс.Filters - список Фильтров, всего 8
		
    ФайлПрогресс.Filters.Add(ФайлПрогресс.FilterInfos("Scale").FilterID);    ///масштабирование  
    ФайлПрогресс.Filters.Add(ФайлПрогресс.FilterInfos("Crop").FilterID);     ///Обрезка
	ФайлПрогресс.Filters.Add(ФайлПрогресс.FilterInfos("Convert").FilterID);  ///Конвертация (Сжатия)
		
	ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value  = МаксимальнаяШирина;        
	ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = МаксимальнаяВысота;	    
	ФайлПрогресс.Filters(1).Properties("PreserveAspectRatio").Value = Ложь;  ///Сохранять пропорции (По умолчанию было истина - сбивает разрешения высоту и ширину)
	
	//Форматы преобразований имееют следующий формат:
	///wiaFormatBMP    = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";      ///  .BMP
	wiaFormatJPEG   = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";         ///  .JPEG

	ФайлПрогресс.Filters(3).Properties("FormatID").Value = wiaFormatJPEG;
	ФайлПрогресс.Filters(3).Properties("Quality").Value = 50;          ///Качество фотографии  (от 1 - 100); 100 =60КБ  50 = 8КБ

	///Обрезка
	ФайлПрогресс.Filters(2).Properties("Left").Value   =  ОбрезкаЛ;       /// лево;    
	ФайлПрогресс.Filters(2).Properties("Top").Value    =  ОбрезкаВ;       /// верх;     
	ФайлПрогресс.Filters(2).Properties("Right").Value  =  ОбрезкаП;       /// право;    
	ФайлПрогресс.Filters(2).Properties("Bottom").Value =  ОбрезкаН;	      /// низ;      
	
	///Применить фильтры к фотографии
    ФайлКартинка = ФайлПрогресс.Apply(ФайлКартинка);

	///Удалить старое фото и создать новое
	УдалитьФайлы(фото);
    ФайлКартинка.SaveFile(фото);
	
	
	//Сообщить("    Расширение файла: " + ФайлКартинка.FileExtension);
	//Сообщить("    Ширина: " + ФайлКартинка.Width);
	//Сообщить("    Высота: " + ФайлКартинка.Height);
	//Сообщить("    Размер: " + Окр(ФайлКартинка.FileData.Count / 1024, 2) + " Кб");
КонецПроцедуры

Убрать итоги из готового текста запроса

Позволяет убрать итоги из текста запроса, на пример, перед передачей его в СКД
ChOP 24 4
СхемаЗапроса = новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).ВыраженияИтогов.Очистить();
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).КонтрольныеТочкиИтогов.Очистить();
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();

Выгрузка в Excel документ

Как выгружать данные в Эксель? через COMОбъект понятно. а как происходит сам процесс выгрузки... Нуждаюсь в помощи
Hex

OneTracker - трекер учета рабочего времени программиста 1С

Программа автоматически замеряет время работы разработчика с 1С в режиме Конфигуратора или Предприятия. Учет ведется в разрезах задач, информационных баз или объектов конфигураций.
bolsun 33 4
990 руб.

Дублирование тегов

Теги OneScript и теги БСП, существуют в нескольких экземлярах

Плановая себестоимость продаж (цена на Дату документа)

Плановая себестоимость продаж (цена на Дату документа)
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПродажиОбороты.Период КАК Период,
	|	ПродажиОбороты.Характеристика КАК Характеристика,
	|	ПродажиОбороты.Номенклатура КАК Номенклатура,
	|	ПродажиОбороты.КоличествоОборот КАК Количество,
	|	ПродажиОбороты.СуммаОборот КАК Выручка,
	|	ПродажиОбороты.Контрагент КАК Контрагент,
	|	ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
	|	ПродажиОбороты.Ответственный КАК Ответственный
	|ПОМЕСТИТЬ втПродажиБезЦены
	|ИЗ
	|	РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ПродажиОбороты
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
	|	ЦеныНоменклатуры.Характеристика КАК Характеристика,
	|	МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена,
	|	ЦеныНоменклатуры.Период КАК Период
	|ПОМЕСТИТЬ втЦеныПоНоменклатуре
	|ИЗ
	|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
	|ГДЕ
	|	ЦеныНоменклатуры.Период <= &ДатаОкончания
	|	И ЦеныНоменклатуры.ВидЦен = &ВидЦен
	|
	|СГРУППИРОВАТЬ ПО
	|	ЦеныНоменклатуры.Номенклатура,
	|	ЦеныНоменклатуры.Характеристика,
	|	ЦеныНоменклатуры.Период
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПродажиОбороты.Период КАК Период,
	|	ЕСТЬNULL(ПродажиОбороты.Выручка, 0) КАК Выручка,
	|	ПродажиОбороты.Характеристика КАК Характеристика,
	|	ПродажиОбороты.Номенклатура КАК Номенклатура,
	|	ЕСТЬNULL(ПродажиОбороты.Количество, 0) КАК Количество,
	|	ПродажиОбороты.Контрагент КАК Контрагент,
	|	ПродажиОбороты.Ответственный КАК Ответственный,
	|	ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
	|	МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ДатаЦены
	|ПОМЕСТИТЬ втМаксПериод
	|ИЗ
	|	втПродажиБезЦены КАК ПродажиОбороты
	|		ЛЕВОЕ СОЕДИНЕНИЕ втЦеныПоНоменклатуре КАК ЦеныНоменклатуры
	|		ПО (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура)
	|			И (ЦеныНоменклатуры.Характеристика = ПродажиОбороты.Характеристика)
	|			И (ЦеныНоменклатуры.Период <= ПродажиОбороты.Период)
	|
	|СГРУППИРОВАТЬ ПО
	|	ПродажиОбороты.Ответственный,
	|	ПродажиОбороты.Контрагент,
	|	ПродажиОбороты.Номенклатура,
	|	ПродажиОбороты.Характеристика,
	|	ПродажиОбороты.Период,
	|	ПродажиОбороты.ЗаказПокупателя,
	|	ЕСТЬNULL(ПродажиОбороты.Выручка, 0),
	|	ЕСТЬNULL(ПродажиОбороты.Количество, 0)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Заказ_Поставщику.ЗаказПокупателя КАК ЗаказПокупателя,
	|	СУММА(ЗаказПоставщикуЗапасы.Сумма) КАК Сумма
	|ПОМЕСТИТЬ ВТЗатратыНаСубподряд
	|ИЗ
	|	Документ.ЗаказПоставщику.Запасы КАК ЗаказПоставщикуЗапасы
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК Заказ_Поставщику
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказ_Покупателя
	|			ПО Заказ_Поставщику.ЗаказПокупателя = Заказ_Покупателя.Ссылка
	|		ПО ЗаказПоставщикуЗапасы.Ссылка = Заказ_Поставщику.Ссылка
	|ГДЕ
	|	Заказ_Покупателя.Дата > ДОБАВИТЬКДАТЕ(&ДатаНачала, ГОД, -1) И  Заказ_Покупателя.Контрагент НЕ В (&КонтрагентыБезСубподряда)
	|
	|СГРУППИРОВАТЬ ПО
	|	Заказ_Поставщику.ЗаказПокупателя
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПродажиОбороты.Характеристика КАК Характеристика,
	|	ПродажиОбороты.Номенклатура КАК Номенклатура,
	|	ПродажиОбороты.Количество КАК Количество,
	|	ПродажиОбороты.Выручка КАК Выручка,
	|	ПродажиОбороты.Контрагент КАК Контрагент,
	|	ПродажиОбороты.Ответственный КАК Ответственный,
	|	ПродажиОбороты.Период КАК Период,
	|	ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
	|	ЦеныНоменклатуры.Цена КАК Цена,
	|	isnull(ЦеныНоменклатуры.Цена,0) * ПродажиОбороты.Количество КАК Себестоимость,
	|	isnull(ВТЗатратыНаСубподряд.Сумма,0) КАК Субподряд
	|ИЗ
	|	втМаксПериод КАК ПродажиОбороты
	|		ЛЕВОЕ СОЕДИНЕНИЕ втЦеныПоНоменклатуре КАК ЦеныНоменклатуры
	|		ПО (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура)
	|			И (ЦеныНоменклатуры.Период = ПродажиОбороты.ДатаЦены)
	|			И ПродажиОбороты.Характеристика = ЦеныНоменклатуры.Характеристика
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗатратыНаСубподряд КАК ВТЗатратыНаСубподряд
	|		ПО ПродажиОбороты.ЗаказПокупателя = ВТЗатратыНаСубподряд.ЗаказПокупателя
	|
	|СГРУППИРОВАТЬ ПО
	|	ПродажиОбороты.Ответственный,
	|	ПродажиОбороты.Характеристика,
	|	ПродажиОбороты.Контрагент,
	|	ПродажиОбороты.ЗаказПокупателя,
	|	ПродажиОбороты.Номенклатура,
	|	ПродажиОбороты.Количество,
	|	ПродажиОбороты.Период,
	|	ПродажиОбороты.Выручка,
	|	ЦеныНоменклатуры.Цена,
	|	ПродажиОбороты.ДатаЦены,
	|	ЦеныНоменклатуры.Цена * ПродажиОбороты.Количество,
	|	ВТЗатратыНаСубподряд.Сумма
	|ИТОГИ
	|	СУММА(Количество),
	|	СУММА(Выручка),
	|	СУММА(Себестоимость),
	|	МАКСИМУМ(Субподряд)
	|ПО
	|	Ответственный,
	|	Контрагент,
	|	ЗаказПокупателя,
	|	Номенклатура";

Программное получение СочетаниеКлавиш

Дает возможность назначить нестандартные кнопки - например Enter(13) , Esc(27), Del(46) и т.д.
DiKSer 11 2
// Возвращает сочетание клавиш из скан-кода
//
// Параметры:
//  Код - Строка - скан-код клавиши
//  Alt - Число - факт нажатия клавиши alt
//  Control - Число - факт нажатия клавиши Control
//  Shift - Число - факт нажатия клавиши Shift
//
// Возвращаемое значение:
//   СочетаниеКлавиш - программное сочетание клавиш
//
Функция ПолучитьСочетаниеКлавишПоКоду(Код, Alt = 0, Control = 0, Shift = 0) Экспорт
    Возврат ЗначениеИзСтрокиВнутр("{""#"", 69cf4251-8759-11d5-bf7e-0050bae2bc79, 1,
        |{0, " + Формат(Код, "ЧН=0; ЧГ=0") + ", " + Формат(Alt * 16 + Control * 8 + Shift * 4, "ЧН=0; ЧГ=0") + "}
        |}");
КонецФункции

// https://filestore.community.support.microsoft.com/api/images/924f1958-8fe8-41a8-b34b-6018c6283a05 - скан-коды клавиатуры

Установить отбор пользовательских настроек динамического списка

Установка отбора списка при программном открытии управляемой формы списка. Помогает в тех случаях, если нужно установить значение отбора, которое потом может быть отредактировано пользователем. Если устанавливать отбор через параметры открытия формы, то отбор добавляется в фиксированные настройки компоновки и при изменении этого отбора пользователем на форме возникнет ошибка
//Если есть БСП
мФорма = ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
	
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(мФорма.Список, "ПометкаУдаления", Истина, ВидСравненияКомпоновкиДанных.Равно, , Истина, РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный, Новый УникальныйИдентификатор);

//Если нет БСП то используем велосипед
//Вызывающий код
мФорма = ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
УстановитьПользовательскийОтборДинамическогоСписка(мФорма.Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно);
		

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

Отслеживание изменений отбора

изменение отбора, обработчик изменения отбора
DiKSer 11 2
//Подключаем обработчик изменения на отбор в данном случае у регистра сведений список при открытии- 
Процедура ПриОткрытии()
    ПодключитьОбработчикИзмененияДанных("РегистрСведенийСписок.Отбор", "ОбработкаОтбора",Истина);
	
	ОбработкаОтбора(Неопределено);
КонецПроцедуры

Процедура ОбработкаОтбора(Элемент)
	
    // Элемент - то что изменилось в Отборе - например Период.ВидСравнения
    // тут можно обработать изменения отбора 
		
КонецПроцедуры

Элемент справочника

Ищет/создаёт элемент справочника
SDV 31 6
// Функция - Элемент справочника ищет/создаёт элемент справочника
//
// Параметры:
//  НазваниеСправочника      - Строка - Название справочника элемент которого необходимо вернуть
//  СтруктураПараметров      - Структура - Ключ = Название реквизиты, Значение = Значение
//  Режим - Число                 - Варианты:
//                                        1 - ищет и возвращает ссылку;
//                                        2 - ищет и возвращает ссылку, если не находит создаёт новый элемент и возвращает ссылку на него
//                                        3 - создаёт новый элемент и возвращает ссылку на него
//
// Возвращаемое значение:
//  СправочникСсылка
//
Функция ЭлементСправочника(НазваниеСправочника, СтруктураПараметров, Режим = 2) Экспорт
    
    Результат = Неопределено;
    
    Искать = (Режим = 1 или Режим = 2);
    
    Если Искать тогда
        Запрос = Новый Запрос;
        ТекстУсловий = "";
        Для Каждого ЭлементСтруктуры из СтруктураПараметров Цикл
            Запрос.Параметры.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
            ОбъектМетаданных = Метаданные.Справочники[НазваниеСправочника].Реквизиты.Найти(ЭлементСтруктуры.Ключ);
            Если ОбъектМетаданных = Неопределено Тогда
                ОбъектМетаданных = Метаданные.Справочники[НазваниеСправочника].СтандартныеРеквизиты[ЭлементСтруктуры.Ключ];
            КонецЕсли;
            Тип = ОбъектМетаданных.Тип;
            //Новый ОписаниеТипов(
            Если Тип = Новый ОписаниеТипов("Строка") Тогда
                //и Тип.КвалификаторыСтроки.Длина = 0 Тогда
                ТекстУсловий = ТекстУсловий + "ВЫРАЗИТЬ(" + НазваниеСправочника + "." + ЭлементСтруктуры.Ключ
                + " КАК СТРОКА(1000)) = ВЫРАЗИТЬ(&" + ЭлементСтруктуры.Ключ + " КАК СТРОКА(1000)) И ";
            Иначе
                
                ТекстУсловий = ТекстУсловий + НазваниеСправочника + "." + ЭлементСтруктуры.Ключ + " = &" + ЭлементСтруктуры.Ключ + " И ";
                
            КонецЕсли;
        КонецЦикла;
        ТекстУсловий = ТекстУсловий + "ИСТИНА = ИСТИНА";
        Запрос.Текст = "ВЫБРАТЬ " + НазваниеСправочника + ".Ссылка ИЗ Справочник." + НазваниеСправочника  + " КАК " + НазваниеСправочника + " ГДЕ " + ТекстУсловий;
        
        ТЗ_РезультатЗапроса = Запрос.Выполнить().Выгрузить();
        
        Если ТЗ_РезультатЗапроса.Количество() = 1 Тогда
            Результат = ТЗ_РезультатЗапроса[0].Ссылка;
        ИначеЕсли ТЗ_РезультатЗапроса.Количество() > 1 Тогда
            Сообщить("Найдено более одного элемента:");
            Сообщить(ТЗ_РезультатЗапроса[0].Ссылка);
            Результат = ТЗ_РезультатЗапроса[0].Ссылка;
        КонецЕсли;
    КонецЕсли;
    
    Создавать = (Режим = 3 или (Режим = 2 и не ЗначениеЗаполнено(Результат)));
    
    Если Создавать Тогда
        Если СтруктураПараметров.Свойство("ЭтоГруппа") и СтруктураПараметров.ЭтоГруппа Тогда
            НовыйЭлемент = Справочники[НазваниеСправочника].СоздатьГруппу();
        Иначе
            НовыйЭлемент = Справочники[НазваниеСправочника].СоздатьЭлемент();
        КонецЕсли;
        
        ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтруктураПараметров);
        НовыйЭлемент.Записать();
        Результат = НовыйЭлемент.Ссылка;
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции

Путь к файлу

Открывает диалог выбора пути к файлу (каталогу), возвращает путь
SDV 31 6
// Функция - Путь к файлу
//
// Параметры:
//  Заголовок     - Строка - НПР: "Укажите путь к базе Поставщиков"
//  Фильтр         - Строка -    НПР: "(*.txt)|*.txt"
//  Режим         - РежимДиалогаВыбораФайла - НПР: РежимДиалогаВыбораФайла.Открытие
//  ИсходныйПуть - Строка - НПР: Путь чтобы выбор начинался в определённом месте
//
// Возвращаемое значение:
//  Строка, Неопределено -  В случае успеха Путь в виде Строки, иначе Неопределено
//
// Пример:
//  Элемент.Значение = ПутьКФайлу("Выберите путь к файлу с данными (xls):","(*.xls*)|*.xls*", РежимДиалогаВыбораФайла.Открытие, Элемент.Значение)
Функция ПутьКФайлу(Заголовок, Фильтр, Режим, ИсходныйПуть = Неопределено) Экспорт
    Результат = Неопределено;
    ДиалогОткрытияФайла  = Новый ДиалогВыбораФайла (Режим);
    //выбор начнётся по исходному пути?!
    Если ИсходныйПуть <> Неопределено Тогда
        Если Режим =  РежимДиалогаВыбораФайла.ВыборКаталога Тогда
            ДиалогОткрытияФайла.Каталог = ИсходныйПуть;
        ИначеЕсли  Режим = ДиалогОткрытияФайла.ПолноеИмяФайла  Тогда
            ДиалогОткрытияФайла.ПолноеИмяФайла = ИсходныйПуть;
        КонецЕсли;
    КонецЕсли;
    ДиалогОткрытияФайла.ПолноеИмяФайла     = "";
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок          = Заголовок;
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    Успех = ДиалогОткрытияФайла.Выбрать();
    Если Успех Тогда
        Если Режим = РежимДиалогаВыбораФайла.ВыборКаталога Тогда
            Результат = ДиалогОткрытияФайла.Каталог;
        Иначе
            Результат = ДиалогОткрытияФайла.ПолноеИмяФайла;
        КонецЕсли;
    Иначе
        Результат = Неопределено;
    КонецЕсли;
    Возврат Результат;
КонецФункции

Загрузить колонку (создавать строки Таблицы при необходимости)

Альтернатива странному методу ЗагрузитьКолонку объектов типа ТаблицаЗначений, ТабличнаяЧасть
SDV 31 6
// Процедура - Загрузить колонку
//
// Параметры:
//  Таблица             - ТаблицаЗначений, ТабличнаяЧасть
//  МассивЗначений     - Массив
//  Колонка             - Строка
//  Очищать             - Булево - Необязательно. По-умолчанию Истина.
//                                Если Истина, то таблица предварительно очищается.
//                                
Процедура ЗагрузитьКолонку(Таблица, МассивЗначений, Колонка, Очищать = Истина) Экспорт
    Если Очищать Тогда
        Таблица.Очистить();
    КонецЕсли;


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

OneScript

OpenSource инструмент автоматизации для специалистов по 1С. Проект является независимой кросс-платформенной реализацией виртуальной машины, исполняющей скрипты на языке 1С:Предприятие.
bolsun 33 4
Бесплатно

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

Событие ПриПолученииДанных используется для оформления ячеек строк данных, отображаемых табличным полем. В нем можно оформить или раскрасить строку, в зависимости от данных.
pkonev 1
Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
		
	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
			
		Если ОформлениеСтроки.ДанныеСтроки.Товар.Уценен Тогда
			ОформлениеСтроки.Ячейки.Комментарий.УстановитьТекст("Уценка");
			ОформлениеСтроки.Ячейки.Комментарий.ЦветФона = Новый Цвет(255, 255, 128);
			ОформлениеСтроки.Ячейки.Комментарий.ЦветТекста = Новый Цвет(0, 0, 0);
			ОформлениеСтроки.Ячейки.Комментарий.ТолькоПросмотр = Истина;
		КонецЕсли;
				
		//ОформлениеСтроки.ЦветФона = Новый Цвет(255, 255, 128);
		//ОформлениеСтроки.ЦветТекста = Новый Цвет(0, 0, 0);
						
	КонецЦикла;
	
КонецПроцедуры

use your.mind

Фреймворк для создания веб-приложений на языке 1С
Бесплатно

УТ11 Счет на оплату из реализации

Печать из реализации, без типовых ограничений, номер и дата из документа реализации
bolsun 33 4
Бесплатно

МассивБезДублей

Убирает дубли из массива значений
prog1c 39 1 5
Функция МассивБезДублей(ИсходныйМассив) Экспорт

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

КонецФункции // МассивБезДублей()

МассивВТаблицуЗначений

Преобразует массив в ТаблицуЗначений
prog1c 39 1 5
Функция МассивВТаблицуЗначений(ИсходныйМассив, Знач ИмяКолонки="") Экспорт
	
	Если ПустаяСтрока(ИмяКолонки) Тогда
		ИмяКолонки = "Колонка1";
	КонецЕсли;
	
	ИмяКолонки = СтрЗаменить(ИмяКолонки, " ", "_");
	
	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить(ИмяКолонки);
	
	Если ЗначениеЗаполнено(ИсходныйМассив) Тогда
		Для Сч = 1 По ИсходныйМассив.Количество() Цикл
			Результат.Добавить();
		КонецЦикла;
		Результат.ЗагрузитьКолонку(ИсходныйМассив, ИмяКолонки);
	КонецЕсли;
	
	Возврат Результат;	

КонецФункции // МассивВТаблицуЗначений()