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

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

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

Преамбула

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

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

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

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

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

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
  • Дмитрий
    Спасибо автору
3-НДФЛ

Налоговики не будут штрафовать, если просрочка 3-НДФЛ произошла из-за технических ограничений

Штрафовать за просрочку из-за технических сбоев инспекторы не будут. Инспекторы разъяснили, что делать, если неквалифицированная электронная подпись (НЭП) для подачи декларации 3-НДФЛ не сгенерировалась.

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

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

Финансовые мошенники могут первое время реально выплачивать доход

В Москве сотрудники полиции задержали подозреваемого в многомиллионном мошенничестве под предлогом инвестирования.

Маркетинг

На майских праздниках хотят запретить продажу алкоголя

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

Лучшие спикеры, новый каждый день
Отпуска

Сотрудники имеют право уйти в отпуск за свой счет без согласия работодателя

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

Налоговой системе грозит модернизация: Минфин пообещал «донастройку» налогов. ⚡«Ночной бухгалтер» № 1672

Антон Силуанов сообщил, что в стране назрела необходимость налоговой «донастройки» и конкретные предложения по ней Минфин будет обсуждать с бизнесом в середине мая этого года. Интересно, бухгалтеров на обсуждение позовут?

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

Минфин: Россия занимает 3-е место по майнингу

Министерство финансов ожидает, что Госдума примет законопроекты, которые разрешат применять криптовалюту для расчетов по внешнеэкономическим контрактам.

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

Предпринимателя вызывают на опрос в полицию. Тактика успешного прохождения и защиты

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

Платежные системы

Клиенты провели более 2,5 млрд операций через СБП

Пользователи Системы быстрых платежей оплатили 700 млн покупок на общую сумму 1,2 трлн рублей.

Мошенничество

Через сервис поиска попутчиков можно никуда не уехать и остаться без денег

В Алтайском крае осудят участников группы, похитивших почти 1 млн рублей у 53 клиентов сервиса поиска попутчиков.

Собеседования

Какие распространенные страхи кандидатов перед собеседованием нерациональны

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

Иллюстрация: создано с помощью ИИ OpenAI © Вера Ревина/Клерк.ру
Бесплатно с Больничные

Как ИП в 2024 году оформить право на пособия по больничным

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

Как ИП в 2024 году оформить право на пособия по больничным
Бесплатно с Самозанятые

Обязательные и необязательные документы в работе с самозанятыми. Мини-курс

Какие обязательные и необязательные документы оформить при сотрудничестве с самозанятыми, рассказываем в мини-курсе.

Обязательные и необязательные документы в работе с самозанятыми. Мини-курс
Миникурсы, текстовые и видеоинструкции для бухгалтеров
Обзоры новостей

⚡️ Итоги дня: в поезде появился спа-вагон, в Дагестане начали выращивать голубику, а собака родила зеленого щенка

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

Социальный вычет

Вскрыта афера с получением вычетов за стоматологию

В Смоленской области направлено в суд уголовное дело о мошенничестве при получении социальных налоговых вычетов по НДФЛ за лечение.

Инвестиции

Как продать заблокированные активы

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

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

Аномальная нагрузка на электросеть помогла выявить майнинг криптовалюты

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

Кадровый учет

Медосмотры офисных работников: для кого обязательны, как проводить, ответственность

Многих работодателей интересует вопрос: обязательно ли проводить для своих офисных сотрудников медицинские осмотры? Какие риски с этим связаны и как все организовать, рассмотрим в статье.

Иллюстрация: freepik/freepik

Как правильно и выгодно «продать» себя на собеседовании

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

Как правильно и выгодно «продать» себя на собеседовании
Социальный вычет

💪 Известен размер вычета НДФЛ за сдачу норм ГТО. Подготовиться к сдаче норм может выйти и дороже, считает эксперт

Налоговый вычет по НДФЛ можно будет получить за сдачу норм ГТО.

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

Маркетплейсы

«Мегамаркет» начал продавать автомобили LADA

При оформлении заказа с покупателем свяжется менеджер «СберАвто», чтобы уточнить технические моменты и варианты доставки.