Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
1

Работа с Датой

23.08.2013, 16:57. Просмотров 1287. Ответов 17
Метки нет (Все метки)

Подскажите есть реквизит Тип: Дата. Мне нужно когда пользователь выбирает дату любую с 1 января по 30 марта то значение чтобы выводила 1 квартал, если выбирает с 1 апреля по 30 июня то значение 2 квартал и так все остальные квартала.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 16:57
Ответы с готовыми решениями:

Работа с датой
Как пользуясь языком 1С-ки вычислить дату, если нужно к известной дате прибавить известное же...

Работа с датой
Здравствуйте! Помогите пожалуйста... Имеется документ в котором есть табличная часть В...

Работа с датой
Доброго времени суток :) у меня есть вопрос как передать текущую дату элементу дата. Я использую...

Работа с датой в 7.7
Подскажите, как отнимать/прибавлять дни к дате, например получить текущую дату плюс 3 дня, или типа...

1c77 работа с датой
Задача вот в чём надо выполнить какое то действие со справочником при условии что в определённой...

17
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
23.08.2013, 17:08 2
Цитата Сообщение от Ermak27 Посмотреть сообщение
Подскажите есть реквизит Тип: Дата. Мне нужно когда пользователь выбирает дату любую с 1 января по 30 марта то значение чтобы выводила 1 квартал, если выбирает с 1 апреля по 30 июня то значение 2 квартал и так все остальные квартала.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Функция ОпределитьКварталПоДате(Дата, ДатаКон)
 
    Результат = Неопределено;
    
    НачГода = НачалоГода(Дата);
    КонГода = КонецГода(ДатаКон);
    НачКв = НачалоКвартала(Дата);
    Разница =  КонГода - НачГода;
    Если НачКв = НачГода Тогда
        Результат = "первый квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-3) = НачГода Тогда
        Результат = "второй квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-6) = НачГода Тогда
        Результат = "третий квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-9) = НачГода Тогда
        Если  НачКв < НачГода Тогда
            Результат = "4 ";
        Иначе
            Результат = "";
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
 
КонецФункции
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
28.08.2013, 16:43  [ТС] 3
SonicQ, Подскажите как сделать чтобы в Форме - ФормаСписка выводилась не дата а писала например если период стоит с 01.01.2014 по 31.03.2014 выводила 1 квартал 2014 года

Добавлено через 46 секунд
и как аналогично сделать чтобы в заголовке макета выводила так же?
0
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
28.08.2013, 17:37 4
Цитата Сообщение от Ermak27 Посмотреть сообщение
Подскажите как сделать чтобы в Форме - ФормаСписка выводилась не дата а писала например если период стоит с 01.01.2014 по 31.03.2014 выводила 1 квартал 2014 года
при записи документа сохраняйте переменную где указывается "1 квартал 2014 года" в реквизит формы, и в форме списка вытащите этот реквизит

Цитата Сообщение от Ermak27 Посмотреть сообщение
и как аналогично сделать чтобы в заголовке макета выводила так же?
сделайте в макете параметр и присваивайте ему значение переменной где указывается "1 квартал 2014 года"

Добавлено через 14 минут
Цитата Сообщение от SonicQ Посмотреть сообщение
реквизит формы
извиняюсь, в реквизит документа или справочника
1
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.08.2013, 21:30 5
Кликните здесь для просмотра всего текста
ПредставлениеПериода (PeriodPresentation)
Синтаксис:

ПредставлениеПериода(<ДатаНачалаПериода>, <ДатаОкончанияПериода>, <ФорматнаяСтрока>)
Параметры:

<ДатаНачалаПериода> (обязательный)

Тип: Дата.
Дата начала периода.
<ДатаОкончанияПериода> (обязательный)

Тип: Дата.
Дата окончания периода.
<ФорматнаяСтрока> (необязательный)

