Перейти к содержимому

Как перевести дату в число 1с

  • автор:

Как перевести дату в число 1с

Надо преобразовать данные табчасти при изменении в число

&НаКлиенте
Процедура ПериодыНачалоПриИзменении(Элемент)
Конец = Элементы.Периоды.ТекущиеДанные.Конец;
Начало = Элементы.Периоды.ТекущиеДанные.Начало;
Длительность = Элементы.Периоды.ТекущиеДанные.Продолжительность;
Длительность = Начало — Конец * 60;
КонецПроцедуры

Процедура ПериодыКонецПриИзменении(Элемент)
Конец = Элементы.Периоды.ТекущиеДанные.Конец;
Начало = Элементы.Периоды.ТекущиеДанные.Начало;
Длительность = Элементы.Периоды.ТекущиеДанные.Продолжительность;
Длительность = Конец — Начало * 60;

А она ругается. не может преобразовать. в чем косячу?
простит вы хотите получить разность дат в секундах?
вызвать одну функцию для двоих действий
(1) мне лично не видно, что ругается
дат в минутах
А Конец и Начало — это даты?
: Преобразование значения к типу Число не может быть выполнено
Длительность = Начало — Конец * 60;
ошибка то в чем? в том, что пробуешь элемент управления умножить?
(0)Вот нахрена так делать, дублировать процедуры? Молодой человек неуч?
Может это надо
Длительность = (Начало — Конец) / 60;

Функция ПолучитьРазностьДат(НачДата,КонДата)
Запрос = Новый Запрос( «ВЫБРАТЬ
| РАЗНОСТЬДАТ(&НачДата, &КонДата, ДЕНЬ) КАК ДЕНЬ»);
Запрос.УстановитьПараметр(«НачДата»,НачДата);
Запрос.УстановитьПараметр(«КонДата»,КОнДата);
Возврат ЗАпрос.Выполнить().Выгрузить()[0].ДЕНЬ;
КонецФункции

тока не как ДЕНЬ, КАК МИНУТА.

