Найти ближайшее число 1с
Дата — это один из примитивных типов данных существующих в 1С. Также как числа и строки используется абсолютно повсеместно, и следовательно знание основных функций и принципов работы с типом “Дата” приобретают просто драматическую важность.
В начале скажем, что значение типа дата в 1С содержит точную (с точностью до 0,1 миллисекунды) дату григорианского календаря.
Типовой порядок частей даты принятый в 1С — год, месяц, день, час, минута, секунда.
Собственно простейший способ создания новой переменной типа дата является приравнивание к переменной строки цифр в одинарных кавычках (обязательно) вида ‘ГГГГММДДччммсс’ где:
- ГГГГ — четыре цифры года (включая тысячелетие и век);
- ММ — две цифры месяца;
- ДД — две цифры даты;
- чч — две цифры часа (в 24-х часовом формате);
- мм — две цифры минут;
- сс — две цифры секунд.
Часы, минуты и секунды можно не указывать, при этом они приравниваются к нулю.
Функции работы с датами
Функция Дата() служит для создания значения типа “Дата”. Использовать ее можно двумя способами:
- Дата(x) — где параметр “x” это строка вида “ГГГГММДДччммсс”, часы, минуты и секунды можно опустить, т.е. преобразуем строку в дату;
- Дата(x, y, z, w, v, c) — в этом случае параметры “x”, “y”, “z”, “w”, “v” и “c” являются числами и означают год, месяц, день, час, минуту и секунду соответственно. Как и в предыдущем случае час, минуту и секунду можно опустить.
ТекущаяДата
Функция ТекущаяДата() просто возвращает текущую дату того компьютера на котором она исполняется. В клиент-серверных системах будет разумно инкапсулировать эту функцию в общем модуле (с исполнением на сервере) и использовать ее только таким образом.
ТекущаяУниверсальнаяДатаВМиллисекундах
Функция ТекущаяУниверсальнаяДатаВМиллисекундах() позволяет узнать дату в миллисекундах. Данная функция доступна начиная с версии платформы 8.2.17. Замечание о клиент-серверных системах из функции выше справедливо и для этой функции.
Год, Месяц, День, Час, Минута, Секунда
Функции Год(x), Месяц(x), День(x), Час(x), Минута(x) и Секунда(x) возвращают соответствующую часть переданной им даты “x” в виде числа.
Начало…
Функции вида “Начало…(x)” получают дату в параметре “x” и возвращают дату начала периода времени в соответствии с названием конкретной функции. Существуют следующие функции:
- НачалоГода;
- НачалоКвартала;
- НачалоМесяца;
- НачалоНедели;
- НачалоДня;
- НачалоЧаса;
- НачалоМинуты.
Конец…
Функции вида “Конец…(x)” получают дату в параметре “x” и возвращают дату окончания периода времени в соответствии с названием конкретной функции. Существуют следующие функции:
- КонецГода;
- КонецКвартала;
- КонецМесяца;
- КонецНедели;
- КонецДня;
- КонецЧаса;
- КонецМинуты.
НеделяГода, ДеньГода
Функции НеделяГода(x) И ДеньГода(x) возвращают соответственно номер недели и номер дня в году для указанной даты “x”.
ДеньНедели
Функция ДеньНедели(x) возвращает номер дня недели для указанной даты “x”.
ДобавитьМесяц
Функция ДобавитьМесяц(x, y) добавляет к дате “x” количество месяцев “y”, которое может быть отрицательным, в этом случае происходит вычитание месяцев из даты “x”.
МоментВремени
МоментВремени это объект который является совокупностью даты и ссылки на какой-либо объект информационной базы. МоментВремени используется в качестве значения свойств или параметров методов других объектов, имеющих тип МоментВремени. Нужен в первую очередь для того, чтобы иметь возможность различать моменты времени для объектов имеющих одинаковую дату создания.
ВвестиДату
Функция ВвестиДату(x, y, z) вызывает диалог для ввода даты, введенная дата записывается в переменную “x”, кроме этого можно указать подсказку “y”, а также какую часть даты нужно ввести “z” Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода.
Выглядит это окно примерно так:
Окно ввода даты
Типовые задачи представления данных
Разность даты в днях, количество дней между датами
Простым вычитанием одной даты из другой мы можем получить разность между датами в секундах, следовательно получение любого другого типа разности (в минутах, днях и тд.) является простой арифметической операцией:
Кроме этого можно воспользоваться функцией «РАЗНОСТЬДАТ» из языка запросов:
Таким образом можно узнать следующие типы разности дат:
Разница между датами в месяцах, количество месяцев между датами
Здесь все в точности также, как и в предыдущем пункте.
Прибавить день к дате, вычесть день из даты, отнять от даты день
Прибавить месяц к дате, вычесть месяц из даты, отнять месяц от даты
Для прибавления/вычитания месяцев существует встроенная функция:
День недели по дате
Сравнение дат
Так как дата в 1С это по сути количество секунд прошедшее с начала нашей эры (т.е. число) то и сравнение производится так же как и числами. У объекта «МоментВремени» существует специальный метод «Сравнить» который позволяет сравнить один объект «МоментВремени» с другим.
Дата равна нулю (проверка на заполненность), проверка на пустую дату
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 14, средняя оценка: 4,50 из 5)
(1) Цикл по строке с проверкой кода символа, запись цифрового символа в отдельную переменную и преобразование её в число по завершении цикла.
(1) Что-то вроде этого :
Где СтрокаДанных - исходная строка например "as1122ddd3221fff"
МасЧисел - конечный результат (в нашем случае 1122, 3221)
(4) спасибо:) я просто думала, что может быть функция такая, т.к. ничего криминального она не делает
(1) ponaroshku, все верно, потому что такой функции нет :)
Но ее можно написать самому. Для этого нужно пройтись в цикле по каждому символу в строке и проверить, цифра ли это.
Я бы предложил следующий вариант:
user1619761; Apolonov-Erik; malikov_pro; Silver0030; Ujine1313; Nefilimus; Simonov_NPM; aleksdiez; imbaZeratul; zannv; Boulala; AlekSandra29; alexandrmishinn; soulnechnii; x_x; klinval; valafan; App0st0l; vladir; svilsa; Wersia; Chloroform; unknown181538; ponaroshku; + 24 – Ответить
я столкнулся с проблемой когда нужно извлечь все цифры из строки "что-то;типа123 штук". (1) возвращает пустой массив. и код под постом тоже ничего не возвращает((
Но столкнулась с проблемой, если строка вида
12312 много текста 1221. текст "555"
выдает 123121221555 одним числом
в виде нескольких чисел не получить? По примеру - 12312 1221 555
(8) ponaroshku, Вам же hulio в (4) привел как раз нужный вам код, разве что в нем небольшой недочет - нет очистки СтрокаЧисла в цикле, вот поправленный, проверил - работает
(9) прошу прощения
я по (3) делала
(0) а результат "ыдлвапдлцоук234124ывпо341" такой строки какой? ничего против приведенных способов не имею, но я бы использовал регулярные выражения. Например паттерн: \d+
Интересно было бы узнать, какой из методов (программный или метод регулярных выражений) отработает быстрее при больших объемах обработки информации.
В упр. формах можно сделать так.
Результат = 1 524
Если нужно чтобы вывести разные числа из данной строки, то можно немного изменить код
А если Строка типа "12345/15 Какая-то фраза" и нужно получить 12345/15? По всем функциям могу получить только 1234515, а как оставить "/"?
Немного улучшенный вариант с регулярными выражениями - понимает десятичные дроби:
Извините: нашел ошибочку в своей реплике - вот исправленный вариант
Возврат Масс;
КонецФункции // ()
Доброе народ. все вышеуказанные куски кода на какой версии сделаны?? ибо на 8,3 УФ ни один из них не работает(((
Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.
Функции для работы со строками в 1С 8.2 и 8.3
Строка
Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.
СтрДлина
Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.
СокрЛП, СокрЛ, СокрП
Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.
Лев, Прав, Сред
Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.
ВРег, НРег, ТРег
Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные нижний.
Найти
Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.
СтрЧислоВхождений
Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.
СтрЗаменить
Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.
ПустаяСтрока
Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.
СтрЧислоСтрок
Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
СтрПолучитьСтроку
Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
Символ, КодСимвола
Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.
Символы
Это не функция, а набор наиболее часто используемых специальных символов, состоит из:
- ВК (CR) — возврат каретки;
- ВТаб (VTab) — вертикальная табуляция;
- НПП (NBSp) — неразрывный пробел;
- ПС (LF) — перевод строки;
- ПФ (FF) — перевод формы;
- Таб (Tab) — символ горизонтальной табуляции.
ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).
ВвестиСтроку
Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:
Натуральное число называется совершенным, если оно равно сумме всех своих делителей за исключением самого себя. Например. 6= 1+2+3. Дано натуральное число n. Получить все совершенные числа, меньшие n.
версия: 1С 8.3
Решите пожалуйста
Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за .
Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей за исключением.
Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением.
Получить все совершенные числа, меньшие n
Нашел программу к моей задаче , но не могу понять что там написано. Условия:Натуральное число.
Решение
RinatRinat1, и чего, это нужно обязательно на 1С ?
Добавлено через 8 минут
Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей за исключением.
Получить все совершенные числа, меньшие n.
Помогите плиз решить задачу с Абрамова(330). Натуральное число называется совершенным, если оно.
Задача на for. Получить все совершенные числа, меньшие n
Дано натуральное число n. Получить все совершенные числа, меньшие n. Число называется совершенным.
PASCAL ABC Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей за исключением.
Дано натуральное число n. Получить все совершенные числа, меньшие n
Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением.
Дано натуральное число n. Получить все совершенные числа, меньшие n
вот исходник но он не работает int n; n = Convert.ToInt32(textBox1.Text); .
Математические операции в 1С 8.3 - это операции (вычисления) с любыми десятичными цифрами для получения результата. Число это один из примитивных типов данных в 1С 8.3. Максимальная разрядность числа = 38 знаков (32 знака для целой части). В качестве разделителя целой и дробной части числа используется точка ".".
✔ Арифметические операции
&НаКлиенте
Процедура Арифметика ( Команда )
//Сложение
Формула_Суммы = 50 + 10 ; // Результат сложения = 60
//Разность
Формула_Вычитания = 50 - 10 ; // Результат вычитания (разности) = 40
//Произведение
Формула_Умножения = 50 * 10 ; // Результат умножения (произведения) = 500
//Частное
Формула_Деления = 50 / 10 ; // Результат деления (частное) = 5
//Остаток
Формула_Остатка_от_деления = 50 % 8 ; // Результат остатка от деления = 6
&НаКлиенте
Процедура Математика ( Команда )
//Функция округления
Результат_Окр_до_десятой = Окр ( 123.432 , 1 ); // = 123.4
Результат_Окр_до_десятой = Окр ( 123.679 , 1 ); // = 123.7
Результат_Окр_до_сотой = Окр ( 123.432 , 2 ); // = 123.43
Результат_Окр_до_сотой = Окр ( 123.679 , 2 ); // = 123.68
// Если предыдущий дробный знак = 5, а последующие = 0
// То результат округления зависит от 3-го параметра РежимОкругления
// По умолчанию = РежимОкругления.Окр15как20 (в большую сторону)
Результат_Окр_Окр15как10 = Окр ( 200.150 , 1 , РежимОкругления . Окр15как10 ); // = 200.1
Результат_Окр_Окр15как20 = Окр ( 200.150 , 1 , РежимОкругления . Окр15как20 ); // = 200.2
//Функция вычисления максимального значения из нескольких
Результат_Макс = Макс ( 1 , 2 , 3 , 4 , 5 , 6 , 7 ); // = 7
Результат_Макс = Макс ( Дата ( 1983 , 07 , 01 ), Дата ( 2020 , 04 , 17 )); // = 17.04.2020
Результат_Макс = Макс (Истина, Ложь); // = Истина
Результат_Макс = Макс ( "Alena" , "Clark" , "Boris" ); // = "Clark"
//Функция вычисления минимального значения из нескольких
Результат_Мин = Мин ( 1 , 2 , 3 , 4 , 5 , 6 , 7 ); // 1
Результат_Мин = Мин ( Дата ( 1983 , 07 , 01 ), Дата ( 2020 , 04 , 17 )); // = 01.07.1983
Результат_Мин = Мин (Истина, Ложь); // Ложь
Результат_Мин = Мин ( "Alena" , "Clark" , "Boris" ); // = "Alena"
//Функция вычисления целого числа
Результат_Цел = Цел ( 200.150 ); // = 200
//Функция возведения числа в степень
Результат_Степень = Pow ( 50 , 2 ); // 50^2 = 2500
//Функция извлечения квадратного корня из числа
Результат_КвКорень = Sqrt ( 2500 ); // √2500 = 50
Читайте также: