Мертвые ветки логики в логике 1С

Хочу показать Вам на одном примере, как 1С пишет логику своих решений. Встречаюсь с таким не впервые. Лично я считаю это позором для компании, открытый код которой видит вся Россия, но 1С, видимо думает, что никто не заметит. А может думает, что и так сойдет.

Речь пойдет о формировании отчета о розничных продажах (ОРП) из чеков.

Вообще, 1С может сформировать не один, а несколько ОРП, если в чеках за смену были чеки с разной системой налогообложения (в процедуре РозничныеПродажи.ЗаполнитьОтчетыОРозничныхПродажахИВозвратах):

Но если мы спустимся на уровень чуть ниже и посмотрим функцию ЗаполнитьОтчетОРозничныхПродажах, которая заполняет ОРП, увидим странное.

Формируется выборка по аналитике, но используется только первое значение аналитики, то есть если в выборке несколько различных значений, то будет использовано только первое (используется Если, а не Пока):

Выборка по аналитике строится по таблице ТаблицаИндексовПоАналитике. Так вот, если туда передать разные склады, то 1С не оставит один склад, она просто возьмет товары только одного склада.

Понятно, что внутри функции ЗаполнитьОтчетОРозничныхПродажах 1С может заполнить только один ОРП, но из-за странной логики она теряет товары.

Причина в том, что 1С ориентируется не на логику а только на себя. Она не предполагает, что данные могут меняться. Она пишет монолит, который крайне неустойчив к изменениям.

Хотя в таблице ТаблицаИндексовПоАналитике есть колонка склад, но использовать ее нельзя в произвольном порядке, там может быть только один склад. Но зачем тогда она нужна? Так было удобнее разработчикам, чтобы не передавать склад отдельной таблицей.

Любой стороний разработчик видит колонку и подозревает, что если туда занести разные значения, будут созданы ОРП по разным складам. Но не тут-то было. 1С не для того эту колонку заводило!

К сожалению, 1с мне не заплатит за этот бесплатный code-review и, что важнее — не сделает из него выводов.

Среда: УТ 11.5.24.68

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

комментариев 6

  1. rzd:

    Научись писать связное изложение мысли

  2. Serg:

    А может быть, 1С делает «согласно бюджету», «не додумывая за заказчика»?

    • ну с бюджетами у 1С думаю нет проблем… там проблема в другом…

      • Serg:

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

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

  1. 17.12.2025

    […] Эту задачу я пытался решить в статьях: «Много запросов для пересчета колонки временной таблицы» и «Мертвые ветки логики в логике 1С«. […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *