fixin (fixin) wrote,
fixin
fixin

Categories:

Рефакторинг исправленного

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

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

Ударили так сказать, индийским кодом по индийскому коду. Пришлось применять свой Гений 1С.

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

Что сделал первый индус?

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

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

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

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

Пользователи начали жаловаться и призвали Индуса Второго.

Тот просто добавил сортировку обеих таблиц - исходной и результата запроса и посчитал, что дело сделал.

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

Тогда пришел Гений 1С.

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

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

После этого алгоритм заработал как часы и у клиента, наконец-то, наступило простое человеческое бизнес-счастье!

Tags:
Subscribe

promo fixin декабрь 31, 2037 16:57 1420
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 47 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →