Простая функция для вычисления разности между датами в любых единицах.
От типовой отличается тем, что реализована функцией языка запросов РАЗНОСТЬДАТ.
В приложении - обработка, демонстрирующая работу функции.
Разработка - Универсальные функции
Наименование | Файл | Версия | Размер | |||
---|---|---|---|---|---|---|
РазностьДат.epf
.epf 7,94Kb
33
|
.epf | 7,94Kb | 33 | Скачать |
Простая функция для вычисления разности между датами в любых единицах.
От типовой отличается тем, что реализована функцией языка запросов РАЗНОСТЬДАТ.
В приложении - обработка, демонстрирующая работу функции.
Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)
Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.
1 стартмани
18.03.2024 2925 2 John_d 11
Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)
Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.
12.02.2024 5193 atdonya 22
Универсальные функции Платформа 1С v8.3 Бесплатно (free)
На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.
30.11.2023 4143 ke.92@mail.ru 16
БСП (Библиотека стандартных подсистем) Сканер штрих-кода Универсальные функции Этикетки, ценники Конфигурации 1cv8 Бесплатно (free)
Разберем на примерах использование компоненты из БСП для генерации штрихкода и матричных кодов.
15.09.2023 8538 YA_418728146 8
WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)
При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.
28.08.2023 9540 YA_418728146 6
Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)
Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.
2 стартмани
22.08.2023 2289 28 progmaster 8
Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 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 16411 143 sapervodichka 112
Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)
В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.
18.07.2022 7377 quazare 8
// возвращает дату смещенную на указанное число интервалов указанного типа
Функция ДобавитьКДате(Знач ИсхДата, ТипИнтервала, Знач ЧислоИнтервалов) Экспорт
Если ТипЗнч(ИсхДата) <> Тип("Дата") Тогда
ИсхДата = '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
Просмотры 10360
Загрузки 33
Рейтинг
3
Комментарии 60
Код открыт Не указано
Рубрики Универсальные функции
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)