Нулевая декларация по налогу на прибыль
]]>Подборка наиболее важных документов по запросу Нулевая декларация по налогу на прибыль (нормативно–правовые акты, формы, статьи, консультации экспертов и многое другое).
Судебная практика: Нулевая декларация по налогу на прибыль Открыть документ в вашей системе КонсультантПлюс:Подборка судебных решений за 2019 год: Статья 284 «Налоговые ставки» главы 25 «Налог на прибыль организаций» НК РФ
(Юридическая компания «TAXOLOGY»)Налогоплательщик — производитель сельскохозяйственной продукции сдал в аренду часть земельного участка для строительства газопровода. Доходы от сдачи участка в аренду и суммы возмещения убытков, причиненных в результате строительства газопровода (как компенсацию выгоды, не полученной в результате невозможности использования земель для сельскохозяйственной деятельности, так и компенсацию предстоящих расходов по рекультивации земель), налогоплательщик отразил в декларации в качестве доходов от сельскохозяйственной деятельности, ставка налога на прибыль в отношении которых равна нулю. Суд поддержал вывод налогового органа о том, что доходы от сдачи земельных участков в аренду не являются доходами от сельскохозяйственной деятельности, поэтому ставка налога на прибыль 0 процентов к ним применяться не может.Статьи, комментарии, ответы на вопросы: Нулевая декларация по налогу на прибыль
Статья: Что делать, если налоговая требует бизнес-план
(Никитин А.Ю.)
(«Главная книга», 2020, N 20)Если компания подала нулевую декларацию по НДС или декларацию по прибыли с убытками, налоговики требуют пояснения, а вместе с ними — бизнес-план компании. Понятно, что в период выхода из «коронакризиса» налоговая беспокоится по поводу наполнения бюджета. Но насколько законно подобное требование? И что делать, если бизнес-плана у компании нет?Нормативные акты: Нулевая декларация по налогу на прибыль Открыть документ в вашей системе КонсультантПлюс:
«Налоговый кодекс Российской Федерации (часть вторая)» от 05.08.2000 N 117-ФЗ
(ред. от 02.07.2021)1. Налогоплательщики независимо от наличия у них обязанности по уплате налога и (или) авансовых платежей по налогу, особенностей исчисления и уплаты налога обязаны по истечении каждого отчетного и налогового периода представлять в налоговые органы по месту своего нахождения и месту нахождения каждого обособленного подразделения, если иное не предусмотрено настоящим пунктом, соответствующие налоговые декларации в порядке, определенном настоящей статьей.
Образец заполнения нулевой декларации по налогу на имущество 2021
Нулевая декларация по налогу на имущество — это отчет, который необходимо сдать при наличии на балансе недвижимости. Чиновники определили ряд ключевых требований, когда «нулевку» придется отправить в ФНС. Некоторые налогоплательщики могут не сдавать «пустую» отчетность вовсе.
Сдавать или не сдавать — вот в чем вопрос
Однако не все виды имущественных активов относятся к налогооблагаемым объектам. А это значит, что в расчет налогового платежа, как и в декларацию, следует включать не всю базу основных средств, которые числятся на балансе экономического субъекта, а только те, в отношении которых приняты соответствующие законодательные решения. Это означает, что законодатели определили закрытый перечень имущественных активов, являющихся налогооблагаемыми объектами по имущественному сбору.
Что делать, если налогооблагаемых объектов нет? В таком случае пустая декларация по налогу на имущество не заполняется и не сдается. Иными словами, если нет объекта, с которого необходимо начислить и уплатить налог, то сдавать отчет не нужно.
Возможна ситуация, когда на балансе числятся только движимые внеоборотные активы. Нужно ли сдавать декларацию по налогу на имущество за 2020 год, если нет недвижимого имущества? Движимые ОС для всех налогоплательщиков являются необлагаемыми. В такой ситуации нет необходимости заполнять и сдавать «нулевку» в ФНС.
Когда сдают отчет при нулевом налоге
Если в собственности экономического субъекта числятся льготируемые имущественные объекты, то сдать нулевой расчет по налогу на имущество придется.
Напомним, что перечень льгот, привилегий и освобождений определяется для налогоплательщиков не только на федеральном уровне. Помимо НК РФ, основные средства, исключаемые из налогооблагаемой базы на основании льгот, утверждены региональными властями. Уточнить, какие привилегии, освобождения и льготы действуют в вашем регионе, необходимо на официальном сайте ФНС.
Например, освобождается от налогообложения недвижимость коллегий адвокатов, адвокатских бюро и юридических консультаций в соответствии с п. 14 ст. 381 НК РФ. Ответ на вопрос, нужно ли сдавать нулевую декларацию по налогу на имущество за 2020 год юридическим лицам, в этой ситуации положительный. Но при расчете, указав код льготы, расчетная сумма платежа в бюджет получится равной нулю.
Как заполнить «нулевку»
Для подготовки нулевого отчета используйте унифицированный бланк КНД 1152026, утвержденный в приложении №1 к Приказу ФНС России от 14.08.2019 №СА-7-21/405@ в редакции Приказа от 09.12.2020 №КЧ-7-21/889@. Обратите внимание, что нулевая декларация по налогу на имущество — это не пустой отчет. В него необходимо внести определенные сведения в соответствии с Порядком заполнения.
Унифицированный бланк:
Общий порядок заполнения отчетности закреплен в том же приказе ФНС. Рассмотрим, как заполнить нулевую декларацию по налогу на имущество за 2020 год, на примере.
Титульный лист заполните по основным правилам.
Заполните ИНН и КПП в первую очередь. Затем укажите номер корректировки. Если вы отчитываетесь впервые в этом периоде, то проставьте 0. Затем — отчетный период (для года — 34), сам отчетный период — 2020. Код ИФНС, в который направляется отчет, и код налогоплательщика (в основном 214).
Теперь впишите полное наименование налогоплательщика, номер телефона, количество страниц и пропишите Ф.И.О. руководителя (либо иного лица, отчитывающегося по доверенности).
Если в отношении объекта ведется процедура ликвидации или реорганизации, то придется заполнить соответствующие поля отчета.
Переходим сразу во второй раздел декларации.
Прописываем код вида недвижимости и ОКТМО (по месту нахождения объектов налогообложения).
Теперь заполняем строки 020–140. Если в собственности налогоплательщика все основные средства отнесены к необлагаемым (льготируемым), то графы 3 и 4 будут заполнены идентично. То есть остаточная стоимость объектов равна остаточной стоимости льготируемого имущества.
Далее заполните расчет самого налогового платежа. Здесь заполните:
- строка 150 — среднегодовая стоимость имущества;
- строка 160 — код льготы, в нашем примере — 2010332 — недвижимость коллегий адвокатов, адвокатских бюро и юридических консультаций;
- строка 170 — среднегодовая стоимость льготируемых активов. В «нулевке» сумма строки 150 равна строке 170.
В итоге сумма налога равна нулю, так как налогооблагаемая база равна нулю.
В разделе 2.1 отразите информацию об объектах, сумма налога по которым исчислена по среднегодовой стоимости, а расчет отражен в разделе 2.
В разделе 3 проставьте прочерки, если отсутствует информация к заполнению.
С 2020 года отчетная форма дополнена разделом 4. Предназначен он для отражения справочной информации о среднегодовой стоимости движимого имущества. Указываемые данные не участвуют в расчете налога к уплате, но обязательны для заполнения.
Переходим в раздел 1.
Так как сумма к перечислению в бюджет к уплате отсутствует, в первом разделе заполняются только два значения: ОКТМО и КБК.
Отчет с расчетом имущественного налогового платежа представляется ежегодно. На вопрос, как заполнить нулевую декларацию по налогу на имущество за 1 квартал 2021, ответ один — никак. Представление квартальной отчетности не предусмотрено российским законодательством.
Правовые документы
Налоговая амнистия Зеленского: каким будет добровольное декларирование в Украине? Разбор — новости экономики Украины, курс валют
15 июня Верховная Рада приняла во втором чтении законопроект №5153 о добровольном одноразовом декларировании активов физических лиц.
Документ был разработан и подан в парламент по инициативе президента Владимира Зеленского. Согласно закону, добровольная декларация активов и имущества, с которых не были уплачены налоги, пройдет в период с 1 сентября 2021 по 1 сентября 2022 года.
Как будет работать украинская версия «налоговой амнистии»?
Детали – в разборе LIGA.net.
Что такое налоговая амнистия и зачем она нужнаАмнистия капиталов была одним из приоритетов налоговой политики, объявленной командой Зеленского после его избрания президентом.
Концепцию реформы презентовали в июне 2020 года. Тогда же украинские законодатели (Офис президента, финкомитет Рады, правительство) согласовали параметры с МВФ, договорившись провести кампанию по добровольному декларированию с июля 2021 года по июль 2022 года.
С этим возникли сложности: законопроект, в том числе из-за споров вокруг содержания, во втором чтении приняли только 15 июня. Поэтому начало сместили на сентябрь.
Суть налоговой амнистии простая: государство дает гражданам возможность «отбелить» активы и имущество, приобретенные без уплаты налогов. Мотивация простая: легализация обойдется дешевле, чем при обычном налогообложении.
Если в обычных условиях налог на доходы физических лиц (НДФЛ) составляет 18%, то сейчас государство предлагает уплатить от 2,5 до 9% от ранее незадекларированной суммы.
В теории, добровольное декларирование крайне выгодно для госбюджета. Ранее экс-глава Налоговой службы, действующий первый вице-премьер-министр Алексей Любченко оценивал потери от схем по уклонению от уплаты налогов, которые составляют $7,7 млрд в год.
Второй мотив для амнистии – внедрение в Украине международного плана противодействия уклонению от налогообложения (BEPS) и системы автоматического обмена налоговой информацией (FATCA) – это должно затруднить вывод денег в оффшоры и другие подобные схемы.
Кто и как подпадает под амнистию капиталов. Ключевые условияКак будет устроена декларационная кампания?
Закон предполагает, что желающие открыть свои активы внесут в госбюджет одноразовый обязательный платеж. Сумму нужно рассчитать самому – исходя из стоимости имущества (к декларации нужно приложить документ, подтверждающий цену/объемы актива).
Для разных типов активов действуют разные ставки:
2,5% – для средств, инвестированных в облигации внутреннего госзайма (по сути – кредиты физлиц правительству). Это касается только облигаций, приобретенных с 1 сентября 2021-го по 31 августа 2022-го. Есть опция разделения платежей на три года, но тогда ставка повышается до 3%.
5% – для валюты в украинских банках (при «рассрочке» ставка 6%).
9% – валюта в иностранных банках («рассрочка» – 11,5%).
Важное условие – декларированию подлежат активы стоимостью от 400 000 грн (порядка $15 000), ограничение в случае с недвижимостью: от 120 кв.м. для квартир и 240 кв.м – для домов.
Подать декларацию не могут:
— несовершеннолетние (на 1 сентября 2021), а также недееспособные (или лица с ограниченной дееспособностью), и граждане, над которыми установлена опека/попечительство;
— граждане, которые начиная с 1 января 2010 года, выполняют или выполняли в Украине публичные функции. В широком понимании – чиновники и госслужащие (в т.ч. силовики, депутаты, президенты). Более подробно это описано в законе «О предотвращении и противодействии легализации (отмыванию) доходов, полученных преступным путем».
— лица, которые находятся под санкциями.
Что с ней не так с закономВсе ли нормально с украинской версией налоговой амнистии?
«В законе в итоге оставили все «гадости», о которых предупреждало экспертное сообщество», – говорит член Экономической экспертной платформы Олег Гетман.
О чем речь? После принятия законопроекта в первом чтении аналитики ЭЭП выделяли следующие недостатки:
Амнистия не дает иммунитета. «Ничего не мешает СБУ или Нацполиции начать расследование, например по ст. 209 УК Украины (легализация и отмывание доходов, полученных преступным путем. — Ред.), – отмечает Гетман. – Это риски дополнительного преследования для тех, кто все же решит сейчас подать декларацию».
Риски утечки информации. Ко второму чтению депутаты прописали в законе, что данные декларантов предназначены только для налоговых органов. Но никакой ответственности за разглашение информации в документе нет. Это также создает риски того, что декларации послужат поводом для расследований со стороны правоохранителей.
Порог стоимости нужно увеличить. В ЭЭП предлагали повысить его с 400 000 до 2 млн грн. «Низкое пороговое значение приведет к тому, что под налоговый контроль будут подпадать граждане со средними доходами. Второе – большое количество декларантов и объектов декларирования (почти любая квартира в городе-миллионнике стоит более $15 000) налоговой будет физически сложно качественно обрабатывать такой поток», – отмечали эксперты.
— Дискриманационные ставки. Для всех активов должна применяться одинаковая базовая ставка – 5%, полагают в ЭЭП.
— Убрали «анонимное декларирование». В начальной редакции закона была норма, позволяющая декларировать имущество через адвокатов и других посредников. В финальной версии ее нет, отмечает Гетман.
— Базис для «налогового террора». Проект №5153 обязывает Кабмин в течение девяти месяцев внести законопроект об усилении контроля над полнотой налогообложения доходов физических лиц.
«Речь идет о тотальном контроле доходов и расходов граждан. Вся информация подобного рода будет стекаться в налоговую, которая по своему усмотрению сможет начинать расследования относительно любого гражданина, – отмечает Гетман из ЭЭП. – Это создает риски террора. Особенно, если учесть коррумпированность госсутрктур, в том числе налоговую, и наши безумные суды».
— Украинцам ничего не объяснили. Кабмину стоило бы к началу декларационного периода провести разъяснительную работу среди граждан, говорят в ЭЭП. Этого не было.
Шансы на успехСтоит ли ожидать массового участия украинцев в налоговой амнистии?
Инициатива не затронет обычных граждан, считает Гетман из ЭЭП.
«Легализация активов может заинтересовать скорее тех, кто хочет инвестировать в развитые страны, полагает исполнительный директор Центра экономической стратегии Глеб Вышлинский. Открывать счета и двигать капиталы анонимно в Европе очень сложно – нужно проходить финмониторинг, для этого необходима полная информация об активах и происхождении средств.
«Законопроект о контроле над полнотой налогообложения – это такой кнут, который должен мотивировать граждан участвовать в кампании уже сейчас, – говорит Вышлинский. – Но, во-первых, у тех, кто делает крупные покупки за счет «скрытых» денег, и сейчас есть риск попасть в поле зрения налоговой. Во-вторых, закон еще нужно принять: полагаю, многие депутаты сами не заинтересованы в таких изменениях».
Поможет ли добровольное декларирование госбюджету и экономике?
Амнистия способна вывести из тени активы на сумму около $20 млрд, прогнозировал глава финансово-налогового комитета Рады Даниил Гетманцев.
В МВФ скептически относятся к этой идее. В долгосрочной перспективе это приводит к сокращению налоговых сборов, заявлял глава представительства Фонда в Украине Йоста Люнгман.
«Налоговые амнистии часто вредят сбору налогов, – говорил Люнгман. – Они демотивируют граждан платить налоги, создавая надежду на еще одну амнистию в будущем».
Если Вы заметили орфографическую ошибку, выделите её мышью и нажмите Ctrl+Enter.
Ошибки в налоговой декларации обойдутся дорого
Налоговые декларации, содержащие арифметические ошибки, будут считаться недействительными, а срок на исправление ошибок сократится до пяти дней. Такие новации содержатся в подготовленном правительством законопроекте «О внесении изменений в части первую и вторую Налогового кодекса Российской Федерации (в части реализации отдельных положений основных направлений бюджетной, налоговой и таможенно-тарифной политики Российской Федерации)» (имеется у «Ведомостей»).
Налоговые юристы, ознакомившиеся с документом, шокированы этим предложением. «Суть камеральной проверки (проверка исполнения налогового законодательства удаленно. – «Ведомости») заключается именно в проверке правильности декларирования налоговой базы и уплачиваемого налога с целью установления, насколько налогоплательщик корректно применяет законодательство о налогах и сборах, – поясняет партнер КПМГ в России и СНГ Михаил Орлов. – Более того, пункт 3 статьи 88 НК РФ напрямую указывает, что в случае выявления ошибок налоговый орган направляет требование в течение пяти дней дать необходимые пояснения или внести соответствующие исправления в установленный срок, но не рассматривает этот факт как основание считать декларацию неподанной».
Сейчас налоговую декларацию подают как компании при уплате налогов, так и граждане при продаже, аренде и получении в дар недвижимости или авто, а также в случае выигрыша в лотерею или получения выгоды за рубежом. Ошибки при подаче деклараций, в том числе арифметические, случаются, но чаще всего они не намеренные, а совершаются из-за невнимательности или некомпетентности ответственного сотрудника, отмечает юрист-эксперт налогового дивизиона КГ «Сенат» Леся Болдырева. При этом намеренно искажать данные в декларации очень рискованно – это влечет налоговую, административную, а иногда и уголовную ответственность для предпринимателей, юридических лиц и их руководителей и потому случается крайне редко.
Мало того, распространены ситуации, когда у налогоплательщиков просто нет возможности правильно рассчитать налоговые платежи. «Например, у них могут отсутствовать необходимые документы, подтверждающие понесенные расходы или обоснованность вычетов. Также нередки случаи, когда затягивается выставление счета-фактуры со стороны контрагента, – приводит примеры появления ошибок в декларациях партнер налоговой практики CMS Russia Гайк Сафарян. – В таких ситуациях налогоплательщик, чтобы избежать штрафов за непредоставление налоговой декларации, может подать нулевую декларацию или декларацию с промежуточными данными, впоследствии отразив корректные цифры в уточненной налоговой декларации».
Сейчас такие действия не являются нарушением налогового законодательства, отмечает юрист, но позволяют налогоплательщику действовать в соответствии с собственной выгодой. «Попытки пресечь такое поведение налогоплательщиков являются необоснованными, при этом важно учитывать умысел и вину налогоплательщика при назначении штрафных санкций за подобные нарушения», – указывает Сафарян.
Подготовленные правительством поправки ставят налогоплательщиков в заведомо уязвимое положение, констатируют специалисты. «Во-первых, моментально налогоплательщик рассматривается в качестве нарушителя норм законодательства и может быть привлечен к ответственности по налоговым правонарушениям по статье 119 НК РФ за непредставление налоговой декларации, – обращает внимание Михаил Орлов. – Во-вторых, должностные лица налогоплательщика могут быть субъектами уголовного преследования, поскольку «неподача декларации» является одним из признаков совершения налогового преступления».
Из законопроекта остается неясным, чем вызвано такое ужесточение. «Предоставление в налоговый орган налоговых деклараций с арифметическими ошибками – это, скорее, исключение, чем правило, так что большинство налогоплательщиков принятие данных поправок не затронет», – полагает Болдырева. Поэтому, возможно, чиновники считают, что смогут пополнить бюджет без ухудшения условий для большинства налогоплательщиков. Однако некоторые эксперты опасаются, что ФНС будет использовать это ужесточение в качестве дополнительного инструмента давления на налогоплательщиков.
«Принятие таких поправок больше похоже на попытку давления на бизнес, которому так или иначе придется расплачиваться за меры поддержки, предоставленные в период пандемии, – полагает Сафарян. – Об этом свидетельствуют как радикальность предлагаемых изменений, так и необоснованно маленький срок для устранения ошибок: из-за объема финансовых данных крупным организациям может не хватить времени для простого выявления ошибки, не говоря уже о подготовке нового проекта декларации».
В итоге банальная невнимательность при заполнении декларации может обойтись очень дорого. «Если налогоплательщик не представит исправленную декларацию и она будет считаться неподанной, то ему грозит штраф за неподачу налоговой декларации, – поясняет юрист Forward Legal Федор Закабуня. – Его размер составляет 5% от неуплаченной в срок суммы налога».
Также вероятно, что целью новой поправки является облегчение налогового администрирования. «Согласно действующей редакции Налогового кодекса налогоплательщик имеет право представить уточненную налоговую декларацию, в том числе когда он обнаружил ошибки или неполноту сведений в первичной декларации. Представленные изменения в Налоговый кодекс сократят случаи подачи уточненных налоговых деклараций налогоплательщиками и, как следствие, позволят снизить количество камеральных проверок», – предполагает Закабуня.
Рада приняла закон о налоговой амнистии. Что это значит? | Громадское телевидение
Голосование состоялось 15 июня.
Закон поддержали 243 народных депутата. Также ранее депутаты приняли за основу в первом чтении законопроект №5155, который вносит необходимые для налоговой амнистии изменения в Налоговый кодекс.
Изменения предусматривают, что с 1 сентября 2021-го по 1 сентября 2022 года физические лица смогут провести однократное (специальное) добровольное декларирование своих активов, за которые раньше не уплатили налоги.
Эти задекларированные активы обложат сбором — одноразовым обязательным платежом, размер которого самостоятельно рассчитывается декларантом из стоимости принадлежащих ему активов с учетом ставок такого сбора.
Воспользоваться добровольным декларированием могут физические лица-резиденты, в том числе самозанятые лица, а также физические лица, не являющиеся резидентами Украины, но которые были резидентами на момент получения объектов декларирования или на момент начисления (получения) доходов, за счет которых приобретены объекты декларирования.
А вот лица, которые могли, но не воспользовались амнистией, будут считаться сообщившими контролирующему органу об отсутствии в собственности активов, за которые не уплачены налоги.
Не все смогут получить амнистию
Задекларировать так имущество, согласно закону, не смогут:
- несовершеннолетние или недееспособные лица, находящиеся на полном содержании;
- лица, которые в любой период, начиная с 1 января 2010 года, выполняют или выполняли в Украине публичные функции, то есть топ-чиновники и народные депутаты;
- лица, против которых Украина ввела санкции.
Какой размер сбора?
Для различных активов он отличается. Общая ставка составляет 5%. Такой ее размер предусмотрен по валютным ценностям, размещенным на счетах в банках Украины. В качестве альтернативы налогоплательщик может выбрать ставку 6% с уплатой налогового обязательства тремя равными частями ежегодно.
9% сбора предусмотрены по валютным ценностям, размещенным на счетах в иностранных банках или хранящимся в иностранных финансовых учреждениях. В качестве альтернативы налогоплательщик может выбрать ставку 11,5% с уплатой налогового обязательства тремя равными частями ежегодно.
Ставка 2,5% применяется в отношении номинальной стоимости государственных облигаций Украины со сроком обращения более года без права досрочного погашения, приобретенных декларантом в период с 1 сентября 2021-го по 31 августа 2022 года для представления добровольной декларации. В качестве альтернативы налогоплательщик может выбрать ставку 3% с уплатой налогового обязательства тремя равными частями ежегодно.
«Одна из целей этой амнистии — возвращение средств, которые резиденты вывели за границу и которые там остаются у наших резидентов», — говорит о законе и размере ставки глава комитета Рады по вопросам финансов, налоговой и таможенной политики Даниил Гетманцев.
За и против
«Одна из целей этой амнистии — возвращение средств, которые резиденты вывели за границу и которые там остаются у наших резидентов», — сказал с трибуны Рады о законе и размере ставки глава комитета Рады по вопросам финансов, налоговой и таможенной политики Даниил Гетманцев.
Он утверждает, что документ должен дать возможность украинцам, которые 30 лет уклонялись от налогообложения при получении доходов, начать жизнь с чистого листа, а также привлечь средства в экономику государства.
«Мы понимаем, что средства, которые хранят дома украинцы, ежедневно теряют стоимость. А если они инвестированы в бизнес, находятся на депозите в банке и т.д., тогда они приносят дополнительный доход владельцам. Итак, деньги должны работать на владельца и на экономику Украины», — сказал он.
Вместе с тем не все видят только позитив в налоговой амнистии. Инвестиционный банкир Сергей Фурса говорит, что как МВФ, так и Всемирный банк не приводят примеров в мире, где такая амнистия помогла.
Фурса отмечает, что «прощение грехов один раз стимулирует и дальше грешить. Зачем платить налоги по 18%, если можно подождать и заплатить потом под 5%». Банкир отмечает также о коррупционных рисках.
«Покажут всё родственники депутатов, которые внезапно заработали на биткоинах по миллиону долларов; и не надо больше придумывать, что ты успешно выигрываешь в лотерею», — отмечает Фурса.
Нулевая декларация по НДС
Часто налогоплательщики стараются трактовать любые недомолвки законодательства в свою пользу. На этот раз спор возник по простому на первый взгляд вопросу – сдача «пустых» деклараций по НДС. Проблему решил Высший Арбитражный Суд. Камнем преткновения стала инструкция по заполнению декларации по налогу на добавленную стоимость и декларации по налогу на добавленную стоимость по операциям, облагаемым по налоговой ставке 0 процентов, утвержденная приказом МНС от 21 января 2002 г. № БГ-3-03/25 (далее – Инструкция). А именно пункт 3 раздела 1 Инструкции без учета изменений от 9 февраля 2004 года. Обязанность налогоплательщиков сдавать декларации по НДС при отсутствии налоговой базы поквартально показалась одному предпринимателю чрезмерной. Именно с таким заявлением он и обратился в Высший Арбитражный Суд. Мало вам письмаЕсли оглянуться в недалекое прошлое, мы увидим, что Высший Арбитражный Суд уже высказывался по этому вопросу (см. письмо Президиума ВАС от 17 марта 2003 г. № 71). Служители Фемиды сочли, что обязанность налогоплательщиков представлять декларации по тому или иному виду налога обусловлена не наличием суммы к уплате, а положениями закона об этом виде налога, определяющем его плательщиков. Отметим, что речь шла о НДС и налоге на прибыль. Арбитры резюмировали, что плательщики этих налогов обязаны представлять декларации в установленные законом сроки независимо от их суммы по итогам налоговых периодов. Однако письма столь уважаемого ведомства оказалось недостаточно для прекращения споров по этому вопросу. Вот вам решениеПозиция предпринимателяПо мнению предпринимателя, введенный пункт Инструкции не отвечает статьям 19, 23, 80, 174 Налогового кодекса. В соответствии с ними при отсутствии налоговой базы по НДС должна отсутствовать и обязанность представлять декларацию, поскольку налог платить не надо. Сдавать «пустые» декларации нужно, только если на это есть прямые указания в законодательстве. Однако глава 21 Налогового кодекса таких требований не содержит. Поэтому оспариваемая норма Инструкции возлагает на предпринимателя не установленную законом обязанность, которая ущемляет его права и интересы. Предприниматель полагает, что у него при отсутствии налоговой базы отсутствует и обязанность уплаты НДС, а потому исходя из статьи 19 Налогового кодекса он не является плательщиком данного налога. Мнение налоговиковНалоговики не усмотрели в оспариваемой норме Инструкции противоречий законодательству. В соответствии с пунктом 1 статьи 80 Налогового кодекса декларация представляется каждым налогоплательщиком по каждому налогу, подлежащему уплате, если иное не предусмотрено законодательством. А статья 143 Налогового кодекса признает налогоплательщиками всех лиц вне зависимости от каких-либо условий, в том числе и от наличия налоговой базы. Вердикт судейЧтобы расставить все точки над «i», судьи для начала указали, что данная Инструкция принята на основании пункта 3 статьи 31 и пункта 7 статьи 80 Налогового кодекса, а также согласована с Минфином и зарегистрирована в Минюсте. Далее они привели следующие аргументы. С одной стороны, декларация – это письменное заявление налогоплательщика о полученных доходах и их источниках, произведенных расходах, налоговых льготах, сумме налога и т. д. (ст. 80 НК). А с другой – форма отчетности, на основании которой налоговики контролируют правильность исчисления и уплаты налога (ст. 82, 88 НК). С приведенным выше толкованием предпринимателем статьи 19 Налогового кодекса судьи также не согласились. В этой статье дано общее определение налогоплательщиков. К ним относятся граждане и фирмы, которые обязаны платить налоги и сборы. По мнению судей речь здесь идет лишь о потенциально возможной обязанности фирм и граждан платить налоги, но ни в коей мере не о конкретной сумме налога. Кроме того, статьей 23 Налогового кодекса установлено, что налогоплательщикам нужно представлять декларации по тем налогам, которые они обязаны платить. Этот правило действует и для предпринимателей (ст. 143 НК). Согласно пункту 1 статьи 80 Налогового кодекса, налоговая декларация представляется каждым плательщиком по каждому налогу, если иное не предусмотрено законодательством. При этом обязанность представлять декларацию по тому или иному налогу не зависит от суммы этого налога к уплате. Статьи, на которые ссылается предприниматель, а также глава 21 Налогового кодекса не устанавливают каких-либо иных правил представления декларации по НДС. Отсутствие налоговой базы не освобождает его от обязанности сдавать этот отчет. В связи с этим судьи постановили, что оспариваемая норма Инструкции не противоречит Налоговому кодексу и не нарушает права и интересы предпринимателя. Поэтому независимо от налоговой базы нужно представлять декларацию по НДС как обычную, так и по ставке 0 процентов. ПослесловиеОтметим, что это дело рассматривалось без учета последних изменений, внесенных в Инструкцию приказом МНС от 9 февраля 2004 г. № БГ-3-03/89. Отныне чиновники четко прописали обязанность налогоплательщиков по представлению налоговых деклараций по НДС. В соответствии с изменениями даже при отсутствии операций, облагаемых этим налогом, и операций, вообще освобожденных от него, фирмы и предприниматели должны сдавать декларацию по НДС в свою налоговую поквартально. Налоговики даже любезно указали, какие листы декларации нужно сдавать в этом случае: можно ограничиться титульным листом и разделами 1.1 и 2.1 декларации. Причем при заполнении строк и граф указанных разделов ставятся прочерки.
Е.Е. Амарина, эксперт АГ «РАДА»
Сдача нулевой отчетности для ООО
Почти 15 лет работаем с Экстерном, система полностью устраивает. Она обновляется сразу после изменений в законодательстве. Очень нравится шифрование отчетности на ключ администратора, опция отличная особенно если учесть, что отчеты сдает большой круг лиц. Радует и возможность выгрузки списков отправленных отчетов в Excel, Таблица отчетности тоже достаточно удобная.
Александра Свиридова, заместитель начальника управления налогообложения
Больше 10 лет работаем с этой системой. Экстерн значительно упрощает формирование отчетов по прибыли за подразделения, это делается всего одним действием. Также регулярно используем Коннектор, он позволяет отправить большое количество документов при ответе на требования.
Елена Зарубей, заместитель главного бухгалтера сети гипермаркетов «Глобус»
С 2007 года пользуемся Экстерном, это всесторонняя и очень комфортная система. Обновляется своевременно, совершенствуется постоянно. Мы пользуемся НДС+, через нее удобно получать информацию по контрагентам. В 2015 году попробовали продукт компании Реформатор, он преобразует данные книг продаж, покупок и журналов. В целом претензий к системе не возникло, техподдержка оперативно решала все вопросы.
Елена Михайлина, начальник отдела администрирования бухгалтерской и налоговой отчетности
Пользуемся Экстерном уже несколько лет и пока только положительное впечатление. Тариф у нас Максимальный, возможностей предоставляет много. Отчеты отправляются быстро, в случае форс-мажора техподдержка всегда готова прийти на помощь. Сервис организован качественно, претензий пока не возникало.
Агафонова Лариса, бухгалтер
Экстерн отличная система, мы уже испытали все возможности, впечатление положительное. Шаблоны и формы обновляются сразу же с изменением законодательства, что исключает любые ошибки при сдаче отчетности. В службу технической поддержки можно обратиться как в будни, так и в выходные, сервис полностью ориентирован на потребности клиентов.
Пашутин Владимир, специалист отдела администрирования бухгалтерской отчетности
Мы довольны системой Экстерн, с тех пор ка начали ей пользоваться, сдавать отчетность стало гораздо быстрее и проще. Удобно что в ней есть подсказки и видеоинструкции, одни очень помогали нашим сотрудникам первое время. Документация надежно защищена сервером, так что никаких рисков нет.
Дмитриев Вадим, начальник отдела администрирования
С тех пор как начали работать в Экстерне, процесс сдачи отчетности стал в разы проще. Теперь все делается за короткий промежуток времени, отчеты уходят быстро, сбоев за все годы использования не наблюдалось.
Романова Виктория, бухгалтер
Экстерн замечательная система, все ее преимущества сложно описать. Она полностью ориентирована на нужды организации, интерфейс продуман до мелочей, все интуитивно понятно. Например, отчетность для ФНС создается сразу по всем филиалам при помощи цифровой подписи.
Одинцова Маргарита, начальник отдела администрирования
Работать в Экстерне удобно по ряду причин. Во-первых, система значительно повышает скорость сборки и отправки отчетов. Во-вторых, в ней проходят все обновления законодательства, шаблоны меняются автоматически. Ну и в-третьих, нельзя не отметить работу техподдержки. Там готовы подсказать по любому вопросу даже в выходные дни.
Николаев Виталий, специалист отдела администрирования
Используем Экстерн больше 5 лет. Система отличная, благодаря ей отчеты во все контрольные и надзорные службы сдаются без ошибок. Отчетность интегрируется из всех бухгалтерских версий, при этом не требуется выходить из программ.
Васильева Алла, главный бухгалтер
На мой взгляд Экстерн упростит работу любой организации, особенно такой крупной как наша. Доступ к архиву предоставляется в любое время, отправить отчет можно с любого компьютера. О принятии или отклонении отчетности всегда приходят уведомления. Оно удовольствие работать в такой системе.
Шарапова Марина, бухгалтер
Только хороший отзыв могу оставить об Экстерне. С этой системой мы уже давно работаем, преимуществ у нее масса. У нас сократились временные затраты на документооборот, что позволило оптимизировать количество занятых в этой обрасти сотрудников. К функционалу системы не придраться, все продумано грамотно.
Архипова Светлана, бухгалтер
Сдавать отчетность в Экстерне намного быстрее и проще, что экономит очень много времени и сил. На нашем тарифе предоставляется много возможностей, так что в целом мы довольны этой системой. С отправкой отчетов проблем не возникает, уведомления о статусе отправленных данных приходят очень быстро.
Епифанова Людмила, специалист по бухучету и налогообложению
В последний день отчетности сломался компьютер, думали что все пропало. Обратились в техническую поддержку, нам помогли на новом компьютере установить контур.экстерн, подключить подпись и проконсультировали в сдаче отчетности попутно отвечая на все наши вопросы. Очень выручили.
Олег Владимирович, начальник отдела продаж
Пользуемся Экстерном с 2011 года, за это время не было утеряно не одного отчета. Все документы и предыдущие отчеты всегда под рукой, могу в любое время выгрузить интересующий меня документ.
Максим Генадьевич, директор филиало ООО «Рога и Копыта»
При первой сдаче отчета очень выручила предварительная проверка отчета, показав где у нас ошибки. Сейчас подключаем уже 3 фирму. Все нравиться.
Ирина Александровна, бухгалтер
Нулевая безопасность | Kotlin
Типы, допускающие значение NULL, и типы, отличные от NULL
Система типов Kotlin направлена на устранение опасности нулевых ссылок, также известной как ошибка на миллиард долларов.
Одна из наиболее распространенных ошибок во многих языках программирования, включая Java, заключается в том, что доступ к элементу нулевой ссылки приведет к исключению нулевой ссылки. В Java это будет эквивалент NullPointerException
или, для краткости, NPE .
Единственные возможные причины NPE в Kotlin:
Явный вызов
throw NullPointerException ()
.Использование
!!
, описанный ниже.- Несогласованность данных в отношении инициализации, например, когда:
- Взаимодействие с Java:
Попытки доступа к члену
нулевой ссылки
типа платформы;Проблемы с возможностью обнуления универсальных типов, используемых для взаимодействия с Java. Например, фрагмент кода Java может добавить
null
в KotlinMutableList
, поэтому для работы с ним потребуетсяMutableList
.Другие проблемы, вызванные внешним кодом Java.
В Kotlin система типов различает ссылки, которые могут содержать NULL
(ссылки, допускающие значение NULL), и ссылки, которые не могут (ссылки, отличные от NULL). Например, обычная переменная типа String
не может содержать null
:
fun main () { // sampleStart var a: String = «abc» // Обычная инициализация по умолчанию означает ненулевое значение a = null // ошибка компиляции // sampleEnd }
Чтобы разрешить значения NULL, вы можете объявить переменную как строку, допускающую значение NULL, написав String?
:
fun main () { // sampleStart var b: String? = «abc» // можно установить в ноль b = null // хорошо печать (б) // sampleEnd }
Теперь, если вы вызываете метод или получаете доступ к свойству на a
, это гарантированно не вызовет NPE, поэтому вы можете смело сказать:
val l = a.длина
Но если вы хотите получить доступ к тому же свойству на b
, это будет небезопасно, и компилятор сообщает об ошибке:
val l = b.length // error: переменная ‘b’ может иметь значение null
Но вам все равно нужен доступ к этому ресурсу, верно? Есть несколько способов сделать это.
Проверка на null в условиях
Во-первых, вы можете явно проверить, является ли b
null
, и обработать две опции отдельно:
val l = if (b! = Null) b.длина еще -1
Компилятор отслеживает информацию о выполненной вами проверке и разрешает вызов длиной
внутри , если
. Также поддерживаются более сложные условия:
fun main () { // sampleStart val b: Строка? = «Котлин» if (b! = null && b.length> 0) { print («Строка длины $ {b.length}») } еще { print («Пустая строка») } // sampleEnd }
Обратите внимание, что это работает только там, где b
является неизменяемым (это означает, что это локальная переменная, которая не изменяется между проверкой и ее использованием, или это член val
, который имеет поле поддержки и не может быть переопределен), потому что в противном случае может случиться так, что b
изменится на null
после проверки.
Безопасные вызовы
Второй вариант доступа к свойству переменной, допускающей значение NULL, — это использование оператора безопасного вызова ?.
:
fun main () { // sampleStart val a = «Котлин» val b: Строка? = ноль println (b? .length) println (a? .length) // Ненужный безопасный вызов // sampleEnd }
Это возвращает b.length
, если b
не является нулевым, и null
в противном случае. Тип этого выражения — Int?
.
Безопасные вызовы полезны в цепочках.Например, Боб — сотрудник, который может быть назначен в отдел (или нет). Этот отдел, в свою очередь, может иметь другого сотрудника в качестве главы отдела. Чтобы узнать имя начальника отдела Боба (если он есть), напишите следующее:
bob? .Department? .Head? .Name
Такая цепочка возвращает null
, если любое из свойств в ней равно null
.
Чтобы выполнить определенную операцию только для ненулевых значений, вы можете использовать оператор безопасного вызова вместе с let
:
fun main () {
// sampleStart
val listWithNulls: List
Безопасный вызов также можно разместить слева от задания. Затем, если один из получателей в цепочке безопасных вызовов null
, присвоение пропускается и выражение справа вообще не оценивается:
// Если либо `person`, либо` person.department` равно null , функция не вызывается: человек? .department? .head = managerPool.getManager ()
Оператор Элвиса
Если у вас есть ссылка, допускающая значение NULL, b
, вы можете сказать «если b
не равно null
, используйте его, в противном случае используйте какое-либо ненулевое значение»:
val l: Int = если (b! = null) b.длина еще -1
Вместо того, чтобы писать полное выражение if
, вы также можете выразить это с помощью оператора Элвиса ?:
:
val l = b? .Length?: -1
Если выражение слева от ?:
не равно null
, оператор Элвиса возвращает его, в противном случае он возвращает выражение справа. Обратите внимание, что выражение в правой части оценивается, только если в левой части null
.
Поскольку throw
и return
являются выражениями в Kotlin, их также можно использовать в правой части оператора Элвиса.Это может быть удобно, например, при проверке аргументов функции:
fun foo (node: Node): String? { val parent = node.getParent ()?: вернуть null val name = node.getName ()?: throw IllegalArgumentException («ожидаемое имя») // … }
The !! operator
Третий вариант для любителей NPE: оператор утверждения ненулевого значения ( !!
) преобразует любое значение в ненулевой тип и выдает исключение, если значение равно null
. Можно написать б !!
, и это вернет ненулевое значение b
(например, String
в нашем примере) или выдаст NPE, если b
равно null
:
val l = b !!.длина
Таким образом, если вам нужен NPE, вы можете его получить, но вы должны попросить его явно, и он не появится неожиданно.
Безопасное приведение
Регулярное приведение может привести к ClassCastException
, если объект не относится к целевому типу. Другой вариант — использовать безопасные преобразования, которые возвращают null
, если попытка не удалась:
val aInt: Int? = а как? Int
Коллекции обнуляемого типа
Если у вас есть коллекция элементов обнуляемого типа и вы хотите отфильтровать ненулевые элементы, вы можете сделать это с помощью filterNotNull
:
val nullableList: List
Последнее изменение: 08 июля 2021 г.
строка — Ардуино Ссылка
Описание
Текстовые строки могут быть представлены двумя способами. вы можете использовать тип данных String, который является частью ядра начиная с версии 0019, или вы можете создать строку из массива типа char и завершить ее нулем. На этой странице описан последний метод. Дополнительные сведения об объекте String, который дает вам больше функциональных возможностей за счет большего объема памяти, см. На странице объекта String.
Синтаксис
Все следующие допустимые объявления для строк.
char Str1 [15];
char Str2 [8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3 [8] = {'а', 'r', 'd', 'u', 'i', 'n', 'o', '\ 0'};
char Str4 [] = "arduino";
char Str5 [8] = "arduino";
char Str6 [15] = "arduino";
Возможности объявления строк
Объявить массив символов без его инициализации, как в Str1
Объявите массив символов (с одним дополнительным символом), и компилятор добавит требуемый нулевой символ, как в Str2
Явно добавьте нулевой символ, Str3
Инициализировать строковую константу в кавычках; компилятор изменит размер массива, чтобы он соответствовал строковой константе и завершающему нулевому символу, Str4
Инициализировать массив с явным размером и строковой константой, Str5
Инициализировать массив, оставив дополнительное место для строки большего размера, Str6
Обычно строки заканчиваются нулевым символом (код ASCII 0).Это позволяет функциям (например, Serial.print ()
) определять, где находится конец строки. В противном случае они продолжили бы чтение последующих байтов памяти, которые на самом деле не являются частью строки.
Это означает, что в вашей строке должно быть место для одного символа больше, чем текст, который вы хотите, чтобы он содержал. Вот почему Str2 и Str5 должны состоять из восьми символов, хотя «arduino» всего семь — последняя позиция автоматически заполняется нулевым символом. Str4 автоматически будет иметь размер до восьми символов, один для дополнительного нуля.В Str3 мы сами явно включили нулевой символ (записанный ‘\ 0’).
Обратите внимание, что можно иметь строку без последнего нулевого символа (например, если вы указали длину Str2 как семь вместо восьми). Это нарушит работу большинства функций, использующих строки, поэтому не следует делать это намеренно. Однако если вы заметили, что что-то ведет себя странно (работает с символами, не входящими в строку), это может быть проблемой.
Одинарные кавычки или двойные кавычки?
Строки всегда определяются в двойных кавычках («Abc»), а символы всегда определяются в одинарных кавычках («A»).
Вы можете обернуть длинные строки следующим образом:
char myString [] = "Это первая строка"
"это вторая строка"
"и так далее";
При работе с большими объемами текста, например в проекте с ЖК-дисплеем, часто бывает удобно настроить массив строк. Поскольку сами строки являются массивами, это фактически пример двумерного массива.
В приведенном ниже коде звездочка после типа данных char
«char *» указывает, что это массив «указателей».Все имена массивов на самом деле являются указателями, поэтому это необходимо для создания массива массивов. Указатели — одна из наиболее сложных частей C ++ для понимания новичками, но не обязательно разбираться в указателях в деталях, чтобы эффективно использовать их здесь.
Проведение рандомизационного заключения — behavior_ri • ri2
Эта функция упрощает выполнение трех видов рандомизационного вывода.
behavior_ri ( формула = NULL, model_1 = NULL, модель_2 = NULL, test_function = NULL, assignment = "Z", результат = NULL, объявление = NULL, резкая_гипотеза = 0, studentize = ЛОЖЬ, IPW = ИСТИНА, IPW_weights = NULL, sampling_weights = NULL, permutation_matrix = NULL, данные, sims = 1000, progress_bar = ЛОЖЬ, p = "двусторонний" )
Аргументы
формула | объект формулы класса, как в |
---|---|
модель_1 | объект формулы класса, как в |
модель_2 | объект формулы класса, как в |
test_function | Функция, которая принимает данные и возвращает скалярную тестовую статистику. |
переуступка | строка символов, указывающая, какая переменная назначается случайным образом. По умолчанию «Z». |
исход | строка символов, указывающая, какая переменная является выходной переменной.По умолчанию NULL. |
декларация | Объявление случайного назначения, созданное |
резкая_гипотеза | числовой скаляр или числовой вектор длины k — 1, где k — количество условий лечения. В исследовании с двумя группами это число является * гипотетической * разницей между леченными и нелеченными потенциальными исходами для каждого блока.В испытании с несколькими группами каждое число в векторе представляет собой предполагаемую разницу в потенциальных результатах между исходным состоянием и каждым последующим условием лечения. |
студента | логический, по умолчанию FALSE. Должна ли статистика теста быть t-ratio, а не оценкой ATE? T-отношения будут рассчитаны с использованием устойчивых стандартных ошибок HC2 или их кластерного эквивалента. КЛАСТЕРИЗАЦИЯ ЕЩЕ НЕ ОСУЩЕСТВЛЯЕТСЯ. |
IPW | логический, по умолчанию ИСТИНА.Следует ли рассчитывать обратные веса вероятности? |
IPW_weights | строка символов, указывающая, какая переменная является существующим обратным вектором весов вероятности. Обычно не требуется, поскольку веса IPW будут включены автоматически, если IPW = TRUE. По умолчанию NULL. |
sampling_weights | строка символов, указывающая, какая переменная является вектором весов выборки. Необязательно, по умолчанию NULL.ЕЩЕ НЕ РЕАЛИЗОВАНО |
матрица_перестановок | Необязательная матрица случайных назначений, обычно создается с помощью |
данные | Кадр данных. |
симс | количество симуляций. По умолчанию 1000. |
progress_bar | логический, по умолчанию FALSE.Должен ли отображаться индикатор выполнения в консоли? |
п | Следует указывать «двусторонние», «верхние» или «нижние» значения p? По умолчанию «двусторонний». Для двусторонних p-значений определяется, является ли смоделированное значение таким же большим или большим, чем наблюдаемое значение, в зависимости от расстояния до резкого нуля. |
Детали
1. Проведите проверку гипотез под точным нулем, когда статистикой теста является оценка среднего эффекта лечения с поправкой на разницу средних или ковариантной переменной.2. Проведите тесты гипотез в стиле «ANOVA», где f-статистика из двух вложенных моделей является тестовой статистикой. Эта процедура особенно полезна при тестировании условий взаимодействия при отсутствии постоянных эффектов. 3. Произвольная (скалярная) статистика теста
Примеры
# Данные из Гербера и Грина Таблица 2.2 # Вывод рандомизации для среднего эффекта лечения таблица_2.2 <- data.frame (d = c (1, 0, 0, 0, 0, 0, 1), у = с (15, 15, 20, 20, 10, 15, 30)) ## Объявить процедуру рандомизации декларация <- declare_ra (N = 7, m = 2) ## Провести рандомизационный вывод out <- behavior_ri (y ~ d, декларация = декларация, присваивание = "д", резкая_гипотеза = 0, данные = таблица_2.2) резюме (выход)#> оценка срока two_tailed_p_value #> 1 d 6.5 0.3809524
#> срок оценка p.value #> 1 d 6.5 0.3809524
# Использование пользовательской матрицы перестановок матрица_перестановок <- матрица (c (0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0), ncol = 7) behavior_ri (y ~ d, assignment = "d", data = table_2.2, permutation_matrix = матрица_перестановок)#> оценка срока two_tailed_p_value #> 1 d 6.5 0.2857143
# Вывод рандомизации для взаимодействия N <- 100 объявление <- randomizr :: declare_ra (N = N, m = 50) Z <- randomizr :: behavior_ra (объявление) X <- rnorm (N) Y <- .9 * X + .2 * Z + 1 * X * Z + rnorm (N) dat <- data.frame (Y, X, Z) ate_obs <- coef (lm (Y ~ Z, data = dat)) [2] из <- поведение_ri ( модель_1 = Y ~ Z + X, модель_2 = Y ~ Z + X + Z * X, декларация = декларация, assignment = "Z", Sharp_hypothesis = ate_obs, data = dat, sims = 100 ) сюжет (выход)#> оценка срока two_tailed_p_value #> 1 F-статистика 15.22457 0
#> оценка срока two_tailed_p_value #> 1 F-статистика 15.22457 0
#> оценка срока upper_p_value #> 1 F-статистика 15.22457 0
#> оценка срока lower_p_value #> 1 F-статистика 15.22457 1
#> срок оценка p.value #> 1 F-статистика 15.22457 0
# Вывод рандомизации для произвольной тестовой статистики ## В этом примере мы проводим проверку рандомизации (в данном случае проверку баланса).N <- 100 объявление <- randomizr :: declare_ra (N = N, m = 50) Z <- randomizr :: behavior_ra (объявление) X <- rnorm (N) Y <- .9 * X + .2 * Z + rnorm (N) dat <- data.frame (Y, X, Z) balance_fun <- function (data) { f_stat <- summary (lm (Z ~ X, data = data)) $ f [1] имена (f_stat) <- NULL возврат (f_stat) } ## функция подтверждения работает должным образом balance_fun (дата)#> [1] 0,05245928
## провести рандомизацию из <- поведение_ri ( test_function = balance_fun, декларация = декларация, assignment = "Z", резкая_гипотеза = 0, data = dat, sims = 100 ) сюжет (выход)#> оценка срока two_tailed_p_value #> 1 Пользовательская статистика теста 0.05245928 0,9
#> срок оценка p.value #> 1 Статистика пользовательского теста 0,05245928 0,9
Nullable Types и Null Safety в Котлине
Я называю это своей ошибкой на миллиард долларов. Это было изобретение нулевой ссылки в 1965 году. В то время я проектировал первую всеобъемлющую систему типов для ссылок на объектно-ориентированном языке (АЛГОЛ W). Моя цель состояла в том, чтобы гарантировать, что любое использование ссылок должно быть абсолютно безопасным, с автоматической проверкой компилятором.Но я не мог устоять перед соблазном вставить пустую ссылку просто потому, что это было так легко реализовать. Это привело к бесчисленным ошибкам, уязвимостям и системным сбоям, которые, вероятно, причинили боль и ущерб на миллиард долларов за последние сорок лет. (Выдержка из Википедии)
— Сэр Тони Хоар, изобретатель нулевой ссылки
Если вы программировали на Java или другом языке, который имеет концепцию нулевой ссылки, то вы, должно быть, слышали о NullPointerException.
в ваших программах.
NullPointerExceptions — это исключения времени выполнения, которые генерируются программой во время выполнения, вызывая сбой приложения и сбои системы.
Было бы неплохо, если бы мы могли обнаруживать возможные ошибки исключения NullPointerException
во время самой компиляции и защищаться от них?
Ну, иди в Котлин!
Типы, допускающие обнуление, и типы, допускающие обнуление, в Kotlin
Kotlin поддерживает возможность обнуления как часть своей системы типов. Это означает, что у вас есть возможность объявить, может ли переменная содержать нулевое значение или нет.
Поддерживая допустимость значений NULL в системе типов, компилятор может обнаруживать возможные ошибки NullPointerException во время компиляции и уменьшать вероятность их возникновения во время выполнения.
Давайте разберемся, как это работает!
По умолчанию все переменные в Kotlin не допускают значения NULL. Итак, если вы попытаетесь присвоить нулевое значение обычной переменной, компилятор выдаст ошибку —
var приветствие: String = "Hello, World"
welcome = null // Ошибка компиляции
Чтобы разрешить нулевые значения, вы должны объявить переменную как допускающую значение NULL, добавив вопросительный знак в ее объявление типа —
var nullableGreeting: String? = "Привет, мир"
nullableGreeting = null // Работает
Мы знаем, что NullPointerException
возникает, когда мы пытаемся вызвать метод или получить доступ к свойству переменной, равной null
.Kotlin запрещает вызовы методов и доступ к свойствам для переменных, допускающих значение NULL, и тем самым предотвращает множество возможных исключений NullPointerExceptions.
Например, следующий метод доступа работает, потому что Kotlin знает, что переменная welcome
никогда не может быть нулевой —
val len = welcome.length
val upper = welcome.toUpperCase ()
Но тот же вызов метода не будет работать с переменной nullableGreeting
—
val len = nullableGreeting.length // Ошибка компиляции
val upper = nullableGreeting.toUpperCase () // Ошибка компиляции
Поскольку Kotlin заранее знает, какая переменная может иметь значение null, а какая — нет, он может обнаруживать и запрещать вызовы, которые могут привести к NullPointerException
во время самой компиляции.
Работа с типами, допускающими значение NULL
Хорошо, приятно, что Kotlin запрещает вызовы методов и доступ к свойствам переменных, допускающих значение NULL, для защиты от ошибок NullPointerException. Но нам все равно нужно это делать?
Что ж, может безопасно сделать это в Котлине несколькими способами.
1. Добавление проверки NULL
Самый простой способ работы с переменными, допускающими значение NULL, — это выполнить проверку NULL перед доступом к свойству или вызовом для них метода —
val nullableName: String? = "Джон"
if (nullableName! = null) {
println ("Здравствуйте, $ {nullableName.toUpperCase ()}.")
println ("Длина вашего имени $ {nullableName.length} символов.")
} еще {
println ("Привет, Гость")
}
После того, как вы выполните сравнение с нулевым значением, компилятор запомнит это и разрешит вызовы toUpperCase ()
и длиной
внутри ветви if
.
2. Оператор безопасного вызова:?.
Нулевые сравнения просты, но слишком подробны. Kotlin предоставляет оператора безопасного вызова ?.
, что снижает эту многословность. Он позволяет объединить проверку на null и вызов метода в одном выражении.
Например, следующее выражение —
nullableName? .ToUpperCase ()
то же самое, что —
if (nullableName! = Null)
nullableName.toUpperCase ()
еще
null
Вау! Это избавляет от множества нажатий клавиш, верно? 🙂
Итак, если вы должны были напечатать имя в верхнем регистре и его длину безопасно , вы могли бы сделать следующее —
val nullableName: String? = ноль
println (nullableName ?.toUpperCase ())
println (nullableName? .length)
// Печатает
нулевой
null
Это напечатало null
, поскольку переменная nullableName
имеет значение null, в противном случае он напечатал бы имя в верхнем регистре и его длину.
Но что, если вы не хотите ничего печатать, если переменная null
?
Ну, Чтобы выполнить операцию, только если переменная не равна нулю, вы можете использовать оператор безопасного вызова с let
—
val nullableName: String? = ноль
nullableName ?.пусть {println (it.toUpperCase ())}
nullableName? .let {println (it.length)}
// Ничего не выводит
Лямбда-выражение внутри let
выполняется, только если переменная nullableName
не равна нулю.
Отлично, но это еще не все. Оператор безопасного вызова даже мощнее, чем вы думаете. Например, Вы можете объединить несколько безопасных вызовов следующим образом —
val currentCity: String? = user? .address? .city
Переменная currentCity
будет иметь значение NULL, если любой из user
, address
или city
равен нулю.( Представьте, что это делается с помощью проверки на null. )
3. Оператор Элвиса:?:
Оператор Элвиса используется для предоставления значения по умолчанию, когда исходная переменная null
—
val name = nullableName? : "Гость"
Вышеприведенное выражение такое же, как —
val name = if (nullableName! = Null) nullableName else "Guest"
Другими словами, оператор Элвиса принимает два значения и возвращает первое значение если он не равен нулю, в противном случае возвращается второе значение.
Оператор Элвиса часто используется с оператором безопасного вызова для предоставления значения по умолчанию, отличного от null
, когда переменная, для которой вызывается метод или свойство, имеет значение null
—
val len = nullableName? .Length?: -1
У вас могут быть более сложные выражения в левой части оператора Элвиса —
val currentCity = user? .Address? .City?: "Unknown"
Кроме того, вы можете использовать throw
и вернуть
выражений в правой части оператора Элвиса.Это очень полезно при проверке предварительных условий в функции. Поэтому вместо того, чтобы указывать значение по умолчанию в правой части оператора Элвиса, вы можете создать такое исключение —
val name = nullableName?: Throw IllegalArgumentException («Имя не может быть нулевым»)
4. Not null утверждение: !! Оператор
The !! Оператор преобразует тип, допускающий значение NULL, в тип, отличный от NULL, и генерирует исключение NullPointerException
, если тип, допускающий значение NULL, содержит значение NULL
.
Итак, это способ явно запросить NullPointerException
. Пожалуйста, не используйте этот оператор.
val nullableName: String? = ноль
nullableName !!! Так что же происходит, когда вы вызываете Java-код из Котлина? Ну, Java-типы в Kotlin обрабатываются специально.Они называются Платформа типа . Поскольку Kotlin не имеет никакой информации о допустимости пустых значений для типа, объявленного в Java, он ослабляет проверку NULL во время компиляции для этих типов.
Таким образом, вы не получаете никакой гарантии безопасности для типов, объявленных в Java, и несете полную ответственность за операции, выполняемые над этими типами. Компилятор разрешит все операции.
Если вы знаете, что переменная Java может иметь значение null, вам следует сравнить ее с null перед использованием, в противном случае, как и в Java, вы получите исключение NullPointerException во время выполнения, если значение равно null.
Рассмотрим следующий класс User, объявленный в Java -
открытый класс User {
частное конечное имя строки;
общедоступный пользователь (строковое имя) {
this.name = имя;
}
public String getName () {
возвращаемое имя;
}
}
Поскольку Kotlin не знает о допустимости пустых значений переменной-члена name
, он разрешает все операции с этой переменной. Вы можете рассматривать его как допускающее или не допускающее значение null, но компилятор ничего не принудит.
В следующем примере мы просто обрабатываем переменную name
как не допускающую значения NULL и вызываем для нее методы и свойства -
val javaUser = User (null)
println (javaUser.name.toUpperCase ()) // Разрешено (выдает исключение NullPointerException)
println (javaUser.name.length) // Разрешено (выдает исключение NullPointerException)
Другой вариант - обработать переменную-член name
как допускающую значение NULL и использовать безопасный оператор для вызова методов или доступа к свойствам -
val javaUser = Пользователь (null)
println (javaUser.name? .toUpperCase ()) // Разрешено (выводит null)
println (javaUser.name?.length) // Разрешено (выводит null)
Аннотации, допускающие обнуление
Хотя Java не поддерживает возможность обнуления в своей системе типов, вы можете использовать аннотации, такие как @Nullable
и @NotNull
. внешними пакетами, такими как javax.validation.constraints
, org.jetbrains.annotations
и т. д., чтобы пометить переменную как Nullable или Not-null.
Компилятор Java не использует эти аннотации, но эти аннотации используются IDE, библиотеками ORM и другими внешними инструментами для оказания помощи при работе с нулевыми значениями.
Kotlin также уважает эти аннотации, если они присутствуют в Java-коде. Типы Java, которые имеют эти аннотации, допускающие значение NULL, представлены как фактические типы Kotlin, допускающие значение NULL или ненулевые, а не платформенные типы.
Возможность обнуления и коллекции
API-интерфейс коллекции Kotlin построен на основе API-интерфейса коллекции Java, но полностью поддерживает возможность использования NULL для коллекций.
Так же, как обычные переменные не являются нулевыми по умолчанию, обычная коллекция также не может содержать нулевые значения -
val regularList: List = listOf (1, 2, null, 3) // Ошибка компилятора
1.Коллекция типов, допускающих значение NULL
Вот как вы можете объявить коллекцию типов, допускающих значение NULL в Kotlin -
val listOfNullableTypes: List = ListOf (1, 2, null, 3) // Работает
To Чтобы отфильтровать ненулевые значения из списка типов, допускающих значение NULL, вы можете использовать функцию filterNotNull ()
-
val notNullList: List = listOfNullableTypes.filterNotNull ()
2. Коллекция Nullable 9
Обратите внимание, что существует разница между коллекцией типов, допускающих значение NULL, и коллекцией, допускающей значение NULL. Коллекция типов, допускающих значение NULL, может содержать нулевые значения, но сама коллекция не может быть нулевой -
var listOfNullableTypes: List = ListOf (1, 2, null, 3) // Работает
listOfNullableTypes = null // Ошибка компиляции
Вы можете объявить коллекцию, допускающую значение NULL, вот так -
var nullableList: List ? = listOf (1, 2, 3)
nullableList = null // Работает
3. Обнуляемая коллекция обнуляемых типов
Наконец, вы можете объявить обнуляемую коллекцию обнуляемых типов, например:
var nullableListOfNullableTypes: List ? = listOf (1, 2, null, 3) // Работает
nullableListOfNullableTypes = null // Работает
Заключение
Вот и все в этой статье, ребята.Надеюсь, вы поняли, как kotlin помогает избежать ошибок NullPointerException с его концепцией обнуляемого типа.
Спасибо за внимание. Увидимся в следующем посте.
c - Есть ли причины назначать NULL вместо 0 для переменных без указателя?
Я думаю, что ответ @R Sahu приводит к правильному выводу, но подтверждающие доказательства, которые он предоставляет (на основе одной реализации), в лучшем случае несколько слабые.
Это помечено как c, так и c ++. Детали того, как определяется NULL
, различаются между ними, а также со временем меняются для C ++.Во всех случаях NULL
должно расширяться до «константы нулевого указателя, определенной реализацией». Что меняется, так это определение «константы нулевого указателя».
В C константа нулевого указателя должна быть целочисленным литералом со значением 0 или таким же приведением к типу «указатель на пустоту» 1 . Целое число с ненулевым значением (само по себе или приведенное к типу «указатель на void») - , не разрешено 2 . Итак, 0
, 0L
и ((void *) 0)
все разрешены, но что-то вроде ((void *) 1234)
- это , а не .
В C ++ 98/03 NULL должен также расширяться до константы нулевого указателя - но с несколько другим определением термина - в частности, приведение целочисленного литерала к типу «указатель на void» - , недопустимое значение в C ++. 98/03. Это означает, что разрешены 0
и 0L
(как и '\ 0'
или, если вы действительно хотите быть извращенцем, (3- (2 + 1))
.
В C ++ 11 тип nullptr_t
и литерал nullptr
были добавлены в C ++, а nullptr
также допускается в качестве константы нулевого указателя 3 .NULL разрешено расширяться до любой константы нулевого указателя, поэтому это может быть 0
, 0L
(и т. Д.) Или nullptr
, но (опять же) не может быть ненулевым целым числом и не может иметь тип "указатель на пустоту" (или "указатель на символ" и т. д.)
Однако намерение всегда заключалось в том, чтобы NULL
использовалось только для представления нулевого указателя. Хотя и C, и C ++ позволяют определить как неукрашенный 0
(для одного примера), поэтому может назначить его переменной типа int
, нет гарантии, что код, который так что он даже будет компилироваться (и многие люди считают, что он не должен компилироваться).
Заключение: вы должны назначать указателю только NULL
. Для нового кода я бы посоветовал использовать NULL
только в C и использовать nullptr
в C ++. Для существующего кода C ++ я бы преобразовал в использование nullptr
, когда для этого кода выполняется какой-либо другой рефакторинг, но обычно не буду изменять код исключительно , чтобы изменить NULL
на nullptr
(но код, который присваивает NULL
для любого типа, не являющегося указателем, следует немедленно исправить в C или C ++).
1. Формулировка стандарта C (§6.3.2.3 / 3) гласит:
Целочисленное постоянное выражение со значением 0 или такое выражение, приведенное к типу void *, называется константой нулевого указателя .
Курсив (в оригинале) означает, что это считается определением этого термина для данного стандарта.
2. Назначение константы нулевого указателя переменной-указателю может привести к сохранению ненулевого значения в этой переменной.Хотя это несколько необычно, это вполне допустимо. Однако даже если / когда это так, сравнение этой переменной с константой нулевого указателя (например, NULL
или 0
) должно дать true
.
Точно так же реализация может определять любое количество других целочисленных констант, которые будут создавать нулевой указатель при назначении переменной-указателю. Это не влияет на требования к определению NULL
.
3.Здесь официальная формулировка (из [conv.ptr]) гласит:
Константа нулевого указателя - это целочисленный литерал (2.13.2) с нулевым значением или prvalue типа std :: nullptr_t.
Здесь курсивом снова указано, что это официальное определение термина для данного стандарта.
Разница между «null» и «undefined» в JavaScript
Большинство людей, использующих JavaScript, неправильно понимают разницу между «null» и «undefined».Нечеткое различие между этими двумя объектами может привести к серьезным проблемам при использовании «null» и «undefined» в тестовых примерах.
Переменная называется «неопределенной», если она была объявлена, но ей не было присвоено значение. В отличие от этого, «null» - это значение, которое может быть присвоено переменной и представляет «отсутствие значения». Следовательно, «undefined» - это тип переменной, а «null» - это значение объекта.
‘ Null’ в JavaScript
«Нулевой» - это ключевое слово в JavaScript, которое означает «отсутствие значения» или отсутствие какого-либо значения.Если вы хотите удалить переменную из присвоенного ей значения, вы можете просто присвоить ей «null». Кроме того, как и любой другой объект, он никогда неявно не назначается переменной JavaScript.
Пример явного присвоения null -
[js] var some_item = null;
console.log (some_item) [/ js]
После выполнения код напечатает null.
‘ Undefined’ в JavaScript
«Не определено» - это глобальная переменная, которую JavaScript создает во время выполнения.Эта глобальная переменная присваивается объекту в одном из следующих случаев -
1. Объявлен, но не определен -
JavaScript присваивает «undefined» любому объекту, который был объявлен, но не инициализирован или не определен. Другими словами, в случае, когда переменной не было явно присвоено значение, JavaScript называет ее «undefined».
2. Индекс массива или несуществующее свойство объекта.
3. Функциональный параметр, который не указан.
4.Возвращаемое значение функций, которые должны, но не возвращать значение.
Пример этого назначения показан на следующем рисунке -
[js] var item;
console.log (элемент) [/ js]
После выполнения код напечатает undefined.
Разница в типе -
«Null» - это объект с допустимым значением, без свойств, неизменяемый, и в системе всегда существует только один его экземпляр. Если вы хотите проверить объектную сущность «null», вы можете использовать оператор «typeof».Использование того же самого даст результат как «объект». Однако, если вы используете оператор «typeof» для объекта, который принадлежит одной из точек, упомянутых в списке «undefined», вы получите тип объекта как «undefined».
Преобразование в примитивные типы -
Основное различие между «null» и «undefined» заключается в способе их преобразования в примитивные типы. Когда вы выполняете арифметическое преобразование для «null», определяется значение 0. Это преобразование можно проверить с помощью следующего фрагмента кода.
[js] var v1 = 5+ null;
console.log (v1) [/ js]
После выполнения этот вывод этого кода напечатает 5.
Однако «undefined» не выполняет никакого такого преобразования. Если вы попытаетесь добавить «undefined» к числу, вы получите NaN или Not-a-Number. Следующий фрагмент кода иллюстрирует этот аспект «неопределенного».
[js] var v2 = 5+ undefined;
console.log (v2) [/ js]
После выполнения код напечатает NaN.
Надеюсь, это поможет. 🙂
Sakshi Tyagi
sakshi @lligrape.com
НАШЛИ ЭТО ПОЛЕЗНО? ПОДЕЛИТЬСЯ
Соглашение о недействительности и недействительности Примеры положений
Соглашение о недействительности и недействительности . Если Соглашение объявляется недействительным в соответствии с Разделом 12.4 (Исследование требований к межсетевому соединению), Разделом 12.5 (До даты вступления в силу), Разделом 12.6 (Сроки для даты подачи PUC и утверждения PUC), Разделом 1 (c) (Оценка NEP IE и Оценка NEP, назначенная Компанией) Приложения U (Расчет и корректировка потенциала чистой энергии) или Раздела 1 (d) (Оценка NEP IE, заранее оцененные убытки и нулевое и недействительное право Продавца) указанного Приложения U, Стороны в дальнейшем будут освобождает от всех обязательств по настоящему Соглашению, за исключением случаев, изложенных в Разделе 12.7 (Соглашение недействительно и недействительно) и Раздела 14.3 (Обеспечение возврата средств на период разработки), и не будет предпринимать никаких дальнейших средств правовой защиты друг против друга; при условии, однако, что, если в ответ на запрос Продавца и предложение Продавца о надлежащей гарантии возмещения, Компания соглашается в письменной форме для понесения затрат, связанных с принадлежащими Компании соединительными сооружениями, до Даты безапелляционного утверждения PUC или завершения IRS, Продавец обязан оплатить Компании фактические затраты и обязательства по расходам, понесенные Компанией на дату объявления Соглашения недействительным. и недействительны для принадлежащих Компании соединительных сооружений и любых разумных затрат, понесенных после этого, и Компания должна возместить Продавцу любые суммы, авансированные Продавцом сверх таких затрат.Заявление о том, что настоящее Соглашение является недействительным в соответствии с Разделом 12.4 (Исследование требований к межсетевому соединению), Разделом 12.5 (До даты вступления в силу), Разделом 12.6 (Сроки для даты подачи PUC и утверждения PUC), Раздел 1 (c) (NEP IE Оценка и оценка NEP, назначенная компанией) Приложения U (Расчет и корректировка чистого энергетического потенциала) или Раздела 1 (d) (Оценка NEP IE, заранее оцененные убытки и недействительное право Продавца) указанного Приложения U не влияет на следующее положения, которые остаются в полной силе: Раздел 12.2 (Срок действия обязательств), этот Раздел 12.7 (Соглашение недействительно), Статья 28 (Разрешение споров), Раздел 29.3 (Уведомления), Раздел 29.8 (Применимое право, юрисдикция и место проведения), Раздел 29.