Вышел тут у нас самый что ни на есть настоящий детектив. Обратился клиент на УПП с несколько странной задачей – настроить расчет себестоимости. Учёт ведут лет десять.
У клиентов на УПП, конечно, случаются трудности с расчётом себестоимости, но они обычно локальные и связаны либо с изменениями (новые статьи затрат, изменение структуры или детальности), либо с ошибками в данных. Но чтоб после 10 лет и прям настроить, с нуля – такого видеть не приходилось.
Ну ладно, думаю, наверное людям просто лень было вникать. Смотрю базу – да нет, всё по-серьёзному. Много доработок, достаточно приличного качества, много данных, используются все основные разделы. И что настораживает – куча непроведённых документов расчёта себестоимости. Явно пытались, но что-то не получалось.
Думаю, щас шваркну, вот они удивятся. Но удивился я. Делаю расчёт – вообще ничего не происходит с данными. Никакие суммы нигде не появляются. Блин, ну так ведь не бывает – всегда что-то да закроется! А тут – ни хрена.
Понастраивал способы закрытия (у них РАУЗ), проверил настройки, шандарахнул тестирование и исправление ключей аналитики. Опять ноль реакции.
Пошёл смотреть регистр… Что-то не так. Во всех ключах аналитики распределения указана одна и та же продукция – некий «Кабель». Если помните, продукция заполнена обычно в движениях отчёта производства за смену, потому что там продукция вообще есть. А тут – даже в движениях требования-накладной заполнена продукция, тот самый «Кабель».
Самое поганое: этого сраного «Кабеля» нет в документах. В движениях – есть, в документах – нет. А в РАУЗе так не бывает – состав ключей аналитики полностью определяется документом, не зависит от остатков, например (как партия в партионном учёте).
Ну, думаю, наверное чьи-то шаловливые ручки начудили. Какой-нибудь мастер-ломастер залез в святая святых, в процедуры подбора и создания ключей аналитики, и по неосторожности нагадил.
Сравниваю с типовой – ничего. Ну, т.е. там, где я ожидал – ничего. Нет даже намёка на поползновение в модули, связанные с расчётом себестоимости.
Тут я, честно говоря, сплоховал – списал всё это на какую-то магию. И сделал «пилюлю» - написал обработку, которая удалила плохие ключи, создала хорошие и подменила всё это в движениях документов. Аминь, дело сразу сдвинулось с мёртвой точки – всё стало считаться, и я увлёкся настройкой распределения, исправлением ошибок в первичке и т.д. Закрыл тестовый месяц и чуть было не побежал сдаваться.
Дело вернулось в мёртвую точку сразу, как только я перепровёл один отчет производства за смену – плохие ключи вернулись. Пришлось откатиться к исходной стадии.
И оказалось… Вот так оказалось.
Короче, есть такой справочник, о котором я даже не знал, называется «Настройки аналитики учёта». Не знал я о нём потому, что живые люди видят его ровно один раз – когда включают РАУЗ. Вы его тоже наверное видели – там ставятся галочки про аналитики, которые будут использоваться. Ну там характеристики, серии, заказы и т.д., отдельно для упр. и регл. учётов.
Во-первых, оказалось, что такой справочник существует (я всегда думал, что это просто нарисованная форма).
Во-вторых, оказалось, что каждый разрез аналитики – это предопределённый элемент справочника. Например, есть элемент «Продукция».
В-третьих, у этого справочника есть кнопка «Заполнить по умолчанию» - она скидывает настройки в дефолт.
В-четвёртых, эти дефолтные настройки она берёт из макета, прицепленного к тому же справочнику (увидеть его можно только в конфигураторе).
В-пятых, внимание: у этого справочника есть скрытый реквизит «Значение по умолчанию». Его не видно ни в одной форме, вообще. Собственно, поэтому я про него ничего и не знал.
В-шестых, значение этого скрытого реквизита используется, как шаблон, при создании ключей. Что указано в этом реквизите у элемента «Продукция», то и подставится в ключ, если проводимый по РАУЗ документ не указал что-то другое. Например, требование-накладная ничего не указывает в поле «Продукция».
Этот реквизит, судя по логике, нужен не для хранения определённых значений, а для установки правильного типа. Например, чтобы в продукцию попадала пустая ссылка на номенклатуру, а не Неопределено.
Дальше вы, наверное, догадались. Кто-то зашёл в предопределённый элемент «Продукция», и обработкой воткнул в реквизит «Значение по умолчанию» этот самый «Кабель». Повторюсь, ни через какую пользовательскую форму этот реквизит нельзя даже увидеть. Ну, если не считать групповую обработку пользовательской формой.
Соответственно, отныне в движениях всех документов, не содержащих продукцию как сущность, был этот «Кабель». Все затраты шли на производство «Кабеля». Вообще все затраты предприятия. Но выпускали не «Кабель», а нормальную продукцию. «Кабель» вообще никогда не выпускали, это покупной материал.
Озвучил клиенту, начался, мягко говоря, срач. Одни вспомнили какого-то деревенского франча, с которым плохо расстались в начале внедрения УПП. Другие твёрдо сказали, что виноваты пользователи, а франч ни при чём. И пошло поехало…
Я несколько дней в сторонке покурил, чтобы под руку не попасть. Хвала небесам, вся моя работа даром не пропала – даже обработки по исправлению плохих ключей пригодились. Вообще, оно лечится перепроведением документов, но кто ж будет за 10 лет проводить.
Про человека, который это провернул, я честно сказал клиенту: чувак семи пядей во лбу. Какие там у него личностные качества – не знаю, но как программист – гений. Мориарти, блин.
Комментарии (23)
Dementor
09.02.2022 23:36Забавно.
Tiriet
10.02.2022 08:30+4Вероятно, Мориарти это уже прочитал, и ему тоже очень забавно. Десять лет! Целую контору поставил раком на десять лет. И узнал об этом из СМИ! да еще и с хвалебным отзывом себе любимому.
Dementor
10.02.2022 09:39+5Не стоит переоценивать человеческую глупость. Ваня же написал, что в УПП было далеко не типовое производство, но с сильными дописками. Видимо кто-то пытался отладить РАУЗ и понять логику аналитических ключей, увидел странный справочник, который не выведен в интерфейс, но который участвует в создании ключа. А что если какой-нибудь кабель туда установить? А потом он мог заболеть, уйти в отпуск, перейти с производства на бюджетирование и еще десятки сценариев, которые помешали обнулить свой эксперимент.... И даже увидев эту статью уже ничего не вспомнит и не свяжет с собой...
А может он уже давно выучил Java и смеется над нами ниже в комментариях ))))
unsignedchar
09.02.2022 23:51+2Я так понимаю, в мире 1С использовать SCM не принято?
edo1h
10.02.2022 00:48+1вы имели в виду vcs? отдельные примеры использования есть, но в целом да, не принято.
только в данном случае, как я понял, проблему вызвала модификация не кода, а данных.
StanKondrat
10.02.2022 08:01+1в мире 1С использовать SCM не принято
Ведем 1С проект на гитхабе силами аутсорсеров, у нас даже сборка настроена через си ай. Но очень большая сложность, люди искренне не понимают зачем нужна система контроля версии кода.kaichou
10.02.2022 21:46При наличии хранилища - таки зачем она нужна в 1С?
StanKondrat
11.02.2022 06:51Сомневаюсь что во встроенном хранилище 1С есть история по каждой измененной строчки кода (git blame).
А это очень ускоряет чтение кода, можно узнать кто, когда сделал и зачем, прочитать описание задачи...
iliabvf
10.02.2022 02:06+7Вечер откровений 1С программистов, у меня тоже есть много таких историй. правда как-то стыдно их кому-то рассказывать, видимо понимаю какой фигней занимался, хорошо что выучил Java, а ведь так и мог дальше жить, весело, до слез
RaFaeL-NN
10.02.2022 11:08Возможно, в каких-то предыдущих релизах этой конфы реквизит как раз таки был в какой-то форме? Его тогда (очень давно) и проставил кто-то. Случайно, например. Затем конфу обновили, с форм реквизит пропал, а данные остались (для совместимости) И в итоге вот...
D03ER
10.02.2022 13:34Никогда не приписывайте злому умыслу то, что вполне можно объяснить глупостью. Бритва Хэнлона
drWhy
11.02.2022 18:24Так-с. Сферический кабель в вакууме, схлопывающий расчёт себестоимости — одна штука.
Вернуть в Хранилище №13.
Понять бы ещё, что такое «Помощник универсальный» в количестве двух штук, учётная цена около доллара за штуку — пережил три инвентаризации, потом по всеобщему согласию всё-таки был списан, но до сих пор любопытно — может вещь-то преполезнейшая? Знать хотя бы, на что он похож. Или она…
Honomer
Век живи, век учись