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

03.09.15

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

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

Скачать файлы

Наименование Файл Версия Размер
Технологическая проверка кода конфигурации
.ert 77,00Kb
8
.ert 77,00Kb 8 Скачать
Утилита GComp
.zip 155,76Kb
3
.zip 155,76Kb 3 Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

Анализ кода

См. также

Консоль запросов

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

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

10 стартмани

29.04.2015    21526    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

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

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

1 стартмани

23.04.2014    165606    1863    Alexoniq    1596    

496

Tray Informer

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

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

1 стартмани

04.09.2013    32866    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

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

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

1 стартмани

13.08.2013    21179    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

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

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

1 стартмани

21.02.2013    18023    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($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    36093    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

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

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    34944    248    adhocprog    51    

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

P.S. А что, больше никаких впечатлений/мнений? Хотя бы на уровне полезно/бесполезно/фигнянепонятная?
Я вижу, что в ней надо делать какое-то условное разделение глобальных переменных на "константы", которые не должны переприсваиваться и "переменные", которые должны. Но пока не придумал, как сделать это покрасивее.
3. brr 182 04.09.15 12:57 Сейчас в теме
4. aspirator23 339 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 Ответить
Оставьте свое сообщение