не передано обязательное поле провайдера
Миф об обязательном поле
В мире разработки программных продуктов бытует немало мифов и заблуждений. Чтобы двигаться вперед, а не топтаться на месте, их совершенно необходимо разрушить. Сегодня об одном из самых закоренелых заблуждений, которое к тому же достаточно вредное — называется «Миф об обязательном поле».
Считается также, что некорректные (неполные) данные настолько страшны, что даже хранить их в базе данных уже некорректно. Ну и лень, разумеется — с точки зрения разработчика легче проверить корректность данных на этапе ввода и послать пользователя перепроверять свои данные, чем писать обработку ошибок там, где в системе эти данные будут реально использоваться.
Что на это имеет сказать современная наука проектирования взаимодействия с пользователем? Во-первых, стало ясно (уж не знаю, кому и когда, но достаточно давно точно, см. [1] и [2]), что все-таки программы разрабатываются для пользователей. В этом смысле программист уже не диктует условия, а скромно создает сугубо утилитарный продукт, инструмент, которым будут пользоваться люди для решения своих задач и достижения своих целей. Как утюг — если тебе нужно что-то погладить, ты его включаешь. Если он будет вместо того, чтобы гладить, модально предлагать скачать обновления из интернета, понятно, куда такой утюг полетит. Алан Купер [1] рекомендует представлять пользователей вашего продукта как очень умных, но очень занятых людей. Они, мол, не тупые и поймут, как вашим продуктом пользоваться, главное, вы только не вставайте у них на пути.
Я вообще считаю, что каждому программисту (дизайнеру, менеджеру, аналитику) следует проделать медитацию, упомянутую Сергеем Бодровым-мл.:
Ты становишься на углу оживленной улицы и представляешь, что тебя здесь нет. Вернее, тебя нет вообще. Пешеходы идут, сигналят машины, открываются двери магазинов, сменяются пассажиры на остановке. То есть в принципе мир продолжает жить и без тебя. Понимать это больно. Но важно.
Я, конечно, вовсе не хочу сказать, что программист — профессия ненужная, я сам программист и совсем так не считаю. Просто это неблагодарная профессия. Никто не придет и не похвалит за хорошо реализованный алгоритм. Если программа хороша, ей будут пользоваться без дополнительных вопросов. Так и должно быть, просто, чтобы быть программистом, надо к этому привыкнуть. А эти вот люди, которые идут по улице и сменяются на остановке — это ваши пользователи. Они используют вещи так, как они им нужны. В том числе и ваш продукт. Без вас. Они ничего о вас не знают, не хотят знать и никогда не узнают. Сергею Витальевичу, когда он в полярной тундре пытается вбить в систему снятые со счетчика показания, совершенно не интересно, почему система говорит ему, что сперва требуется указать какой-то там тип тарификации, даже если в момент проектирования вам казалось, что без типа тарификации ну уж никак не обойтись. А что касается примера про утюг, скачивающий обновления, то он взят совсем не из пальца — обратите внимание, как ведет себя при включении браузер Файерфокс.
Тут вообще будет что-нибудь про обязательные поля, спросит хабраюзер? Как раз сейчас начнется.
Штука в том, что реальный наш мир — это не математическая модель, параметры которой известны в любой момент времени. Для реальной жизни характерна скорее нехватка информации, чем ее наличие. У человека, заполняющего форму, требуемых данных может не быть — и не быть их может во всех обозримых пределах досягаемости, то есть не быть ваще. Эту проблему нельзя решить, просто сделав поле обязательным — значение из воздуха не возьмется. Вводя на формах обязательные поля в угоду целостности и полноте данных, мы на самом деле мешаем пользоваться системой. Столкнувшись с такой ситуацией, пользователь либо не станет заполнять форму (и не сможет работать с системой вовсе), либо заполнит недостающие данные рыбой — выдуманными или бессмысленными данными. И это свидетельствует не о том, что пользователь плохой или плохо старался, а лишь о том, что разработанная система недостаточно гибка для использования в условиях реального мира. То, что произошло во втором случае (ввод рыбы) — это вообще обман. Разработчик системы может сколько угодно делать вид, что все в порядке, но на самом деле в этом обмане виноват именно он. Причем непонятно, кто и что вообще выиграл — пользователь поимел головную боль, а в систему попали некорректные данные. Да попали так, что обнаружить, отфильтровать или подчистить их автоматически уже невозможно — в отличие от случая, если бы пользователь просто указал, что информация отсутствует.
Что же делать? Делать нужно хорошие программы. А именно, да, таки не ставить целостность схемы БД во главу угла, а ставить туда цели и задачи пользователей. Другими словами, принимать у пользователя неполные, а в некоторых случаях и некорректные данные, естественно, с возможностью исправить их в будущем. Вопреки заблуждению (да, еще одному) это возможно, это не так сложно и это даже работает. Кроме этого, нужно еще каким-то образом помогать, подсказывать пользователю, где, каких данных и для чего ему не хватает. Чтобы он видел и контролировал ситуацию.
Сколько обязательных полей должно быть на форме? В идеале, ноль. Всегда ли такое возможно? Для меня одним из примеров высшего пилотажа является операция создания папки в Виндоус. Казалось бы, уж меньше одного поля тут не сделаешь, однако нет, они умудрились реализовать создание так, что система не спрашивает ничего — даже несмотря на то, что технические ограничения не позволяют системе создать папку без имени. Это идеал, к которому нужно стремиться.
Естественно, система должна быть минимально умной, спрашивая у пользователя только то, что имеет отношение к задачам пользователя, а не к потребностям самой системы. Система как инструмент, помните? Как раз про пример с Файерфоксом — Гугл Хром, например, решил проблему Файерфокса, обновляясь тихонько в тот момент, когда пользователь его перезагружает. Пользователю об этом знать совсем не нужно — он и не знает. Достойный пример для подражания. Я, признаться, даже сперва не понял, чегой-то он меня ни разу не спрашивал, когда ему обновляться?
Еще был миф о важных полях (это те, которые необязательны, но желательны к заполнению). Здесь все еще проще — принудительно заставить заполнить поле нельзя. Следовательно, хоть помечай поле как обязательное, хоть не помечай — все равно напишут рыбу, чушь, отписку, если не захотят заполнять. Интерфейсного решения у этой проблемы нет. Важность полей нужно доносить до сотрудников на местах. А разработчику пометить поле как необязательное. И позволить редактировать.
UPD: В комментариях trijin и zhindetz понятнее сформулировали основную мораль топика: речь о системе черновиков, о снятии требования ввести все данные сразу и непротиворечиво. То есть да, делать необязательными даже те поля, без которых система не будет работать. Естественно, она и не будет работать, но пусть хотя бы данные похранит.
UPD #2: Уточню еще одну вещь, которую я сам не осозновал ясно, когда писал топик. Я не обсуждаю здесь вопросов уместности тех или иных полей на форме (это важная, но все-таки немного другая тема, чем та, которую мне хочется донести). Я скорее предлагаю переосмыслить саму концепцию ввода информации с помощью форм, тот традиционный подход, когда нужно заполнить всю форму сразу и корректно. Вместо этого я предлагаю промежуточное состояние (неполное, некорректное, противоречивое) тоже позволять сохранять в БД, явным образом помечая такое состояние как неполное/некорректное/противоречивое. Таким образом все ситуации «я сейчас знаю не все, но завтра, может быть, узнаю», которые традиционно решаются записыванием на бумажку, можно обрабатывать с помощью информационной системы. Естественно, такие данные не нужно пускать в бизнес-процесс в силу их некорректности — тут все остается как раньше. Они просто полежат в БД до лучших времен — не пригодятся, ну и бог с ними.
Не могу оплатить услуги ЖКХ
Тинькофф Банк опять сломался. Уже около двух месяцев невозможно просто взять и оплатить комуналку в приложении банка без звонков поддержку и общения в чате. Сначала появилась ошибка: «Адрес не распознан. Уточните адрес и повторите попытку.» при том, что оплата проводилась по шаблону, который до этого корректно позволял всё оплачивать. Далее, в том же шаблоне появилась ошибка: «Не передано обязательное поле провайдера». После долгих общений с поддержкой, где мне обещали в следующей версии приложения всё исправить, и корректировки шаблона,- оплату услуг ЖКХ всё же удалось провести.
В итоге, непосредственно оплата комкналки, на данный момент, заняла у меня больше часа времени, не говоря уже про ожидание ответа «специалистов», и да, я до сих пор ничего не оплатил. Зачем спрашивается такой «Банк» где нельзя просто взять и оплатить комуналку? Что бы читать обалденные истории (сегодня например, предлагают прочесть про соседа с дрелью и выбор антидождя для авто)? Или может, что бы заказать стол в ресторане (кто не в курсе, Тинькофф банк это может)? Нет, наверно, что бы заказать билеты в кино (это тоже может)?
И раз уж затронул тему ресторанов и кино в вашем приложении, ответьте мне пожалуйста, почему эти пункты находятся в одном разделе «Оплатить» рядом с платежами по ЖКХ и переводами организациям, но нет в этом разделе простой кнопки (как в другом известном банке) «Оплата по QR или штрих коду»?
Пожалуйста, станьте снова тем банком, который захочется рекомендовать.
Некомпетентная поддержка и критичный баг при оплате штрафаов
Добрый день!
Я обслуживаюсь в Тинькоф банке почти год, за это время успел попользоваться и блэк картой (весьма удобно при ежемесячном переводе родителям в Санкт-Петербург).
Поддержка требовала скриншотов виндоус версии, чтобы решить проблему, но проблемы не решаются, есть только имитация решения проблемы, с бесконечными вопросами и недоверием к клиенту.
Где служба монитроинга? Почему о проблемах сообщаю я вам, а не вы мне? Причем это второй раз, когда я не смог оплатить штраф, но в первый раз таки починили.
04.04.2017 17:44
Уважаемый Тинькофф-банк!
Сегодня, в 17:33 мне поступил странный звонок с номера +7 800 755 75 53 (ваш официальный номер). Молодой человек обратился ко мне по имени, представился и, внимание (!) захотел обсудить вопрос касаемо открытия расчетного счета.
Уточню, что у меня НЕТ ИП и никогда не было, но я решил выяснить, что происходит. Я задал вопрос: «Молодой человек, а откуда у вас мой ИНН?» Парень неуверенно на той стороне провода начал мямлить, что у меня открыта карта в Тинькофф (это правда), и мол данные оттуда.
Я решил уточнить: «Вы уверены, что я указывал свой номер ИНН при регистрации карты? Я думаю нет.»
Молодой человек выдержал несколько секунд паузу и добавил:
«Я не знаю, откуда этот номер, нам дают базу» и (!) бросил трубку!
Спасибо. Не успел отойти от прошлой проблемы, вы продолжаете портить свою репутацию. И смех и грех.
Единица.
Не передано обязательное поле провайдера
Группа: Новички
Сообщений: 14
Регистрация: 8.8.2018
Пользователь №: 177 537
В отчете об открытии смены в чеке выводит строку «Ошибка ФЛК». В отчете о закрытии смены в ЛК ОФД при просмотре указано:
buyOper: обязательное поле отсутствует.
buyReturnOper: обязательное поле отсутствует.
fiscalDriveSumReports.buyCorrection: обязательное поле отсутствует.
fiscalDriveSumReports.sellCorrection: обязательное поле отсутствует.
retailAddress: обязательное поле отсутствует.
retailPlace: обязательное поле отсутствует.
sellOper: обязательное поле отсутствует.
sellReturnOper: обязательное поле отсутствует.
shiftSumReports.buyCorrection: обязательное поле отсутствует.
shiftSumReports.sellCorrection: обязательное поле отсутствует.
user: обязательное поле отсутствует.
в тамошней поддержке ответили, что ККТ не передает обязательные реквизиты.
ККТ АТОЛ 50Ф, версия прошивки 7651, ФФД при регистрации указывал 1.1.
Из-за чего такое может быть?
В отчете об открытии смены в чеке выводит строку «Ошибка ФЛК». В отчете о закрытии смены в ЛК ОФД при просмотре указано:
buyOper: обязательное поле отсутствует.
buyReturnOper: обязательное поле отсутствует.
fiscalDriveSumReports.buyCorrection: обязательное поле отсутствует.
fiscalDriveSumReports.sellCorrection: обязательное поле отсутствует.
retailAddress: обязательное поле отсутствует.
retailPlace: обязательное поле отсутствует.
sellOper: обязательное поле отсутствует.
sellReturnOper: обязательное поле отсутствует.
shiftSumReports.buyCorrection: обязательное поле отсутствует.
shiftSumReports.sellCorrection: обязательное поле отсутствует.
user: обязательное поле отсутствует.
в тамошней поддержке ответили, что ККТ не передает обязательные реквизиты.
ККТ АТОЛ 50Ф, версия прошивки 7651, ФФД при регистрации указывал 1.1.
Из-за чего такое может быть?
upd хотя в печатной форме отчета о закрытии смены в ОФД например retailAddress и retailPlace адрес и место расчетов вполне себе отображаются
Корпоративная мобильная связь: что изменилось с июня 2021 года
Как организациям приобретать сим-карты с 1 июня 2021 года
С 1 июня 2021 года вступили в силу новые правила предоставления организациям и ИП услуг корпоративной мобильной связи (Федеральный закон от 30.12.2020 № 533-ФЗ).
В числе прочих изменений – новый порядок приобретения бизнесом через интернет корпоративных сим-карт, которые предполагается использовать в разного рода оборудовании (например, в онлайн-кассах) или в мобильных устройствах сотрудников компаний.
По новым правилам организация или ИП могут заключить договор об оказании услуг связи и приобрести корпоративные сим-карты через интернет одним из указанных ниже способов (п. 1 ст. 44 Федерального закона от 07.07.2003 № 126-ФЗ «О связи»):
Раскрытие информации о корпоративных сим-картах с 1 июня 2021 года
С 1 июня 2021 года обязательным условием предоставления и получения услуг корпоративной мобильной связи является раскрытие компаниями информации о себе и своих сотрудниках, которые пользуются такой связью.
Данная информация подлежит раскрытию в единой системе идентификации и аутентификации абонентов (ЕСИА), через которую будут контролировать и мониторить все организации и ИП, заключившие договоры с операторами мобильной связи и интернета.
В целях информационной безопасности и борьбы с телефонным мошенничеством компании теперь обязаны размещать в ЕСИА, которая интегрирована с единым порталом «Госуслуги», следующую информацию (п. 1.1 ст. 44 Федерального закона от 07.07.2003 № 126-ФЗ):
Сведения подаются по каждому оператору связи, с которым заключен договор. Все эти сведения абоненты вносят в ЕСИА сразу же после заключения договора с оператором связи, но до начала получения соответствующих услуг. В свою очередь оператор связи обязан проверять наличие таких сведений в системе мониторинга посредством направления запроса в ЕСИА до начала оказания услуг связи.
Если при проверке оператор связи обнаружит, что вышеуказанные сведения в ЕСИА отсутствуют или являются недостоверными, оператор обязан уведомить об этом абонента, предоставив ему срок для внесения/исправления в ЕСИА соответствующих сведений.
Если абонент в оговоренный с оператором срок не раскроет достоверную информацию о пользователях корпоративных сим-карт, оператор должен будет расторгнуть договор с абонентом и перестать обслуживать ранее выделенный компании абонентский номер (ст. 1 Федерального закона от 30.12.2020 № 533-ФЗ).
Раскрытие сведений о корпоративных сим-картах, используемых в оборудовании
Если корпоративная сим-карта используется организацией/ИП в применяемом оборудовании (онлайн-кассах, модемах, платежных терминалах и т.д.), то в единую систему идентификации и аутентификации должны вноситься следующие сведения (п. 2 постановления Правительства РФ от 31.05.2021 № 844):
Порядок раскрытия сведений о корпоративных сим-картах
Сведения о корпоративных сим-картах вносятся в единую систему идентификации и аутентификации через Единый портал государственных и муниципальных услуг. Внесение сведений осуществляется уполномоченным лицом абонента через учетную запись на портале «Госуслуги».
Уполномоченное компанией-абонентом физлицо вправе через портал «Госуслуги» вносить в ЕСИА и исключать из нее (п. 7 ст. 45 Федерального закона от 07.07.2003 № 126-ФЗ «О связи»):
Раскрыть данные о корпоративной сим-карте необходимо еще до момента ее использования в целях получения услуг связи. А именно – не позднее 3 рабочих дней до планируемой даты начала оказания услуг связи, если иной срок не определен договором с оператором мобильной связи/интернета (п. 3 постановления Правительства РФ от 31.05.2021 № 844).
Если раскрытые сведения претерпели какие-либо изменения (например, сменился адрес использования онлайн-кассы или поменялось Ф.И.О. предпринимателя), такие изменения компания должна отразить в единой системе идентификации в течение 3 рабочих дней со дня изменения сведений.
Если корпоративные сим-карты приобретались до 1 июня 2021 года и к указанному моменту уже использовались, то раскрыть информацию о таких сим-картах компании должны не позднее 30 ноября текущего года.
В противном случае операторы связи должны будут уже 1 декабря 2021 года заблокировать корпоративные сим-карты, по которым не была раскрыта информация в ЕСИА (ст. 2 Федерального закона от 30.12.2020 № 533-ФЗ).