Книга знаний

1С:Предприятие / v8 / Приемы программирования

v8: Недостатки типовых конфигураций

Здесь будут собраны общие недостатки типовых конфигураций, связанные с стилем программирования, методами работы, программирования, тестирования и организацией труда программистов на 1САвтор статьи: Гений 1С | Редакторы: Волшебник, Neco, Sol78
Последняя редакция №17 от 06.05.08 | История
URL: http://kb.mista.ru/article.php?id=300

Ключевые слова: недостатки,ляпы


Не ведется клиент-серверный контроль конфигурации


Если в конфигураторе запустить клиент-серверный контроль конфигурации (Конфигурация - Проверка конфигурации)с галками Клиент и Сервер, то в типовых конфигурациях выскакивает много ошибок, что в общем-то довольно странно для типового решения - оно должно быть без явно видимых ошибок.

Название элементов формы


Не всегда название элементов формы соответствует данным. Часто встречаются такие ляпы, как поле контрагента называется ПолеВвода2, например. Контроль таких ситуаций может производиться автоматически, обработкой, но не производится.

Тормоза на свертках и сортировках


Во всех типовых: применение метода Свернуть/Сортировать по ссылочным полям для больших таблиц значений. Как следствие огромные тормоза. Это при том, что есть альтернативные методы свертки/сортировки через построитель запроса Книга знаний: v8: Ускорение типовой свертки таблиц значений в 1С80

Документирование кода

Документирование параметров и назначения функций


Странно, но некоторая часть функций задокументирована - описаны входящие параметры, тип результата и назначение функции, а большая часть функций не задокументирована. Отдельной документации (не в коде) по функциям тоже не распространяется.
Абсолютно не расписаны структуры, передаваемые между процедурами (состав полей, тип значений).

Пример из конфигурации "Хлебобулочное и кондитерское производство":
// <Описание функции>
Функция ПолучитьЧужуюНоменклатуру()
    Запрос = Новый Запрос;
…

Отсутствуют или невнятные комментарии


Важные места кода нужно документировать.
Комментарии нечитаемые, непонятные, невнятные, не раскрывающие смысл кода.
Пример из конфигурации "Хлебобулочное и кондитерское производство":
// проверим на то что в таб части нет номtyrkfnehs других склдаов
        Если Склад <> Константы._ХлебнаяЭкспедиция.Получить() Тогда // если не хлебная

Регламентные отчёты


Сейчас общая политика обновления регламентных отчётов в 8-ке только через обновление конфигураций. Внешние регламентные отчёты для 8-ка 1С на форумах поддержки не выкладывает. (UPD. от Sol78> Смотри внимательней на http://users.v8.1c.ru - выкладываются) Но ошибок в них довольно много (видно плохо тестируют). следовательно.. Либо постоянно самому "латать" баги (тогда разве это типовая) или "ждать нового обновления конфигурации" с надеждой, что именно эта бага будет заштопана (но бухам нужно сдавать регламентную отчётность уже "сегодня".. Они не могут ждать вечного "завтра"). Короче... Если такой объём ошибок в регламнтной отчётности, тогда нужно и выпускать более оперативно исправляемые внешние регламентные отчёты.

Документоориентированность


Очень часто в коде встречаются конструкции вида:
Если ВидДокумента="ВозвратПоставщику" Тогда

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

Клонирование бухгалтерских отчетов


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

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

Отсутствие автоматического тестирования


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

Необоснованное использование фиксированных значений


Часто в отраслевых решениях используются фиксированные значения там, где значения могут быть различными. Пример из конфигурации "Хлебобулочное и кондитерское производство":
      Если Час(Дата)>=20 Тогда // Пока так потом посмотрим
            Запрос.УстановитьПараметр("Дата2", НачалоДня(Дата+86400));
      иначе
            Запрос.УстановитьПараметр("Дата2", НачалоДня(Дата));
      КонецЕсли;

Смысл кода такой, что они считаю по что смена всегда начинает в 20:00. Т.е. жестко (константно) забили время начала смены, смена на заводах может начинаться когда угодно!


Масса закомментированного, но не удаленного кода


Пример из конфигурации "Хлебобулочное и кондитерское производство":
//// <Описание функции>
//Функция ВернутьКонечныеОстатки(ПредСмена)
//    Запрос = Новый Запрос;
//    Запрос.Текст = "ВЫБРАТЬ
//    |    _ОтчетСменРеализацииТовары.КодЧ КАК КодЧ,
//    |    _ОтчетСменРеализацииТовары.Номенклатура.Ссылка КАК Номенклатура,
//    |    _ОтчетСменРеализацииТовары.Номенклатура.Представление,
//    |    _ОтчетСменРеализацииТовары.ХарактеристикаНоменклатуры.Ссылка КАК ХарактеристикаНоменклатуры,


Выполняется «лишний код»


Пример из конфигурации "Хлебобулочное и кондитерское производство":
В модуле документа «ЗаказПокупателя»
Процедура ОбработкаЗаполнения(Основание)
    // временно
    // изменить на норм тип!!!!!
    Обработки._ВводЗаявок.ПолучитьФорму().Открыть();
        ......

Поскольку вызов заполнения происходит из открытой формы обработки «_ВводЗаявок», то совершенно непонятно зачем повторно открывать форму: Обработки._ВводЗаявок.ПолучитьФорму().Открыть();
(при этом происходит обновление уже открытой формы обработки, причем бесполезное)

В отчетах явно указаны реквизиты организации


Пример из конфигурации "Хлебобулочное и кондитерское производство":
ОбластьЗаголовок.Параметры.Организация    = "ОАО ""Москворечье""";


Недоступный код с ошибками


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

Алгоритмические недостатки

Большое число параметров функции


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

Отчеты не открываются конструктором


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

Копи-паст


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

Огромные процедуры


Факт говорит сам за себя - используются огромные нечитаемые процедуры, в результате чего они становятся практически нечитаемыми.

Использование перечислений вместо справочников


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







Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2024 | Mista.ru

Яндекс.Метрика