Накопитель функций для библиотеки функций

Медатанные

2024-06-24 проверка наличия реквизита объекта (справочника, документа).

Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт
	
	//Осипов С.А. 2024-06-24. Протестировано
	
	МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Объект));
	
	Если МетаданныеОбъекта = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли;       
	
	Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
		Возврат Ложь;
	Иначе
		Возврат Истина;
	КонецЕсли; 
	
КонецФункции  

Форматирование чисел, дат

2024-06-12 типовая функция 1С по форме множественного числа

// Функция преобразует строку к множественному числу
//
// Параметры: 
//  Слово1 - форма слова в ед числе      ("шкаф")
//  Слово2 - форма слова для числит 2-4  ("шкафа")
//  Слово3 - форма слова для числит 5-10 ("шкафов")
//  ЦелоеЧисло - целое число.
//
// Возвращаемое значение:
//  строку - одну из строк в зависимости от параметра ЦелоеЧисло.
//
// Описание:
//  Предназначена для формирования "правильной" подписи к числительным.
//
Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, Знач ЦелоеЧисло) Экспорт
	
	// Изменим знак целого числа, иначе отрицательные числа будут неправильно преобразовываться.
	Если ЦелоеЧисло < 0 Тогда
		ЦелоеЧисло = -1 * ЦелоеЧисло;
	КонецЕсли;
	
	Если ЦелоеЧисло <> Цел(ЦелоеЧисло) Тогда 
		// для нецелых чисел - всегда вторая форма
		Возврат Слово2;
	КонецЕсли;
	
	// остаток
	Остаток = ЦелоеЧисло%10;
	Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда
		// для второго десятка - всегда третья форма
		Возврат Слово3;
	ИначеЕсли Остаток=1 Тогда
		Возврат Слово1;
	ИначеЕсли (Остаток>1) И (Остаток<5) Тогда
		Возврат Слово2;
	Иначе
		Возврат Слово3;
	КонецЕсли;

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

Универсальные коллекции

2024-05-31 Свойство структуры

Функция СвойствоСтруктуры(Структура, Свойство, ПоУмолчанию = Неопределено) Экспорт
    Если Структура <> Неопределено И Структура.Свойство(Свойство) Тогда
        Возврат Структура[Свойство];
    КонецЕсли;                      
    Возврат ПоУмолчанию;
КонецФункции

Работа с табличным документом

2024-05-30 Удаление строк табличного документа по маркеру

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

Обработка регистров

2024-05-29. Удаление движений документа

Процедура УдалитьДвиженияДокумента(ДокументОбъект) Экспорт
	Для Каждого НЗ ИЗ ДокументОбъект.Движения Цикл
		НЗ.Прочитать();
		Если НЗ.Количество() > 0 Тогда
			НЗ.Очистить();
			НЗ.Записать();
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 4

  1. rzd:

    Для удаления движений документа не нужен ни объект документа, ни чтения набора записей регистра.
    А вообще вместо изобретений велосипедов — изучать БСП.

    • я собираю свою библиотеку функций. БСП вроде бы заявила, что ее можно без ИТС использовать, но это не точно.

      • rzd:

        Первую часть замечаний почему проигнорировал?

        • не понял о чем она. Там ведь не содержится информации — только отрицание приведенной информации. Если расскажете, что вы имеете ввиду, будут и комментарии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *