1С: Мориарти
Вышел тут у нас самый что ни на есть настоящий детектив. Обратился клиент на УПП с несколько странной задачей — настроить расчет себестоимости. Учёт ведут лет десять.
У клиентов на УПП, конечно, случаются трудности с расчётом себестоимости, но они обычно локальные и связаны либо с изменениями (новые статьи затрат, изменение структуры или детальности), либо с ошибками в данных. Но чтоб после 10 лет и прям настроить, с нуля — такого видеть не приходилось.
Ну ладно, думаю, наверное людям просто лень было вникать. Смотрю базу — да нет, всё по-серьёзному. Много доработок, достаточно приличного качества, много данных, используются все основные разделы. И что настораживает — куча непроведённых документов расчёта себестоимости. Явно пытались, но что-то не получалось.
Думаю, щас шваркну, вот они удивятся. Но удивился я. Делаю расчёт — вообще ничего не происходит с данными. Никакие суммы нигде не появляются. Блин, ну так ведь не бывает — всегда что-то да закроется! А тут — ни хрена.
Понастраивал способы закрытия (у них РАУЗ), проверил настройки, шандарахнул тестирование и исправление ключей аналитики. Опять ноль реакции.
Пошёл смотреть регистр… Что-то не так. Во всех ключах аналитики распределения указана одна и та же продукция — некий «Кабель». Если помните, продукция заполнена обычно в движениях отчёта производства за смену, потому что там продукция вообще есть. А тут — даже в движениях требования-накладной заполнена продукция, тот самый «Кабель».
Самое поганое: этого сраного «Кабеля» нет в документах. В движениях — есть, в документах — нет. А в РАУЗе так не бывает — состав ключей аналитики полностью определяется документом, не зависит от остатков, например (как партия в партионном учёте).
Ну, думаю, наверное чьи-то шаловливые ручки начудили. Какой-нибудь мастер-ломастер залез в святая святых, в процедуры подбора и создания ключей аналитики, и по неосторожности нагадил.
Сравниваю с типовой — ничего. Ну, т.е. там, где я ожидал — ничего. Нет даже намёка на поползновение в модули, связанные с расчётом себестоимости.
Тут я, честно говоря, сплоховал — списал всё это на какую-то магию. И сделал «пилюлю» — написал обработку, которая удалила плохие ключи, создала хорошие и подменила всё это в движениях документов. Аминь, дело сразу сдвинулось с мёртвой точки — всё стало считаться, и я увлёкся настройкой распределения, исправлением ошибок в первичке и т.д. Закрыл тестовый месяц и чуть было не побежал сдаваться.
Дело вернулось в мёртвую точку сразу, как только я перепровёл один отчет производства за смену — плохие ключи вернулись. Пришлось откатиться к исходной стадии.
И оказалось… Вот так оказалось.
Короче, есть такой справочник, о котором я даже не знал, называется «Настройки аналитики учёта». Не знал я о нём потому, что живые люди видят его ровно один раз — когда включают РАУЗ. Вы его тоже наверное видели — там ставятся галочки про аналитики, которые будут использоваться. Ну там характеристики, серии, заказы и т.д., отдельно для упр. и регл. учётов.
Во-первых, оказалось, что такой справочник существует (я всегда думал, что это просто нарисованная форма).
Во-вторых, оказалось, что каждый разрез аналитики — это предопределённый элемент справочника. Например, есть элемент «Продукция».
В-третьих, у этого справочника есть кнопка «Заполнить по умолчанию» — она скидывает настройки в дефолт.
В-четвёртых, эти дефолтные настройки она берёт из макета, прицепленного к тому же справочнику (увидеть его можно только в конфигураторе).
В-пятых, внимание: у этого справочника есть скрытый реквизит «Значение по умолчанию». Его не видно ни в одной форме, вообще. Собственно, поэтому я про него ничего и не знал.
В-шестых, значение этого скрытого реквизита используется, как шаблон, при создании ключей. Что указано в этом реквизите у элемента «Продукция», то и подставится в ключ, если проводимый по РАУЗ документ не указал что-то другое. Например, требование-накладная ничего не указывает в поле «Продукция».
Этот реквизит, судя по логике, нужен не для хранения определённых значений, а для установки правильного типа. Например, чтобы в продукцию попадала пустая ссылка на номенклатуру, а не Неопределено.
Дальше вы, наверное, догадались. Кто-то зашёл в предопределённый элемент «Продукция», и обработкой воткнул в реквизит «Значение по умолчанию» этот самый «Кабель». Повторюсь, ни через какую пользовательскую форму этот реквизит нельзя даже увидеть. Ну, если не считать групповую обработку пользовательской формой.
Соответственно, отныне в движениях всех документов, не содержащих продукцию как сущность, был этот «Кабель». Все затраты шли на производство «Кабеля». Вообще все затраты предприятия. Но выпускали не «Кабель», а нормальную продукцию. «Кабель» вообще никогда не выпускали, это покупной материал.
Озвучил клиенту, начался, мягко говоря, срач. Одни вспомнили какого-то деревенского франча, с которым плохо расстались в начале внедрения УПП. Другие твёрдо сказали, что виноваты пользователи, а франч ни при чём. И пошло поехало…
Я несколько дней в сторонке покурил, чтобы под руку не попасть. Хвала небесам, вся моя работа даром не пропала — даже обработки по исправлению плохих ключей пригодились. Вообще, оно лечится перепроведением документов, но кто ж будет за 10 лет проводить.
Про человека, который это провернул, я честно сказал клиенту: чувак семи пядей во лбу. Какие там у него личностные качества — не знаю, но как программист — гений. Мориарти, блин.