www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

 Читать далее...

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

 Читать далее...

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

 Читать далее...

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 13495
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 13607
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 11067
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 5933
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 6779
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 6658
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 9495
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 6102
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 6318
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 10479
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 13947
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 15400
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 17725
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 12577
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 10582
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 8789
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 7391
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 6198
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 5822
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 6140
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Распространенные ошибки программистов

Архив номеров / 2008 / Выпуск №10 (71) / Распространенные ошибки программистов

Рубрика: Базы данных /  Изучаем «1С»

Андрей Луконькин

Распространенные ошибки программистов

Предупрежден – значит вооружен!

В любой среде программирования существуют свои правила, и среда программирования «1С:Предприятие» не является исключением. Правила делятся на обязательные (когда программный код просто не будет выполняться) и необязательные (программа работать будет, но не оптимально). Рассмотрим некоторое собрание ошибок, которых следует избегать в работе.

Для платформы «1С:Предприятие» 8.1

В коде программы, несмотря на то что программа вроде работает, может скрываться масса тонких моментов.
  • Для получения нескольких значений реквизитов объекта через несколько точек необходимо использовать временную переменную.

Правильно:

 ЮрФизЛицоФирмы=Фирма.ЮрФизЛицо;

КППФирмы= ЮрФизЛицоФирмы.КПП;

КППФирмы= ЮрФизЛицоФирмы.КПП;

Неправильно:

 ИННФирмы=Фирма.ЮрФизЛицо.ИНН;

КППФирмы=Фирма.ЮрФизЛицо.КПП;

  • Вместо процедуры «ПриВыводеСтроки» следует использовать «ПриПолученииДанных».
  • Запрещено создание объектов и получение постоянных значений в цикле (например, создание списка значений, получение значения константы, предопределенного элемента и т. д.).
  • При создании процедур поля ввода, связанных с интерактивным выбором (через кнопку), необходимо учитывать, что значения можно еще и ввести непосредственно в элемент управления. Кроме того, значения также можно и очистить (<CTRL> + <F4>).
  • В модуле объекта запрещено обращение к реквизитам типа «Этот-Объект.Реквизит». Данное выражение лучше заменить на «Ссылка.Реквизит».
  • В модуле проведения документа необходимо четко понимать, что в процедуре «Перед записью» – ссылка на объект еще не существует или уже устарела. Далее ссылка создается, но процесс находится в транзакции и может произойти откат.
  • Не рекомендуется использовать в процедуре «ОбновлениеОтображения» сложных и трудоемких расчетов, так как это значительно замедляет работу системы.
  • Не рекомендуется передавать объекты в качестве параметров процедур и функций.
  • При обращении к любому реквизиту стороннего объекта происходит считывание всего объекта. При повторном обращении, если прошло достаточно мало времени, данные считываются из кэша. Поэтому, если позволяет алгоритм, все необходимые значения нужно считывать сразу с использованием временных переменных. При получении значений реквизитов особо «тяжелых» объектов лучше воспользоваться запросом, который считывает только требуемые поля, не загружая весь объект.

 Кроме правильного кода, в программе важно и то, насколько комфортно в ней работать.

  • Элементы формы должны иметь имена, отражающие их сущность. Это облегчит вам жизнь при обращении к данным формы. Например, вместо имен Надпись1 и Панель2 лучше использовать НадписьКонтрагент и КомманднаяПанельТаблицыТоваров.
  • Элементы формы должны быть расположены на форме с выравниванием и настроенными привязками. Проверить правильность работы привязок можно, не выходя из Конфигуратора (<Ctrl> + <R>). При изменении размеров формы размеры элемента должны изменяться пропорционально и не перекрывать друг друга.
  • Элементы формы должны нести только необходимый и верный функционал. Например: поле ввода имеет кнопку «очистка», только если допускается использование пустого значения, имеет кнопку «открытие», если допускается просмотр элемента.
  • Хорошим тоном считается наличие всплывающих подсказок при наведении курсора мыши на элемент формы.

 При работе с запросами основной упор делается на оптимизацию производительности.

  • При получении данных из выборки запроса лучше избежать организации получения значений реквизитов через точку. Все необходимые данные должны быть получены в самом запросе.
  • При использовании запроса в отчетах в печатную форму выводить нужно строковые значения полей. Например, вместо Выборка.Контрагент использовать Выборка.Контрагент.Наименование.
  • Если есть такая возможность, то лучше организовать логику работы программы так, чтобы при выборке данных из нескольких таблиц использовать в запросе полное объединение (ОБЪЕДИНИТЬ ВСЕ) вместо левого/правого соединения.
  • Если в запросе необходимо отфильтровать данные списком значений (например, получение остатков только по позициям номенклатуры документа), нужно передавать в запрос предварительно созданный массив и фильтровать уже по нему вместо фильтра по результату подзапроса.
  • Максимальное количество вложенности запросов не должно превышать 2. На практике всегда можно построить логику программы по-другому, на экзамене «1С:Специалист» это считается грубейшей ошибкой.
  • Не нужно получать поля, которые в дальнейшем использоваться не будут. Также не нужно делать лишние группировки и итоги.
  • При работе с виртуальными таблицами условия должны находиться в параметрах таблицы. Это увеличивает производительность в разы.
  • При использовании таких функций, как СУММА, МАКСИМУМ и др., по полям, в которых может содержаться значение NULL, нужно эти поля преобразовать функцией ЕСТЬNULL().