(13) у тебя отладчик украли?
(6) ТЬФУ. Строка((
(14)Мозг у него украли.
пред тема «Велики ли различия конфигурирования 1с 8.2 и 7.7 (знаю 8.2)» <--- (знаю 8.2) второй раз за день передоз ванили от его фотки. Блеванул так. а как строку преобразовать в дату? (22) Функцией Дата(), к примеру.
Или сразу на форме вводить даты

Дата (Date)
Вариант синтаксиса: По строке

Тип: Строка.
Исходное значение даты.
Строка должна содержать дату в локальном формате даты или в каноническом виде YYYYMMDDHHMMSS.
Описание варианта метода:

При преобразовании, строка должна содержать дату в каноническом формате «ГГГГММДДччммсс» (см. раздел «Примитивные типы данных»).
Вариант синтаксиса: По составляющим

Тип: Число.
Год даты.
(обязательный)

Тип: Число.
Месяц даты.
(обязательный)

Тип: Число.
День даты.
(необязательный)

Тип: Число.
Час даты.
(необязательный)

Тип: Число.
Минута даты.
(необязательный)

Тип: Число.
Секунда даты.

Год = «2012»;
Месяц = «01»;
День = «01»;
ПолучаемДату = Дата(Год, Месяц, День);

(22) тебе тут терь «знаю 8.2» не забыли бы никогда а стакими вопросами еще и поржут 🙂 или «знаю 8.2» не включает в себя «знаю где СП» ?

Как преобразовать дату в число?

Если Вы еще не в курсе, дата на платформе 1С:Предприятие 8 хранится в числовом виде. Она представляет собой количество секунд, прошедших с 1 января 0001 года. Преобразовать дату в число функцией Число() не получится, т.к. вы непременно поймаете ошибку «Преобразование значения к типу Число не может быть выполнено» .

Здесь понадобится более «хитрый» способ. Наверняка вы знаете, что даты можно вычитать. В таком случае мы получаем длину интервала в секундах:

ДатаНачала = Дата(2020,1,1,10,30,0); ДатаОкончания = Дата(2020,1,1,11,30,0); ДлинаИнтервала = ДатаОкончания - ДатаНачала; Сообщить(ДлинаИнтервала); //Результат: // 3 600 

А что если дату отсчета 1 января 0001 года тоже представить датой и вычесть из имеющейся у нас даты? Давайте проверим:

ПроизвольнаяДата = Дата(2020,1,1,10,30,0); ДатаЧислом = ПроизвольнаяДата - Дата(1,1,1); Сообщить(ДатаЧислом); //Результат // 63 713 471 400 //обратная проверка ТекущаяДата = Дата(1,1,1) + ДатаЧислом; Сообщить(ТекущаяДата); //Результат: // 01.01.2020 10:30:00 

Таким образом, любую дату можно преобразовать в число как в коде, так и в запросе.

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

  1. Программная работа с датой
  2. Как получить дату из строки?

Преобразовать дату в число.

Понадобилось в коде
написать нечто такое
Частота замены в днях — число.
ТекДата — Дата.

Если ТекДата/(ЧастотаЗаменыВДнях*86400) = 0 Тогда
.
КонецЕсли

Проще говоря, проверить на кратность. Но даты не преобразуются к типу число неявно.
Пробовал явно преобразовать как-то так

не вышло, конечно. «Преобразование к типу число не может быть выполнено».
Если какие-то варианты преобразовать, проверить на кратность?

По теме из базы знаний

  • Полезные сведения о языке запросов 1С 8.2
  • Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ЧтениеXML
  • Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM
  • Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
  • Особенность встроенной функции Представление() в СКД [поход на грабли]
  • Дата
  • Дата
  • Рейтинг всех уровней
  • Рейтинг 1-го уровня
  • Древо развёрнутое
  • Древо свернутое

Свернуть все
2. holidayinthesun 20.11.11 15:54 Сейчас в теме
И еще не очень понятно тогда, почему ТекДата + 86400 работает нормально.
4. Gulf_Stream 20.11.11 15:57 Сейчас в теме
(2) holidayinthesun,
И еще не очень понятно тогда, почему ТекДата + 86400 работает нормально.

Вы к указанной дате добавили 86400 секунд и получили новую дату.
3. Gulf_Stream 20.11.11 15:55 Сейчас в теме

немного не понял что требуется, но может функция РазностьДат подойдёт?

РАЗНОСТЬДАТ(, , Секунда | Минута | Час | День | Месяц | Квартал | Год)
В качестве первого параметра передается выражение, значение которого необходимо вычесть из значения второго параметра.
В качестве второго параметра функции передается выражение, из которого необходимо вычесть значение первого параметра.
Третий параметр содержит единицу измерения, в которой необходимо получить результат функции. В качестве третьего параметра можно использовать следующие значения: Секунда, Минута, Час, День, Месяц, Квартал, Год. При расчете результата функция игнорирует единицы измерения, которые меньше, чем указанная в данном параметре единица.

5. holidayinthesun 20.11.11 16:10 Сейчас в теме

у меня в котле есть одна деталька, которую надо менять каждые 30 дней, я хочу написать обработку, чтобы заполняла регистр сведений вида

Котел ДатаЗамены
ххх ххх

Т.к. этих котлов много.

В справочнике Котлы есть поле «ЧастотаЗаменыВДнях».

В обработке я задаю период. Иду от начала до конца через

ТекДата = Период.ДатаНачала;
Пока ТекДата .
КонецЦикла

В этом цикле перебираю весь справочник Котлы.

ТекДата = Период.ДатаНачала;
Пока ТекДата

Выборка = Справочники.Котлы.Выбрать();
Пока Выборка.Следующий() Цикл
.
КонецЦикла;
КонецЦикла

Нужно брать ту ТекДата, которая соответствует каждому котлу и, если она соответствует, записать в регистр Котел и ДатуЗамены.
А чтобы узнать, соответствует ли ТекДата, нужно проверить, что она кратна ЧастотеЗамены. То есть, что остаток от деления равен нулю.

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

Преобразование типов в 1С

Разберем основные вопросы преобразования типов в 1С 8.3: из строки в число, из числа в строку, из даты в число и прочие варианты. В этой статье мы рассмотрим функции преобразования значений, и я соберу в едино все варианты преобразования примитивных типов.

Строка в число в 1С

Узнаем, как в 1С 8.3 преобразовать строку в число.

Пусть, у нас есть числа в таком виде.

СтрокаЧ1 = "120"; СтрокаЧ2 = "12.24"; СтрокаЧ3 = "12,24"; СтрокаЧ4 = "0,24"; СтрокаЧ5 = "0000001"; 

Для того, чтобы выполнить преобразование этих строк в число, необходимо воспользоваться методом Число. Этот метод преобразует параметр в число.

Ч1 = Число(СтрокаЧ1); Ч2 = Число(СтрокаЧ2); Ч3 = Число(СтрокаЧ3); Ч4 = Число(СтрокаЧ4); Ч5 = Число(СтрокаЧ5); 

Обратите внимание, что разделять дробную часть можно в строке как при помощи символа точка «.», так и при помощи символа запятая «,». Если перед каким-то числом в строке стоят нули, то они отсекаются. У нас будет следующий результат.

Строка в число в 1С

Число в строку в 1С

Рассмотрим обратную задачу, когда в 1С 8.3 нужно преобразовать число в строку. Самый простой вариант использовать метод Строка, который преобразует собственный параметр в строку.

Ч1 = 120; Ч2 = 12.24; Ч3 = 10000000000; СтрокаЧ1 = Строка(Ч1); СтрокаЧ2 = Строка(Ч2); СтрокаЧ3 = Строка(Ч3); Сообщить(СтрокаЧ1); Сообщить(СтрокаЧ2); Сообщить(СтрокаЧ3); 

И какой результат возвращает этот код:

Число в строку в 1С

У этого способа имеется недостаток: он ставит пробелы между разрядами у длинных чисел. Для того, чтобы в 1С преобразовать число в строку без пробелов нужно воспользоваться функцией Формат. Данная функция имеет два параметра: преобразуемое значение и форматную строку. Если нам нужно указать, что число преобразуется в строку без пробелов в разряде, то необходимо указать в форматной строке, что порядок разделения группировки разрядов числа или равен 0, или пустой.

Ч1 = 10000000000; СтрокаЧ1 = Формат(Ч1,"ЧГ color: red;">); Сообщить(СтрокаЧ1); 

Результат будет без разрядов:

число в строку без пробелов 1C

Строка в дату 1С

Узнаем, как преобразовать в 1С 8.3 строку в дату. Для этого необходимо использовать метод Дата, который преобразует параметр (в том числе строку ) в дату . Причем, замечу, что строка должна быть задана в таком формате «ГГГГММДДЧЧММСС».

Подробнее о форматах дат читайте в этой статье: даты в 1С.

СтрокаД1 = "20120910"; СтрокаД2 = "20120910121559"; СтрокаД3 = "00010101121559"; Дата1 = Дата(СтрокаД1); Дата2 = Дата(СтрокаД2); Дата3 = Дата(СтрокаД3); 

Строка в дату в 1С

Если мы зададим дату в не верном формате, то преобразование не произойдет и возникнет ошибка «Преобразование значения к типу Дата не может быть выполнено».

Например, этот код:

СтрокаД1 = "121559"; Дата1 = Дата(СтрокаД1) 

Приведет к ошибке:

Преобразование значения к типу Дата не может быть выполнено

Дата в строку в 1С

Преобразовать дату в строку можно несколькими способами. Первый способ: воспользоваться уже знакомым нам методом Строка.

Дата1 = Дата(2012,10,12); СтрокаД = Строка(Дата1); Сообщить(СтрокаД); 

В этом случае у нас выйдет строка в обычном «полном» формате даты.

Дата в строку в 1С

А чтобы получить дату в том формате, в каком нам нужно, необходимо воспользоваться методом Формат.

Форматов дат может быть великое множество ,все я разбирать в этой статье не буду, покажу только как можно быстро воспользоваться этой функцией.

Мы изменим предыдущий код, написав вместо метода Строка метод Формат, а в качестве второго параметра у метода Формат напишем просто две кавычки.

Дата1 = Дата(2012,10,12); СтрокаД = Формат(Дата1,""); Сообщить(СтрокаД); 

После нужно между кавычками поставить курсор, вызвать контекстное меню, и применить в нем команду Конструктор форматной строки.

Конструктор форматной строки

В этом конструкторе на закладке Дата вы можете выбрать удобный вам формат даты.

Конструктор форматной строки

И после нажатия кнопки ОК этого конструктора, нужный формат появится в виде строки.

Дата1 = Дата(2012,10,12); СтрокаД = Формат(Дата1,"ДФ=dd/MM/yy"); Сообщить(СтрокаД); 

В результате метода Формат, дата будет преобразована в строку в том виде, в каком нам необходимо.

Дата в строку в 1С

Строка в булево в 1С

При помощи метода Булево мы можем некоторые строковые представления (Да, Нет, Истина, Ложь) преобразовывать в значения Истина или Ложь.

Например, следующие переменные:

стр_Да = Булево("Да"); стр_Нет = Булево("Нет"); стр_Истина = Булево("Истина"); стр_Ложь = Булево("Ложь"); 

Будут иметь такие значения:

Строка в булево

Булево в строку в 1С

Разберем, как в 1С можно выразить тип булево строкой. Булево значение можно преобразовать в строку несколькими способами. Во-первых, можно просто воспользоваться методом Строка.

Например, как здесь:

б_Истина = Истина; б_Ложь = Ложь; СтрИстина = Строка(б_Истина); СтрЛожь = Строка(б_Ложь); Сообщить(СтрИстина); Сообщить(СтрЛожь); 

У нас будет выходить следующий результат:

Булево в строку

В этом случае, булево в строку преобразовалось согласно региональным установкам информационной базы.

Если мы, как-то по-другому хотим преобразовать булево в строку, то можно воспользоваться уже знакомым нам методом Формат.

Переделаем, предыдущий код:

б_Истина = Истина; б_Ложь = Ложь; СтрИстина = Формат(б_Истина,""); СтрЛожь = Формат(б_Ложь,""); 

Знакомым способом вызовем конструктор форматной строки, где на закладке Булево введем преставление значений Истина и Ложь.

Конструктор форматной строки Булево

После нажатия кнопки ОК конструктора, второй параметр метода Формат заполнится:

б_Истина = Истина; б_Ложь = Ложь; СтрИстина = Формат(б_Истина,"БЛ='Ни как нет'; БИ=Конечно"); СтрЛожь = Формат(б_Ложь,"БЛ='Ни как нет'; БИ=Конечно"); Сообщить(СтрИстина); Сообщить(СтрЛожь); 

И будет следующий результат:

Булево в строку

Число в булево в 1С

В 1С 8.3. мы можем преобразовать любое число в булево по следующему правилу: 0 будет преобразован в Ложь, все остальные значения в Истина.

б_Ложь = Булево(0); б_Истина = Булево(100000); 

Будет следующий результат:

Число в булево в 1С

Булево в число в 1С

Можно сделать и обратное преобразование. Булево значение в число.

Для этого нужно воспользоваться методом Число, где в качестве параметра указать булево значение. Тогда Истина будет преобразована в 1С, а Ложь – в 0.

Например, как в этом коде:

б_Истина = Истина; б_Ложь = Ложь; ч_Истина = Число(б_Истина); ч_Ложь = Число(б_Ложь); 

С таким результатом:

Булево в число

Статьи о примитивных типах в 1С:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

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

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