Задался я целью укоротить функцию в конфигурации, которая возвращает ближайшую дату дня рождения клиента от даты продажи. И как-то незаметно дошел до маразма... такого кода
То есть я перемножаю 1 на результат сравнения (булево). Вопрос: допустимо ли такое на практике?
БлижайшаяДата = Дата(Год(ДатаПродажи)+1*(ДатаПродажи-Дата(Год(ДатаПродажи),Месяц(ДеньРождения),День(ДеньРождения))>0),Месяц(ДеньРождения),День(ДеньРождения));
То есть я перемножаю 1 на результат сравнения (булево). Вопрос: допустимо ли такое на практике?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)
Не выпендривайся и пиши как тебе ниже предложили:
но мой чуть короче
Ты свои выкрутасы с коротким кодом потом сам же сопровождать и замучаешся. Через месяца три посмотришь на свой код, и будешь вопросы задавать - что за дебил эту непонятную херь написал?
Не выпендривайся и пиши как тебе ниже предложили:
БлижайшаяДата = Дата(Год(ДатаПродажи), Месяц(ДеньРождения), День(ДеньРождения));
Если БлижайшаяДата < ДатаПродажи Тогда
// Пропустили в этом году, отметим в следующем.
БлижайшаяДата = ДобавитьМесяц(БлижайшаяДата, 12);
КонецЕсли;
(6)
А поскольку преобразование "неявное", то и претензий предъявить нельзя будет! ;-)
при умножении на булево происходить неявное преобразование
...пока программисты фирмы 1С в очередной версии платформы не решат, что это надо отменить. Или даже не решат, а оно само так выйдет, побочным эффектом от какой-нибудь новой рюшечки.
А поскольку преобразование "неявное", то и претензий предъявить нельзя будет! ;-)
(7) кода может быть и чуть побольше (это не сильно страшно)
если он при этом более удобочитаемый
например, такой вариант
если он при этом более удобочитаемый
например, такой вариант
ГодП = Год(ДатаПродажи);
месяцР = Месяц(ДеньРождения);
ДеньР = День(ДеньРождения);
ДельтаГод = ?(ДатаПродажи > Дата(ГодП, МесяцР, ДеньР), 1, 0);
БлижайшаяДата = Дата(ГодП + ДельтаГод, МесяцР, ДеньР);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот