Простая функция для вычисления разности между датами в любых единицах.
От типовой отличается тем, что реализована функцией языка запросов РАЗНОСТЬДАТ.
В приложении - обработка, демонстрирующая работу функции.
Разработка - Универсальные функции
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | По подписке [?] | Купить один файл | |
---|---|---|---|
РазностьДат.epf
.epf 7,94Kb
33
|
33 | Скачать (1 SM) | Купить за 1 850 руб. |
Простая функция для вычисления разности между датами в любых единицах.
От типовой отличается тем, что реализована функцией языка запросов РАЗНОСТЬДАТ.
В приложении - обработка, демонстрирующая работу функции.
Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)
Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.
21.05.2024 32312 dimanich70 83
Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)
Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.
1 стартмани
18.03.2024 5156 6 John_d 11
Универсальные функции Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)
Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.
12.02.2024 37115 atdonya 29
Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)
На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.
30.11.2023 6759 ke.92@mail.ru 17
БСП (Библиотека стандартных подсистем) Сканер штрих-кода Универсальные функции Этикетки, ценники Программист Бизнес-аналитик 1C:Бухгалтерия Бесплатно (free)
Разберем на примерах использование компоненты из БСП для генерации штрихкода и матричных кодов.
15.09.2023 28033 YA_418728146 10
WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)
При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.
28.08.2023 18552 YA_418728146 8
Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)
Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.
2 стартмани
22.08.2023 4986 80 progmaster 11
Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)
Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)
1 стартмани
13.10.2022 20134 193 sapervodichka 113
// возвращает дату смещенную на указанное число интервалов указанного типа
Функция ДобавитьКДате(Знач ИсхДата, ТипИнтервала, Знач ЧислоИнтервалов) Экспорт
Если ТипЗнч(ИсхДата) <> Тип("Дата") Тогда
ИсхДата = '0001-01-01';
КонецЕсли;
Если ТипЗнч(ЧислоИнтервалов) <> Тип("Число") Тогда
ЧислоИнтервалов = 0;
КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&ИсхДата, !ТипИнтервала!, &ЧислоИнтервалов) КАК СмещДата"; // !ТипИнтервала!
Если Нрег(ТипИнтервала) = НРег("СЕКУНДА") ИЛИ Нрег(ТипИнтервала) = НРег("СЕК") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "СЕКУНДА");
ИначеЕсли Нрег(ТипИнтервала) = НРег("МИНУТА") ИЛИ Нрег(ТипИнтервала) = НРег("МИН") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МИНУТА");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ЧАС") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ЧАС");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕНЬ") ИЛИ Нрег(ТипИнтервала) = НРег("ДНИ") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕНЬ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("НЕДЕЛЯ") ИЛИ Нрег(ТипИнтервала) = НРег("НЕД") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "НЕДЕЛЯ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕКАДА") ИЛИ Нрег(ТипИнтервала) = НРег("ДЕК") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕКАДА");
ИначеЕсли Нрег(ТипИнтервала) = НРег("МЕСЯЦ") ИЛИ Нрег(ТипИнтервала) = НРег("МЕС") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МЕСЯЦ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("КВАРТАЛ") ИЛИ Нрег(ТипИнтервала) = НРег("КВ") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "КВАРТАЛ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ПОЛУГОДИЕ") ИЛИ Нрег(ТипИнтервала) = НРег("ПОЛГОДА") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ПОЛУГОДИЕ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ГОД") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ГОД");
Иначе
ВызватьИсключение(
"Непредусмотренный тип интервала '"+ТипИнтервала+"' для добавления к дате !");
Возврат Null;
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ИсхДата", ИсхДата);
Запрос.УстановитьПараметр("ЧислоИнтервалов", ЧислоИнтервалов);
тзРезультат = Запрос.Выполнить().Выгрузить();
Возврат тзРезультат[0][0];
КонецФункции
// возвращает разницу между переданными датами в интервалах указанного типа
Функция РазностьДат(Знач ИсхДатаНач, Знач ИсхДатаКон, ТипИнтервала) Экспорт
Если ТипЗнч(ИсхДатаНач) <> Тип("Дата") Тогда
ИсхДатаНач = '0001-01-01';
КонецЕсли;
Если ТипЗнч(ИсхДатаКон) <> Тип("Дата") Тогда
ИсхДатаКон = '0001-01-01';
КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ
| РАЗНОСТЬДАТ(&ИсхДатаНач, &ИсхДатаКон, !ТипИнтервала!) КАК ЧислоИнтервалов"; // !ТипИнтервала!
Если Нрег(ТипИнтервала) = НРег("СЕКУНДА") ИЛИ Нрег(ТипИнтервала) = НРег("СЕК") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "СЕКУНДА");
ИначеЕсли Нрег(ТипИнтервала) = НРег("МИНУТА") ИЛИ Нрег(ТипИнтервала) = НРег("МИН") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МИНУТА");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ЧАС") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ЧАС");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕНЬ") ИЛИ Нрег(ТипИнтервала) = НРег("ДНИ") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕНЬ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("МЕСЯЦ") ИЛИ Нрег(ТипИнтервала) = НРег("МЕС") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МЕСЯЦ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("КВАРТАЛ") ИЛИ Нрег(ТипИнтервала) = НРег("КВ") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "КВАРТАЛ");
ИначеЕсли Нрег(ТипИнтервала) = НРег("ГОД") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ГОД");
Иначе
ВызватьИсключение(
"Непредусмотренный тип интервала '"+ТипИнтервала+"' для вычисления разницы дат !");
Возврат Null;
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ИсхДатаНач", ИсхДатаНач);
Запрос.УстановитьПараметр("ИсхДатаКон", ИсхДатаКон);
тзРезультат = Запрос.Выполнить().Выгрузить();
Возврат тзРезультат[0][0];
КонецФункции
Показать
Перем Скрыпт;
Процедура ДокументСформирован(Поле)
Скрыпт=Поле.Документ.Script;
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
Пока Истина Цикл
Попытка
Скрыпт.ДатаМиллисекондов();
Прервать;
Исключение
КонецПопытки;
КонецЦикла;
Сообщить(Скрыпт.ДатаМиллисекондов(0));
Предупреждение(1,10);
Сообщить(Скрыпт.ДатаМиллисекондов(0));
КонецПроцедуры
Процедура ПриОткрытии()
ПолеHTMLДокумента=ЭлементыФормы.Найти("ПолеHTMLДокумента");
Если ПолеHTMLДокумента=Неопределено Тогда
ПолеHTMLДокумента=ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"),"ПолеHTMLДокумента");
КонецЕсли;
ПолеHTMLДокумента.УстановитьТекст("<script type='text/javascript'>ДатаМиллисекондов=function(){return (new Date().getTime())}</script>");
ПолеHTMLДокумента.УстановитьДействие("ДокументСформирован",Новый Действие("ДокументСформирован"));
КонецПроцедуры
Показать
// Функция, возвращающая время в миллисекундах или секундах.
//
&НаКлиентеНаСервереБезКонтекста
Функция ВремяВМиллисекундах()
Попытка
Script = Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language = "javascript";
Script.Timeout = -1;
Время = Script.Eval("var d = new Date(); d.getTime()");
Исключение
Время = ТекущаяДата();
КонецПопытки;
Возврат Время;
КонецФункции
// Пример.
//
Процедура ПримерИспользования()
Начало = ВремяВМиллисекундах();
КоличествоСтрок = 0;
Для Каждого Элемент ИЗ Массив Цикл
КоличествоСтрок = КоличествоСтрок + 1;
...
КонецЦикла;
Конец = ВремяВМиллисекундах();
ВремяВыполнения = (Конец - Начало) / 1000;
РезультСтрока = НСтр("ru = 'Результат процесса (количество строк = %КоличествоСтрок%, время выполнения = %ВремяВыполнения% с)'");
РезультСтрока = СтрЗаменить(РезультСтрока, "%КоличествоСтрок%", Строка(КоличествоСтрок));
РезультСтрока = СтрЗаменить(РезультСтрока, "%ВремяВыполнения%", Строка(ВремяВыполнения));
КонецПроцедуры
ПоказатьДля получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 178811
Создание 20.03.13 16:49
Обновление 20.03.13 14:04
Просмотры 10897
Загрузки 33
Рейтинг
3
Комментарии 60
Код открыт Не указано
Рубрики Универсальные функции
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)