Тип: Строка.
Определяет способ форматирования периода.
Может содержать следующие параметры:
Л/L - код локализации. Если не указан, берется код локализации по умолчанию. Если система не поддерживает форматирование периода с указанной локализацией, генерируется исключительная ситуация.
ФП/FP - признак "финансовый период". Влияет на форматирование в случае, если указанный датами период соответствует первому полугодию или первым 9 месяцам года. Если не указан, признак не установлен.
Коды региональных установок, использование которых допустимо в форматной строке:
Код Язык
en_US Английский
be_BY Белорусский
bg_BG Болгарский
vi_VN Вьетнамский
ka_GE Грузинский
kk_KZ Казахский
lv_LV Латышский
lt_LT Литовский
de_DE Немецкий
pl_PL Польский
ro_RO Румынский
ru_RU Русский
uk_UA Украинский
fi_FI Финский
et_EE Эстонский
tr_TR Турецкий

Пример форматной строки:
Л=en_US; ФП=Истина
Значение по умолчанию: Пустая строка
Возвращаемое значение:

Тип: Строка.

Описание:

Формирует внешнее представление периода, заданного датами начала и окончания периода.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Если задан режим совместимости НеИспользовать, то по умолчанию использует код локализации, заданный для сеанса (параметром VL), аналогично форматированию числа и даты.
Пример:

1C
1
2
3
4
ТекДата = ТекущаяДата();
НачДата = НачалоМесяца(ТекДата);
КонДата = КонецМесяца(ТекДата);
Описание = "" + ПредставлениеПериода(НачДата, КонДата, "ФП = Истина");
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 08:38  [ТС] 6
SonicQ, а можно пример
0
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
29.08.2013, 09:20 7
Цитата Сообщение от Ermak27 Посмотреть сообщение
а можно пример
к сожалению нет возможности
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 10:13  [ТС] 8
SonicQ,
Цитата Сообщение от SonicQ Посмотреть сообщение
сделайте в макете параметр и присваивайте ему значение переменной где указывается "1 квартал 2014 года"
Параметр я сделал, но у меня две переменной Дата1 и Дата2, как с двумя сделать?
0
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
29.08.2013, 10:34 9
Цитата Сообщение от Ermak27 Посмотреть сообщение
1 квартал 2014 года
на выходе же получаешь одну "1 квартал 2014 года" ... или как?
0
Augusto
70 / 70 / 1
Регистрация: 18.12.2012
Сообщений: 390
29.08.2013, 10:38 10
Цитата Сообщение от Ermak27 Посмотреть сообщение
Параметр я сделал, но у меня две переменной Дата1 и Дата2, как с двумя сделать?
Дык вы сначала через ПредставлениеПериода определяйте переменную периода и в параметр ее пихайте
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 10:58  [ТС] 11
Augusto, Я сделал
1C
1
2
3
    НачалоКвартала = ЭтотОбъект.Дата1;
    КонецКвартала = ЭтотОбъект.Дата2;
    Квартал = ПредставлениеПериода( НачалоКвартала, КонецКвартала);
Но выводит числа, мне нужно чтобы писала 1 квартал 2013 года
0
Augusto
70 / 70 / 1
Регистрация: 18.12.2012
Сообщений: 390
29.08.2013, 12:00 12
Надо так:
Квартал = ПредставлениеПериода(НачалоКвартала, КонецКвартала, "ФП = Истина");
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 12:02  [ТС] 13
Augusto, Вот как выводит

01.01.2014 0:00:00 - 31.03.2014 0:00:00
0
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
29.08.2013, 12:12 14
в функции , которую я тебе сбрасывал

Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Функция ОпределитьКварталПоДате(Дата, ДатаКон)
 
    Результат = Неопределено;
    
    НачГода = НачалоГода(Дата);
    КонГода = КонецГода(ДатаКон);
    НачКв = НачалоКвартала(Дата);
    Разница =  КонГода - НачГода;
    Если НачКв = НачГода Тогда
        Результат = "первый квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-3) = НачГода Тогда
        Результат = "второй квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-6) = НачГода Тогда
        Результат = "третий квартал ";
    ИначеЕсли ДобавитьМесяц(НачКв,-9) = НачГода Тогда
        Если  НачКв < НачГода Тогда
            Результат = "4 ";
        Иначе
            Результат = "";
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
 
КонецФункции


переменная "Результат" возвращает номер квартала, то есть 1,2,3,4

Далее делаешь вот так

1C
1
2
3
4
5
    Кварт = ОпределитьКварталПоДате(мДатаКонцаПериодаОтчета,мДатаНачалаПериодаОтчета);
    мКварт = Кварт;
    ГодВЧислоНачало = Год(мДатаНачалаПериодаОтчета);
    ГодВФорматеНачало = Формат (ГодВЧислоНачало, "ЧГ=0");
    мТаблица.Области.ПериодОтчета.Значение  = "За " + мКварт + ГодВФорматеНачало + " год" + буква;
и получаешь что-то типа "За 1 квартал 2013 года"
1
Augusto
70 / 70 / 1
Регистрация: 18.12.2012
Сообщений: 390
29.08.2013, 12:13 15
Попробуйте так:
ПредставлениеПериода(НачалоДня(НачалоКвартала), КонецДня(КонецКвартала), "ФП = Истина")
Там есть свои нюансы. Должно стоять абсолютное позиционирование периода, с точностью до секунды
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 12:17  [ТС] 16
Все сделал

1C
1
2
3
    НачалоКвартала = ЭтотОбъект.Дата1;
    КонецКвартала = ЭтотОбъект.Дата2;
    Квартал = ПредставлениеПериода( НачалоДня(НачалоКвартала), КонецДня(КонецКвартала));
Добавлено через 2 минуты
SonicQ,
Цитата Сообщение от SonicQ Посмотреть сообщение
при записи документа сохраняйте переменную где указывается "1 квартал 2014 года" в реквизит формы, и в форме списка вытащите этот реквизит
Подскажите как сохранить переменную?
0
SonicQ
282 / 182 / 18
Регистрация: 20.02.2012
Сообщений: 916
29.08.2013, 12:22 17
в твоем же случае можно сделать и вот так

1C
1
2
3
4
5
Кварт = ОпределитьКварталПоДате(мДатаКонцаПериодаОтчета,мДатаНачалаПериодаОтчета);
    мКварт = Кварт;
    ГодВЧислоНачало = Год(мДатаНачалаПериодаОтчета);
    ГодВФорматеНачало = Формат (ГодВЧислоНачало, "ЧГ=0");
    Квартал  = "" + мКварт +" квартал";
Добавлено через 4 минуты
Цитата Сообщение от Ermak27 Посмотреть сообщение
Подскажите как сохранить переменную?
создаешь в документе( или что там у тебя, справочнике может) реквизит "период", с типом строка, идешь в документ, формируешь что тебе надо, получаешь номер квартала

Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
Кварт = ОпределитьКварталПоДате(мДатаКонцаПериодаОтчета,мДатаНачалаПериодаОтчета);
    мКварт = Кварт;
    ГодВЧислоНачало = Год(мДатаНачалаПериодаОтчета);
    ГодВФорматеНачало = Формат (ГодВЧислоНачало, "ЧГ=0");
    Квартал  = "" + мКварт +" квартал";


берешь реквизит документа(Справочник) "период", и документе(Справочнике) перед записью присваиваешь

Период = Квартал;

В форме списка вытаскиваешь этот реквизит и все
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
29.08.2013, 12:35  [ТС] 18
Все получилось, спасибо!
0
29.08.2013, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 12:35

Работа с датой: конец дня в 8.0
Начала изучать 8.0. Делаю запрос по регистру накоплений. в условии прописываю Где Период МЕЖДУ...

чето штука непонятная с датой
в отчете не работает следующее: Если ВыбКонПериода=0 Тогда .... ВыбКонПериода - это...

Как запретить проводки прошедшей датой?
1С торговля+склад 7.7. Как сделать так, чтобы администратор мог проводить продажи любой датой, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru