Период разбить на ДатаНачало и ДатаКонец
Здравствуйте! Подскажите как реализовать. Я выгрузила из запроса в таблицу значений период. у меня получилось так
01.01.2019
03.01.2019
05.01.2019
Мне надо, разбить эти значения на две колонки ДатаНачало и ДатаКонец следующим образом :
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......
Может кто сталкивался, может ссылкой кто поделиться на материал? Спасибо заранее
01.01.2019
03.01.2019
05.01.2019
Мне надо, разбить эти значения на две колонки ДатаНачало и ДатаКонец следующим образом :
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......
Может кто сталкивался, может ссылкой кто поделиться на материал? Спасибо заранее
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) есть такая процедура
как пример...
Процедура РазобратьПериодПоМесячно(МассивПериодов)
НачПер = НачалоМесяца(НачалоПериода);
КонПер = КонецМесяца(КонецПериода);
Пока НачПер < КонПер Цикл
МассивПериодов.Добавить(НачПер);
НачПер = ДобавитьМесяц(НачПер,1);
КонецЦикла;
КонецПроцедуры
Показатькак пример...
(1)
Разумеется, надо проверять - не является ли текущая строка последней в ТЗ, для нее вы задачу не поставили- что там должно быть в ДатаКонец?
Мне надо, разбить эти значения на две колонки ДатаНачало и ДатаКонец следующим образом :
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......
Задача элементарная для программиста (не 1Сника!): в цикле перебираете строки таблицы значений и в колонку ДатаКонец пишете значение из колонки ДатаНачало следующей строки.
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......
Разумеется, надо проверять - не является ли текущая строка последней в ТЗ, для нее вы задачу не поставили- что там должно быть в ДатаКонец?
(1)Все же в запросе делается легко и непринужденно. Соединяем таблицу с самой собой, где Дата в соединяемой таблице больше и берем ее минимум
Как пример
Как пример
ВЫБРАТЬ
ДАТАВРЕМЯ(2019, 1, 1) КАК Дата
ПОМЕСТИТЬ ВТ
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДАТАВРЕМЯ(2019, 1, 10)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДАТАВРЕМЯ(2019, 1, 15)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДАТАВРЕМЯ(2019, 1, 20)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.Дата КАК НачалоПериода,
МИНИМУМ(Правая.Дата) КАК КонецПериода
ИЗ
ВТ КАК ВТ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК Правая
ПО (ВТ.Дата < Правая.Дата)
СГРУППИРОВАТЬ ПО
ВТ.Дата
ПоказатьТабЗначений = Новый ТаблицаЗначений;
ТабЗначений.Колонки.Добавить("НачалоПериода");
ТабЗначений.Колонки.Добавить("КонецПериода");
// Данные - это Таблица с датами
Для Каждого СтрокаТЗ Из Данные Цикл
СтрокаТаб = ТабЗначений.Добавить();
СтрокаТаб.НачалоПериода = СтрокаТЗ.ТекДата;
СтрокаТаб.КонецПериода = СтрокаТЗ.ТекДата;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот