Чек нового образца: Обязательные реквизиты кассового чека онлайн-кассы и БСО с 2019 года

Содержание

Обязательные реквизиты кассового чека онлайн-кассы и БСО с 2019 года

Недавно принятые поправки в правила применения контрольно-кассовой техники влекут за собой и дополнительные требования к кассовым чекам и бланкам строгой отчетности. Данные ОФД, к которому подключена онлайн-касса, включены в обязательные реквизиты БСО и кассового чека в 2021 году. В документах теперь надо указывать разные параметры. В чеках нужно пробивать наименования товаров — с 1 февраля 2021 года это обязательно для ИП на ПСН, УСН, ЕСХН. Для этого необходима кассовая программа, которая это умеет. Наше бесплатнное приложение Касса МойСклад поддерживает это и все остальные требования 54-ФЗ. Скачайте и попробуйте его прямо сейчас.

Скачать Кассу МойСклад

Для новых реквизитов в чеках онлайн-касс и бланков строгой отчетности нет унифицированных форм, но в них должны содержаться определенные данные. Это данные, которые добавились с вступлением закона 54-ФЗ в силу.

Обязательные реквизиты кассового чека в 2021 году

Скачайте таблицу реквизитов чека: 54-ФЗ строго предписывает их печатать на каждом документе, который подтверждает продажу. В таблице есть подробные комментарии по всем случаям использования. Это бесплатно.

Зарегистрируйтесь в онлайн-сервисе печати документов МойСклад, где вы совершенно бесплатно сможете:

  • Скачать полную таблицу обязательных реквизитов кассового чека и БСО
  • Заполнить и распечатать любой документ онлайн (это очень удобно)

Ниже приводится сокращенный список реквизитов чека, которые нужно печатать на каждом документе, подтверждающем продажу:

  • Название документа.
  • Порядковый номер документа за смену.
  • Дата, время проведения расчета.
  • Место, адрес, где осуществляется расчет в зависимости от места его проведения (почтовый адрес здания, либо наименование, номер транспортного средства и адрес организации (ИП), либо адрес сайта).
  • Название организации (фамилия, имя, отчество ИП) и ИНН.
  • Применяемая система налогообложения.
  • Признак расчета (приход, возврат прихода, расход, возврат расхода).
  • Наименование товаров, работ, услуг, их количество, цена за единицу, стоимость, ставка НДС (за исключением случаев, когда расчет производится пользователем, не являющимся плательщиком НДС или освобожденным от НДС, а также при расчетах за товары, не подлежащие налогообложению НДС).
  • Сумма расчета с отдельным указанием ставок и сумм НДС.
  • Форма расчета (наличные деньги, электронный платеж), сумма оплаты наличными деньгами и (или) электронно.
  • Должность и фамилия лица, осуществившего расчет с покупателем, оформившего кассовый чек и выдавшего его покупателю (за исключением расчетов, произведенных через автоматические устройства, применяемых, в том числе и при расчетах в безналичном порядке в интернете).
  • Регистрационный номер ККТ.
  • Заводской номер фискального накопителя.
  • Фискальный признак документа.
  • Порядковый номер фискального документа.
  • Адрес сайта ОФД, на котором в дальнейшем можно будет проверить факт записи этого расчета и подлинности фискального признака.
  • Телефон или адрес электронной почты покупателя (в случае передачи ему кассового чека в электронной форме).
  • Адрес электронной почты отправителя кассового чека в электронной форме (в случае передачи покупателю кассового чека электронно).
  • Номер смены.
  • Фискальный признак сообщения (для кассовых чеков, хранимых в фискальном накопителе или передаваемых ОФД).
  • QR-код.
  • Номер версии ФФД (для электронной формы).
  • Признак способа расчета (может не включаться в печатную форму при полном расчете, а в электронный чек — при полном расчете и только в ФФД 1.05).
  • Код формы фискального документа (для электронной формы).
  • Код товара. Этот реквизит включает идентификационный код для товаров, которые подлежат обязательной маркировке.
  • Сумма акциза (для подакцизной продукции).
  • Регистрационный номер таможенной декларации (при расчетах за импортный товар)

Что должно быть зашифровано в QR-коде на кассовом чеке по новым правилам? Закон говорит, что там должны содержаться сведения о покупке (дата и время платежа, порядковый номер фискального документа, признак расчета, сумма расчета, заводской номер фискального накопителя, фискальный признак документа).

Реквизит «Код товара» обязательно нужно указывать по истечении трех месяцев после вступления в силу правового акта, которым вводит обязательную для того или иного товара.

Напомним, что при расчетах между двумя компаниями, двумя ИП, либо между организацией и ИП нужно применять ККТ в двух случаях. Первый — это прием и выдача наличных средств.

Второй — это прием и выдача безналичных средств с использованием электронного средства платежа с его предъявлением (например, при помощи пластиковой карты).

В этих случаях в чеке нужно будет указать:

  • наименование покупателя или клиента (название компании или ФИО предпринимателя),
  • ИНН покупателя или клиента.

В этом чеке отмечены следующие реквизиты:

  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. Заводской номер фискального накопителя.
  26. Номер фискального чека.
  27. Фискальный признак данных.
  28. QR-код для проверки чека.

Все эти данные – обязательные реквизиты чека онлайн-кассы. Если на чеке отсутствует хотя бы один из них, то по закону чек считается не действительным, а предприниматель должен будет приложить все усилия, чтобы доказать проверяющему органу применение онлайн-кассы, иначе он будет оштрафован за несоблюдение нового закона. Более подробно про реквизиты чека, требуемые 54-ФЗ, можно прочитать в самом тексте закона. При этом контролировать соответствие реквизитов на чеках закону может даже сам покупатель, поэтому не только предпринимателям необходимо быть в курсе, какие реквизиты должны быть в кассовом чеке.

Реквизит «Код товара» является обязательным реквизитом кассового чека. Но правила его записи определены только для маркированной продукции.

Внимание! Постановлением правительства РФ №521 от 16 апреля 2020 устанавливается отсрочка до 20 апреля 2021 года по указанию кода товара в кассовом чеке и БСО при курьерской и почтовой доставке, включая доставку наложенным платежом. Это касается юрлиц и ИП. Также кассовый чек и БСО могут не содержать код товара, если:

  • Расчет не связан с передачей товара покупателю, в т.ч. при приеме предоплаты, авансов, в ломбарде,
  • Покупатель возвращает товар с поврежденным или потерянным кодом маркировки,
  • В форматах ФД, утвержденных ФНС, для кода идентификации не установлены правила его включения в реквизит Код товара,
  • Выводятся из оборота товары, произведенные до начала обязательной маркировки.

Важно! Индивидуальные предприниматели, использующие ПСН, УСН и ЕНВД, за исключением тех, кто торгует подакцизными товарами, могут не указывать на чеках наименование и количество купленных товаров или услуг. Такое послабление для малого бизнеса дано до 1 февраля 2021 года (ФЗ от 03.07.2016 N 290-ФЗ). После этой даты они должны работать, как все остальные предприятия. Читайте подробнее о сроках, когда надо будет начать указывать товары в чеке, а также об отсрочке онлайн-касс до 2021 года здесь >>

Скоро в чеках потребуется указывать ряд новых реквизитов. Изменения коснутся предпринимателей, которые работают на упрощенке с объектом «доходы». В пункте 13 Указа Президента от 07.05.2018 № 204 сказано, что с 2021 года такие налогоплательщики смогут не сдавать декларацию. Пока это проект закона, принять его планируют до 1 июля 2020 года. Поэтому новые реквизиты чека пока тоже в виде проекта поправок в приказ ФНС от 21.03.2017 № ММВ-7-20/229@ (проект поправок есть у редакции газеты «Учет. Налоги. Право»).

После того, как законопроект примут, налоговая будет рассчитывать сумму налога к уплате по транзакциям, которые идут через онлайн-кассы. В чеке добавятся реквизиты:

  • Реквизит «Расход» добавят для трат по статье 346.16 НК.
  • Реквизит «Взносы на ОПС ИП» – для пенсионных взносов.

Отразить в чеке такие реквизиты можно только после обновления кассы. Ее надо будет перепрошить.

Обязательные реквизиты БСО

С 1 июля 2019 года бланки строгой отчетности можно печатать только через онлайн-кассу. Использовать БСО, отпечатанные в типографии, запрещено. Все реквизиты БСО сейчас почти ничем не отличаются от реквизитов чека онлайн-кассы:

  1. наименование,
  2. порядковый номер,
  3. дата, время и место (адрес) расчета,
  4. наименование организации или фамилию, имя, отчество ИП,
  5. ИНН,
  6. система налогообложения продавца,
  7. признак расчета (приход, расход, возврат прихода, возврат расхода),
  8. наименование товаров, работ, услуг (если их можно определить в момент оплаты),
  9. платежа, выплаты, их количество, цену за единицу в рублях с учетом скидок и
  10. наценка, стоимость с учетом скидок и наценок, с указанием ставки НДС плательщиком налога. ИП на спецрежимах, кроме тех, которые торгуют подакцизными товарами, не указывают в БСО наименование товара (работы, услуги) и его количество до 1 февраля 2021 года,
  11. сумма платежа (с указанием НДС и суммы налога),
  12. форма и сумма расчета наличными деньгами или в безналичном порядке,
  13. должность и фамилия сотрудника, который оформил и выдал покупателю БСО. Исключение: расчеты через автоматические устройства в безналичном порядке в интернете,
  14. регистрационный номер онлайн-ККТ,
  15. заводской номер фискального накопителя,
  16. фискальный признак документа,
  17. адрес сайта ФНС России, на котором можно проверить платеж,
  18. абонентский номер или адрес электронной почты покупателя при передаче БСО в электронной форме или сайт, на котором такой документ можно получить,
  19. адрес электронной почты продавца при передаче покупателю БСО в электронной форме,
  20. порядковый номер фискального документа,
  21. номер смены,
  22. фискальный признак сообщения,
  23. заводской номер автоматического устройства для расчетов, если оплату принимают через такое устройство,
  24. QR-код,
  25. место (адрес) установки автоматического устройства для расчетов, с применением которого был расчет, – при расчетах с применением автоматических устройств.

Использовать типографскую версию БСО могут только те, кто освобожден от использования ККТ. Но в этом случае бланки строгой отчетности будут только для внутреннего использования, так как те, кто освобожден от применения кассы, вправе не выдавать покупателям вообще никаких документов — ни чеков, ни бланков.

Все об изменениях в федеральном законе «О применении контрольно-кассовой техники» — в записи нашего вебинара.

Читайте также:
5 вопросов о прослеживаемости товаров с 1 июля. Что меняется для розницы? Новые отчеты, отличие от маркировки, штрафы
Штрафы за нарушения по онлайн-кассам в 2021 году

Подпишитесь на рассылку МоегоСклада, чтобы получать новые статьи о торговле и 54-ФЗ


После регистрации вы бесплатно получите:

  • Полную таблицу обязательных в 2021 реквизитов кассового чека и БСО с комментариями по всем случаям использования.
  • Доступ в МойСклад — сервис для торговли с бесплатным кассовым приложением, товароучетной системой и поддержкой облачных чеков, маркировки, оплаты по QR-кодам.

Предпринимателей будут штрафовать за чеки без перечня покупок :: Бизнес :: РБК

Фото: Антон Денисов / РИА Новости

Все предприниматели в России с 1 февраля обязаны выдавать покупателям кассовый чек нового образца, в котором перечислены все сделанные покупки. Чеки должны содержать дату и время расчета, сумму денежных средств, наименование, количество и цену каждой позиции товара или услуги.

До этого содержание детальной информации о товаре в чеке было необязательным для индивидуальных предпринимателей (ИП), для которых работает специальный режим налогообложения.

Эта норма предусмотрена законом «О применении контрольно-кассовой техники при осуществлении расчетов в Российской Федерации» (№54 ФЗ). Отсрочка, которая позволяла индивидуальным предпринимателям, использующим специальные налоговые режимы, соответствующим образом настроить кассовые аппараты, закончилась 1 февраля, предупреждала ранее налоговая служба.

«С 1 февраля 2021 года действие отсрочки заканчивается, и все кассовые чеки должны содержать наименование товаров (работ, услуг) и их количество», — говорится на сайте ведомства.

Магазины уличили в продаже контрафактных сигарет через кассу

КАК ПРОВЕРИТЬ НА ПОДЛИННОСТЬ КАССОВЫЙ ЧЕК НОВОГО ОБРАЗЦА

ФНС России привела подробную инструкцию относительно действий покупателя по проверке полученного им чека, выданного онлайн ККТ (информация от 11.07.2017). Разъяснения налоговиков помогут не только простым гражданам, но и бухгалтерам. Ведь если знать, на что именно нужно обращать внимание, можно избежать ошибок, а значит, штрафов.

 Налоговики призвали всех граждан и должностных лиц проверять полученные кассовые чеки нового образца на сайте ФНС.

Инструкция по проверке, которая может стать своеобразными контрольными соотношениями для всех бухгалтеров торгующих организаций по настройке контрольно-кассовой техники с функцией передачи данных онлайн. Ведь информация в чеке зависит именно от того, что будет внесено в ККТ.

Кроме того, анонсированное ФНС приложение позволяет не просто проверять, но и получать электронные чеки, а также хранить их в систематизированном виде. Это может быть очень удобно для командированных работников, которые должны собирать документы для отчета по расходам во время командировки.

Итак, рекомендуемое налоговиками приложение размещено на официальном сайте ФНС в разделе «Новый порядок применения контрольно-кассовой техники». Оно называется «Проверка кассового чека». С помощью данной программы, которую каждый желающий может установить на свое мобильное устройство, можно проверять легальность чеков и контролировать добросовестность продавцов. При выявлении нарушений можно сразу же направить информацию в ФНС России. Для использования приложения пользователь должен указать свои персональные данные, так что анонимность не гарантируется.

 Однако никакой проверки корректности введенной информации не проводится, поэтому при желании можно не указывать полностью свои имя и фамилию, функционал проверки чеков от этого не пострадает. К тому же разработчики уверяют, что такие меры, напротив, избавляют от передачи своих данных торговцам, ведь при покупке можно будет просто открыть приложение и предъявить штрих-код кассиру, не называя себя.

Если приложение предполагается использовать по назначению, то лучше все же указать реальный номер телефона или электронный адрес, ведь это необходимо для получения электронных чеков. Создать специальный обезличенный штрих-код достаточно просто: нужно просто в разделе меню «Профиль и помощь» ввести номер телефона, на который установлено приложение. После получения кассового чека пользователь приложения может легко проверить, передал ли продавец информацию о произведенном с ним расчете в налоговый орган. Для этого можно вручную ввести данные бумажного кассового чека в специальные поля приложения.

Также приложение позволяет сразу сканировать QR-код чека. После ввода необходимой информации можно отправить запрос. Автоматизированная система пришлет в ответ информацию о данном чеке, которую можно будет сверить с реальной. При обнаружении расхождений в проверяемом чеке с информацией в базе данных ФНС или полном отсутствии такой информации о произведенном расчете, мобильное приложение предложит пользователю сообщить налоговой службе о выявленном нарушении.

Также проинформировать ФНС можно в случае: невыдачи чека продавцом; выдачи чека с некорректными реквизитами; отказе в выдаче электронного чека. Если приложение используется для самопроверки, необходимо просто устранить выявленные недостатки и не допускать их возникновения в дальнейшем.

Источник: buhgalteria.ru

 

каким требованиям должна соответствовать их печать

Печать кассовых чеков – возможность подтвердить финансовые отношения между продавцом и покупателем. Процесс происходит с использованием специального оборудования, ККМ. Периодически требования к таким машинам изменяются. Совершенствуются способы печати, появляется меньше возможности купить подделки.

Печать кассовых чеков на обычной бумаге сегодня не практикуется. Для машин используется термолента, на которую информация наносится с использованием специальных чернил. Некоторые компании предлагают заполнить небольшую форму на сайте, пересылают копию в электронном виде. Но лучше всего в различных ситуациях предъявлять бумажную версию.

Купить товарные чеки в Москве

Необходимость купить товарные чеки в Москве возникает в том случае, если нужно подтвердить или уточнить кассовый. Такие бланки могут использоваться и обособленно, если компания имеет право не работать с ККМ. В формуляре прописываются:

  • цены;
  • общие суммы;
  • перечень покупок.

Купить товарные чеки в Москве можно, чтобы они были действительными, на них проставляется печать выдавшей организации и подпись сотрудника. С помощью него покупатель легко сможет подтвердить факт оплаты товара. Утверждённой формы подобного документа нет, но есть параметры, которые заполняются в обязательном порядке.

Если не знаете, где купить товарные чеки, обратите внимание на профильные фирмы. В них предлагают полный пакет услуг с учетом целей заказчика. Некоторые организации предлагают только стандартные бланки. Таких фирм много, но не все они готовы предложить полный пакет подходящих документов.

Решая, где купить товарные чеки, обратите внимание на те предприятия, которые могут предложить доставку, на каждом формуляре ставят печати, если в них есть необходимость. Документ выписывается от любого числа, что позволяет решить гораздо больше различных ситуаций.

Купить кассовый чек нового образца

Купить кассовый чек нового образца — стать обладателем документа, который заполняется вместе со специальным QR-кодом. Особенность заключается в том, что сведения должны сразу же передаваться в налоговые службы. Подобные варианты могут быть как в печатном виде, так и в электронном. Последний вариант может быть отправлен на электронную почту или телефон при наличии технической возможности принимать подобные сообщения.

Решив купить кассовый чек нового образца, вы можете заменить, что заполнение может отличаться в зависимости от той сферы деятельности, в рамках которой осуществлялись расчеты. Настоящий документ должен иметь четко прописанную информацию, легко читаться на протяжении 6 месяцев с момента получения на бумажном носителе.

Купить чек нового образца можно, но нужно проследить, чтобы на нем были дополнительные сведения:

  • номер фискального документа;
  • код фискальной передачи данных;
  • сумма НДС и другие реквизиты.

Выданный бланк может быть выписан на любую сумму. Если речь идет о больших цифрах, лучше купить чеки нового образа в нескольких экземплярах.

Как выглядит кассовый чек нового образца, касса БСО

Маркировка остатков сигарет и табачной продукции

Маркировка остатков сигарет, табака и табачной продукции нужна, чтобы продавать табак после вступления в силу обязательной маркировки на всю табачную категорию. Как известно, с 1 июля 2020 года запрещается продавать сигареты без цифровых меток системы Честный Знак. Продажа такой табачной продукции приравнивается к торговле фальсификатом. У многих торговых точек, да и на складах еще остались сигареты и папиросы старых партий…

856 Узнать больше

Что такое ОФД в онлайн-кассах

Что такое ОФД в онлайн-кассе — актуальный вопрос на сегодня для большинства предпринимателей, которые впервые столкнулись с необходимостью применения ККТ. Согласно ФЗ-54, который регулирует использование онлайн-касс, весь бизнес переходит на торговлю по новым правилам. Главной задачей новой кассовой техники является передача сведений о совершенных расчетах с клиентами в Налоговую службу. ОФД или оператор фискальных данных и есть посредник между кассой…

424 Узнать больше

Ошибки касс ШТРИХ-М и их исправление

Ошибки на кассах ШТРИХ-М указывают на неполадки в самом кассовом аппарате, сбои в ФН или на неверно выполненные действия кассира. При их появлении на экране онлайн-кассы или в фискальном чеке появляется код. Сообщение о неполадках сопровождается коротким звуковым сигналом, а на дисплей кассы ШТРИХ-М выводится ошибка в формате Е ХХХ. В данном случае ХХХ — код ошибки. Код позволяет определить,…

460 Узнать больше

Маркировка верхней одежды Честный Знак

Маркировка верхней одежды становится обязательной с 1 января 2021 года. С этой даты никто из участников оборота не имеет право хранить, продавать или перевозить верхнюю одежду без новых меток. Но все ли так однозначно, и какого товара коснулись изменения, кто должен принимать участие в системе, и другие важные вопросы мы расскажем в нашей статье. Пройти тест»Готовы ли вы к маркировке?»…

684 Узнать больше

Недавно принятые поправки в правила применения контрольно-кассовой техники влекут за собой и дополнительные требования к кассовым чекам и бланкам строгой отчетности. Данные ОФД, к которому подключена онлайн-касса, включены в обязательные реквизиты БСО и кассового чека в 2020 году. В документах теперь надо указывать разные параметры. В чеках нужно пробивать наименования товаров, для этого необходима кассовая программа, которая это умеет. Наше бесплатнное приложение Касса МойСклад поддерживает это и все остальные требования 54-ФЗ. Скачайте и попробуйте его прямо сейчас.

Для новых реквизитов в чеках онлайн-касс и бланков строгой отчетности нет унифицированных форм, но в них должны содержаться определенные данные. Это данные, которые добавились с вступлением закона 54-ФЗ в силу.

Обязательные реквизиты кассового чека в 2020 году

Скачайте таблицу реквизитов чека: 54-ФЗ строго предписывает их печатать на каждом документе, который подтверждает продажу. В таблице есть подробные комментарии по всем случаям использования. Это бесплатно.

×

Получите таблицу бесплатно!

Зарегистрируйтесь в онлайн-сервисе печати документов МойСклад, где вы совершенно бесплатно сможете:

  • Скачать полную таблицу обязательных реквизитов кассового чека и БСО
  • Заполнить и распечатать любой документ онлайн (это очень удобно)

Ниже приводится сокращенный список реквизитов чека, которые нужно печатать на каждом документе, подтверждающем продажу:

  • Название документа.
  • Порядковый номер документа за смену.
  • Дата, время проведения расчета.
  • Место, адрес, где осуществляется расчет в зависимости от места его проведения (почтовый адрес здания, либо наименование, номер транспортного средства и адрес организации (ИП), либо адрес сайта).
  • Название организации (фамилия, имя, отчество ИП) и ИНН.
  • Применяемая система налогообложения.
  • Признак расчета (приход, возврат прихода, расход, возврат расхода).
  • Наименование товаров, работ, услуг, их количество, цена за единицу, стоимость, ставка НДС (за исключением случаев, когда расчет производится пользователем, не являющимся плательщиком НДС или освобожденным от НДС, а также при расчетах за товары, не подлежащие налогообложению НДС).
  • Сумма расчета с отдельным указанием ставок и сумм НДС.
  • Форма расчета (наличные деньги, электронный платеж), сумма оплаты наличными деньгами и (или) электронно.
  • Должность и фамилия лица, осуществившего расчет с покупателем, оформившего кассовый чек и выдавшего его покупателю (за исключением расчетов, произведенных через автоматические устройства, применяемых, в том числе и при расчетах в безналичном порядке в интернете).
  • Регистрационный номер ККТ.
  • Заводской номер фискального накопителя.
  • Фискальный признак документа.
  • Порядковый номер фискального документа.
  • Адрес сайта ОФД, на котором в дальнейшем можно будет проверить факт записи этого расчета и подлинности фискального признака.
  • Телефон или адрес электронной почты покупателя (в случае передачи ему кассового чека в электронной форме).
  • Адрес электронной почты отправителя кассового чека в электронной форме (в случае передачи покупателю кассового чека электронно).
  • Номер смены.
  • Фискальный признак сообщения (для кассовых чеков, хранимых в фискальном накопителе или передаваемых ОФД).
  • QR-код.
  • Номер версии ФФД (для электронной формы).
  • Признак способа расчета (может не включаться в печатную форму при полном расчете, а в электронный чек — при полном расчете и только в ФФД 1.05).
  • Код формы фискального документа (для электронной формы).
  • Код товара. Этот реквизит включает идентификационный код для товаров, которые подлежат обязательной маркировке.
  • Сумма акциза (для подакцизной продукции).
  • Регистрационный номер таможенной декларации (при расчетах за импортный товар)

Что должно быть зашифровано в QR-коде на кассовом чеке по новым правилам? Закон говорит, что там должны содержаться сведения о покупке (дата и время платежа, порядковый номер фискального документа, признак расчета, сумма расчета, заводской номер фискального накопителя, фискальный признак документа).

Реквизит «Код товара» обязательно нужно указывать по истечении трех месяцев после вступления в силу правового акта, которым вводит обязательную для того или иного товара.

Напомним, что при расчетах между двумя компаниями, двумя ИП, либо между организацией и ИП нужно применять ККТ в двух случаях. Первый — это прием и выдача наличных средств. Второй — это прием и выдача безналичных средств с использованием электронного средства платежа с его предъявлением (например, при помощи пластиковой карты).

В этих случаях в чеке нужно будет указать:

  • наименование покупателя или клиента (название компании или ФИО предпринимателя),
  • ИНН покупателя или клиента.

В этом чеке отмечены следующие реквизиты:

  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. Заводской номер фискального накопителя.
  26. Номер фискального чека.
  27. Фискальный признак данных.
  28. QR-код для проверки чека.

Все эти данные – обязательные реквизиты чека онлайн-кассы. Если на чеке отсутствует хотя бы один из них, то по закону чек считается не действительным, а предприниматель должен будет приложить все усилия, чтобы доказать проверяющему органу применение онлайн-кассы, иначе он будет оштрафован за несоблюдение нового закона. Более подробно про реквизиты чека, требуемые 54-ФЗ, можно прочитать в самом тексте закона. При этом контролировать соответствие реквизитов на чеках закону может даже сам покупатель, поэтому не только предпринимателям необходимо быть в курсе, какие реквизиты должны быть в кассовом чеке.

Реквизит «Код товара» является обязательным реквизитом кассового чека. Но правила его записи определены только для маркированной продукции.

Внимание! Постановлением правительства РФ №521 от 16 апреля 2020 устанавливается отсрочка до 20 апреля 2021 года по указанию кода товара в кассовом чеке и БСО при курьерской и почтовой доставке, включая доставку наложенным платежом. Это касается юрлиц и ИП. Также кассовый чек и БСО могут не содержать код товара, если:

  • Расчет не связан с передачей товара покупателю, в т.ч. при приеме предоплаты, авансов, в ломбарде,
  • Покупатель возвращает товар с поврежденным или потерянным кодом маркировки,
  • В форматах ФД, утвержденных ФНС, для кода идентификации не установлены правила его включения в реквизит Код товара,
  • Выводятся из оборота товары, произведенные до начала обязательной маркировки.

Важно! Индивидуальные предприниматели, использующие ПСН, УСН и ЕНВД, за исключением тех, кто торгует подакцизными товарами, могут не указывать на чеках наименование и количество купленных товаров или услуг. Такое послабление для малого бизнеса дано до 1 февраля 2021 года (ФЗ от 03.07.2016 N 290-ФЗ). После этой даты они должны работать, как все остальные предприятия. Читайте подробнее о сроках, когда надо будет начать указывать товары в чеке, а также об

Скоро в чеках потребуется указывать ряд новых реквизитов. Изменения коснутся предпринимателей, которые работают на упрощенке с объектом «доходы». В пункте 13 Указа Президента от 07.05.2018 № 204 сказано, что с 2021 года такие налогоплательщики смогут не сдавать декларацию. Пока это проект закона, принять его планируют до 1 июля 2020 года. Поэтому новые реквизиты чека пока тоже в виде проекта поправок в приказ ФНС от 21.03.2017 № ММВ-7-20/229@ (проект поправок есть у редакции газеты «Учет. Налоги. Право»).

После того, как законопроект примут, налоговая будет рассчитывать сумму налога к уплате по транзакциям, которые идут через онлайн-кассы. В чеке добавятся реквизиты:

  • Реквизит «Расход» добавят для трат по статье 346.16 НК.
  • Реквизит «Взносы на ОПС ИП» – для пенсионных взносов.

Отразить в чеке такие реквизиты можно только после обновления кассы. Ее надо будет перепрошить.

Обязательные реквизиты БСО

С 1 июля 2019 года бланки строгой отчетности можно печатать только через онлайн-кассу. Использовать БСО, отпечатанные в типографии, запрещено. Все реквизиты БСО сейчас почти ничем не отличаются от реквизитов чека онлайн-кассы:

  1. наименование,
  2. порядковый номер,
  3. дата, время и место (адрес) расчета,
  4. наименование организации или фамилию, имя, отчество ИП,
  5. ИНН,
  6. система налогообложения продавца,
  7. признак расчета (приход, расход, возврат прихода, возврат расхода),
  8. наименование товаров, работ, услуг (если их можно определить в момент оплаты),
  9. платежа, выплаты, их количество, цену за единицу в рублях с учетом скидок и
  10. наценка, стоимость с учетом скидок и наценок, с указанием ставки НДС плательщиком налога. ИП на спецрежимах, кроме тех, которые торгуют подакцизными товарами, не указывают в БСО наименование товара (работы, услуги) и его количество до 1 февраля 2021 года,
  11. сумма платежа (с указанием НДС и суммы налога),
  12. форма и сумма расчета наличными деньгами или в безналичном порядке,
  13. должность и фамилия сотрудника, который оформил и выдал покупателю БСО. Исключение: расчеты через автоматические устройства в безналичном порядке в интернете,
  14. регистрационный номер онлайн-ККТ,
  15. заводской номер фискального накопителя,
  16. фискальный признак документа,
  17. адрес сайта ФНС России, на котором можно проверить платеж,
  18. абонентский номер или адрес электронной почты покупателя при передаче БСО в электронной форме или сайт, на котором такой документ можно получить,
  19. адрес электронной почты продавца при передаче покупателю БСО в электронной форме,
  20. порядковый номер фискального документа,
  21. номер смены,
  22. фискальный признак сообщения,
  23. заводской номер автоматического устройства для расчетов, если оплату принимают через такое устройство,
  24. QR-код,
  25. место (адрес) установки автоматического устройства для расчетов, с применением которого был расчет, – при расчетах с применением автоматических устройств.

Использовать типографскую версию БСО могут только те, кто освобожден от использования ККТ. Но в этом случае бланки строгой отчетности будут только для внутреннего использования, так как те, кто освобожден от применения кассы, вправе не выдавать покупателям вообще никаких документов — ни чеков, ни бланков.

Все об изменениях в федеральном законе «О применении контрольно-кассовой техники» — в записи нашего вебинара.

Подпишитесь на рассылку МоегоСклада, чтобы получать новые статьи о торговле и 54-ФЗ

Чек не пробит
Если чек не пробит, то нужно оформить на кассе кассовый чек коррекции, особенности формирования которого зависят от формата фискальных данных (ФФД), применяемого на ККТ продавца (исполнителя).
При использовании ФФД версии 1.1 в случае коррекции расчета, ранее произведенного без применения ККТ, формируется кассовый чек коррекции. Такой чек должен содержать, помимо обязательных реквизитов самого кассового чека коррекции, реквизиты, соответствующие расчету, который был произведен без применения ККТ. А именно – дату, наименование товара (работы, услуги), адрес расчета и иные реквизиты, в соответствии с Приказом ФНС России № ММВ-7-20/229 от 21 марта 2017 г.
При использовании ФФД версии 1.05 для исправления ошибки также необходимо сформировать кассовый чек коррекции с признаком расчета «приход» или «расход» и иными реквизитами, предусмотренными для чека коррекции указанной версии ФФД.
Примеры формирования чеков коррекции в указанных случаях приведены в приложении к письму ФНС России № ЕД-4-20/15240 от 6 августа 2018 г.
При этом законодательство не обязательно производить корректировку расчетов с использованием той единицы ККТ, с применением которой был совершен некорректный расчет.
Если продавец самостоятельно производит исправления (а не по предписанию налоговой инспекции), то ответственности за неприменение ККТ можно избежать при соблюдении всех необходимых условий (в частности, при сообщении об этом в налоговую инспекцию в электронном виде).
Обратите внимание: чек коррекции должен содержать ряд обязательных реквизитов. Таких как: название, номер, дата, время, наименование и ИНН организации (ИП), номер ККТ, номер фискального накопителя, место расчетов, фискальный признак. Кроме того, для чека коррекции предусмотрены и дополнительные реквизиты, в частности, тип коррекции и основание коррекции. Если чек коррекции кассир пробивает без предписания налоговой инспекции, то в реквизите «тип коррекции» нужно указать «0» (самостоятельная операция). Основание коррекции тоже должно быть указано (в виде описания ошибки). Также потребуется указать дату совершения корректируемого расчета, которая определяется в зависимости от версии ФФД.
Так реквизит «дата совершения корректируемого расчета» в чеке, который:
– имеет значение реквизита, равное «2» (ФФД версии 1.05), должен содержать сведения о дате документа, являющегося основанием для коррекции. Таким документом может быть, например, составленная кассиром объяснительная записка о сложившейся ситуации (см. Объяснительную записку кассира). В ней кассир должен указать причину, по которой не был пробит кассовый чек, и ошибка не была обнаружена вовремя – непосредственно в момент расчета с покупателем;
– имеет значение реквизита, равное «3» (т.е. ФФД версии 1.1), должен содержать сведения о дате совершения расчета, в отношении сведений о котором формируется кассовый чек коррекции, то есть дату, когда чек не был выдан при проведении расчета (выдан с ошибкой).
В отношении всех чеков коррекции налоговые инспекторы могут запросить пояснения о совершенной (исправленной) ошибке.
Может сложиться и другая специфическая ситуация: чек пробит на правильную сумму, и данные о расчете попали в учетную систему пользователя, но по каким-то причинам (например, из-за сбоя в работе ККТ) эти данные не попали в фискальный накопитель. Тогда необходимо сформировать чек коррекции по установленным правилам. При этом, если в налоговую инспекцию не поступила информация о приходе, то важно также соблюсти порядок, который позволит избежать ответственности за неприменение ККТ.
Чек пробит с ошибкой
Если в чеке была допущена ошибка, связанная с суммой расчета или не связанная с ней (например, если вместо безналичной оплаты кассир указал наличные, ошибка допущена в ИНН, ошибочно выделен или не выделен НДС), то порядок действий зависит, в частности, от момента обнаружения допущенной ошибки и версии ФФД, применяемого на ККТ продавца (исполнителя).
Если ошибка обнаружена кассиром в присутствии покупателя (в течение пяти минут от времени покупки), то независимо от характера ошибки в чеке кассиру необходимо пробить чек с признаком расчета «возврат прихода» и заново оформить чек с признаком «приход» на поступившую сумму.
Если ошибка обнаружена позже до окончания открытой смены или в последующие дни, порядок действий зависит от версии ФФД на ККТ пользователя.
При использовании ФФД версии 1.1 формируется кассовый чек коррекции. При этом сначала необходимо сформировать идентичный некорректному кассовый чек коррекции с признаком расчета «возврат прихода», а затем сформировать правильный кассовый чек коррекции с признаком расчета «приход». Оба чека коррекции должны содержать достаточные сведения, позволяющие точно идентифицировать конкретный расчет, в отношении которого применяется корректировка. Например, это указание в качестве дополнительного реквизита чека фискального признака документа, ранее некорректно сформированного с применением ККТ. Аналогичным способом корректируется ошибочный кассовый чек с признаком расчета «расход».
При использовании ФФД версии 1.05 для исправления ошибки кассовый чек коррекции не применяется. В этом случае продавцу (исполнителю) при корректировке чека с признаком расчета «приход» необходимо сформировать идентичный некорректному кассовый чек с признаком расчета «возврат прихода», а затем сформировать корректный кассовый чек с признаком расчета «приход». При этом оба чека также должны содержать в качестве дополнительного реквизита чека фискальный признак документа, ранее некорректно сформированного с применением ККТ. Аналогичным способом корректируется ошибочный кассовый чек с признаком расчета «расход».
Если продавец самостоятельно производит исправления (а не по предписанию налоговой инспекции), то ответственности за применение ККТ с нарушением установленного порядка можно избежать при соблюдении всех необходимых условий (в частности, при сообщении об этом в налоговую инспекцию в электронном виде).
Примеры формирования чеков коррекции (чеков) в указанных случаях приведены в приложении к письму ФНС России № ЕД-4-20/15240 от 6 августа 2018 г.
При этом законодательство не устанавливает обязанности пользователя производить корректировку расчетов с использованием той единицы ККТ, с применением которой был совершен некорректный расчет.

Для печати нестандартного чека ККТ, а также дополнительной информации по чеку используются шаблоны чеков с типом шаблона «Чек ККТ».

При этом обязательные к передаче в ОФД поля содержатся в шаблоне по умолчанию и не редактируются.

Настройка шаблона чека ККТ с передачей данных

При подключении ККТ с передачей данных можно указать предварительно настроенные шаблоны чеков (Администрирование — Печатные формы, отчеты и обработки — Шаблоны этикеток, ценников и чеков ККМ).

Для настройки нового шаблона нужно нажать кнопку Создать, выбрать в поле Объект тип документа, для которого предназначен шаблон, ввести наименование и записать вновь созданный элемент.

Рис. 1

Затем нужно вызвать форму редактирования шаблона с помощью кнопки Редактировать макет. В открывшейся форме в центральном поле размещается макет шаблона печатной формы, загруженный по умолчанию. Макет состоит из шапки чека, табличной части и подвала (итогов) документа. В свою очередь, строки табличной части также могут содержать несколько разделов.

Рис. 2

Обязательный раздел «Фискальный документ», имеет три предопределенных подраздела:

  • Шапка чека — содержит предопределенный набор полей, передаваемых в ОФД. В шапку добавит ничего нельзя. Внешний вид шапки при предварительном просмотре отличается от того, который будет напечатан фискальным устройством.
  • Состав чека — по умолчанию содержит таблицу «Товары», в которой содержится фискальный раздел, состоящий из наименования, количества, цены, суммы и ставки НДС. Фискальный раздел также не редактируется. В остальные поля состава чека можно добавлять текстовые и составные строки, а также таблицы. Форматирование добавленных полей подробно описано в книжке «Описание конфигурации Розница», раздел 9.4.5 Шаблоны этикеток, ценников и чеков ККМ.
  • Оплата — содержит 4 предопределенных типа оплаты. В этот раздел так же, как и в шапку документа, добавить ничего нельзя.

В макет могут быть добавлены текстовые строки или строки с реквизитами объектов конфигурации из списка Доступные поля. В правой части экрана отобразится внешний вид распечатанного по данной форме документа, указанного в качестве образца.

Пользователь может загрузить для редактирования расширенный пример шаблона чека. В расширенном примере демонстрируется настройка дополнительного нефискального документа с начисленными бонусами.

Рис. 3

Пользователь может добавить несколько нефискальных документов с помощью кнопки Добавить нефискальный документ. Созданный документ уже будет содержать папку Состав чека, который не содержит предопределенных полей и редактируется так же, как и состав чека в фискальном документе. При печати чека на ККТ по шаблону сначала печатается фискальный документ, затем, если печать фискального документа произошла успешно, последовательно выполняют печать нефискальных документов отдельными командами.

Пользователь может также указать общие параметры печати документа: ширину чековой ленты в печатных символах.

Помимо загрузки шаблонов, поставляемых с конфигурацией, пользователь может импортировать извне уже настроенный шаблон из внешнего файла или выгрузить в файл подготовленный новый шаблон с помощью команд меню Шаблон.

Интересные статьи

Кассовый чек при оплате банковской картой

Поэтапное внедрение онлайн-касс предусмотрено нормами закона № 54-ФЗ от 22.05.2003 (ред. от 03.07.2016). Этим документом регламентируются обязательства субъектов хозяйствования по оснащению торговых точек ККТ с фискальными накопителями и доступом к интернету.

Оплата покупки банковской картой должна сопровождаться выдачей чека, как и при наличном расчете. Кассовый чек при оплате банковской картой не печатается только в том случае, если расчет произведен без личного контакта продавца и покупателя (в Интернете), но при этом покупателю на электронную почту или абонентский номер отправляется электронная версия чека (п. 5 ст. 1.2 закона № 54-ФЗ).

Кассовый чек при безналичной оплате: последние нововведения

Госдума уже рассмотрела и утвердила законопроект № 344028-7, которым вносятся дополнительные уточнения в закон № 54-ФЗ. Текст проекта документа приведен на ]]>сайте законопроектов]]>. Назначение последних правок – оптимизация существующего порядка применения ККТ. Законопроект должен дать ответы на вопросы о возможности использования кассовой техники нового образца на режимных предприятиях, а также о проблеме выдачи кассовых чеков при произведенных расчетах в безналичной форме с физлицами. Новым правовым актом расширяется список льготных категорий предпринимателей, которым предоставлено право не переходить на онлайн-кассы.

Принятым Госдумой законопроектом № 344028-7 предлагается внести в действующую схему применения онлайн-касс ряд дополнений по освобождению от обязательств по применению ККТ. Обойтись без кассовых аппаратов, наряду с ранее освобожденными от них категориями, смогут:

  • учреждения, которые оказывают платные услуги парковки;
  • библиотеки, подчиняющиеся муниципалитетам, другие организации, занимающиеся библиотечным делом на возмездной основе;
  • лица, деятельность которых связана с торговлей на разлив молоком и водой;
  • деятельность по торговле водой через автоматы самообслуживания;
  • продавцы бумажной прессы.

ККТ разрешено использовать субъектам хозяйствования, работающим на территории режимных предприятий военизированного типа. Кассовая техника в этом случае должна быть отключена от интернета, оборудование надо настраивать под автономную работу без ежедневной передачи электронных данных о пробитых чеках в базу ФНС.

Кассовый чек при безналичной оплате при торговле через вендинговые автоматы можно будет не печатать. На несколько таких торговых объектов разрешат устанавливать один кассовый аппарат. Кассовые чеки не нужно будет выдавать клиентам при применении ККТ, если суть операции заключается в зачете или возврате аванса по некоторым оказываемым услугам (перевозки, связи и т.д.).

Документ уточняет описание труднодоступных местностей, на территории которых разрешено обойтись без ККТ. К этой категории населенных пунктов отнесены административные центры, если они являются единственным поселением в конкретном районе.

Законопроектом также произведено уточнение самого понятия «расчеты» – из него исключено упоминание наличных денежных расчетов и расчетов электронными средствами платежа, они заменены на наличные и безналичные выплаты. Расчеты охватывают теперь не только движение разных форм денежных ресурсов, но и зачет ранее осуществленных предоплат. К группе расчетов отнесено и получение/погашение займов для оплаты товаров и услуг.

Кассовый чек при оплате банковской картой при осуществлении расчетов в интернете должен формироваться в обязательном порядке. Его можно распечатать или ограничиться электронной формой документа. Электронный чек необходимо направить покупателю любым удобным способом – на электронный почтовый ящик, через смс-сообщение. Безналичный расчет обязывает сформировать чек не позднее следующего за расчетом рабочего дня и не позднее момента передачи покупателю товара.

Если оплата производится через банк, чек должен быть оформлен и выдан день в день или на следующие рабочие сутки. Отсчет срока начинается с даты зачисления средств на расчетный счет продавца.

Применение онлайн-касс при безналичных расчетах останется актуальным при взаимоотношениях между субъектами предпринимательства и физическими лицами. ИП и юридические лица между собой могут проводить безналичные платежи без онлайн-касс, кроме случаев расчетов с предъявлением электронного средства платежа, в т.ч. банковской карты.

Чек с онлайн-кассы


Кассовые чеки – что пробивает онлайн-касса и как проверить информацию из чека?

Мы ежедневно что-то покупаем. Предприниматели ежедневно продают десятки, сотни или даже тысячи товаров. Каждая сделка между покупателем и продавцом по закону должна оформляться документально. Документом, служащим подтверждением сделки, является кассовый чек.


Правила формирования чеков, требования к кассам – устройствам, которые формируют чеки, – а также порядок их применения предпринимателями четко описаны в федеральном законодательстве. За исполнением этих правил и требований на территории Российской Федерации следит Федеральная налоговая служба.


Чек – это документ, в котором фиксируются данные о проданном товаре, продавце и технических устройствах, зафиксировавших факт продажи.


Как выглядит чек – образец чека онлайн-кассы, реквизиты и описание

Информация, которая обязательно должна содержаться в чеке онлайн-кассы, описана в статье 4.7 Федерального закона № 54-ФЗ. Также предприниматель (владелец кассового аппарата) может по своему усмотрению добавить на чек дополнительную информацию.


Ознакомимся с примером реального чека и пройдемся по его реквизитам. Порядок их вывода (то есть какой поле следует за каким) законом не оговорен и зависит от модели онлайн-кассы и ее настройки владельцем.

1. Брендирование

В «шапке» чека продавец, как правило, указывает информацию о себе в красивой форме. Сюда можно разместить логотип компании, название, слоган и т.п. Эту часть чека можно заполнить в свободной форме, указав нужные данные в настройках кассы. Естественно, включение логотипа в фискальный чек – это не требование ФНС, а просто опция, которую заложили производители ККТ и которую предприниматели могут использовать в маркетинговых целях.


2. Информация о товаре.

В чек обязательно заносится наименование товаров (работ, услуг). Наименование товара может быть внесено кассиром вручную при оформлении чека или выбрано из номенклатурной базы товаров, которая была добавлена в ККТ заблаговременно. При установке необходимого оборудования и программного обеспечения, наименования товаров могут автоматически генерироваться кассой при считывания штрих-кода с товара.


3. Количество товаров

Количество товаров (работ, услуг). Обязательный реквизит.


4. Цена за единицу товара

Цена за единицу указывается с учетом скидок и наценок. Также обязательный реквизит.


5. Стоимость

Стоимость с учетом скидок и наценок. Вычисляется как цена единицы товара, умноженная на количество. Обязательный реквизит.


6. Ставка НДС

Ставка налога на добавленную стоимость. В данном примере указан символ «А», как сноска на строку, которая приведена ниже и в которой указаны 18%. Обязательный реквизит.


7. Скидка

Сумма начисленной скидки – по каждой позиции и в сумме. Необязательное поле, но оно обычно включено в функционал кассы и активно используется предпринимателями.


8. Сумма расчета

Итоговая стоимость к оплате по всем позициям с учетом всех налогов, сборов, скидок, акций, бонусов. Обязательно к включению в чек.


9. Сумма НДС

Итоговая сумма НДС. Указывается обязательно, и отдельно по каждой ставке НДС, если по разным товарным позициям были разные ставки.


10. Форма расчета

В форме расчета указывается сумма оплаты наличными денежными средствами и (или) электронными средствами платежа. Обязательный реквизит


11. Организация, ИНН

Наименование организации-владельца кассового аппарата (или ФИО индивидуального предпринимателя) и ИНН. Обязательный реквизит.


12. Место расчета

Место расчета за товара. Указывается адрес с почтовым индексом, или наименование и номер транспортного средства (например, для такси), или адрес в сети Интернет (для Интернет-магазинов). Обязательный реквизит.


13. Система налогообложения

Также обязательно указывается применяемая система налогообложения: ОСН, УСН, ЕНВД и т.п.


14. Форма расчета

Обязательное поле. Возможные значения:

  1. Приход – получение средств от покупателя;
  2. Возврат прихода – возврат средств, полученных от покупателя;
  3. Расход – выдача средств покупателю;
  4. Возврат расхода – получение средств от покупателя (клиента), выданных ему.

15. Время расчета

Дата и время расчета. Обязательное поле.


16. Кассир

должность и фамилия лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек или бланк строгой отчетности и выдавшего (передавшего) его покупателю (клиенту). Обязательное поле.


17. Номер смены, порядковый номер чека за смену

Тоже обязательные реквизиты.


18. Адрес сайта для проверки чека

По новому закону каждый чек может быть проверен через Интернет, поскольку информация о всех кассовых операциях теперь передается в ФНС России через оператора фискальных данных. Обязательный реквизит.


19. Информация о фискальной технике

В чеке обязательно должны присутствовать следующие данные: РН ККТ – регистрационный номер контрольно-кассовой техники, ФН – заводской номер экземпляра модели фискального накопителя, ФН – фискальный признак документа (присваивается кассовому чеку в ОФД), ФД – порядковый номер фискального документа. Названия аббревиатур могут отличаться в зависимости от модели ККТ.


20. QR-код

На современных чеках обязательно размещается QR-код для перехода на страницу проверки данного чека на сайте уполномоченного органа. Подразумевается, что с использованием смартфонов проверить чек можно за несколько секунд.


21. Рекламный блок.

Блок с дополнительной информацией. Предприниматель может разместить любые информационные материалы, которые сочтет нужным.


22. Информация об электронных средствах расчета.

Иногда данные с терминала, используемого для приема платежей с банковских карт, выводятся на кассовом чеке вместе с фискальной информацией.


23. Наименование документа.

Кассовый чек или бланк строгой отчетности. Обязательный реквизит.


Электронные чеки

По требованию покупателя кассовый чек должен направляться в электронной форме на указанный им адрес электронной почты или номер телефона. Этот функционал реализован в подавляющем большинстве современных моделей ККТ, а также может проводиться Оператором фискальных данных. Кассиру потребуется только ввести номер телефона/e-mail, далее техника сделает все сама.


Кассовые чеки и бланки строгой отчетности (БСО)

В ряде законодательных актов фигурирует термин бланк строгой отчетности. Если обратиться к 54-ФЗ, регламентирующему состав фискальных документов, то требования к кассовым чекам и БСО там абсолютно идентичные. Отличаются только названия. С точки зрения кассовой техники кассовый чек и БСО – это одинаковые документы, отличающиеся только наименованием.


Как использовать кассовый чек в маркетинге

Использование онлайн кассовой техники стало обязательным элементом ведения бизнеса в России. В то же время многие предприниматели впервые столкнулись с кассовыми аппаратами в 2017 и 2018 годах. Поэтому не всем известно о функционале, который заложен в современные модели онлайн-касс.

Интеграция ККТ с товароучетными системами

Многие модели ККТ имеют возможность подключиться к товароучетной системе. Наполнение номенклатурной базы и ведение разного рода учетов можно полностью автоматизировать. Например, можно интегрировать онлайн-кассу в работу популярной товароучетной системой «1C».

Скидки и акции

В кассовый аппарат можно заложить работу скидочных программ, акций, оплату бонусами и т.п. Сложность реализации зависит от конкретной модели кассы.

Рекламная информация

На чеках можно печатать разного рода рекламные сообщения, информацию об акциях, проводимых магазином, в общем все, на что хватит фантазии маркетолога. Не следует упускать из вида этот канал взаимодействия с клиентами.



typeof — JavaScript | MDN

Оператор typeof возвращает строку, указывающую тип неоцененного операнда.

За типом оператора следует его операнд:

  тип операнда
typeof (операнд)
  

Параметры

операнд

Выражение, представляющее объект или примитив, тип которого должен быть возвращен.

В следующей таблице приведены возможные возвращаемые значения типа .Для дополнительную информацию о типах и примитивах см. также на странице структуры данных JavaScript.

Примечание: ECMAScript 2019 и более ранние разрешенные реализации должны иметь typeof возвращает любое строковое значение, определяемое реализацией, для невызываемого нестандартные экзотические предметы.

Единственный известный браузер, который действительно воспользовался этим, — это старый Интернет. Explorer (см. Ниже).

Основное использование

 
typeof 37 === 'число';
Тип 3.14 === 'число';
typeof (42) === 'число';
typeof Math.LN2 === 'число';
typeof Infinity === 'число';
typeof NaN === 'число';
typeof Number ('1') === 'число';
typeof Number ('башмак') === 'число';

typeof 42n === 'bigint';


typeof '' === 'строка';
typeof 'bla' === 'строка';
typeof `template literal` === 'строка';
typeof '1' === 'строка';
typeof (typeof 1) === 'строка';
typeof String (1) === 'строка';


typeof true === 'логическое';
typeof false === 'логическое';
typeof Boolean (1) === 'логический';
typeof !! (1) === 'логическое';


typeof Symbol () === 'символ'
typeof Symbol ('foo') === 'символ'
typeof Символ.итератор === 'символ'


typeof undefined === 'undefined';
typeof createdButUndefinedVariable === 'undefined';
typeof undeclaredVariable === 'undefined';


typeof {a: 1} === 'объект';



typeof [1, 2, 4] === 'объект';

typeof new Date () === 'объект';
typeof / regex / === 'объект';


typeof new Boolean (true) === 'объект';
typeof new Number (1) === 'объект';
typeof new String ('abc') === 'объект';


typeof function () {} === 'функция';
typeof class C {} === 'функция';
typeof Math.sin === 'функция';
  

нулевой тип
 
typeof null === 'объект';
  

В первой реализации JavaScript значения JavaScript были представлены как тип тег и значение.Тег типа для объектов был 0 . null было представлен как нулевой указатель ( 0x00 на большинстве платформ). Следовательно, null имел 0 в качестве тега типа, следовательно, type of return значение «объект» . (Справка)

Было предложено исправление для ECMAScript (через опцию), но оно было отклоненный. Это привело бы к typeof null === 'null' .

Использование

новый оператор
 
let str = new String ('Строка');
let num = новое число (100);

typeof str;
typeof num;

let func = new Function ();

typeof func;
  

Необходимость в круглых скобках в синтаксисе

 
пусть iData = 99;

typeof iData + 'Wisen';
typeof (iData + 'Wisen');
  

Регулярные выражения

Вызываемые регулярные выражения были нестандартным дополнением в некоторых браузерах.

  typeof / s / === 'функция';
typeof / s / === 'объект';
  

Ошибки

До ECMAScript 2015, type of всегда гарантированно возвращал строку для любого операнда, с которым он был поставлен. Даже с необъявленными идентификаторами, typeof вернет 'undefined' . Использование типа никогда не мог сгенерировать ошибку.

Однако с добавлением с блочной областью видимости пусть и const , используя тип на let и const переменных (или с использованием типа в классе ) в блок до того, как они будут объявлены, вызовет ReferenceError .Блокировать переменные находятся во «временном мертвая зона «от начала блока до обработки инициализации, во время которого он выдаст ошибку при доступе.

  typeof undeclaredVariable === 'undefined';

typeof newLetVariable;
typeof newConstVariable;
typeof newClass;

let newLetVariable;
const newConstVariable = 'привет';
class newClass {};
  

Исключения

Все текущие браузеры предоставляют нестандартный документ хост-объекта .все с типом undefined .

  typeof document.all === 'undefined';
  

Хотя спецификация допускает теги настраиваемого типа для нестандартных экзотических объектов, она требует, чтобы эти теги типа отличались от предопределенных. Случай document.all , имеющий тип 'undefined' , классифицирован в сети стандартов как «умышленное нарушение» исходного стандарта ECMA JavaScript.

Использование в реальных условиях

type of очень полезен, но не так универсален, как может потребоваться.Для Например, typeof ([]) , это 'object' , а также typeof (new Date ()) , typeof (/ abc /) и т. Д.

Для большей специфичности в проверке типов используется оболочка type of для использования в Код производственного уровня будет следующим (при условии, что obj существует):

  тип функции (obj, showFullClass) {

    
    if (showFullClass && typeof obj === "объект") {
        вернуть Object.prototype.toString.(массив | bigint | дата | ошибка | функция | генератор | регулярное выражение | символ) $ /)? deepType:
       (typeof obj === 'объект' || typeof obj === 'function')? 'объект': typeof obj;
  }
  

Для проверки несуществующих переменных, которые в противном случае выдали бы ReferenceError , используйте typeof nonExistentVar === 'undefined' .

Таблицы BCD загружаются только в браузере

Примечания, относящиеся к IE

В IE 6, 7 и 8 многие объекты хоста являются объектами, а не функциями.Например:

  typeof alert === 'объект'
  

Некоторые нестандартные свойства IE возвращают другие значения (tc39 / ecma262 # 1440 (комментарий)):

  typeof window.external.AddSearchProvider === "неизвестно";
typeof window.external.IsSearchProviderInstalled === "неизвестно";
  

python — Как добавить проверки для определенного типа

Рассмотрим следующий модуль под названием restrict.py

  def restrict (cls, cache = []):
    кеш.=)] * \) ", л)
            для м в м:
                пытаться:
                    print ("Попытка", м)
                    strargs = m.split (c) [1]
                    cmd = f "cls {strargs}"
                    eval (cmd)
                    print (m, «в строке», lix, «оценено»)
                кроме ValueError как e:
                    print (m, «в линию», lix, «бросил», e)

  

и еще один модуль с именем main.py, который вы хотите протестировать

  из ограничения импорта, static_check

@ограничивать
класс Restricted ():
    def __new __ (cls, x: int = None) -> int:
        если x равно None:
            поднять ValueError ("Неопределенная инициализация")
        элиф х <0:
            поднять (ValueError ("<0"))
        elif x> 255:
            поднять (ValueError ("> 255"))
        вернуть int (x)

def output_foo (x):
    Запрещено (-1)
    возврат с ограничениями (999)

Ограниченный (1)

если __name__ == "__main__":
    static_check (__ file__, ограничить)
  

работает python main.py с терминала напечатает вам

  Попытка ограничена ()
Restricted () в строке 5 вызвал неопределенную инициализацию
Попытки ограничены (-1)
Ограничено (-1) в строке 16 выбросило <0
Попытки ограничены (999)
Ограничено (999) в строке 17 выбросило> 255
Попытки ограничены (1)
Ограничено (1) в строке 19 оценено
  

Не защищает static_check с помощью if __name__ == "__main__", пункт позволит вам проверить во время импорта.

Вы можете проверить во время синтаксического анализа, например.г. Предположим, у вас есть файл с именем limited.py со следующим кодом:

  класс Запрещено ():

    def __new __ (cls, x):
        import sys
        белье = sys._getframe (). f_back.f_lineno
        если x <0:
            print (f "Значение {x} слишком низкое в строке {бельеo}")
        если x> 255:
            print (f "Значение {x} слишком велико в строке {бельеo}")
        вернуть int (x)

def invalid_foo (x: Restricted = Restricted (300)):
    вернуть х

def valid_foo (x: Restricted = Restricted (222)):
    вернуть х
  

, который печатает Значение 300 слишком велико в строке 13 , когда вы импортируете модуль / анализируете код, e.г. из bash с python limited.py в дополнение к mypy limited.py .

По-видимому, ни mypy, ни pytype сами по себе не распечатали сообщение, поэтому кажется, что они фактически не импортируют модуль, а вместо этого анализируют файл напрямую. Можно объединить проверку типов и импорт в bash с помощью tpcheck () {mypy $ 1 && python $ 1; } , а затем вы можете позвонить по номеру tpcheck limited.py , чтобы сделать и то, и другое.

Обратите внимание: NewType на самом деле не создает новый класс.как говорит _doc__: «Во время выполнения NewType (name, tp) возвращает фиктивную функцию, которая просто возвращает свой аргумент».

Альтернативным вариантом может быть автоматическое создание модульного теста, например с шнек-питон . Например, когда мы добавляем следующий код в предыдущий фрагмент:

  def output_foo ():
    возврат с ограничениями (999)

если __name__ == '__main__':
    импортный шнек

    с auger.magic ([Ограничено]):
        output_foo ()
  

tpcheck также показал мне ошибку в output_foo, т.е.е. Значение 999 слишком велико в строке 22 . Обратите внимание, что я обнаружил ошибку со шнеком, которую мне пришлось исправить вручную (см. Https://github.com/laffra/auger/issues/23). Кроме того, mypy пожаловался на отсутствие импорта для шнека, поэтому мне пришлось переопределить tpcheck () {mypy $ 1 --ignore-missing-import && python3 $ 1; } .

Но, в конце концов, все сводится к вызову функции и ее выполнению во время выполнения. Не понимаю, как этого избежать, но, по крайней мере, вы можете попытаться автоматизировать это настолько, насколько это возможно.

Дополнительная статическая типизация для Python

Почему mypy?

Проверка типов во время компиляции
Статический набор текста упрощает поиск ошибок с меньшим количеством отладки.
Более простое обслуживание
Объявления типа действуют как машинно-проверенная документация. Статическая типизация упрощает понимание кода и упрощает его изменение. без внесения ошибок.
Превратите динамические программы в статические набор текста
Вы можете разрабатывать программы с динамической типизацией и добавлять статическая типизация после того, как ваш код созрел, или перенесите существующие Код Python для статической типизации.

Mypy — это необязательная программа проверки статического типа для Python, предназначенная для чтобы объединить преимущества динамического (или «утиного») набора текста и статического набора текста. Mypy сочетает в себе выразительную мощь и удобство Python с мощной системой типов и проверкой типов во время компиляции.Тип Mypy проверяет стандартные программы Python; запускать их с помощью любой виртуальной машины Python практически без накладных расходов во время выполнения.

Выпущен Mypy 0.910

22 июня 2021 г. : Выпущен Mypy 0.910. Этот выпуск включает — неинтерактивную командную строку возможность установки заглушек без вмешательства пользователя, а также другие исправления и улучшения. Python 3.5 устарел. Прочтите Сообщение блога для подробностей. -Юкка Лехтосало

Mypy 0.901 выпущен

8 июня 2021 г. : Выпущен Mypy 0.901. Этот выпуск перемещает сторонние библиотечные заглушки для пакетов-заглушек, что позволяет использовать новые заглушки легко использовать без обновления mypy. Mypy теперь поддерживает pyproject.toml и type guards, и корабли колеса для Apple Кремний. Кроме того, есть много других функций и ошибок исправления. Прочтите Сообщение блога для подробностей. -Юкка Лехтосало

Предстоящий переход на модульный тип в mypy 0.900

26 мая 2021 г. : следующий выпуск mypy больше не будет связывать заглушки для сторонних библиотек.Прочтите этот пост в блоге, если вам интересно, что это значит для пользователей mypy и почему мы делаем это. -Юкка Лехтосало

Выпущен Mypy 0.812

19 февраля 2021 г. : Выпущен Mypy 0.812. В этом выпуске исправлена ​​регрессия в поведении поиска модулей. и добавляет флаг —exclude для исключения определенных путей при поиске модули. Прочтите Сообщение блога для подробностей. -Юкка Лехтосало

Старые новости

def fib (n):
    а, Ь = 0, 1
    в то время как a 
def fib (n: int) -> Итератор [int]:
    а, Ь = 0, 1
    в то время как a 

Перенести существующий код на статическую типизацию, по отдельности.Вы можете свободно смешивать статическую и динамическую типизацию в программе, внутри модуль или внутри выражения. Не нужно откажитесь от динамической типизации - используйте статическую типизацию когда это имеет смысл. Часто просто добавление сигнатур функций дает статически типизированный код. Mypy может определять типы других переменные.

Mypy type проверяет программы, в которых аннотации типов соответствуют PEP 484. Начать работу легко, если вы знаете Python. Цель состоит в том, чтобы поддерживать почти все конструкции языка Python в mypy.

Mypy имеет мощную современную систему типов с такими функциями, как двунаправленный вывод типов, дженерики, вызываемые типы, абстрактные базовые классы, множественное наследование и типы кортежей.

Многие часто используемые библиотеки имеют заглушки (статически типизированный интерфейс определения), которые позволяют mypy проверять, использует ли ваш код библиотеки правильно.

Коды ошибок

включены по умолчанию - документация Mypy 0.910

В этом разделе описаны различные коды ошибок, которые может генерировать mypy. с параметрами по умолчанию.См. Раздел Коды ошибок для общей документации. по поводу кодов ошибок. Коды ошибок для дополнительных проверок документов дополнительные коды ошибок, которые можно включить.

Убедитесь, что атрибут существует [определено атрибутом]

Mypy проверяет, что атрибут определен в целевом классе или модуле при использовании оператора точки. Это относится как к получению, так и к настройке атрибут. Новые атрибуты определяются назначениями в классе body, или присвоения self.x в методах. Эти задания не генерировать ошибок , определенных attr.

Пример:

Ресурс класса
:
    def __init __ (self, name: str) -> Нет:
        self.name = имя

r = Ресурс ('x')
print (r.name) # ОК
print (r.id) # Ошибка: "Ресурс" не имеет атрибута "id" [определено атрибутом]
r.id = 5 # Ошибка: "Ресурс" не имеет атрибута "id" [определено атрибутом]
 

Этот код ошибки также генерируется, если импортированное имя не определено. в модуле в операторе from ... import (пока целевой модуль можно найти):

 # Ошибка: модуль "os" не имеет атрибута "non_existent" [определено атрибутом]
из ОС импортировать несуществующий
 

Ссылке на отсутствующий атрибут дается тип Any .в В приведенном выше примере тип non_existent будет Any , что может быть важным, если вы заглушите ошибку.

Убедитесь, что атрибут существует в каждом элементе объединения [union-attr]

Если вы обращаетесь к атрибуту значения с типом объединения, mypy проверяет что атрибут определен для каждого типа в этом союз. В противном случае операция может завершиться ошибкой во время выполнения. Это также относится к необязательным типам.

Пример:

 от набора импортного союза

класс Cat:
    def sleep (self) -> Нет:...
    def miaow (self) -> None: ...

класс Dog:
    def sleep (self) -> Нет: ...
    def follow_me (self) -> Нет: ...

def func (животное: Союз [Кошка, Собака]) -> Нет:
    # ОК: "сон" определен как для кошки, так и для собаки
    animal.sleep ()
    # Ошибка: элемент «Кот» из «Союз [Кошка, Собака]» не имеет атрибута «follow_me» [union-attr]
    animal.follow_me ()
 

Эти ошибки часто можно обойти, используя assert isinstance (obj, ClassName) или assert obj is not None , чтобы сообщить mypy, что вы знаете, что тип более конкретный чем думает mypy.

Убедитесь, что имя определено [имя определено]

Mypy ожидает, что все ссылки на имена будут иметь соответствующие определение в активной области, например, присвоение, функция определение или импорт. Это может отловить недостающие определения, пропущенные импорт и опечатки.

В этом примере случайно вызывается sort () вместо sorted () :

 x = sort ([3, 2, 4]) # Ошибка: имя "sort" не определено [определено именем]
 

Проверить аргументы в вызовах [call-arg]

Mypy ожидает, что количество и имена аргументов соответствуют вызываемой функции.Обратите внимание, что проверки типа аргумента имеют отдельный код ошибки arg-type .

Пример:

 от ввода последовательности импорта

def greet (name: str) -> Нет:
     print ('привет', имя)

greet ('jack') # ОК
greet ('jill', 'jack') # Ошибка: слишком много аргументов для "приветствия" [call-arg]
 

Проверить типы аргументов [тип-аргумента]

Mypy проверяет, соответствуют ли типы аргументов в вызове объявленному аргументу типы в сигнатуре вызываемой функции (если таковая существует).

Пример:

 от ввода списка импорта, необязательно

def first (x: List [int]) -> Необязательно [int]:
     вернуть x [0], если x иначе 0

т = (5, 4)
# Ошибка: аргумент 1 для "first" имеет несовместимый тип "Tuple [int, int]";
# ожидается "List [int]" [arg-type]
печать (первая (т))
 

Проверить вызовы перегруженных функций [call-overload]

Когда вы вызываете перегруженную функцию, mypy проверяет, что хотя бы один из сигнатуры элементов перегрузки соответствуют типам аргументов в вызов.

Пример:

 от ввода перегрузки импорта, необязательно

@overload
def inc_maybe (x: None) -> None: ...

@overload
def inc_maybe (x: int) -> int: ...

def inc_maybe (x: Необязательно [int]) -> Необязательно [int]:
     если x равно None:
         return None
     еще:
         вернуть x + 1

inc_maybe (Нет) # ОК
inc_maybe (5) # ОК

# Ошибка: вариант перегрузки "inc_maybe" не соответствует типу аргумента "float" [call-overload]
inc_maybe (1,2)
 

Проверить правильность типов [допустимый тип]

Mypy проверяет, что каждая аннотация типа и любое выражение, которое представляет тип является допустимым типом.Примеры допустимых типов включают классы, типы объединения, вызываемые типы, псевдонимы типов и литеральные типы. Примеры недопустимых типов включают голые целочисленные литералы, функции, переменные и модули.

В этом примере неправильно используется функция log как тип:

 из списка импорта

def log (x: object) -> Нет:
    print ('журнал:', repr (x))

# Ошибка: функция "t.log" недопустима как тип [допустимый тип]
def log_all (objs: List [объект], f: log) -> Нет:
    для x в objs:
        f (x)
 

Вы можете использовать Callable в качестве типа для вызываемых объектов:

 от ввода списка импорта, вызываемый

# ХОРОШО
def log_all (objs: List [объект], f: Callable [[объект], None]) -> None:
    для x в objs:
        f (x)
 

Требовать аннотацию, если тип переменной неясен [var-annotated]

В некоторых случаях mypy не может определить тип переменной без явная аннотация.Mypy рассматривает это как ошибку. Это обычно происходит, когда вы инициализируете переменную с пустой коллекцией или Нет . Если mypy не может определить тип элемента коллекции, mypy заменяет любые части типа, которые он не может вывести с помощью Any , и генерирует ошибка.

Пример с ошибкой:

Комплект класса
:
    def __init __ (self) -> Нет:
        # Ошибка: требуется аннотация типа для "items"
        # (подсказка: "items: List [] = ...") [var-annotated]
        себя.items = []

раскрыть_тип (Bundle (). items) # список [Любой]
 

Чтобы решить эту проблему, мы добавляем явную аннотацию:

 из списка импорта

класс Bundle:
    def __init __ (self) -> Нет:
        self.items: List [str] = [] # OK

раскрыть_тип (Bundle (). items) # список [str]
 

Проверить действительность переопределений [переопределение]

Mypy проверяет, совместим ли переопределенный метод или атрибут с базовый класс. Метод в подклассе должен принимать все аргументы что принимает метод базового класса, а возвращаемый тип должен соответствовать к типу возвращаемого значения в базовом классе (принцип подстановки Лискова).

Типы аргументов могут быть более общими - это подкласс (т. Е. Они могут варьироваться контравариантно). Тип возвращаемого значения можно сузить в подклассе (т.е. может изменяться ковариантно). Можно определить дополнительные аргументы в методе подкласса, пока все дополнительные аргументы имеют значение по умолчанию значения или могут быть опущены (например, * аргументы ).

Пример:

 от ввода импорта Необязательно, Союз

класс Base:
    def метод (self,
               arg: int) -> Необязательно [int]:
        ...

класс Derived (Base):
    def метод (self,
               arg: Union [int, str]) -> int: # ОК
        ...

класс DerivedBad (База):
    # Ошибка: аргумент 1 "метода" несовместим с "базовым" [переопределить]
    def метод (self,
               arg: bool) -> int:
        ...
 

Убедитесь, что функция возвращает значение [return]

Если функция имеет тип возврата, отличный от None , mypy ожидает, что функция всегда явно возвращает значение (или вызывает исключение).Функция не должна упасть с конца функции, так как это часто является ошибкой.

Пример:

 # Ошибка: отсутствует оператор возврата [return]
def show (x: int) -> int:
    печать (х)

# Ошибка: отсутствует оператор возврата [return]
def pred1 (x: int) -> int:
    если x> 0:
        вернуть x - 1

# ХОРОШО
def pred2 (x: int) -> int:
    если x> 0:
        вернуть x - 1
    еще:
        поднять ValueError ('не определено для нуля')
 

Убедитесь, что возвращаемое значение совместимо [return-value]

Mypy проверяет, что возвращаемое значение совместимо с типом подпись функции.

Пример:

 def func (x: int) -> str:
    # Ошибка: несовместимый тип возвращаемого значения (получено "int", ожидалось "str") [возвращаемое значение]
    вернуть x + 1
 

Проверить типы в операторе присваивания [присваивание]

Mypy проверяет, совместимо ли присвоенное выражение с цель назначения (или цели).

Пример:

Ресурс класса
:
    def __init __ (self, name: str) -> Нет:
        self.name = имя

r = ресурс ('A')

r.name = 'B' # ОК

# Ошибка: несовместимые типы в присваивании (выражение имеет тип int,
# переменная имеет тип "str") [назначение]
р.name = 5
 

Проверить значения переменных типа [type-var]

Mypy проверяет, что значение переменной типа совместимо со значением ограничение или тип верхней границы.

Пример:

 от ввода import TypeVar

T1 = TypeVar ('T1', целое число, число с плавающей запятой)

def add (x: T1, y: T1) -> T1:
    вернуть x + y

add (4, 5.5) # ОК

# Ошибка: значение переменной типа "T1" из "add" не может быть "str" ​​[type-var]
добавить ('х', 'у')
 

Проверить использование различных операторов [оператор]

Mypy проверяет, поддерживают ли операнды бинарные или унарные операции, такие как + или ~ .Операции индексирования настолько распространены, что имеют свои собственный код ошибки , индекс (см. ниже).

Пример:

 # Ошибка: неподдерживаемые типы операндов для + ("int" и "str") [оператор]
1 + 'х'
 

Проверить операции индексирования [индекс]

Mypy проверяет, что индексированное значение в операции индексирования, например x [y] поддерживает индексирование, и что выражение индекса имеет допустимый тип.

Пример:

 a = {'x': 1, 'y': 2}

a ['x'] # ОК

# Ошибка: недопустимый тип индекса "int" для "Dict [str, int]"; ожидаемый тип "str" ​​[индекс]
печать (a [1])

# Ошибка: неверный тип индекса "байты" для "Dict [str, int]"; ожидаемый тип "str" ​​[индекс]
a [b'x '] = 4
 

Пункты контрольного списка [list-item]

При построении списка с использованием [item,...] , mypy проверяет, что каждый элемент совместим с типом списка, который выводится из окружающих контекст.

Пример:

 из списка импорта

# Ошибка: элемент списка 0 имеет несовместимый тип "int"; ожидаемый "str" ​​[элемент списка]
a: Список [str] = [0]
 

Проверить элементы dict [dict-item]

При построении словаря с использованием {ключ: значение, ...} или dict (ключ = значение, ...) , mypy проверяет, что каждый ключ и значение совместимы с типом словаря, который выводится из окружающего контекста.

Пример:

 от ввода import Dict

# Ошибка: запись Dict 0 имеет несовместимый тип "str": "str"; ожидаемый "str": "int" [dict-item]
d: Dict [str, int] = {'ключ': 'значение'}
 

Проверить элементы TypedDict [typeddict-item]

При создании объекта TypedDict mypy проверяет совместимость каждого ключа и значения с типом TypedDict , который выводится из окружающего контекста.

При получении элемента TypedDict mypy проверяет, что ключ существует.При назначении TypedDict mypy проверяет, что оба ключ и значение действительны.

Пример:

 из typing_extensions import TypedDict

класс Point (TypedDict):
    x: int
    y: int

# Ошибка: несовместимые типы (выражение имеет тип "float",
# Элемент TypedDict "x" имеет тип "int") [typeddict-item]
p: Point = {'x': 1.2, 'y': 4}
 

Убедитесь, что известен тип цели [has-type]

Mypy иногда выдает ошибку, если не определил тип для ссылка на переменную.Это может произойти для ссылок на переменные, которые инициализируются позже в исходном файле, и для ссылки на модули, которые образуют цикл импорта. Когда это происходит, ссылка получает неявный тип Any .

В этом примере определения x и y круглые:

 класс Проблема:
    def set_x (self) -> Нет:
        # Ошибка: невозможно определить тип "y" [has-type]
        self.x = self.y

    def set_y (self) -> Нет:
        себя.y = self.x
 

Чтобы обойти эту ошибку, вы можете добавить аннотацию явного типа к целевая переменная или атрибут. Иногда вы также можете реорганизовать код так, чтобы определение переменной размещалось раньше, чем ссылка на переменную в исходном файле. Распутывание цикличности импорт также может помочь.

Мы добавляем явную аннотацию к атрибуту y , чтобы обойти выпуск:

 класс Проблема:
    def set_x (self) -> Нет:
        себя.x = self.y # ОК

    def set_y (self) -> Нет:
        self.y: int = self.x # Сюда добавлена ​​аннотация
 

Убедитесь, что цель импорта найдена [import]

Mypy выдает ошибку, если не может найти исходный код или заглушку. для импортированного модуля.

Пример:

 # Ошибка: не удается найти реализацию или заглушку библиотеки для модуля с именем 'acme' [импорт]
импортный акме
 

См. Отсутствующие импортные данные, чтобы узнать, как обойти эти ошибки.

Убедитесь, что каждое имя определено один раз [no-redef]

Mypy может генерировать ошибку, если у вас есть несколько определений для имени в том же пространстве имен.Причина в том, что это часто ошибка, так как второе определение может перезаписать первое. Также mypy часто не может определить, указывают ли ссылки на первый или второе определение, которое поставит под угрозу проверку типов.

Если вы отключите эту ошибку, все ссылки на определенное имя относятся к первое определение .

Пример:

 класс A:
    def __init __ (self, x: int) -> Нет: ...

class A: # Ошибка: имя "A" уже определено в строке 1 [no-redef]
    def __init __ (self, x: str) -> Нет:...

# Ошибка: аргумент 1 до «A» имеет несовместимый тип «str»; ожидаемый "int"
# (первое определение побеждает!)
А ('х')
 

Убедитесь, что вызываемая функция возвращает значение [func-returns-value]

Mypy сообщает об ошибке, если вы вызываете функцию с None возвращаемый тип и не игнорируйте возвращаемое значение, так как это обычно (но не всегда) ошибка программирования.

В этом примере проверка if f () всегда ложна, так как f возвращает Нет :

 def f () -> Нет:
    ...

# ОК: мы ничего не делаем с возвращаемым значением
f ()

# Ошибка: "f" не возвращает значение [func-returns-value]
если f ():
     print ("не ложь")
 

Проверить создание абстрактных классов [аннотация]

Mypy генерирует ошибку, если вы пытаетесь создать экземпляр абстрактной базы. класс (ABC). Базовый класс abtract - это класс, в котором есть хотя бы один абстрактный метод или атрибут. (См. Также документацию модуля abc )

Иногда класс делают случайно абстрактным, часто из-за нереализованный абстрактный метод.В таком случае вам необходимо предоставить реализация метода, чтобы сделать класс конкретным (не абстрактное).

Пример:

 из abc import ABCMeta, abstractmethod

класс Persistent (метакласс = ABCMeta):
    @abstractmethod
    def save (self) -> Нет: ...

класс Thing (постоянный):
    def __init __ (self) -> Нет:
        ...

    ... # Нет метода "сохранения"

# Ошибка: не удается создать экземпляр абстрактного класса «Вещь» с абстрактным атрибутом «сохранить» [аннотация]
t = вещь ()
 

Проверьте цель NewType [valid-newtype]

Целью определения NewType должен быть тип класса.Это не может быть типом объединения, Любой или различными другими специальными типами.

Вы также можете получить эту ошибку, если цель была импортирована из модуль, источник которого mypy не может найти, поскольку любые такие определения обрабатывается mypy как значения с Любые типы . Пример:

 от ввода импорта NewType

# Источник для "acme" недоступен для mypy
from acme import Entity # type: ignore

# Ошибка: аргумент 2 для NewType (...) должен быть подклассом (получил "Any") [valid-newtype]
UserEntity = NewType ('UserEntity', сущность)
 

Чтобы обойти проблему, вы можете предоставить mypy доступ к источникам для acme или создайте файл-заглушку для модуля.См. Отсутствующий импорт за дополнительной информацией.

Проверьте тип возврата __exit__ [exit-return]

Если mypy может определить, что __exit__ всегда возвращает False , mypy проверяет, что тип возвращаемого значения - , а не bool . Логическое значение тип возвращаемого значения влияет на то, какие строки mypy считает достижимыми после с оператором , поскольку любой метод __exit__ , который может возвращать True может принимать исключения.В результате может возникнуть неточный тип возвращаемого значения. в загадочных ошибках сообщается около с утверждениями.

Чтобы исправить это, используйте typing_extensions.Literal [False] или Нет как возвращаемый тип. Возврат Нет эквивалентно возвращает False в этом контексте, поскольку оба обрабатываются как false значения.

Пример:

 класс MyContext:
    ...
    def __exit __ (self, exc, value, tb) -> bool: # Ошибка
        печать ('выход')
        вернуть ложь
 

Это дает следующий результат mypy:

 пример.py: 3: error: "bool" недопустимый тип возврата для "__exit__", который всегда возвращает False
example.py:3: note: используйте "typing_extensions.Literal [False]" в качестве возвращаемого типа или измените его на
    "Никто"
example.py:3: note: Если тип возврата «__exit__» подразумевает, что он может вернуть True, контекст
    менеджер может принимать исключения
 

Вы можете использовать Literal [False] , чтобы исправить ошибку:

 из typing_extensions import Literal

класс MyContext:
    ...
    def __exit __ (self, exc, value, tb) -> Literal [False]: # OK
        печать ('выход')
        вернуть ложь
 

Вы также можете использовать Нет :

 класс MyContext:
    ...
    def __exit __ (self, exc, value, tb) -> None: # Также ОК
        печать ('выход')
 

Убедитесь, что именование согласовано [name-match]

Определение именованного кортежа или TypedDict должно иметь имя последовательно при использовании синтаксиса на основе вызовов. Пример:

 от ввода import NamedTuple

# Ошибка: первым аргументом в namedtuple () должен быть Point2D, а не Point
Point2D = NamedTuple ("Point", [("x", int), ("y", int)])
 

Сообщить о синтаксических ошибках [синтаксис]

Если проверяемый код синтаксически неверен, mypy выдает ошибка синтаксиса.Большинство, но не все синтаксические ошибки - это , блокирующие ошибки : их нельзя игнорировать с типом #: игнорировать комментарий .

Прочие проверки [разное]

Mypy выполняет множество других, реже неудачных проверок, которые не имеют конкретные коды ошибок. В них используется код ошибки misc . Другой чем используется для множественных несвязанных ошибок, код ошибки misc не особенный. Например, вы можете игнорировать все ошибки в этом категория с использованием # тип: игнорировать [разное] комментарий.Поскольку эти ошибки не ожидается, что вы увидите два различных ошибок с кодом misc в одной строке - хотя это определенно может происходить время от времени.

Примечание

В будущих версиях mypy, вероятно, будут добавлены новые коды ошибок для некоторых ошибок. которые в настоящее время используют код ошибки misc .

типов · pkg.go.dev

ExampleInfo распечатывает различные факты, записанные средством проверки типов в types.Info struct: определения и ссылки на каждый именованный объект, а также тип, значение и режим каждого выражения в пакете.

основной пакет

Импортировать (
"байты"
"fmt"
"вперед / назад"
"перейти / формат"
"перейти / парсер"
"идти / токен"
"идти / типы"
"бревно"
"Сортировать"
"струны"
)

func main () {
// Разбираем единственный исходный файл.
const input = `
пакет фиб

строка типа S

var a, b, c = len (b), S (c), "привет"

func fib (x int) int {
if x <2 {
вернуть х
}
вернуть fib (x-1) - fib (x-2)
} `
fset: = токен.NewFileSet ()
f, err: = parser.ParseFile (fset, "fib.go", input, 0)
if err! = nil {
log.Fatal (ошибка)
}

// Тип-проверка пакета.// Создаем пустую карту для каждого типа ввода
// нас интересуют, а Check заполняет их.
info: = types.Info {
Типы: make (map [ast.Expr] types.TypeAndValue),
Defs: make (map [* ast.Ident] types.Object),
Использует: make (map [* ast.Ident] types.Object),
}
var conf types.Config
pkg, err: = conf.Check ("fib", fset, [] * ast.File {f}, & info)
if err! = nil {
log.Fatal (ошибка)
}

// Вывести переменные уровня пакета в порядке инициализации.
fmt.Printf ("InitOrder:% v \ n \ n", info.InitOrder)

// Для каждого именованного объекта распечатываем строку и
// столбец его определения и каждого его использования.fmt.Println ("Определения и способы использования каждого именованного объекта:")
usesByObj: = make (map [types.Object] [] строка)
для id, obj: = информация о диапазоне. Использует {
posn: = fset.Position (id.Pos ())
lineCol: = fmt.Sprintf ("% d:% d", posn.Line, posn.Column)
usesByObj [obj] = append (usesByObj [obj], lineCol)
}
var items [] строка
для obj используется: = range usesByObj {
sort.Strings (использует)
item: = fmt.Sprintf ("% s: \ n определено в% s \ n используется в% s",
types.ObjectString (объект, types.RelativeTo (pkg)),
fset.Position (obj.Pos ()),
струны.Присоединиться (использует, ","))
items = append (элементы, элемент)
}
sort.Strings (items) // сортируем по строке: col, фактически
fmt.Println (strings.Join (items, "\ n"))
fmt.Println ()

fmt.Println ("Типы и значения каждого выражения:")
items = nil
for expr, tv: = range info.Types {
var buf bytes.Buffer
posn: = fset.Position (expr.Pos ())
tvstr: = tv.Type.String ()
if tv.Value! = nil {
tvstr + = "=" + tv.Value.String ()
}
// строка: col | expr | режим: тип = значение
fmt.Fprintf (& buf, "% 2d:% 2d |% -19s |% -7s:% s",
позн.Строка, posn.Column, exprString (fset, expr),
режим (тв), твстр)
items = append (элементы, buf.String ())
}
sort.Strings (элементы)
fmt.Println (strings.Join (items, "\ n"))

}

func mode (tv types.TypeAndValue) string {
выключатель {
case tv.IsVoid ():
вернуть "void"
case tv.IsType ():
вернуть "тип"
case tv.IsBuiltin ():
вернуть "встроенный"
case tv.IsNil ():
вернуть "ноль"
case tv.Assignable ():
if tv.Addressable () {
вернуть "var"
}
вернуть "mapindex"
case tv.IsValue ():
вернуть "значение"
дефолт:
вернуть "неизвестно"
}
}

func exprString (fset * token.FileSet, expr ast.Expr) string {
var buf bytes.Buffer
формат.узел (& buf, fset, expr)
вернуть buf.String ()
}
 
 Выход:

InitOrder: [c = "hello" b = S (c) a = len (b)]

Определения и использование каждого именованного объекта:
встроенная длина:
  определено в -
  используется в 6:15
функция fib (x int) int:
  определено на fib.go: 8: 6
  используется в 12:20, 12: 9
введите строку S:
  определено на fib.go: 4: 6
  используется в 6:23
введите int:
  определено в -
  используется в 8:12, 8:17
строка типа:
  определено в -
  используется в 4: 8
var b S:
  определено на fib.go: 6: 8
  используется в 6:19
var c строка:
  определено в fib.перейти: 6: 11
  используется в 6:25
var x int:
  определено на fib.go: 8: 10
  используется в 10:10, 12:13, 12:24, 9: 5

Типы и значения каждого выражения:
 4: 8 | строка | тип: строка
 6:15 | len | встроенный: func (строка) int
 6:15 | len (b) | значение: int
 6:19 | б | var: fib.S
 6:23 | S | тип: fib.S
 6:23 | S (c) | значение: fib.S
 6:25 | c | var: строка
 6:29 | "привет" | значение: строка = "привет"
 8:12 | int | тип: int
 8:17 | int | тип: int
 9: 5 | х | var: int
 9: 5 | x <2 | значение: нетипизированный логический тип
 9: 9 | 2 | значение: int = 2
10:10 | х | var: int
12: 9 | фиб | значение: func (x int) int
12: 9 | fib (x - 1) | значение: int
12: 9 | fib (x-1) - fib (x-2) | значение: int
12:13 | х | var: int
12:13 | х - 1 | значение: int
12:15 | 1 | значение: int = 1
12:20 | фиб | значение: func (x int) int
12:20 | fib (x - 2) | значение: int
12:24 | х | var: int
12:24 | х - 2 | значение: int
12:26 | 2 | значение: int = 2
 

Проверка типа в JavaScript: операторы typeof и instanceof

JavaScript - это язык со слабой типизацией, поэтому ограничений на тип переменной нет.

Например, если вы создали переменную строкового типа, позже вы можете присвоить той же переменной номер:

  let message = 'Привет';

message = 14;  

Такой динамизм дает вам гибкость и упрощает объявление переменных.

С другой стороны, никогда нельзя быть уверенным, что переменная содержит значение определенного типа. Например, следующая функция greet (who) ожидает строковый аргумент, однако вы можете вызвать функцию с любым типом аргумента:

  функция приветствие (кто) {
  return `Привет, $ {who}!`
}

приветствовать ('Мир');

привет (правда);
приветствовать ([1]);  

Вот почему иногда вам нужно проверить тип переменной в JavaScript - используя оператор typeof , а также instanceof для проверки типов экземпляров.

Давайте посмотрим более подробно, как использовать type of и instanceof операторов в JavaScript.

1.

тип оператор

В JavaScript вы можете найти примитивные типы, такие как строки, числа, логические значения, символы. Кроме того, есть функции, объекты и специальные значения undefined и null .

typeof - это оператор, позволяющий определить тип выражения :

  const typeAsString = typeof выражение;  

, где выражение возвращает значение, тип которого вы хотите найти. выражение может быть переменной myVariable , средством доступа к свойству myObject.myProp , вызовом функции myFunction () или даже необработанным литералом 14 .

typeof expression , в зависимости от значения , выражение оценивается как одна из строк: 'строка' , 'число' , 'логическое' , 'символ' , 'undefined' , 'объект' , 'функция' .

Давайте посмотрим, как тип оператора работает для каждого типа:

A) Строки:

  const message = 'привет!';
тип сообщения;  

Б) Номера:

  константное число = 5;
тип номера;

typeof NaN;  

C) Логические:

  const ok = true;
typeof ok;  

D) Символы:

  const symbol = символ ('ключ');
тип символа;  

E) undefined :

  const ничего = undefined;
типа ничего;  

F) Объектов:

  const object = {имя: 'Бэтмен'};
тип объекта;

константный массив = [1, 4, 5];
typeof массив;

const regExp = / Hi /;
typeof regExp;  

G) Функции:

  функция приветствие (кто) {
  return `Привет, $ {who}!`
}

тип приветствия;  

А как насчет типа null ? Ох уж это неприятно!

1.1

нулевой тип

Как упоминалось в предыдущем разделе, type of объекта оценивается как «объект» . Это ожидаемо.

Однако typeof null также оценивается как «объект» !

  const missingObject = null;
typeof missingObject;  

По слухам, typeof null , являющийся «объектом» , было ошибкой в ​​начальной реализации JavaScript.

Поэтому при использовании типа для обнаружения объекта обязательно проверьте еще раз t null дополнительно:

  function isObject (object) {
  return typeof object === 'объект' && объект! == null;
}

isObject ({имя: 'Бэтмен'});
isObject (15);
isObject (ноль);  

Следуйте за моим сообщением Все о null в JavaScript, чтобы узнать больше о null в JavaScript.

1,2.

тип и не определенные переменные

Хотя обычно typeof выражения определяет тип выражения , вы можете использовать type of также, чтобы определить, определена ли переменная или нет.

JavaScript выдает ошибку ссылки, если вы обращаетесь к переменной, которая не определена:

Но typeof имеет приятное свойство - ошибка ссылки не сгенерирована , когда typeof оценивает тип неопределенной переменной:

Переменная notDefinedVar не определена в текущей области.Однако typeof notDefinedVar не выдает ошибку ссылки и оценивается как строка 'undefined' .

Вы можете использовать typeof , чтобы определить, не определена ли переменная: typeof myVar === 'undefined' оценивается как true , если myVar не определено.

Следуйте посту 3 способа проверить, определена ли переменная в JavaScript, чтобы узнать больше об определенных / не определенных переменных.

2.

instanceof operator

Обычный способ использования функции JavaScript - вызвать ее, добавив пару скобок после ее имени:

  функция приветствие (кто) {
  return `Привет, $ {who}!`;
}

приветствовать ('Мир');  

greet ('World') - это обычный вызов функции.

Но функции JavaScript могут делать больше: они могут даже создавать объекты! Чтобы создать объекты функции, просто используйте новое ключевое слово перед вызовом обычной функции:

  function Greeter (who) {
  this.message = `Привет, $ {who}!`;
}

const worldGreeter = новый Greeter ('Мир');
worldGreeter.message;  

new Greeter ('World') - вызов конструктора, который создает экземпляр worldGreeter .

Как вы можете проверить в JavaScript, что определенный экземпляр был создан с помощью определенного конструктора? Добро пожаловать экземпляр оператора:

  const bool = объект instanceof Конструктор;  

, где объект - это выражение, оценивающее объект, Contructor - это класс или функция, которая создает объекты. instanceof оценивается как логическое.

Экземпляр worldGreeter был создан с использованием конструктора Greeter , поэтому экземпляра worldGreeter для Greeter оценивается как true .

Начиная с ES2015, лучший способ создания объектов - использовать синтаксис класса . Например, давайте определим класс Pet , а затем создадим его экземпляр myPet :

  class Pet {
  конструктор (имя) {
    это.name = name;
  }
}

const myPet = новый питомец ('Лилия');  

new Pet ('Lily') - вызов конструкции, который создает экземпляр myPet .

Начиная с myPet был построен с использованием Pet class - const myPet = new Pet ('Lily') - myPet instanceof Pet также оценивается как true :

Однако простой объект не является экземпляром Pet :

  const plainPet = {имя: 'Зои'};
plainPet instanceof Pet;  

Что касается более практических примеров, вы можете найти instanceof полезным для определения встроенных специальных экземпляров, таких как регулярные выражения, массивы:

  function isRegExp (value) {
  возвращаемое значение instanceof RegExp;
}
isRegExp (/ Привет /);
isRegExp ('Привет');

function isArray (value) {
  возвращаемое значение instanceof Array;
}
isArray ([1, 2, 3]);
isArray ({prop: 'Val'});  

2.1

экземпляр и родительский класс

Теперь класс Cat расширяет родительский класс Pet :

  class Cat extends Pet {
  конструктор (имя, цвет) {
    супер (имя);
    this.color = цвет;
  }
}

const myCat = new Cat ('Калли', 'красный');  

Как и ожидалось, myCat является экземпляром класса Cat :

Но в то же время myCat также является экземпляром базового класса Pet !

Проще говоря, экземпляра объекта Constructor оценивается как true , если объект является экземпляром Constructor , но также, если Constructor является родительским классом класса экземпляра.

3. Резюме

JavaScript - это язык со слабой типизацией, что означает отсутствие ограничений на тип переменной.

Таким образом, иногда необходимо проверить, какой тип имеет переменная.

typeof expression - это оператор, который позволяет определить тип выражения . typeof оценивает одно из значений: 'строка' , 'число' , 'логическое' , 'символ' , 'undefined' , 'объект' , 'функция' .

typeof null оценивается как 'object' , поэтому правильный способ использования typeof для обнаружения объекта - typeof object === 'object' && object! == null .

instanceof позволяет идентифицировать конструктор экземпляра. object instanceof Constructor оценивается как true , если объект является экземпляром Constructor .

Тест: какой встроенный конструктор для которого instanceof для любого объекта возвращает true ?

Новый тип теста может лучше определить иммунитет к коронавирусу

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

Тест, если он будет разрешен Управлением по санитарному надзору за качеством пищевых продуктов и медикаментов, станет первым коммерческим продуктом для обнаружения реакции Т-лимфоцитов - типа иммунных клеток - на вирус. Антитела доминировали в разговоре об иммунитете с самого начала пандемии, но ученые считают, что Т-клетки могут быть не менее важны для предотвращения повторного заражения.

Тест был разработан Adaptive Biotechnologies, компанией из Сиэтла. Компания использовала небольшие образцы крови у 1000 человек из 25 мегаполисов США, а также еще у 3500 участников из Европы, чтобы создать тест, который может обнаружить недавнюю или прошлую инфекцию коронавируса.

Данные компании еще не рассмотрены для публикации в научном журнале, но эксперты считают, что работа многообещающая для оценки роли Т-лимфоцитов в заболевании, вызванном коронавирусом.

Воздействие патогена возбуждает несколько ветвей иммунной системы: антитела, но также и иммунные клетки, которые могут организовать борьбу с злоумышленником.

«То, что мы разрабатываем, по сути, является способом взглянуть на эту клеточную часть иммунитета», - сказал доктор Лэнс Балдо, главный медицинский директор Adaptive Biotechnologies.

Антитела до сих пор привлекали к себе большое внимание - в основном потому, что их тестирование проводится быстро и легко. Но уровни антител имеют тенденцию к снижению после излечения активного заболевания и могут быть не обнаружены в течение нескольких месяцев.

Несколько исследований показали, что Т-клетки, которые помнят вирус, сохраняются не менее шести месяцев. «Растет осознание того, что Т-клетки важны и могут быть даже лучшим индикатором клинического исхода», чем антитела, - сказал Алессандро Сетте, иммунолог из Института иммунологии Ла-Хойи в Калифорнии.

Но выделение Т-клеток - сложный и обременительный процесс, сильно ограничивающий информацию об их роли.

Каждая из триллионов Т-клеток, присутствующих при рождении, несет на своей поверхности уникальный рецептор, который может обнаружить другую молекулу или антиген от потенциальных захватчиков. Это огромное разнообразие Т-клеточных рецепторов позволяет человеческому организму распознавать практически любой новый патоген, с которым он может столкнуться (хотя подавляющее большинство может никогда не встретить их себе равных). Но это также делает для ученых болезненно обременительным выявление 20 или 30 Тл. среди триллионов клеток, которые могут распознавать фрагменты определенного патогена, такого как коронавирус.

«Одна из жестоких вещей в иммунологии - это то, что все белые кровяные тельца выглядят одинаково», - сказал Шейн Кротти, вирусолог из Института иммунологии Ла-Хойи. «Вы даже не можете отличить В-клетки от Т-клеток, не говоря уже о Т-клетках, специфичных для вируса».

Чтобы найти Т-клетки, специфичные для вируса, исследователи должны сначала отделить основную часть иммунных клеток от нескольких миллилитров крови, что требует времени. Затем они промывают и подсчитывают клетки и стимулируют их кусочками вируса, чтобы идентифицировать крошечный пул Т-клеток, которые реагируют.Активированные клетки высвобождают молекулу, называемую гамма-интерфероном, которая служит сигналом их активности.

«Чем лучше анализ, тем он сложнее», - сказал д-р Кротти. «Вы получаете все больше и больше информации, но она становится все более и более сложной».

Один исследователь может обработать не более пяти образцов крови в течение полутора дней.

«Вот почему в каждой статье, посвященной Т-клеткам, количество изучаемых предметов никогда не превышает 100», - сказал д-р.Антонио Бертолетти, вирусолог из Медицинской школы Duke NUS в Сингапуре. «Также никогда не было большого спроса на погружение в тонкости тестов на Т-лимфоциты».

Adaptive Biotechnologies использует совершенно другой подход: вместо того, чтобы смотреть на клетки, компания сосредоточилась на секвенировании белков на поверхности клеток.

Понимание статуса вакцин в США

У каждого человека свой репертуар из триллионов Т-клеточных рецепторов, известных как TCR.Но по крайней мере некоторые из этих TCR идентичны таковым у других людей. «Мы называем эти общедоступные последовательности рецепторов Т-клеток, потому что теоретически многие люди в популяции будут вызывать эти реакции», - сказал д-р Бальдо.

Когда началась пандемия, Adaptive Technologies уже работала с Microsoft над разработкой диагностического теста на болезнь Лайма на основе TCR, проекта, ставшего возможным благодаря появлению быстрых и недорогих технологий секвенирования.

Обращаясь к коронавирусу, команда определила 135000 общедоступных TCR, которые распознают 545 фрагментов вируса.Исследователи сообщили в сентябре, что около 11 из этих 545 антигенов вызывают самый сильный иммунный ответ. (Только один из этих антигенов, спайковый белок, используется для разработки вакцин.)

В новой работе команда проанализировала образцы от 2200 человек в Во, Италия, которые проверили всех 2900 жителей города на наличие коронавируса. в марте, когда там было много случаев. Тест исследователей, названный T-Detect, правильно идентифицировал 97 процентов тех, у кого был подтвержденный диагноз, по сравнению с 77 процентами с помощью коммерческого теста на антитела под названием DiaSorin.Результаты находятся в свободном доступе в базе данных ImmuneCode.

Компания создает лабораторный тест для широкой публики, который может диагностировать предшествующую инфекцию, а также сложную версию для компаний-производителей вакцин, заинтересованных в отслеживании Т-клеточных ответов на своих кандидатов.

Эксперты, не участвовавшие в работе, высоко оценили новаторский подход компании, но заявили, что хотят увидеть доказательства того, что тест был специфичен для коронавируса.

«В настоящее время нет единого мнения о том, что вы можете взять TCR от одного человека, которые являются специфическими для данного человека, и сказать, что другой человек инфицирован вирусом последовательным образом», - сказал доктор.- сказал Кротти. «Если они придумали способ сделать это, это здорово, но это довольно ново».

Коммерческий тест также не предоставит людям информации, кроме доказательств перенесенной инфекции, предостерегает Акико Ивасаки, иммунолог из Йельского университета.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *