Период разбить на ДатаНачало и ДатаКонец

1. Nastya-chajkovskaya 27.05.19 14:37 Сейчас в теме
Здравствуйте! Подскажите как реализовать. Я выгрузила из запроса в таблицу значений период. у меня получилось так

01.01.2019
03.01.2019
05.01.2019

Мне надо, разбить эти значения на две колонки ДатаНачало и ДатаКонец следующим образом :
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......

Может кто сталкивался, может ссылкой кто поделиться на материал? Спасибо заранее
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user_2010 902 27.05.19 14:50 Сейчас в теме
(1) есть такая процедура
Процедура РазобратьПериодПоМесячно(МассивПериодов)
	
	НачПер = НачалоМесяца(НачалоПериода);
	КонПер = КонецМесяца(КонецПериода);
	
	Пока НачПер < КонПер Цикл
		МассивПериодов.Добавить(НачПер);
		НачПер = ДобавитьМесяц(НачПер,1);
	КонецЦикла;
	
КонецПроцедуры
Показать


как пример...
3. ishelper 27.05.19 14:52 Сейчас в теме
(1)
Мне надо, разбить эти значения на две колонки ДатаНачало и ДатаКонец следующим образом :
ДатаНачало ДатаКонец
01.01.2019 03.01.2019
03.01.2019 05,01.2019
05.01.2019 .......
Задача элементарная для программиста (не 1Сника!): в цикле перебираете строки таблицы значений и в колонку ДатаКонец пишете значение из колонки ДатаНачало следующей строки.

Разумеется, надо проверять - не является ли текущая строка последней в ТЗ, для нее вы задачу не поставили- что там должно быть в ДатаКонец?
user613191_olgargor; alex-l19041; +2 Ответить
6. fenixnow 269 27.05.19 17:08 Сейчас в теме
7. tusv 211 27.05.19 17:29 Сейчас в теме
(1)Все же в запросе делается легко и непринужденно. Соединяем таблицу с самой собой, где Дата в соединяемой таблице больше и берем ее минимум
Как пример
ВЫБРАТЬ
	ДАТАВРЕМЯ(2019, 1, 1) КАК Дата
ПОМЕСТИТЬ ВТ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ДАТАВРЕМЯ(2019, 1, 10)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ДАТАВРЕМЯ(2019, 1, 15)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ДАТАВРЕМЯ(2019, 1, 20)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Дата КАК НачалоПериода,
	МИНИМУМ(Правая.Дата) КАК КонецПериода
ИЗ
	ВТ КАК ВТ
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК Правая
		ПО (ВТ.Дата < Правая.Дата)

СГРУППИРОВАТЬ ПО
	ВТ.Дата
Показать
4. alyonchik 27.05.19 14:53 Сейчас в теме
ТабЗначений = Новый ТаблицаЗначений;
	ТабЗначений.Колонки.Добавить("НачалоПериода");
	ТабЗначений.Колонки.Добавить("КонецПериода");
	
	// Данные - это Таблица с датами
	Для Каждого СтрокаТЗ Из Данные Цикл 
		СтрокаТаб = ТабЗначений.Добавить();
		СтрокаТаб.НачалоПериода = СтрокаТЗ.ТекДата; 
		СтрокаТаб.КонецПериода 	= СтрокаТЗ.ТекДата;
	КонецЦикла;
Показать
5. alex-l19041 8 27.05.19 14:54 Сейчас в теме
перебираете в цикле исходную таблицу в каждую строку результата пишите значение текущей и следующей строки (с проверкой на существование таковой)
Nastya-chajkovskaya; +1 Ответить
8. tusv 211 27.05.19 17:35 Сейчас в теме
А если все же нужно, чтоб последняя строчка была с пустой датой, то соединение будет левое
ВЫБРАТЬ
	ВТ.Дата КАК НачалоПериода,
	ЕСТЬNULL(МИНИМУМ(Правая.Дата), ДАТАВРЕМЯ(1, 1, 1)) КАК КонецПериода
ИЗ
	ВТ КАК ВТ
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК Правая
		ПО (ВТ.Дата < Правая.Дата)

СГРУППИРОВАТЬ ПО
	ВТ.Дата
Показать
Nastya-chajkovskaya; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот