Сообщения

Показаны сообщения с ярлыком "дата"

Особенность работы конструкции дополнения дат в запросе

В случае если поле, по которому рассчитываем итоги, является полем типа Дата, то возможно дополнение результатов датами в заданном периоде. Делается это при помощи ключевого слова ПЕРИОДАМИ, после которого в скобках указывается вид периода (одно из СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ), начальная и конечные даты интересуемого периода. В случае если начальные и конечные даты не указаны, будут использованы первая и последняя даты, участвующие в результате. Допустим, мы написали запрос с дополнением дат: ВЫБРАТЬ НАЧАЛОПЕРИОДА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Период, МЕСЯЦ) КАК Период, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоОб...

Определение пересечения периодов (числовых множеств)

Изображение
Супер-пупер быстрая конкатенация(сложение) строк Разность дат, а как быстрее? На первый взгляд, довольно простая задачка для программиста, но как только приступаешь к её решению, начинается составление длинного логического выражения. Так как в алгебре логики имеется ряд законов, позволяющих производить равносильные преобразования логических выражений, то существует как минимум два логических выражения по определению пересечения периодов. Допустим, имеется два периода: 1) НачалоПериода1 - КонецПериода1; 2) НачалоПериода2 - КонецПериода2. Можно пойти от противного и составить логическое выражение по определению не пересекаемости периодов с отрицанием: Пересекаются = Не ((НачалоПериода2 > КонецПериода1) Или (КонецПериода2 < НачалоПериода1)) Другой тождественный вариант по определению пересекаемости периодов: Пересекаются = (НачалоПериода2 < КонецПериода1) И (КонецПериода2 > НачалоПериода1); Выглядит уже попроще, но существует еще один вариант решения данной ...

Разность дат, а как быстрее?

Изображение
Определение пересечения периодов (числовых множеств) Супер-пупер быстрая конкатенация(сложение) строк Я думаю, каждый разработчик сталкивался с вычислением разности дат в днях, минутах или секундах. На платформе 1С существует два способа вычисления разности дат: С помощью языка запросов; С помощью арифметических операций. Разберем первый способ. Для вычисления разности дат используется стандартная функция языка запросов РАЗНОСТЬДАТ, она имеет три параметра: первый параметр - вычитаемая дата; второй параметр - исходная дата; третий параметр - тип разности, одно из: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД. Но помним, что функция рассчитывает календарную разницу между двумя датами, поэтому ее нельзя использовать в местах, где необходимо рассчитать количество банковских или рабочих дней между двумя датами. Напишем функцию: Функция ПолучитьРазностьДатВДняхЗапрос(НачалоПериода, КонецПериода) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РАЗНОСТЬДАТ...