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

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

Использование биометрии в мобильной платформе 1С

Пример кода
Источник: https://t.me/nizamov_studio_1c
FastCode 1413 11 21 66
&НаКлиенте
Функция Биометрия()
	#Если МобильноеПриложениеКлиент Тогда
		Если ТелефонПоддерживаетБиометрическийВход() Тогда
			ПоказатьВопрос(Новый ОписаниеОповещения("ТелефонПоддерживаетБиометрическийВходЗавершение", ЭтотОбъект), "Использовать биометрию для входа", РежимДиалогаВопрос.ДаНет);
		КонецЕсли;
	#КонецЕсли
КонецФункции

&НаКлиенте
Процедура ТелефонПоддерживаетБиометрическийВходЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		ПровестиБиометрическийВход();
	КонецЕсли;  
КонецПроцедуры

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

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

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

Выгрузка файла на FTP

FTP_Cоединение.УстановитьТекущийКаталог("."); - строковый параметр означает корневой каталог, можно указать папку "\НазваниеПапки"; FTP_Cоединение.Записать(ПутьКФайлу, "actual_products.json"); - второй параметр, название файла с расширением (.txt, .csv, .xml); Директива компиляции - &НаСервере
andrey5565 49 1 4
// Параметры соединения; 
	Сервер = "00.000.000.000";
	
	Порт	= 21;
	
	ИмяПользователя 	= "u00000";
	
	ПарольПользователя = "86731db349"; 
	
	// Загрузка на  FTP;
	FTP_Cоединение = Новый FTPСоединение(Сервер, Порт, ИмяПользователя, ПарольПользователя,,, 20);
	
	Попытка
		FTP_Cоединение.УстановитьТекущийКаталог(".");          
		FTP_Cоединение.Записать(ПутьКФайлу, "actual_products.json"); // представим что отсюда сайт подгружает данные;
		
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ".JSON файл, находящийся в каталоге: " + ПутьКФайлу + " был успешно загружен на FTP_сервер!";
		Сообщение.Сообщить();
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось подключиться к FTP_серверу! Описание ошибки: " + ОписаниеОшибки();
		Сообщение.Сообщить();
	КонецПопытки;

TurboConf - расширение Конфигуратора 1С Промо

TurboConf повышает эффективность работы в Конфигураторе 1С и помогает программисту автоматизировать свои задачи.
bolsun
4 990 руб.

Удалить префикс, лидирующие нули

Удаляет префикс, по типу "ТДУТ-", чистит лидирующие нули;
andrey5565 49 1 4
&НаКлиенте
Функция ФорматироватьНомерДокуметаНаКлиенте(Знач НомерДокумента)
	
	НомерДокументаСтрокой 	= Строка(НомерДокумента);
	
	НомерДокументаСтрокой	= СтрЗаменить(НомерДокументаСтрокой, "-", "");
	
	ПозицияПервогоНуля		= СтрНайти(НомерДокументаСтрокой, "0", НаправлениеПоиска.СНачала);
	
	НомерДокументаСтрокой 	= Сред(НомерДокументаСтрокой, ПозицияПервогоНуля, СтрДлина(НомерДокументаСтрокой)); //символы = цифры;
	
	Счетчик = 1;
	Пока Лев(НомерДокументаСтрокой, 1) = "0" Цикл
		НомерДокументаСтрокой = Сред(НомерДокументаСтрокой, Счетчик + 1);
	КонецЦикла;

	Возврат НомерДокументаСтрокой;
	
КонецФункции // ()

При запуске конфигурации, с подключенным расширением, возникает ошибка "Недопустимое состояние объекта"

