Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 22:31

Вывод даты изменения процента за выслугу лет. Нужна помощь

Автор Техножрец, 05 дек 2014, 11:21

0 Пользователей и 1 гость просматривают эту тему.

Техножрец

Такая проблема. Две недели назад начал изучать 1С и уже понадобилось вывести дату через пользовательское поле выражения. О сути поля. У сотрудника есть стаж и в зависимости от того сколько он проработал на предприятии увеличивается процент за выслугу лет. То есть:
Стаж меньше года - 0%
Стаж от года до пяти - 10%
От пяти до десяти - 15%
И т.д.
И нужно вывести сколько лет, месяцев, дней осталось до повышения этого процента.
Пример
Иванов. Стаж 6 лет 4 месяца 12 дней. Наше поле: 4 года, 8 месяцев, 18 дней.
Очень надеюсь на вашу помощь.

KrivosheevEV


Sinsinmin


Техножрец

Первый вопрос. Как реализовать оператор if(я основываюсь на delpi/С++) и соответственно не работает, а в книге это не описано.Он есть, а примера нет.
Второй вопрос. Как из текущей даты достать только год или месяц?
Добавлено: 05 дек 2014, 14:54


Цитата: Техножрец от 05 дек 2014, 14:34
Первый вопрос. Как реализовать оператор if(я основываюсь на delpi/С++) и соответственно не работает, а в книге это не описано.Он есть, а примера нет.
Второй вопрос. Как из текущей даты достать только год или месяц?
Так. С первым разобрался.
ВЫБОР
    КОГДА ЛЕТ < 1
    ТОГДА ВЫЧИСЛИТЬ(1-ЛЕТ)
КОНЕЦ

cska-fanat-kz

1. Дельфи
If ... Then ... Else ... End;
1C
Если ... Тогда ... Иначе ... КонецЕсли;

2. Месяц(ТекущаяДата())
Год(ТекущаяДата())
или
Формат(ТекущаяДата(), "гггг")
Формат(ТекущаяДата(), "ММ")
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KrivosheevEV

1. Данная конструкция для запросов, в коде так:
Если а = 1 Тогда
    б = а * 2;
ИначеЕсли а = 2 Тогда
    б = а * 3;
Иначе
    б = 0;
КонецЕсли;


или

б = ?(a = 1, а * 2, 0); // Только первое и последнее условие из блока выше.

2. В Конфигураторе: Ctrl+F1 -> Содержание -> Общее описание встроенного языка -> Встроенные функции -> Функции работы со значениями типа Дата -> Год (Месяц)

Sinsinmin

Эхх кому то на работе выслугу лет дают...может и мне дадут?:D
Добавлено: 06 дек 2014, 11:51


Интересно было бы узнать как решается такая задача, с учётом того что дни вычислить точно...сложно или вообще не возможно.
Скорее всего допускается какая то погрешность...которую нужно узнать у тех кто давал задачу.
Ведь сотрудник мог иметь стаж 3 года 4 месяца 12 дней уволиться, потом опять быть принятым на работу и как вычислить сколько дней там ему осталось до полных лет непонятно.
Вот к примеру если сотрудник пришёл 12 марта на работу, то понятно что 12 марта следующего года стаж его будет равен 1 год 0 месяцев и 0 дней...и от этой даты можно плясать...к примеру 365(366) - Сколько дней он проработал в этом году. А дальше добавить года до следующего стажа.
Но вот если сотрудник пришёл и у него уже был стаж, то как узнать сколько дней ему до круглой даты работать?)Возможно ли такое?)

Сколько дней он проработал в этом году = ДеньГода(ТекущаяДата()) - ДеньГода('20140312'). Выслуга лет считается в конце года...поэтому так. Для даты после 1 января. Нужно было бы написать... КонецГода - 12 марта + ТекущаяДата )


Техножрец

Цитата: KrivosheevEV от 05 дек 2014, 15:08
1. Данная конструкция для запросов, в коде так:
Если а = 1 Тогда
    б = а * 2;
ИначеЕсли а = 2 Тогда
    б = а * 3;
Иначе
    б = 0;
КонецЕсли;


или

б = ?(a = 1, а * 2, 0); // Только первое и последнее условие из блока выше.

2. В Конфигураторе: Ctrl+F1 -> Содержание -> Общее описание встроенного языка -> Встроенные функции -> Функции работы со значениями типа Дата -> Год (Месяц)
Цитата: cska-fanat-kz от 05 дек 2014, 15:06
1. Дельфи
If ... Then ... Else ... End;
1C
Если ... Тогда ... Иначе ... КонецЕсли;

2. Месяц(ТекущаяДата())
Год(ТекущаяДата())
или
Формат(ТекущаяДата(), "гггг")
Формат(ТекущаяДата(), "ММ")
Спасибо вам за помощь.
Добавлено: 11 дек 2014, 09:39


Хм. Теперь появились некоторые другие проблемы. Вот кстати к чему я пришёл:
Формат(Вычислить(год(ТекущаяДата())-Лет),"гггг")
Таак. Как вывести комментарий к полю, чтобы было не просто число а например:
2 года.
И возможно ли вывести в одном поле два числа, прописав вышеуказанный код дважды но заменив во втором год на месяц?
Добавлено: 11 дек 2014, 09:52


Таак. Как вывести комментарий к полю, чтобы было не просто число а например:
2 года.

Понял.
Строка(Вычислить(Год(ТекущаяДата()) - Лет)+ "Лет"
Добавлено: 11 дек 2014, 10:08


....вот ведь незадача. Нужно ещё условие поставить к типу стажа, поскольку их несколько и нам нужен определённый. И мой код .... ибо мне нужно сначала определить стаж человека. Если от 1 до 5 лет(пример) тогда из пяти вычесть его настоящий стаж, затем вывести его со словом, имеющим правильное окончание. Нафиг мне вообще сегодняшняя дата. Сейчас всё будет

KrivosheevEV

Потерял нить рассуждений. Ну, да, ладна. Это:
Цитата: Техножрец от 11 дек 2014, 09:24Сейчас всё будет
радует.


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск