Технологическая проверка кода конфигурации (7.7)

03.09.15

Разработка - Инструментарий разработчика

1С 7.7 не имеет практически никаких средств, предназначенных для контроля правильности кода. В синтаксически правильном, с точки зрения 1С, коде можно, например, определить переменную НомерДок в модуле документа. Эта обработка может помочь найти некоторые "плохие решения" в коде.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Технологическая проверка кода конфигурации
.ert 77,00Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.
Утилита GComp
.zip 155,76Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Проверяются следующие потенциальные ошибки:

- Описание параметра или переменной, совпадающей с глобальной переменной, переменной контекста или реквизитом контекста

Например, у вас в форме документа есть реквизит Номенклатура, и вы определяете функцию ПроверитьНоменклатуру(Номенклатура). В этом случае легко запутаться, особенно когда процедура большая, когда имеется в виду реквизит документа, а когда - параметр процедуры.

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

- Присваивание параметров процедуры/функции, переданных по ссылке

Несмотря на то, что метод "возврата значения в параметре" часто используется в 1С, это может привести к сложно определяемым ошибкам, когда вы меняете в процедуре значение её параметра, который не предназначен, по алгоритму, для возврата значения.

Для указания, что параметр процедуры/функции должен возвращать значение, можно использовать комментарий вида

// Изменяемые параметры: Парам1, Парам2, ...

расположенный непосредственно перед (или сразу поле) строки с Процедура/Функция.

- Присваивание неявно описанной переменной

Несмотря на то, что при программировании на 1С практически не пользуются предварительным объявлением переменных посредством ключевого слова "Перем", такое объявление может иметь смысл. Оно позволяет контролировать использование одного и того же имени переменной с разным смыслом. Например, у вас объявлена в глобальном модуле переменная Сервис как СоздатьОбъект("Сервис"), а в модуле класса Сервис = СоздатьОбъект("ПоставщикДанных.Сервис"). И если вы не использовали явное определение переменной в модуле класса, у вас будет фактически испорчено значение глобальной переменной.

- Отсутствие инициализации описанной переменной

Тут и описывать нечего. Во многих языках программирования считается, что неинициализированная переменная - это ошибка.

 

Для работы обработке требуется утилита gcomp, расположеная в каталоге, входящем в path.

Анализ кода

См. также

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 1C77 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    22465    57    Gvozdod    8    

16

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    169039    1889    Alexoniq    1603    

499

Инструментарий разработчика Программист Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    33517    61    O-Planet    78    

49

Инструментарий разработчика Программист Платформа 1С v7.7 1C77 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21993    Reptile    5    

36

Инструментарий разработчика Программист Платформа 1С v7.7 1C77 Абонемент ($m)

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27791    56    adamx    11    

14

Инструментарий разработчика Программист Платформа 1С v7.7 1C77 Абонемент ($m)

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

1 стартмани

21.02.2013    18430    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 1С v7.7 1C77 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36467    51    venger    7    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. brr 184 04.09.15 09:36 Сейчас в теме
Не во всех конфигурациях есть функция глРазделить.
2. vcv 89 04.09.15 10:39 Сейчас в теме
(1) brr, Спасибо. Обновил обработку.
Что бы не скачивать заново, можно вставить в код
Функция глРазделить(Знач Стр,Разделитель=",") Экспорт
	Если Разделитель=" " Тогда
		Пока Найти(Стр,"  ")>0 Цикл
			Стр = СтрЗаменить(Стр,"  "," ")
		КонецЦикла
	КонецЕсли;
	Возврат СтрЗаменить(Стр,Разделитель,РазделительСтрок)
КонецФункции // глРазделить()
Показать

P.S. А что, больше никаких впечатлений/мнений? Хотя бы на уровне полезно/бесполезно/фигнянепонятная?
Я вижу, что в ней надо делать какое-то условное разделение глобальных переменных на "константы", которые не должны переприсваиваться и "переменные", которые должны. Но пока не придумал, как сделать это покрасивее.
3. brr 184 04.09.15 12:57 Сейчас в теме
4. aspirator23 340 12.09.15 15:43 Сейчас в теме
(2) наверняка полезно, но ты знаешь где сейчас 7.7 и где 8.хх... :)
Хотя сам тоже иногда пишу для 7.7
5. vcv 89 12.09.15 20:03 Сейчас в теме
(4) aspirator23, На мой взгляд, если не считать всякие ларьки, которым небольших денег жалко, 7.7 осталась в крупных отраслевых решениях. Которые переводить на 1с8 может быть слишком сложно/дорого. Как, например, у меня. Металлоторговля. 7.7 типа комплексная, переписанная почти полностью. Типового решения от 1С, удовлетворившего бы наши нужды, нет. Отраслевого тоже. Покупать что-то типовое и прилично дописывать - вариант дорогой и не факт, что какие-то заметные выгоды принесёт по стоимости разработки и поддержки.
Хотя, несомненно, хочется заполучить более современный инструмент разработки и ряд типового функционала (меньше велосипедов писать).
Но пока приходится жить с проектом на 7.7.
Иваныч; +1 Ответить
Оставьте свое сообщение