Вышел тут у нас самый что ни на есть настоящий детектив. Обратился клиент на УПП с несколько странной задачей – настроить расчет себестоимости. Учёт ведут лет десять.

У клиентов на УПП, конечно, случаются трудности с расчётом себестоимости, но они обычно локальные и связаны либо с изменениями (новые статьи затрат, изменение структуры или детальности), либо с ошибками в данных. Но чтоб после 10 лет и прям настроить, с нуля – такого видеть не приходилось.

Ну ладно, думаю, наверное людям просто лень было вникать. Смотрю базу – да нет, всё по-серьёзному. Много доработок, достаточно приличного качества, много данных, используются все основные разделы. И что настораживает – куча непроведённых документов расчёта себестоимости. Явно пытались, но что-то не получалось.

Думаю, щас шваркну, вот они удивятся. Но удивился я. Делаю расчёт – вообще ничего не происходит с данными. Никакие суммы нигде не появляются. Блин, ну так ведь не бывает – всегда что-то да закроется! А тут – ни хрена.

Понастраивал способы закрытия (у них РАУЗ), проверил настройки, шандарахнул тестирование и исправление ключей аналитики. Опять ноль реакции.

Пошёл смотреть регистр… Что-то не так. Во всех ключах аналитики распределения указана одна и та же продукция – некий «Кабель». Если помните, продукция заполнена обычно в движениях отчёта производства за смену, потому что там продукция вообще есть. А тут – даже в движениях требования-накладной заполнена продукция, тот самый «Кабель».

Самое поганое: этого сраного «Кабеля» нет в документах. В движениях – есть, в документах – нет. А в РАУЗе так не бывает – состав ключей аналитики полностью определяется документом, не зависит от остатков, например (как партия в партионном учёте).

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

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

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

Дело вернулось в мёртвую точку сразу, как только я перепровёл один отчет производства за смену – плохие ключи вернулись. Пришлось откатиться к исходной стадии.

И оказалось… Вот так оказалось.

Короче, есть такой справочник, о котором я даже не знал, называется «Настройки аналитики учёта». Не знал я о нём потому, что живые люди видят его ровно один раз – когда включают РАУЗ. Вы его тоже наверное видели – там ставятся галочки про аналитики, которые будут использоваться. Ну там характеристики, серии, заказы и т.д., отдельно для упр. и регл. учётов.

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

Во-вторых, оказалось, что каждый разрез аналитики – это предопределённый элемент справочника. Например, есть элемент «Продукция».

В-третьих, у этого справочника есть кнопка «Заполнить по умолчанию» - она скидывает настройки в дефолт.

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

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

В-шестых, значение этого скрытого реквизита используется, как шаблон, при создании ключей. Что указано в этом реквизите у элемента «Продукция», то и подставится в ключ, если проводимый по РАУЗ документ не указал что-то другое. Например, требование-накладная ничего не указывает в поле «Продукция».

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

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

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

Озвучил клиенту, начался, мягко говоря, срач. Одни вспомнили какого-то деревенского франча, с которым плохо расстались в начале внедрения УПП. Другие твёрдо сказали, что виноваты пользователи, а франч ни при чём. И пошло поехало…

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

Про человека, который это провернул, я честно сказал клиенту: чувак семи пядей во лбу. Какие там у него личностные качества – не знаю, но как программист – гений. Мориарти, блин.

Комментарии (23)


  1. Honomer
    09.02.2022 22:57

    Век живи, век учись


  1. Dementor
    09.02.2022 23:36

    Забавно.


    1. Tiriet
      10.02.2022 08:30
      +4

      Вероятно, Мориарти это уже прочитал, и ему тоже очень забавно. Десять лет! Целую контору поставил раком на десять лет. И узнал об этом из СМИ! да еще и с хвалебным отзывом себе любимому.


      1. Dementor
        10.02.2022 09:39
        +5

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

        А может он уже давно выучил Java и смеется над нами ниже в комментариях ))))


  1. unsignedchar
    09.02.2022 23:51
    +2

    Я так понимаю, в мире 1С использовать SCM не принято?


    1. edo1h
      10.02.2022 00:48
      +1

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


    1. StanKondrat
      10.02.2022 08:01
      +1

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


      1. kaichou
        10.02.2022 21:46

        При наличии хранилища - таки зачем она нужна в 1С?


        1. nmivan Автор
          10.02.2022 22:05

          А уж при работе на типовой конфигурации с парой мелких расширений...


        1. StanKondrat
          11.02.2022 06:51

          Сомневаюсь что во встроенном хранилище 1С есть история по каждой измененной строчки кода (git blame).

          А это очень ускоряет чтение кода, можно узнать кто, когда сделал и зачем, прочитать описание задачи...


  1. iliabvf
    10.02.2022 02:06
    +7

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


    1. nmivan Автор
      10.02.2022 22:06

      Как 1Сник 1Снику: а что вообще на Java программируют?


      1. iliabvf
        10.02.2022 23:18

        все что угодно, я например сам свою 1С (с бд MySQL/Postgre) сделал, начинал с игрушки для Андроида, еще драйвер для кассы писал.


        1. nmivan Автор
          11.02.2022 05:41

          Это интересно? После 1С.


          1. iliabvf
            11.02.2022 13:31

            ну конечно, в Java возможно безграничны (как и в python, C/C++, .Net, JS) и много интерсных задач, которые заставляют думать


  1. pfr46
    10.02.2022 03:22
    -13

    "ни хрена", "сраного", "срач", "чувак". Статья гопника.


  1. sergeyns
    10.02.2022 10:23

    Интересно, реальная история или опять фантазия писателя?


    1. protobuf
      10.02.2022 12:28

      Конечно реальная! Ведь это я тот 1С Мориарти *злой смех*


  1. RaFaeL-NN
    10.02.2022 11:08

    Возможно, в каких-то предыдущих релизах этой конфы реквизит как раз таки был в какой-то форме? Его тогда (очень давно) и проставил кто-то. Случайно, например. Затем конфу обновили, с форм реквизит пропал, а данные остались (для совместимости) И в итоге вот...


    1. MagDen
      12.02.2022 19:32

      Как вариант. Очень даже может быть


  1. D03ER
    10.02.2022 13:34

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


  1. fotobred
    10.02.2022 20:45
    +2

    "О сколько нам открытий чУдных готовит.." код от 1С...


  1. drWhy
    11.02.2022 18:24

    Так-с. Сферический кабель в вакууме, схлопывающий расчёт себестоимости — одна штука.
    Вернуть в Хранилище №13.
    Понять бы ещё, что такое «Помощник универсальный» в количестве двух штук, учётная цена около доллара за штуку — пережил три инвентаризации, потом по всеобщему согласию всё-таки был списан, но до сих пор любопытно — может вещь-то преполезнейшая? Знать хотя бы, на что он похож. Или она…