Часто ли вы сталкиваетесь с задачами, которые кажутся мелкими, но на их решение уходит неожиданно много времени? Проверить заполненность значения, обрезать пробелы, быстро найти подстроку или преобразовать данные? Платформа 1С предоставляет богатый арсенал встроенных функций-«однострочников», которые решают эти задачи буквально одной строкой кода. Знание этих функций — признак не столько опыта, сколько внимательности к инструментарию. Давайте разберем самые полезные из них, которые упростят ваш код и ускорят разработку.
1. Функции проверки и приведения типов
Эти функции помогают избежать самых частых ошибок — попыток работать с пустыми значениями или не с теми типами данных.
ЗначениеЗаполнено()
Что делает: Возвращает Истина, если значение не равно Неопределено, NULL и не является пустой ссылкой (например, пустой объект справочника или документа).
Зачем нужна: Идеальна для безопасной проверки перед использованием значений, полученных из полей форм или запросов.
// Плохо:Если СсылкаНаОбъект <> Неопределено Тогда
// что-то делаем...
КонецЕсли;
// Хорошо (короче и надежнее):
Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
// что-то делаем...
КонецЕсли;
ЕстьNull() и ЕстьНеопределено()
Что делает: Специализированные проверки на конкретные типы пустых значений. Полезны в запросах и для точного определения типа "пустоты".
Зачем нужна: NULL часто приходит из запросов, а Неопределено — из кода.
Если ЕстьNull(ЗначениеИзЗапроса) Тогда
Сообщить("В базе ничего не найдено!");
ИначеЕсли ЕстьНеопределено(ЗначениеИзКода) Тогда
Сообщить("Объект еще не создан!");
КонецЕсли;
Строка()
Что делает: Преобразует любое значение в строку. Для чисел, дат и булевых значений использует их строковое представление.
Зачем нужна: Незаменима для формирования понятных сообщений пользователю или строк для вывода.
Сообщить("Заказ №" + Строка(НомерЗаказа) + " от " + Строка(ДатаЗаказа) + " готов к отгрузке.");
// Результат: "Заказ №123 от 05.07.2024 15:30:00 готов к отгрузке."
2. Функции для работы со строками
Работа со строками — это 80% повседневных задач. Эти функции ваши лучшие друзья.
СокрЛ(), СокрП(), СокрЛП()
Что делает: Обрезают пробелы слева (СокрЛ), справа (СокрП) или с обеих сторон (СокрЛП).
Зачем нужна: Чистка введенных пользователем данных перед сохранением или сравнением.
// Пользователь ввел " 123 "
ЧистаяСтрока = СокрЛП(СтрокаИзПоляВвода); // Результат: "123"
Лев(), Прав(), Сред()
Что делает: Извлекают часть строки. Лев() — с начала, Прав() — с конца, Сред() — с любой позиции.
Зачем нужна: Парсинг файлов, выделение кодов, серийных номеров и т.д.
Артикул = "ABX-123-Z45";
Префикс = Лев(Артикул, 3); // "ABX"
Номер = Сред(Артикул, 5, 3); // "123" (начиная с 5-го символа, взять 3 символа)
СтрНайти()
Что делает: Ищет подстроку внутри другой строки и возвращает ее позицию (или 0, если не найдено).
Зачем нужна: Проверка, содержит ли строка определенный текст.
ПутьКФайлу = "C:\Отчеты\Июль\Отчет.pdf";
Если СтрНайти(ПутьКФайлу, ".pdf") > 0 Тогда
Сообщить("Это PDF-файл!");
КонецЕсли;
СтрЗаменить()
Что делает: Заменяет все вхождения одной подстроки на другую.
Зачем нужна: Массовое исправление текста, шаблонизация.
ТекстПриветствия = "Уважаемый, %Имя%! Ваш заказ %Номер% готов.";
ПерсонализированныйТекст = СтрЗаменить(ТекстПриветствия, "%Имя%", "Иван");
// Результат: "Уважаемый, Иван! Ваш заказ %Номер% готов."
3. Функции для работы с датами
НачалоГода(), КонецГода(), НачалоМесяца(), КонецМесяца() и др.
Что делает: Возвращают дату начала или конца указанного периода (год, месяц, квартал, день).
Зачем нужна: Крайне полезны для построения отчетов и установки периодов отбора без сложных вычислений.
// Получить все документы за текущий месяц
ДатаНачала = НачалоМесяца(ТекущаяДата());
ДатаОкончания = КонецМесяца(ТекущаяДата());
// Получить первый день текущего квартала
ПервыйДеньКвартала = НачалоКвартала(ТекущаяДата());
Год(), Месяц(), День(), Час(), Минута(), Секунда()
Что делает: Извлекают компоненты даты в виде чисел.
Зачем нужна: Для анализа дат, формирования имен файлов с датой и т.д.
ТекущаяДата = '20240705153000';
ИмяФайла = "Отчет_" + Строка(Год(ТекущаяДата)) + "_" + Строка(Месяц(ТекущаяДата)) + ".xlsx";
// Результат: "Отчет_2024_7.xlsx"
4. Математические функции
Окр()
Что делает: Округляет число до указанного количества знаков после запятой.
Зачем нужна: Корректные финансовые расчеты и представление сумм.
Сумма = 123.4567;
СуммаКОплате = Окр(Сумма, 2); // Результат: 123.46
Цел()
Что делает: Отбрасывает дробную часть числа.
Зачем нужна: Получить целое количество, например, для расчета количества коробок для товара.
КоличествоТовара = 15.7;
КоличествоКоробок = Цел(КоличествоТовара / 5); // Результат: 3 (т.к. 15.7/5=3.14 -> Цел(3.14)=3)
5. Прочие незаменимые функции
ТипЗнч()
Что делает: Возвращает тип переданного значения (Строка, Число, Дата, Массив и т.д.).
Зачем нужна: Для создания универсальных обработок, которые могут работать с разными типами данных.
Значение = НеизвестноЧтоПришлоИзВнешнегоИсточника();
Если ТипЗнч(Значение) = Тип("Строка") Тогда
// обрабатываем строку
ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
// обрабатываем число
КонецЕсли;
НРег(), ВРег(), ТРег()
Что делает: Перевод строки в нижний (НРег), верхний (ВРег) регистр или в регистр с первыми заглавными буквами (ТРег).
Зачем нужна: Нормализация данных для сравнения без учета регистра.
// Сравнение без учета регистра
Если НРег(ВведенноеЗначение) = НРег(ЗначениеИзБазы) Тогда
// значения равны, даже если одно было "Иванов", а другое "ИВАНОВ"
КонецЕсли;
Заключение
Использование этих встроенных функций — это не просто вопрос краткости кода. Это вопрос его надежности, читаемости и производительности. Вместо того чтобы изобретать собственные сложные алгоритмы для обрезки пробелов или проверки на NULL, всегда проверяйте: а нет ли уже готового, оттестированного и оптимизированного «однострочника» в арсенале платформы? Выучите их один раз, и вы будете удивлены, насколько проще и элегантнее станет ваш код.