Добавить Назад

Сократить лидирующие нули

Убирает лидирующие нули в строке без пробелов
Лидирующие нули Строка Сокращение Убрать нули
Добавил: ChOP
Функция УбратьЛидирующиеНули(СокращаемаяСтрока)

		Возврат СтрЗаменить(СокрЛ(СтрЗаменить(СокращаемаяСтрока,"0"," "))," ","0");

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

Есть реквизит у объекта

1 Добавил: Igozz
Функция ЕстьРеквизитУОбъекта(Объект, ИмяРеквизита) Экспорт
	
	СлучайноеЗначение= Новый УникальныйИдентификатор();
    Буфер = Новый Структура(ИмяРеквизита, СлучайноеЗначение);
    ЗаполнитьЗначенияСвойств(Буфер, Объект);
    Возврат Буфер[ИмяРеквизита] <> СлучайноеЗначение;
	
КонецФункции

Убрать лишние символы из строки

Возвращает строку, состоящую только из цифр и символов русского и английского алфавита
Добавил: Igozz
Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
	РезультирующаяСтрока = "";
	Для н = 1 По СтрДлина(Строка) Цикл
		Если (КодСимвола(Строка, н) >= 48 И КодСимвола(Строка, н) <= 57)
			ИЛИ (КодСимвола(Строка, н) >= 65 И КодСимвола(Строка, н) <= 90)
			ИЛИ (КодСимвола(Строка, н) >= 97 И КодСимвола(Строка, н) <= 122)
			ИЛИ (КодСимвола(Строка, н) >= 1040 И КодСимвола(Строка, н) <= 1103) Тогда
			РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
		КонецЕсли;
	КонецЦикла;
	Возврат РезультирующаяСтрока;
КонецФункции

Загрузка данных из Excel

Excel Эксель
1 Добавил: Yuriy K.
&НаСервере
Функция ПолучитьТЗДляНестандарта()
	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("ЕдИзм", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Возврат Результат;
КонецФункции

&НаКлиенте
Процедура Расш1_ЮКОЗ_ЗагрузитьНестандартПосле(Команда)
	
	Результат = ПолучитьТЗДляНестандарта();
	
	Режим = РежимДиалогаВыбораФайла.Открытие; 
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
	ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
	Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx"; 
	ДиалогОткрытияФайла.Фильтр = Фильтр; 
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь; 
	ДиалогОткрытияФайла.Заголовок = "Выберите файл"; 
	
	Если ДиалогОткрытияФайла.Выбрать() Тогда 
		
		Попытка
			Эксель = Новый COMОбъект("Excel.Application");
		Исключение
			Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!"); 
			Возврат;
		КонецПопытки;
		
		Книга = Эксель.WorkBooks.Open(ДиалогОткрытияФайла.ПолноеИмяФайла);
		Лист = Книга.WorkSheets(1);
		
		НомерСтроки = 2;
				
		Пока НЕ ПустаяСтрока(Лист.Cells(НомерСтроки, 1).Value) Цикл
			
			НоваяСтрока = Результат.Добавить();
			НоваяСтрока.Артикул	= СокрЛП(Лист.Cells(НомерСтроки,1).Value);
			НоваяСтрока.Номенклатура	= СокрЛП(Лист.Cells(НомерСтроки,2).Value);
			НоваяСтрока.Характеристика	= СокрЛП(Лист.Cells(НомерСтроки,3).Value);
			НоваяСтрока.Количество	= СокрЛП(Лист.Cells(НомерСтроки,4).Value);
			НоваяСтрока.ЕдИзм	= СокрЛП(Лист.Cells(НомерСтроки,5).Value);
			НоваяСтрока.Цена	= СокрЛП(Лист.Cells(НомерСтроки,6).Value);
			НоваяСтрока.Сумма	= СокрЛП(Лист.Cells(НомерСтроки,7).Value);
			
			Если НЕ ЗначениеЗаполнено(НоваяСтрока.Номенклатура) Тогда
				ВызватьИсключение "В строке №" + НомерСтроки + " не заполнено наимевание номенклатуры. Загрузка прервана!";	
				Возврат;
			КонецЕсли;
			
			НомерСтроки = НомерСтроки + 1;
			
		КонецЦикла;	
		
		Эксель.Application.Quit();
		
	КонецЕсли;
	
КонецПроцедуры

Генератор случайных чисел для диапазона с дробными и отрицательными числами

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

		Возврат РезультатГенератора ;

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

Вставка рисунка в табличный документ без изменения макета

Добавил: Igozz
Рисунок = Шапка.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 4;
Рисунок.Высота = 22;
Рисунок.Ширина = 95;
Рисунок.Лево = 45;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,-1);
Карт = БиблиотекаКартинок.ВашаКартинка;
Рисунок.Картинка = Карт;

Удалить элемент массива

Добавил: Igozz
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ВидыВремениВЗачетНормыСуммированногоУчета, ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.НеявкиПоНевыясненнымПричинам"));

Структура отчета СКД

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

 //добавить группировку
 

ГруппировкаПоСкладу = ТекНастройкиКомпоновщика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаПоСкладу.Имя = "Склад";
ГруппировкаПоСкладу.Использование = Истина;

 //созданная группировка по полю "Склад"
 
ПолеГруппировкиСклад = ГруппировкаПоСкладу.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));       
ПолеГруппировкиСклад.Использование      = Истина;
ПолеГруппировкиСклад.Поле               = Новый ПолеКомпоновкиДанных("Склад");
ПолеГруппировкиСклад.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
ПолеГруппировкиСклад.ТипДополнения      = ТипДополненияПериодаКомпоновкиДанных.БезДополнения;

 //добавить выводимые поля в группировке: склад и количество остаток для данной группировки
 
ВыбранноеПоле = ГруппировкаПоСкладу.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));     
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад");
ВыбранноеПоле = ГруппировкаПоСкладу.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));     
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");

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

ТаблицаЗначенийВТаблицуХТМЛ

HTML
1 Добавил: Igozz
Функция ТаблицаЗначенийВТаблицуХТМЛ(ТабЗначений,СтруктураПараметрыТаблицыХТМЛ = Неопределено) Экспорт
	
	//СтруктураПараметрыТаблицыХТМЛ
	//
	//Общие параметры:
	//СтруктураПараметрыТаблицыХТМЛ.ШиринаТаблицы - общая ширина таблица
	//СтруктураПараметрыТаблицыХТМЛ.ЦветШапки - цвет шапки таблицы пример "eadbaf"
	//СтруктураПараметрыТаблицыХТМЛ.ПунктПорядкуИспользуется - по умолчанию ЛОЖЬ
	//
	//Индивиуальные для каждой колонки:
	//СтруктураПараметрыТаблицыХТМЛ.Заголовок1 - заголовок для первой колонки, цифра на конце обознает номер колонки (не с нуля)
	//СтруктураПараметрыТаблицыХТМЛ.Ширина1 - ширина для первой колонки, цифра на конце обознает номер колонки (не с нуля)
	//СтруктураПараметрыТаблицыХТМЛ.Положение1 - отвечает за положение текста в колонке (по умол. лево), передовать "center" или "right"
	
	//ТабЗначений = Новый ТаблицаЗначений;
	МассивИменКолонок = Новый Массив;
	
	Если ТипЗнч(СтруктураПараметрыТаблицыХТМЛ) <> Тип("Структура") Тогда
		СтруктураПараметрыТаблицыХТМЛ = Новый Структура;
	КонецЕсли;
				
	КоличествоКолонок = ТабЗначений.Колонки.Количество();
	ПунктПорядкуИспользуется = ?(СтруктураПараметрыТаблицыХТМЛ.Свойство("ПунктПорядкуИспользуется"),СтруктураПараметрыТаблицыХТМЛ.ПунктПорядкуИспользуется,ЛОЖЬ);	
	
	Если КоличествоКолонок < 0 Тогда
		Возврат Неопределено;
	КонецЕсли;
			
	ЦветШапки = ?(СтруктураПараметрыТаблицыХТМЛ.Свойство("ЦветШапки")," bgcolor=""#" + СтруктураПараметрыТаблицыХТМЛ.ЦветШапки + """","");
	ШиринаТаблицы = ?(СтруктураПараметрыТаблицыХТМЛ.Свойство("ШиринаТаблицы")," style=""width:" + СтруктураПараметрыТаблицыХТМЛ.ШиринаТаблицы + "px""",""); 
	ТаблицаХТМЛ = "<table border=""1"" cellpadding=""1"" cellspacing=""0"" " + ШиринаТаблицы + ">
				|<tbody>
				|<tr>";
	
	//Первым выводим столбик П/П если он задан в шапку
	Если ПунктПорядкуИспользуется Тогда
		ТаблицаХТМЛ = ТаблицаХТМЛ + "
				|<td" + ЦветШапки + " style=""width:30px"" align=""center"">п/п</td>";	
	КонецЕсли;
	
	//Формируем шапку
	Для Счетчик = 1 по КоличествоКолонок Цикл
		ИмяСвойстваШирина = "Ширина" + Счетчик;
		ШиринаСтолбца = ?(СтруктураПараметрыТаблицыХТМЛ.Свойство(ИмяСвойстваШирина)," style=""width:" + СтруктураПараметрыТаблицыХТМЛ[ИмяСвойстваШирина] + "px""","");
		ИмяКолонки = ТабЗначений.Колонки[Счетчик-1].Имя;
		ИмяСвойстваЗаголовок = "Заголовок" + Счетчик;
		ЗаголовокКолонки = ?(СтруктураПараметрыТаблицыХТМЛ.Свойство(ИмяСвойстваЗаголовок),СтруктураПараметрыТаблицыХТМЛ[ИмяСвойстваЗаголовок],ИмяКолонки);
		ТаблицаХТМЛ = ТаблицаХТМЛ + " 
				|<td" + ЦветШапки + ШиринаСтолбца + " align=""center"">" + ЗаголовокКолонки + "</td>";	
		МассивИменКолонок.Добавить(ИмяКолонки);
	КонецЦикла;
	ТаблицаХТМЛ = ТаблицаХТМЛ + "
				|</tr>";
	
	//Заполняем таблицу	
	ПунктПорядку = 0;
	Для каждого СтрокаТаблицы Из ТабЗначений Цикл
		ПунктПорядку = ПунктПорядку + 1;
		ТаблицаХТМЛ = ТаблицаХТМЛ + "
				|<tr>" + ?(ПунктПорядкуИспользуется, Символы.ПС + "<td align=""center"">" + ПунктПорядку + "</td>","") + "";
		Для Счетчик = 0 по КоличествоКолонок - 1 Цикл
			ИмяСвойстваПоложение = "Положение" + Строка(Счетчик + 1);
			Положение = " align=""" + ?(СтруктураПараметрыТаблицыХТМЛ.Свойство(ИмяСвойстваПоложение),СтруктураПараметрыТаблицыХТМЛ[ИмяСвойстваПоложение],"left") + """";
			ТаблицаХТМЛ = ТаблицаХТМЛ + "
				|<td " + Положение + ">" + СтрокаТаблицы[МассивИменКолонок[Счетчик]] + "</td>";			
		КонецЦикла;				
		ТаблицаХТМЛ = ТаблицаХТМЛ + "
				|</tr>";
	КонецЦикла;	
	
	ТаблицаХТМЛ = ТаблицаХТМЛ + " 
				|</tbody>
				|</table>";
	
	Возврат ТаблицаХТМЛ;

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

Запустить внешнее приложение

Выполняет запуск внешнего процесса, с оповещением и ожиданием результата
УФ
Добавил: bolsun
&НаКлиенте
Процедура КомандаВыполнитьПрограмму(Команда)
	
	СтрокаЗапуска = "C:\Application.exe";
	
	НачатьЗапускПриложения(Новый ОписаниеОповещения("НачатьЗапускПриложенияЗавершение", ЭтотОбъект), СтрокаЗапуска,, Истина);
	
КонецПроцедуры  

&НаКлиенте
Процедура НачатьЗапускПриложенияЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт 
    
    //Вставить обработку завершения выполнения
    
КонецПроцедуры