Для платформы «1С:Предприятие» 7.7

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

  • Точка с запятой после команды КонецПроцедуры или КонецФункции.
  • Отсутствие директивы «Далее» для процедуры или функции, которые стоят ниже, чем вызывающая их процедура или функция.
  • Для объектов, созданных при помощи оператора СоздатьОбъект(...), отсутствие команд Записать(), Сохранить() или Провести(...).
  • Отсутствие директивы «Экспорт» для процедуры, функции, переменной глобального модуля, которые используются в других модулях.
  • Получение бухгалтерских итогов на произвольную дату без «Ит.ВыполнитьЗапрос().
  • Иногда начинающие программисты путают методы ТекущаяСтрока() и НомерСтроки. В таблице значений ТекущаяСтрока() – текущая строка на визуальной таблице (элемент диалога), НомерСтроки – для таблицы значений, созданной по СоздатьОбъект().
  • Использование методов ПолучитьЭлемент() или ПолучитьДокумен() без предварительной команды ВыбратьЭлементы(); или ВыбратьДокументы();
  • Имя переменной в форме совпадает с именем реквизита формы. Также возможна ошибка, когда имя реквизита формы совпадает с именем глобальной переменной.
  • Использование периодического реквизита без метода ИспользоватьДату().
  • Попытка создать операцию для документа с отсутствующим признаком «Бухгалтерский учет», или попытка создать движение по регистру для документа с отсутствующим флагом оперативного учета.
  • Если название переменной содержит символы кириллицы, попытка получить значение переменной с символами латиницы или наоборот.
  • Попытка записать периодический реквизит справочника, у которого нет галочки «Изменяется документами».
  • В конце модуля бухгалтерского документа часто забывают писать Операция.Записать().
  • Счётчик в запросе нужно писать с буквой «ё».
  • Ошибка порядка обхода элементов диалога для радиокнопок (переключателей).
  • При удалении строк из таблицы значений не принимается во внимание, что после удаления строки номер следующей уменьшается на единицу и соответственно в цикле по номерам строки перескакивают через одну.

Надеюсь, что собранный перечень ошибок поможет улучшить качество и скорость работы. Также было бы очень интересно пополнить эту коллекцию. Предлагаю всем тем, кто обладает подобной информацией, поделиться ей на просторах Сети. Например, на форуме журнала: http://www.samag.ru/forum или форуме системных администраторов Sysadmins.SU в разделе «1С»: http://forum.sysfaq.ru/index.php?showforum=22. Подобная копилка мыслей поможет коллегам и оградит в будущем от ошибок.


Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru