Теория поиска ошибок :)

Ошибки есть всегда. Если ошибок нет - это значит, что их еще не нашли. Если в программе не найдено ни одной ошибки – значит эта программа никому не нужна, и никто ей не пользуется

Автор: Слава Кирлан

Преамбула

Ошибки есть всегда. Если ошибок нет - это значит, что их еще не нашли. Если в программе не найдено ни одной ошибки – значит эта программа никому не нужна, и никто ей не пользуется :).

Ошибаться не стыдно и не плохо (если мы, конечно, не говорим о сознательном вредительстве :) ). Плохо не пытаться их исправить. Совсем грустно, если исправить их нельзя. Но тут уж остается только смириться и «учесть-на-будушее», если оно (будущее) есть.

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

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

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

1.     А был ли мальчик?

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

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

2.     Разделяй и властвуй

Ошибка есть (увидели, убедились, поверили). Она стабильная (повторяется из раза в раз). Теперь мы пытаемся ее «упростить». В разных ситуациях делаем по разному, но суть одна – уменьшить пространство поиска.

2.1 К примеру оборотно-сальдовая ведомость за год показывает неправильные цифры. Начинаем уменьшать период, к примеру, по методу дихотомии золотого сечения (режем пополам и смотрим есть ли ошибка). Берем первое полугодие и смотрим, есть в нем ошибка. Если нет, значит ошибка во втором полугодии (лучше проверить это). Потом второе полугодие делим на кварталы и т.д. и т.п. – старый проверенный способ.

2.2 Другой пример при обмене данными через WEB-сервер в конечную программу попадают неправильные данные. Тут режем по алгоритму:

  1. Запрос формируется в исходной базе
  2. Данные перегоняются по сетке в базу приемник
  3. База приемник получает данные и записывает их

Считаем что каждый этап «Черный ящик» со своим входом и выходом. Вот и проверяем эти входы и выходы (в последовательности кому как нравится).

  1. Смотрим в исходной базе, что выдает запрос. Для этого пользуемся отладчиком, консолью запросов, всем чем угодно, но именно в этой базе (что бы отсечь все другие этапы)
  2. Смотрим, как работает web-сервис (сравниваем что ему отдает запрос, как он эти данные преобразовывает, и получаем ли мы на входе в базу приемник то самое что отправилось из базы источника)
  3. Смотрим, как база приемник разбирает полученные данные. Для этого можно создать (сохранить) отдельный файл обмена, и подавать ее раз за разом в качестве исходных данных (тем самым мы опять таки исключаем два других этапа)

2.3 Если у нас сложный многотабличный запрос – беспощадно его режем. Любой самый сложный запрос всегда состоит из конечного количества маленьких и легких запросиков, которые очень легко анализировать. Убедившись, что отдельные запросики возвращают «правильные» данные, начинаем потихонечку их склеивать в большой и сложный (аккуратно, поочередно), и каждый раз смотрим – правильный ли результат мы получаем

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

  • пользовательском режиме у конфигурации должна стоять опция «Параметры / Системные / Отладка разрешена».
  • запустить ту же самую конфигурацию в режиме конфигурирования и через «Отладка / Подключение» подключится к нужному пользовательскому сеансу.

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

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

Не думаю, что нужно расписывать все возможности отладчика, поскольку в руководствах пользователя и прочей «официальной литературе» это сделано куда как лучше :)

Наверно, бывают ситуации, когда отладчиком пользоваться невозможно. Тогда предлагаю менять код (только всегда предварительно делайте копии). Используйте сообщения, запись в какие-нибудь регистры, файлы. Да и просто убирайте куски кода. Благо мы не врачи – мы можем себе позволить отрезать «руку» и посмотреть «не перестанет ли болеть голова».

В общем, главное локализовать ошибку (упростить ее).

3. Спасение утопающих

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

  • в синтакс-помощнике (среди описания операторов)
  • в пресловутых «желтых книгах»
  • в других конфигурациях (по принципу «как там так и у меня должно быть»)
  • в интернете.

 Очень редко встречаются «новые ошибки». В большинстве случаев это старые ошибки на новый (или не очень) лад. Наверняка кто-то уже сталкивался с этим. Поэтому долго и нудно ищите везде где можете ответ, прежде чем отчаиваться и задавать вопрос кому-нибудь, и вот почему: 

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

 Если уж вы отчаялись и решили спросить, то вопрос должен быть информативным. Бессмысленно спрашивать «Почему у меня в СКД не выводится группировка?». Поясните, что из себя представляет схема, какая группировка у вас не выводится. Если программа выдает ошибку – напишите какую ошибку (прямо тот текст, который выдает программа). Ясно формулируйте, что у вас есть и что вы хотите. Чем понятней будет вопрос – тем больше шансов, что на него будет адекватный ответ. Но тут нужно чувствовать меру: вряд ли кто-то будет читать сообщение, состоящее из 1000 строк с описанием всей ситуации «от сотворения мира».

Вопрос должен быть кратким (читаемым) и конкретным, а иначе получится просто заспаменную тему с ехидными замечаниями «о жизни».

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

А тем кто отвечает очень хочется напомнить фразу «Мы все одинаково невежественные, но в разных областях» (Феликс Райчак не помню автора). Если спрашивают – это не значит что тот кто спрашивает глупее, он может быть просто менее опытный в этом вопросе. Хорошо что он пытается учиться, и мерзко его за это гнобить. Если не можешь ответить по теме (более чем пустой фразой «гугл найдет все») – лучше промолчать.

Заключение

Много букв получилось (расчувствовался :) ). Не оригинально, достаточно банально и очевидно. Даже, немного стыдно публиковать :) Но как ни странно очень часто сталкиваешься с тем, что эти всем известные истины люди упорно игнорируют.

Или я в чем-то ошибаюсь?

ЗЫ. Если текст бесполезный – можно снять публикацию. Во вложении, тот же текст но виде файла WORD (на всякий случай)

ЗЫЗЫ. Исправил обнаруженые ошибки

Комментарии

1
  • Дмитрий
    Спасибо автору

Земельный налог начисляют по данным Росреестра. ФНС: к нему и претензии

Налоговая база по земельному налогу – это кадастровая стоимость, внесенная в ЕГРН. Она применяется с 1 января года, являющегося налоговым периодом.

Налоговый терроризм, уплата взносов предпринимателем-пенсионером, налоговая помощь Трампа Байдену в обзоре

События дня. Налоговые события.

Обзоры для бухгалтера

Знакомство с экспертами Клерк.Консультаций: Надежда Камышева

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

Иллюстрация: Вера Ревина / Клерк

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора

На 6 рублей в 6-НДФЛ могут быть отклонения. Богатым инвесторам обещают вернуть больше НДФЛ. 🙏«Ночной бухгалтер» № 1728

Не стоит волноваться, если при умножении дохода на ставку рассчитанный налог в 6-НДФЛ не сойдется с реальным. Чем больше сотрудников, тем больше может быть разбег.

На 6 рублей в 6-НДФЛ могут быть отклонения. Богатым инвесторам обещают вернуть больше НДФЛ. 🙏«Ночной бухгалтер» № 1728
IT-компании

Свыше 18 тысяч IT-компаний продлили аккредитацию. Но это не все

2 тысячи компаний в сфере IT решили не подавать заявление на продление аккредитации. Они перестали соответствовать критериям.

Миграционный учет

Мигрантам предлагают носить цифровые браслеты

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

Опытом делятся эксперты-практики, без воды
Налог на имущество

Долги по налогу на имущество сократились на 31%

19 млн россиян закрыли долги по налогам после введения ЕНС.

Бесплатно с Уведомление по ЕНП

Какие налоги войдут в уведомление по ЕНП в июле 2024 года

В июльском уведомлении не будет взносов. В него войдет НДФЛ и квартальные авансовые платежи по другим налогам.

Какие налоги войдут в уведомление по ЕНП в июле 2024 года

ФАС признала недобросовестной конкуренцией копирование упаковки бренда «AXE»

Производителю запретили выпускать дезодоранты и гели для душа «EXXE» в упаковке, которая копирует фирменный стиль бренда «AXE».

6-НДФЛ

Как отразить отпускные в форме 6-НДФЛ

В статье расскажем, как отразить отпускные в форме 6-НДФЛ, как правильно заполнить расчет и не допустить ошибок.

Как отразить отпускные в форме 6-НДФЛ
Маркетплейсы

Что такое оборачиваемость товаров и как ее рассчитать

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

Что такое оборачиваемость товаров и как ее рассчитать

Повышение утильсбора будет поэтапным до 2030 года

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

Ценные бумаги

Что такое депозитарий и какова его роль на рынке ценных бумаг

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

Что такое депозитарий и какова его роль на рынке ценных бумаг
Лицензирование

На Госуслугах можно будет получить лицензию на дезинфекцию, дезинсекцию и дератизацию

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

Кредитные карты

Россияне стали брать больше денег по кредитным картам

Рост ключевой ставки ЦБ не ослабил спрос на кредитные карты. Клиенты стали чаще пользоваться беспроцентным периодом при оформлении таких продуктов.

🥳 Успейте купить онлайн-курсы по 3 290 рублей в честь Дня рождения школы «Клерка»! Акция действует до 22 июля

22 июля нашей школе пять лет! Мы хотим разделить этот праздник с вами, поэтому устраиваем суперакцию на онлайн-курсы. До понедельника, 22 июля, вы можете купить курсы по учету на маркетплейсах, финансовому анализу, ВЭД, работе на УСН и зарплате всего за 3 290 рублей.

Обучение для бухгалтеров

🎂 Суперакция в честь Дня рождения школы «Клерка»! Онлайн-курсы по 3 290 рублей

Какой же праздник без подарков? 22 июля мы отмечаем наш первый юбилей — 5 лет школе «Клерка»! До понедельника, 22 июля, вы можете купить курсы по учету на маркетплейсах, финансовому анализу, ВЭД, работе на УСН и зарплате всего за 3 290 рублей. Успейте воспользоваться выгодным предложением!

🎂 Суперакция в честь Дня рождения школы «Клерка»! Онлайн-курсы по 3 290 рублей
Обзоры новостей

⚡️ Итоги дня: Microsoft допустил глобальный технический сбой, в Москве «оранжевый» уровень из-за грозы, X5 начала доставлять посылки

Подготовили обзор главных событий дня — 19 июля 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

КоАП РФ

Решено, кто будет рассматривать жалобы на постановления административных комиссий

Минюстом разработал проект закона с изменениями в КоАП по конкретизации полномочий по пересмотру постановлений по делам об административных правонарушениях.

Интересные материалы

Бизнес не прошел проверку по 115-ФЗ: возможно ли исправить ситуацию

Многие предприниматели считают, что решение банка не в пользу клиента после запроса документов по 115-ФЗ — это конечная точка бизнеса. Однако, это далеко не так: банки стараются выстраивать отношения по принципам долгосрочного сотрудничества и помогать компаниям. Например, Сбер позволяет продолжить ведение бизнеса после блокировки по 115-ФЗ, если клиент скорректирует свою деятельность. Как получить помощь в Сбере после такого решения рассказываем в статье.

Бизнес не прошел проверку по 115-ФЗ: возможно ли исправить ситуацию