1. 1C / Говнокод #11351

    −121

    1. 1
    2. 2
    3. 3
    Если НЕ Отказ И ЭтоНовый() и Роль = Справочники.РолиКонтактныхЛиц.НайтиПоНаименованию("Директор") Тогда
    	Пол = Перечисления.ПолФизическихЛиц.Мужской;
    КонецЕсли;

    Тысячи теток мужского пола негодуют.

    Запостил: kovyl2404, 03 Июля 2012

    Комментарии (22) RSS

    • Если НЕ Отказ И ЭтоНовый() и Роль = Справочники.РолиКонтактныхЛиц.НайтиПоНаименованию("Директриса") Тогда
      	Пол = Перечисления.ПолФизическихЛиц.Женский;
      КонецЕсли;
      Ответить
    • Хорошее определение пола. Если побежал, значит заяц. Если побежала - зайчиха.
      Ответить
    • >Если НЕ Отказ И ЭтоНовый()
      Ржу как идиот.
      Ответить
      • Если Новая() и Дала() Тогда
            ...
        КонецЕсли;
        Ответить
      • А что тут смешного? ЭтоНовый - вполне обычный метод справочника, показывает, что элемент не был записан.
        Ответить
        • Хм. А есть метод, показывающий, что объект модифицирован? Что-то типа Изменен()?
          Ответить
          • Метод объекта Модифицированность(). Но он показывает только, писались ли данные в этот объект с момента его чтения из базы. Т. е., если записать туда то же значение, что и так хранится в базе, объект все-равно будет считаться модифицированным.
            Ответить
            • Т.е. как-то так?

              Создали объект - новый, не модифицированный.
              Поменяли поля - новый, модифицированный.
              Сохранили в базу - не новый, не модифицированный.

              Загрузили из базы - не новый, не модифицированный.
              Поменяли поля - не новый, модифицированный.

              Вполне логичная система, за исключением стиля названий - ЭтоНовый() и Модифицированность(). Имхо, лучше бы они были в одном стиле - к примеру Новый() и Измененный().
              Ответить
              • >лучше бы они были в одном стиле
                Уж как по мне, то лучше бы его (1С:Предприятия, в смысле) вообще не было.
                Ответить
                • А тут палка о двух концах. Или имеем скрипучий, но все-таки единый 1с. С которым с горем-пополам уже знакомы и пользователи и программисты. Или имеем гору несовместимых друг с другом софтин, написанных студентами и индусами за еду, у которых уровень невменяемости похлеще 1с.

                  В идеале, конечно, была бы единая, красивая, и удобная система... но этого, как вы прекрасно понимаете, достигнуть очень сложно, если вообще возможно.
                  Ответить
                  • Да понимаю, конечно. И поэтому, как мышь - плачу, колюсь, но продолжаю жрать кактус, ибо жрать хочется. Но уровень невменяемости говноэс, честно говоря, зашкаливает. Платформа наглухо застряла в прошлом веке. Язык - убожество (те, кто не может без слез взглянуть на русскоязычный код, - не задерживайтесь, пройдите мимо этого коммента, так как я сейчас не о том). Я могу писать на русском языке, я не вижу в этом ничего плохого, поскольку код будут сопровождать исключительно русскоязычные программисты. Но, блять, язык - сам по себе - полное убожество. И еще куча багов платформы, с которыми приходится сталкиваться, а говноэс лишь говорит: "Эта проблема наблюдается исключительно у Вас, мы ничего не можем поделать".
                    Короче, вот. Поплакался, и опять за работу.
                    Ответить
                    • Убожество - это да. Я где-то ради вящего любопытства почитал список косяков в семёрке. Например, в условии Если совсем неленивые вычисления. (Сам не проверял, вещать не буду.)
                      Ответить
                      • > в условии Если совсем неленивые вычисления
                        Да ну не может такого быть... Это же совсем печально. Только goto во всех ветвях с побочными эффектами, только хардкор?
                        Ответить
                        • Ради интереса проверил - в самом деле так, в условии И выполняются обе ветви.
                          Как я читал в той статье, если сначала переменная проверяется на пустоту и далее вызывается некоторый метод, то лучше всего сделать вложенный Если, иначе упадёт при пустой переменной.
                          Ответить
                          • Ааа, т.е. в операторах "и" и "или" нет ленивости... А я уж испугался, что в самой конструкции Если ... То.
                            Ответить
                            • До такого не дошло вроде. Но впредь попробую быть точнее.
                              Ответить
                      • Забавно. Не знал про это (с семеркой никогда не работал). В восьмерке условия нормально обрабатываются. Самый адский косяк в восьмерке (лично для меня) - если внутри явной транзакции выкинуть исключение (и, разумеется, перехватить его выше), то тупо начинают рушиться объекты. Вы туда пишете - оно не пишется. Читаете - оно не читается. Вот, как так можно было сделать?
                        Ответить
              • Стиль? Даже не стоит думать о таком. Такое ощущение, что полностью неконсистентный язык выдумывали разные группы людей, там всё вперемешку. Надо воспринимать как данность, "не пытаться понять, ничего не будет получаться" (q)
                Ответить
        • Не знаю. Не могу нормально воспринимать код написанный на русском языке.
          Ответить
          • If NOT Denial And IsNew() And Role = Catalogs.RoleOfContacts.FindByDescriptio n("Principal") Then
            Sex = Enums.GenderOfPhysicalPersons.Male;
            EndIf;
            Ответить

    Добавить комментарий