Одной из причин ошибки может быть наличие бага платформе. Столкнулись с ошибкой на платформе 8.3.22.1923. Конфигурация с расширением стала выдавать ошибку при запуске. Недопустимое состояние объекта [backbas - src\backbas\src\ModuleWithPragmasHelper.cpp...
bolsun 425 6 10 7

Является ли значение табличной частью

Проверяет, что переданное значение имеет тип "Табличная часть", а не какой-либо другой. Поддерживаемые контексты: сервер.
John Doe 19 1
// Проверяет, что переданное значение имеет тип "Табличная часть", а не какой-либо другой.
Функция ЭтоТабличнаяЧасть(Знач ТЧ) Экспорт

	ЭтоТЧ = Ложь;
	
	ТипЗначенияСтрокой = Строка(ТипЗнч(ТЧ)); // "Справочник табличная часть: ...", "Внешняя обработка табличная часть: ...",
	                                         // "Catalog Tabular section: ...", "External data processor Tabular section: ..." и т.д.
	Фрагменты = СтрРазделить(ТипЗначенияСтрокой, ":", Ложь);
	Если Фрагменты.Количество() > 1 Тогда
		Пациент = Фрагменты[0]; // Анализируем только первый фрагмент (до первого двоеточия).
		                        // В синониме какого-либо объекта метаданных тоже может встретиться маркер "... табличная часть:",
								// но это всегда будет уже следующий фрагмент (и он нас не интересует).
		Пациент = НРег(Пациент); // Фирма 1С не выдерживает единый стиль для русскоязычного и англоязычного вариантов встроенного языка,
		                         // поэтому на всякий случай приводим всё к какому-то одному регистру букв.
		Если СтрЗаканчиваетсяНа(Пациент, НРег(" табличная часть")) ИЛИ СтрЗаканчиваетсяНа(Пациент, НРег(" Tabular section")) Тогда
			ЭтоТЧ = Истина;
		КонецЕсли;
	КонецЕсли;
	
	Возврат ЭтоТЧ;

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

Шаблон кода Внешней обработки Заполнение Объекта

Шаблон кода внешней обработки Вида Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта НаСервере Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт //: ОбъектыНазначенияМассив = Новый Массив; Если Идентиф...
СергейТ 69 2 8

ПоискПохожейСтроки (8.3 без режима совместимости с 8.2)

Поиск похожей строки из массива объектов для проверки на основании исходной строки.
yoyuyoppe 10 2
// Функция - Поиск похожей строки из набора строк
//
// Параметры:
//  ИсходнаяСтрока		 - Строка	 - Исходная строка
//  ОбъектыДляПроверки	 - Массив	 - Массив элементов произвольного типа, в котором будем искать похожую строку
//  пНаправлениеПоиска	 - НаправлениеПоиска	 -  Указывает направление поиска подстроки в строке
//  ЖелательныйПроцентСовпадения	 - Число	 -  Ожидаемый процент совпадения подстроки поиска в проверяемой строке. По умолчанию 50
// 
// Возвращаемое значение:
// Строка  - строка с максимальным вхождением подстроки поиска
//
Функция ПоискПохожейСтроки(ИсходнаяСтрока, ОбъектыДляПроверки, пНаправлениеПоиска, ЖелательныйПроцентСовпадения)
	
	ПохожаяСтрока = "";
	
	ТаблицаСтатистики = Новый ТаблицаЗначений;
	ТаблицаСтатистики.Колонки.Добавить("Объект");
	ТаблицаСтатистики.Колонки.Добавить("ЧислоВхождений");
	
	ДлинаИсходнойСтроки = СтрДлина(ИсходнаяСтрока);
		
	Для каждого Элемент Из ОбъектыДляПроверки Цикл
		
		ТекОбъект = ВРЕГ(Элемент);
		ДлинаТекОбъекта = СтрДлина(ТекОбъект);
		
		Для Сч = 0 По ДлинаИсходнойСтроки Цикл
			
			Если пНаправлениеПоиска = НаправлениеПоиска.СНачала Тогда
				ИскомаяСтрока = Сред(ИсходнаяСтрока, 1, Сч + 1);
				НачПозицияПоиска = 1;
			Иначе	
				ИскомаяСтрока = Сред(ИсходнаяСтрока, ДлинаИсходнойСтроки - Сч, Сч + 1);
				НачПозицияПоиска = ДлинаТекОбъекта;
			КонецЕсли; 
						
			Если СтрНайти(ТекОбъект, ИскомаяСтрока, пНаправлениеПоиска, НачПозицияПоиска) > 0 Тогда
				
				СтрСтатистика = ТаблицаСтатистики.Найти(ТекОбъект, "Объект");		
				
				Если СтрСтатистика <> Неопределено Тогда
					СтрСтатистика.ЧислоВхождений = СтрДлина(ИскомаяСтрока);
				Иначе
					Если Цел(СтрДлина(ИскомаяСтрока) / ДлинаТекОбъекта * 100) > ЖелательныйПроцентСовпадения Тогда
						СтрСтатистика = ТаблицаСтатистики.Добавить();
						СтрСтатистика.Объект = ТекОбъект;
						СтрСтатистика.ЧислоВхождений = СтрДлина(ИскомаяСтрока);						
					КонецЕсли; 
				КонецЕсли; 
				
			КонецЕсли;
			
		КонецЦикла;
				
	КонецЦикла; 
	
	Если ЗначениеЗаполнено(ТаблицаСтатистики) Тогда
		ТаблицаСтатистики.Сортировать("ЧислоВхождений УБЫВ");
		ПохожаяСтрока = ТаблицаСтатистики.Получить(0).Объект;
	КонецЕсли;
	
	Возврат ПохожаяСтрока
	
КонецФункции

Параметр данных при компоновке результата в модуле отчета

Установка параметра по имени на примере склада
ПараметрДанных					= КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Склад");
ПараметрДанных.Значение 		= Справочники.Склады.НайтиПоНаименованию("Основной");
ПараметрДанных.Использование 	= Истина;

Ищем разработчиков 1С. Платим 5000 рублей за 3 обработки + 80% с каждой оплаты

Всем доброго дня. Мы проект 42Clouds, предоставляем пользователям решения 1С в аренду, а еще у нас есть магазин расширений для 1С – Маркет42. Здесь разработчики размещают свои сервисы и обработки и получают за это деньги от благодарных пользователей. Месяц...

Пересечение cписков

Vitaly 4 1
Функция ПересечениеСписков(м1,м2)
	Тз = Новый ТаблицаЗначений();
	Для каждого Эл из М1 Цикл
		ТЗ.Добавить().Элемент=Эл.Значение;
	КонецЦикла;
	Для каждого Эл из М2 Цикл
		ТЗ.Добавить().Элемент=Эл.Значение;
	КонецЦикла;
	
	ТЗ.Колонки.Добавить("Флаг");
	ТЗ.ЗаполнитьЗначения(1,"Флаг");
	ТЗ.Свернуть("Элемент","Флаг");
	
	Совпадающие = Новый СписокЗначений;
	Для каждого Строка из ТЗ.НайтиСтроки(Новый Структура("Флаг",2)) Цикл
		Совпадающие.Добавить(Строка.Элемент);
	КонецЦикла;
	
	Возврат Совпадающие
КонецФункции

Краткое представление строки (в т.ч. многострочной) в виде первых N символов

Формирует из любой строки (включая многострочную) ее краткое однострочное представление, состоящее из первых N символов. Поддерживаемые контексты: клиент, сервер. Метод подходит для размещения в клиент-серверном общем модуле.
John Doe 19 1
// Формирует из любой строки (в т.ч. многострочной) ее краткое однострочное представление, состоящее из первых N символов.
// Если исходная строка многострочная, то берется ее первая подстрока.
// 
// В варианте по умолчанию метод пропускает все пустые строки и незначащие символы слева перед тем,
// как начать подсчет первых N символов, но этим можно управлять через необязательные параметры.
// 
// Если длина исходной строки больше максимально допустимой (или если исходная строка многострочная),
// то в возвращаемый результат добавляется многоточие, иначе - не добавляется.
//
// Параметры:
//  ИсходнаяСтрока - Строка - Строка, которую нужно обрезать.
//  МаксимальнаяДлина - Число - Сколько символов оставлять в возвращаемом результате.
//  УдалятьПустыеСтроки - Булево - Исходная многострочная строка может начинаться с одной или нескольких пустых строк.
//                                 Если их не удалять, то возвращаемый результат будет состоять из первой такой пустой строки.
//  УдалятьПробелыСлева - Булево - Удалять или не удалять незначащие символы (пробелы, табуляции и т.д.) из начала возвращаемой строки.
// 
// Возвращаемое значение:
//  Строка - Результат усечения исходной строки до N символов.
//
Функция КраткоеПредставлениеСтроки(Знач ИсходнаяСтрока, Знач МаксимальнаяДлина, Знач УдалятьПустыеСтроки = Истина, Знач УдалятьПробелыСлева = Истина) Экспорт
	
	Результат = "";
	Подстроки = СтрРазделить(ИсходнаяСтрока, Символы.ПС, НЕ УдалятьПустыеСтроки);
	Если Подстроки.Количество() > 0 Тогда
		Результат = Подстроки[0];
	КонецЕсли;
	
	Если УдалятьПробелыСлева Тогда
		Результат = СокрЛ(Результат);
	КонецЕсли;
	
	Если СтрЧислоСтрок(ИсходнаяСтрока) > 1 ИЛИ СтрДлина(Результат) > МаксимальнаяДлина Тогда
		Результат = Лев(Результат, МаксимальнаяДлина) + "...";
	КонецЕсли;
	
	Возврат Результат;

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

Шаблон кода Внешней обработки Расчет Скидки Наценки

Шаблон кода внешней обработки Вида Перечисления.ВидыДополнительныхОтчетовИОбработок.РасчетСкидкиНаценки
СергейТ 69 2 8
////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

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

// Возвращает способ применения скидки (наценки)
//
// Возвращаемое значение:
//	Перечисления.СпособыПримененияСкидокНаценок - способ применения скидки (наценки)
//
Функция СпособПрименения() Экспорт
	
	Возврат Перечисления.СпособыПримененияСкидокНаценок.ПрименитьВМоментРасчетаСкидокНаценок;
	
КонецФункции

// Выполняет расчет скидки (наценки)
//
// Параметры:
//	СкидкаНаценка - Строка дерева скидок (наценок). Включает результаты проверки условий, способы совместного применения
//	Настройки - Структура - Настройки, заданные пользователем в форме настроек внешней обработки
//	Товары - Коллекция товаров, для которых требуется применить скидку (наценку)
//	ПараметрыРасчета - Структура - Параметры расчета скидок (наценок)
//
// Возвращаемое значение:
//	РезультатРасчета - ТаблицаЗначений - результат расчета
//
Функция Рассчитать(СкидкаНаценка, Настройки, Товары, ПараметрыРасчета) Экспорт
	
	ИмяРеквизитаУсловия = "";
	
	РезультатРасчета = СкидкиНаценкиСервер.ПустаяТаблицаСкидокСРасшифровкой();
	//Если своя {
	//РезультатРасчета = ПустаяТаблицаСкидокСРасшифровкой();
	//Если своя }

	Если ПараметрыРасчета.Объект.Ссылка.Пустая() Тогда
		Возврат РезультатРасчета;
	КонецЕсли;
	
	ЭтоУмножение = СкидкаНаценка.ПрименятьУмножениеВРамкахВышестоящейГруппы;
	
	// { Поиск строк с нужным условием
	СтрокаТЧ = Настройки.Таблица.Найти(ПараметрыРасчета.Объект[ИмяРеквизитаУсловия], "КолонкаУсловие");
	// } Поиск строк с нужным условием
	Если СтрокаТЧ <> Неопределено Тогда
		
		Для Каждого Товар Из Товары Цикл
			
			Если СтрокаТЧ.СпособПредоставленияСкидки = Перечисления.СпособыПредоставленияСкидокНаценок.Процент Тогда
				СуммаСкидки = СтрокаТЧ.Значение / 100 * СкидкиНаценкиСервер1.ОстатокСуммыПоСтроке(СкидкаНаценка, Товар, ПараметрыРасчета, ЭтоУмножение);
				СкидкиНаценкиСервер.ПрименитьЗначениеСкидкиКТовару(СкидкаНаценка, СуммаСкидки, Товар, РезультатРасчета, ПараметрыРасчета);
			Иначе
				ДатаЦены = ?(ЗначениеЗаполнено(ПараметрыРасчета.Объект.ДатаСогласования), ПараметрыРасчета.Объект.ДатаСогласования, ПараметрыРасчета.Объект.Дата);
				СуммаСкидки = СтрокаТЧ.Значение * РаботаСКурсамиВалют.ПолучитьКурсВалюты(ПараметрыРасчета.Объект.Соглашение.ВидЦен.ВалютаЦены, ДатаЦены).Курс;
				СкидкиНаценкиСервер.ПрименитьЗначениеСкидкиКТовару(СкидкаНаценка, СуммаСкидки, Товар, РезультатРасчета, ПараметрыРасчета);
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли;
	
	Возврат РезультатРасчета;
	
КонецФункции

// Возвращает имя формы внешней обработки,
// предназначенной для настройки условия предоставления 
//
// Возвращаемое значение:
//	Строка - Имя формы
//
Функция ИмяФормыНастроек() Экспорт
	
	Возврат "Настройки";
	
КонецФункции

// Возвращает расширенное описание условия предоставления с учетом настроек
//
// Параметры:
//	Настройки - Структура - Значения настроек условия предоставления
//
// Возвращаемое значение:
//	Строка - Расширенное описание
//
Функция ОписаниеДействия(Настройки) Экспорт
	
	Попытка
		Если Настройки<> Неопределено И Настройки.Таблица.Количество() > 0 Тогда
			Описание = "Предоставляется скидка (наценка) процентом (суммой), зависит от ... :";
			Для Каждого СтрокаТЧ Из Настройки.Таблица Цикл
				Описание = Описание + Символы.ПС + "По условию " + " """ + СтрокаТЧ.КолонкаУсловие + """: " + СтрокаТЧ.Значение
				+ ?(СтрокаТЧ.СпособПредоставленияСкидки = Перечисления.СпособыПредоставленияСкидокНаценок.Процент, "%", "€");
			КонецЦикла;
		Иначе
			Описание = "Не заданы настройки скидки (наценки)";
		КонецЕсли;
	Исключение
		Описание = "Настройки не загружены.
		           |При загрузке настроек скидки (наценки) произошла ошибка:
		           |" + ОписаниеОшибки();
	КонецПопытки;
	
	Возврат Описание;
	
КонецФункции

// Возвращает заголовок условия предоставления с учетом настроек
//
// Параметры:
//	Настройки - Структура - Значения настроек условия предоставления
//
// Возвращаемое значение:
//	Строка - Наименование условия
//
Функция Автонаименование(Настройки) Экспорт
	
	Возврат НСтр("ru = 'Процент/сумма по ... '");
	
КонецФункции

Функция ПустаяТаблицаСкидокСРасшифровкой(ПараметрыРасчета = Неопределено) Экспорт
	
	Если ПараметрыРасчета = Неопределено Тогда
		Таблица = Новый ТаблицаЗначений;
		Таблица.Колонки.Добавить("КлючСвязи",   Новый ОписаниеТипов("Число"));
		Таблица.Колонки.Добавить("Расшифровка", Новый ОписаниеТипов("ТаблицаЗначений"));
		Таблица.Колонки.Добавить("Сумма",       Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,2)));
		Таблица.Колонки.Добавить("Действует",   Новый ОписаниеТипов("Булево"));
		Возврат Таблица;
	Иначе
		Возврат ПараметрыРасчета.ПустаяТаблицаСкидокСРасшифровкой.СкопироватьКолонки();
	КонецЕсли;
	
КонецФункции

Список телеграм-каналов по 1С

Наиболее полный и актуальный список каналов Telegram, так или иначе связанных с 1C SeiOkami проделал большую работу и собрал большой реестр каналов по 1С. В таблице есть название, описание, ссылка, количество подписчиков и другая информация. Если у вас ...
bolsun 425 6 10 7

Выгрузить различные из поля коллекции

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

Получить контактное лицо по умолчанию

Если у партнера заполнено одно контактное лицо - оно определяется как по умолчанию // версия по партнеру КонтактноеЛицо = ПартнерыИКонтрагенты.ПолучитьКонтактноеЛицоПартнераПоУмолчанию(Партнер); // версия по контрагенту КонтактноеЛицо = ПартнерыИКонтра...

Первый рабочий день месяца

Функция возвращает истину, если текущая дата или произвольная -- переданная в параметре, является первым рабочим днем месяца. Работает в семействе УТ // Функция - Это первый рабочий день месяца // // Параметры: // Дата - Дата - Дата, которую необходимо...
tejmur 2

ИнициализацияТипом

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

Получает краткое имя пользователя ИБ (информационной базы) из полного (Иванов Иван Иванович --> Иванов_ИИ)

БСП

Owner2005 7 1
ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ(Форма.Объект.Наименование)

Создаем свой шаблон T9 с умным фильтром

Контекстная подсказка T9 умеет предлагать подходящие варианты, в зависимости от вводимой строки и контекста кода. Пример такой умной подсказки: Подсказка предлагает КонецПроцедуры и не предлагает КонецФункции, КонецЕсли и т.д. Это происходит благодаря ...
bolsun 425 6 10 7

Программная установка параметров выбора на примере банковских счетов из ERP 2.5

ERP 2.5

&НаСервереБезКонтекста
Функция ПараметрыВыбораБанковскихСчетов(ОплатаВВалюте, Организация)

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

&НаСервере
Процедура ПриЧтенииНаСервере()
	ПараметрыВыбораБанковскогоСчета = ПараметрыВыбораБанковскихСчетов(Ложь, Объект.Организация);
	Элементы.БанковскийСчет.ПараметрыВыбора            = ПараметрыВыбораБанковскогоСчета;
	Элементы.БанковскийСчетКонтрагента.ПараметрыВыбора = ПараметрыВыбораБанковскогоСчета;
КонецПроцедуры