Имя: Пароль:
IT
Админ
Хранилище описаний процедур и функций конфигурации
0 MaxisUssr
 
26.09.12
13:29
Кто-нибудь организовывал? Суть в том, чтобы организовать некое хранилище, в котором можно было бы группировать функции по их смыслу/ искать по тэгам и т.п. (цель - в самописной конфе не писать вторую функцию, когда уже есть подходящая под задачу, но о существующей можно и не вспомнить/не заметить). Есть идея организовать, но прежде чем велосипедить хотел спросить - может есть что-то готовое?
1 Fragster
 
гуру
26.09.12
13:30
называй по нормальному, веди документацию в вики с полнотекстовым поиском (о, этот идеальный мир...)
не используй "глобальные" модули
2 MaxisUssr
 
26.09.12
13:30
В общем, что-то типа встроенного СП
3 Deon
 
26.09.12
13:30
(0) Ну, по смыслу они как-то в общих модулях организованы
4 Рэйв
 
26.09.12
13:31
(0)Фигня это все.  Ты представь сколько функций в конфе?  Запаришься все их описывать.
5 Рэйв
 
26.09.12
13:31
+(4)И да же если опишешь- это такой объем инфы получится, что все равно толком ничего не найдешь.
6 MaxisUssr
 
26.09.12
13:32
(3)
Согласен, но все равно иногда неудобно копаться в сотне функций, идущих одно за другой - удобнее как в СП (по разделам)
(4)
Все не нужно - хотя бы начать описывать функции, добавленные сегодня и все последующие дни, и изредка старые функции, попадающиеся на глаза
7 pumbaEO
 
26.09.12
13:35
// Формирует структуру, содержащую значения реквизитов шапки документа.
//
// Параметры:
//  СправочникОбъект - объект документа для формирования структуры шапки,
//
// Возвращаемое значение:
//  Сформированная структура.
//

Это разве не описание?
8 MaxisUssr
 
26.09.12
13:39
(7)
Как мне, не зная, что данный метод существует, найти в конфигураторе вышеописанный метод хотя бы по области применимости ("ДокументОбъект") или по параметрам? Только глазами рыскать
9 MaxisUssr
 
26.09.12
13:40
Хотелось бы :
10 pumbaEO
 
26.09.12
13:40
Глобальным поиском(правильным)
11 MaxisUssr
 
26.09.12
13:47
Хотелось бы искать по таким параметрам, как:

1) Тип объектов, используемых в методе (конкретный документ/любые документы/числа и т.п.). Т.е. для функции, контролирующей, включена ли какая-то строка документа А в какой-либо документ Б в описании такой ф-и в "типах объектов" будут числиться документы А и Б.
2) Тип возвращаемых значений (для функций)
12 MaxisUssr
 
26.09.12
13:49
(10)
Не спорю - технически это возможно - но неудобно и трудно заставить всех поддерживать единый стиль. Если же дать строгие формы для описания как в (11) - то описывать будет намного проще и будет порядок (хотя бы с текущей даты, прошлое все равно времени не хватит описать)
13 MaxisUssr
 
26.09.12
13:52
+(11)

3) в СП (зачем далеко ходить) есть разделение по смыслу, пример:
14 Mort
 
26.09.12
13:52
Веду такую базу, но конечно глупо документировать каждую процедуру. Урупненно - да.
15 MaxisUssr
 
26.09.12
13:52
Глобальный контекст / Функции для вызова диалога ввода данных / ВвестиСтроку

это тоже можно учесть в описании
16 Mort
 
26.09.12
13:53
+ Опять же нахрена документировать каждую процедуру если всё это можно прекрасно посмотреть в коде?
17 MaxisUssr
 
26.09.12
13:53
(14)
Где ведешь? Можно пример процесса заведения описания какого-нить метода в студию?
И потом пример поиска этого метода по каким-либо критериям?
18 MaxisUssr
 
26.09.12
13:57
(16)
Всякую фигню типа:

Процедура тч_Конкурс_блокировка(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Сообщить("Форма доступна только для просмотра. Изменение конкурса невозможно");
КонецПроцедуры

точно не нужно документировать.
Обработчики событий тоже - они явно будут использованы только в данной форме.
Документировать хотелось бы в основном важные частоиспользуемые методы общих модулей (и модулей менеджеров, модулей объектов).
19 Mort
 
26.09.12
14:04
(17) В самописке.

Например:

Есть список функций, каждая функция имеет версию (релиз в котором она реализована). Плюс к функциям атачатся "изменения" - тоже имеют версию.

Например функция "Проведение по взаиморасчетам" (типовая функция), а к ней атачится изменение "Проведение по взаиморасчетам с доп аналитикой ХХХ". К каждой функции или изменению привязываются задачи на реализацию функции/изменения. Код задачи пишется в комментах в коде типа "// Вася дата (Код задачи) add{

По коду задачи в конфе сразу определяется что зачем напилено.
20 MaxisUssr
 
26.09.12
14:11
(19)
Т.е. у функции есть "название", "версия", "№ бага".
И как человек, который не знает о существовании функции, найдет ее? Будет копаться в багах/названиях/описаниях методов?  Получается это просто база информаии о функциях, но без "человеческого" поиска (если я правильно понял)
Вот нужно мне написать ф-ю, которая осуществляет некий контроль документа А с учетом справочника Б. Прежде, чем ее писать, я посмотрю - а есть ли существующие ф-и с присутствием А и Б. И окажется, что она есть. Или есть похожая, написанная 2 года назад, я ее код посмотрю и пойму, что ее немного можно подпилить и заюзать. В этом и смысл
21 Mort
 
26.09.12
14:18
(20) Ну они сгруппированы: пользовательские по подсистемам, системные по назначению.

Т.е. чтобы в будущем не искать ты хочешь заранее найти все функции типовых и задокументировать?
22 Mort
 
26.09.12
14:18
Цель не совсем понятна.
23 MaxisUssr
 
26.09.12
14:23
(22)
Цель - перед тем, как приступить к написанию какого-либо метода проверить - не существует ли в системе метод, подходящий мне? (не плодить однотипные ф-и и не убивать время). Для этого и нужно ввести критерии поиска методов, и в зависимости от количества критериев для поиска - вести учет методов конфы в разрезе данных критериев
24 Mort
 
26.09.12
14:36
Можно сказать с уверенностью, что если и возникнет подозрение что это уже написано, то разве что в модуле "ОбщегоНазначенияХ". Я не о том, что при дописках не используются функции "прикладных" модулей, а о том, что они обычно жостко завязаны на объекты из которых вызываются. Т.е. например, мутишь ты свой док с табчастью "Услуги". Состав таб части копипистишь из типовых объектов, за ними тянутся события, а там и вызовы типовых функций общих модулей. Короче, ХЗ, толку все эти функции помнить не вижу.
25 Mort
 
26.09.12
14:40
Вот есть в УПП в модуле повторного использования функция ПолучитьЗначенияРеквизитовОбъекта, которая весь сеанс возвращает по ссылке одни и те же реквизиты. Будешь ею пользователься? Типовые разработчики так видимо и не решились, висит процедура одиноко никем не вызываемая... :)
Впрочем, может у меня старая версия УПП.
26 MaxisUssr
 
26.09.12
14:45
(24)
У нас нетиповая конфа, к тому же как раз и хочу уйти от того, что наизусть функции помнить было бы необязательно. Ну и по твоей логике выходит так: один программист делал какой-то баг, создал ф-ю, что-то контролирующую, поместил ее в общий модуль, написал к ней комментарий и номер бага и т.п. После другой программист делает другой баг, но в котором эта ф-я может быть использована. Получается, что он должен зайти в общий модуль (или в несколько модулей), заюзать полнотекстовый поиск (и то может не сработать - не найти), а он после недолгих поисков плюнет на все это и накатает свой "велосипед". Так в системе будет 2 одинаковых процедуры. А потом потребуется изменить что-то и будет изменена лишь одна из них и окажется, что в каком-то месте конфигурации какие-то данные не стыкуются с другими данными. И придется все равно сводить все к использованию одного метода :)

(25)
Может кому и пригодилась бы (хоть одному из 1000), но мало кто о ней знает, наверное - в этом и проблема :)
27 Mort
 
26.09.12
15:08
(26) По хорошему программисты делают функционал, а не баги. Впрочем зачастую выходит только второе.

А по теме, опять же говорю одиночные функции, за редкими исключениями, тупо сидят в модуле общего назначения разбитые по тематике :работа со строками с массивами и т.п. В другом случае одиночными функциями никто не оперирует. Оперируют т.н. паттернами. Например, разработали в 1С паттерн (счиатай правило) проведения документов и все ему следуют. Соответственно этот реализованный паттерн, как кусок функциональности имеет ряд интерфесов (экспортных методов), которые и описаны в его документации. Оперируя такими вот кусками легко находится где и что сидит. А вот тупо поиск определенной функции чтобы её заюзать, это верный признак того, что разработка ведется "каждый в свою сторону".
28 MaxisUssr
 
26.09.12
15:41
(27)
Все равно я ответа на свой вопрос не нашел.
"А вот тупо поиск определенной функции чтобы её заюзать, это верный признак того, что разработка ведется "каждый в свою сторону" " - не понял. Если есть готовая функция - ты ее заюзаешь или будешь писать новую не думая? Конечно заюзаешь старую (чуть подпилив)!
Вопрос: как ее по-человечески найти?
29 Steel_Wheel
 
26.09.12
15:44
(8) Учи фреймворк
30 Mort
 
26.09.12
15:49
(28) Приведи пример такой функции.

Мне только одна приходит на ум, получение ставки НДС числом по значению перечисления. Сидит она в модуле УчетНДС. Какого рода документацию на это, ты бы хотел придумать?
31 MaxisUssr
 
26.09.12
15:57
У нас нетиповая. Пример:

модуль "Общие функции".
"Функция ОпределитьСписокПодчиненныхДоговоров(Договор)"

лежит в модуле "ОбщиеФункции". При этом есть несколько кусков кода, где вместо этой ф-и напилено то, что возвращает тот же самый результат. А можно было всего лишь использовать готовое.
32 Скользящий
 
26.09.12
15:59
Че то вспомнилось...    

Я придумал средство от выпадания волос. Волосы почему падают? Потому, что свисают вниз. А надо взять палочку и поставить ее на голову, чтобы волосы вились вокруг нее, как плющ. Они вьются вверх, а вверх падать невозможно, вот! Это мое собственное изобретение! Можешь использовать его, если хочешь!

       Белый Рыцарь Л.Кэрролла — Алисе
33 MaxisUssr
 
26.09.12
15:59
Либо люди просто не думая писали что-то новое ( = хорошо забытое старое), либо была попытка найти, не увенчавшаяся успехом.
34 Скользящий
 
26.09.12
15:59
по ценности примерно подобное рацпредложение.
35 MaxisUssr
 
26.09.12
16:00
(34)
Что же делать?
36 Скользящий
 
26.09.12
16:01
Забить, т.к. времени на внедрения подобной фигни ты потратишь больше чем она тебе сэкономит.
37 Mort
 
26.09.12
16:02
(35) распилить помойку под названием "Общие функции" на нормальные модули.
38 Mort
 
26.09.12
16:05
И чо за название для функции такое "Определить...." ? В типовых тоже самое. Что программа должна определять? Ясен пень никто прохавать не может что она делает.
39 Mort
 
26.09.12
16:05
*то же самое
40 MaxisUssr
 
26.09.12
16:07
Офф: нашел ф-ю

Функция обБольшаяДата() Экспорт
   Возврат('21000101');
КонецФункции

вот что это ? :)

В общем итоге все свелось к РасПилу модулей, на что тоже уйдет тонна времени(
41 MaxisUssr
 
26.09.12
16:49
Mort, выложи плз скрин своей системы учета функций
42 Mort
 
26.09.12
18:38
Ещё актуально?
43 Steelvan
 
26.09.12
21:52
(0)Можешь взять любой древообразный текстовый редактор и каждая ветка - процедура.

Это если только текст.

Если нужно рисовать дерево блок-схем, можешь посмотреть у меня в демо версии, как организованы вложенные блок схемы алгоритмов.
Демка  лежит здесь http://www.forum.optimasoft.info/viewtopic.php?f=6&t=44
44 Steelvan
 
26.09.12
21:53
Любой древовидный редактор позволит искать по словам.

Посмотри MyNotesKeeper.
45 MaxisUssr
 
27.09.12
11:22
(44, 45) Смысл в том, чтобы не только я мог просматривать и модифицировать эти данные, а еще и другие разработчики
(42) Ага
46 Mort
 
27.09.12
15:46
47 Лефмихалыч
 
27.09.12
15:57
(0) не изобретай волосопедов http://v8.1c.ru/model/
Программист всегда исправляет последнюю ошибку.