|
v7: Чем отрефакторить модуль? | ☑ | ||
---|---|---|---|---|
0
trdm
08.10.15
✎
21:20
|
Поубивать неиспользуемые функции, переменные и т.п.
Есть такое средство? Хочется мусор повыметать. Подскажите, плз.. |
|||
1
Волшебник
модератор
08.10.15
✎
21:23
|
мозгом
|
|||
2
trdm
08.10.15
✎
21:25
|
долго
|
|||
3
trdm
08.10.15
✎
21:26
|
Побыстрее бы, чем мозгом.
|
|||
4
Волшебник
модератор
08.10.15
✎
21:26
|
забить?
|
|||
5
XLife
08.10.15
✎
21:30
|
мозгом?
|
|||
6
trdm
08.10.15
✎
21:33
|
забить мозгом?
|
|||
7
фобка
08.10.15
✎
21:34
|
Ответ прозвучал, тему можно закрывать
|
|||
8
trdm
08.10.15
✎
21:36
|
Похоже самому писать придется.
|
|||
9
RomanYS
08.10.15
✎
21:39
|
загони модуль куда-нибудь (в обработку) в 8.3, и там рефактори
|
|||
10
trdm
08.10.15
✎
21:46
|
А что там за возможности?
|
|||
11
фобка
08.10.15
✎
21:50
|
(9) ну да, а синтаксис?)
(8) функции которые с форм вызываются потереть хочется? |
|||
12
RomanYS
08.10.15
✎
21:54
|
(10) не знаю, но слово такое там видел)
(11) я подобным образом объединял (при обновлении) сильно переписанный глобальник из ЗиК, отличия в синтаксисе не сильно влияли для этих целей. |
|||
13
trdm
08.10.15
✎
21:56
|
(11) >> функции которые с форм вызываются потереть хочется?
Конечно. Еще функции которые из таблиц вызываются и функции которые с пом. 1С++ расшариваются. Короче хочу прострелить себе коленку. |
|||
14
trdm
08.10.15
✎
21:57
|
(12) Если это имеешь ввиду http://v8.1c.ru/o7/201312ref/index.htm , то там все слабенько как-то.
|
|||
15
Рэйв
08.10.15
✎
21:58
|
(0)Слабоватый вброс:-)
|
|||
16
RomanYS
08.10.15
✎
21:59
|
(14) да это.
Ну тогда или глазками, либо писать парсер. Хотя может и готовое что найдешь |
|||
17
badboychik
08.10.15
✎
22:00
|
на питоне можно написать примитивный парсер и поисковик
|
|||
18
badboychik
08.10.15
✎
22:01
|
можно даже настоящий парсер написать, там специальная библиотека есть для написания парсеров
|
|||
19
trdm
08.10.15
✎
22:02
|
(16) >> Ну тогда или глазками, либо писать парсер. Хотя может и готовое что найдешь
2771 строка. Тем более это класс, методы которого вызываются извне. |
|||
20
Рэйв
08.10.15
✎
22:04
|
(19)>>Тем более это класс, методы которого вызываются извне.
ржунемогу:-))) А как еще могут вызываться не приватные методы?:-)) |
|||
21
Рэйв
08.10.15
✎
22:05
|
(19)У низ там наверное public написано
|
|||
22
trdm
08.10.15
✎
22:05
|
(17) на сях есть тоже много примочек.
лексер у меня есть уже, можно врукопашную нашкрябать, а можно и bison приколошматить. А новая визуал студия может схавать 1С-ный модуль? И хотябы показать не юзанные переменные? |
|||
23
RomanYS
08.10.15
✎
22:06
|
(19)
"методы которого вызываются извне" - глобальный поиск тебе все покажет 2771 строк ~ 100 функций, если однократно то можно и "глазками", пару часиков и готово |
|||
24
trdm
08.10.15
✎
22:09
|
(23) да я уже замахался, конца громадная.
если я так буду каждый модуль пропалывать, я до пенсии буду корячиться. |
|||
25
trdm
08.10.15
✎
22:10
|
Чета хлопцы умерли в вас программисты.
Программист - это прежде всего тот кого парит делать то, что может машина. |
|||
26
Рэйв
08.10.15
✎
22:12
|
(25)Ты не правильно выразился.
Программист- это тот кому лень и просто напишет код. Как то так.:- |
|||
27
trdm
08.10.15
✎
22:18
|
Блин, как на эту тему хорошо в сях, жесткий контроль с матами во всю ивановскую.
|
|||
28
trdm
08.10.15
✎
22:23
|
(17) Я просто питон не умею.
|
|||
29
badboychik
08.10.15
✎
22:24
|
(28) че там уметь, за пару часов можно научиться
|
|||
30
User_Agronom
08.10.15
✎
22:25
|
(0) Извечный вопрос: Зачем?
Есть функция, которая нигде не вызывается. И что? Она же нигде, совсем-совсем нигде не вызывается. |
|||
31
trdm
08.10.15
✎
22:25
|
(30) мусор надо выметать периодически.
|
|||
32
User_Agronom
08.10.15
✎
22:25
|
(27) Или trubo pascakal.
Любой компилируемый язык. |
|||
33
User_Agronom
08.10.15
✎
22:26
|
(31) Нафейхоа? Времени полно свободного?
|
|||
34
RomanYS
08.10.15
✎
22:26
|
(28) зачем питон?
чем 1с не подошел? |
|||
35
badboychik
08.10.15
✎
22:27
|
(34) смеюсь тебе в лицо )
|
|||
36
trdm
08.10.15
✎
22:28
|
(33) >> Нафейхоа? Времени полно свободного?
Тяжело сопровождать. Да и пописать ченить такое хочется. |
|||
37
RomanYS
08.10.15
✎
22:31
|
(35) что сказать то хотел?
Не знаешь как в 1С работать со строками? |
|||
38
trdm
08.10.15
✎
22:32
|
список задач простой: прибить неиспользуемые переменные, неиспользуемые функции.
Можно конечно еще помечтать типа убрать все копипастовые одинаковые блоки, процедуры и вывести их в глобальники или в классы. |
|||
39
badboychik
08.10.15
✎
22:34
|
(37) писать парсер на 1С это как копать карьер саперной лопаткой
|
|||
40
RomanYS
08.10.15
✎
22:34
|
(38) у тебя 7.7? или это ошибка заголовка?
|
|||
41
trdm
08.10.15
✎
22:35
|
Еще бы классно сделать контроль ошибок типа:
Форма.блаблабла.чето(), если "блаблабла" - не реквизит диалога. (40) Она самая. |
|||
42
RomanYS
08.10.15
✎
22:38
|
(39) то что ты умеешь "образно" выражаться, я уже понял.
В чем преимущества твоего "карьерного самосвала" питона по сравнению с 1С. Кроме общего развития ТС конечно) |
|||
43
RomanYS
08.10.15
✎
22:39
|
*(42) применительно к данной конкретной задаче конечно
|
|||
44
badboychik
08.10.15
✎
22:42
|
(42) во-первых у питона есть интерактивный интерпретатор, для быстрого тестирования кусочков кода. В принципе этого хватает чтобы 1С сразу слилась, но есть и еще куча преимуществ: куча функций для строк, заточенность под работу с коллекциями, ООП, спец. библиотеки и пр. и пр. ...
|
|||
45
RomanYS
08.10.15
✎
22:46
|
(44) это всё круто конечно, особенно если ты всем этим умеешь пользоваться (ТС вряд ли умеет).
Но без всего этот можно обойтись, достаточно найти все заголовки методов и посчитать количество их вызовов. |
|||
46
User_Agronom
08.10.15
✎
22:51
|
(44) Новая обработка, в модуль формы при нажатии ставь свой кусок. Тестируй. И не нужно обновлять конфу. Будут три действия: сохранить обработку, выбрать обработку и запустить процедуру.
|
|||
47
RomanYS
08.10.15
✎
22:55
|
(44) можно поподробнее про "интерактивный интерпретатор", он любой язык умеет интерпретировать? у ТСа вроде код 1с.
|
|||
48
trdm
08.10.15
✎
22:57
|
все, по пивку и баиньки.
|
|||
49
Garykom
гуру
08.10.15
✎
22:58
|
ну наваяй уже свои скрипты к openconf... только это потребует сначала brain on
|
|||
50
trdm
08.10.15
✎
22:59
|
(49) да я лучше на сях попишу чуток. воспользуюсь разборкой gcomp-a.
|
|||
51
Garykom
гуру
08.10.15
✎
23:02
|
(50) скрипты и на сях можно... а можно и плагины туда же
|
|||
52
vcv
09.10.15
✎
05:05
|
Я тоже на подобными вопросами задумался. Сделал на коленке первичную, примитивную проверку самого мне необходимого.
http://catalog.mista.ru/public/395032/ Как раз подумываю добавлять поиск неиспользуемых переменных и функций. Не знаю, как у кого, у меня, подозреваю, какие-то ограничения менеджера памяти 7.7. Достаточно регулярно всплывает ситуация типа такой: Есть глобальная переменная Сервис, есть ей присваивание ПриНачалеРаботыСистемы (единственное присваивание)и использование в куче мест. И вдруг "Поле агрегатного объекта не обнаружено" на строке с Сервис.блаблабла. |
|||
53
Web00001
09.10.15
✎
05:07
|
||||
54
VladZ
09.10.15
✎
05:10
|
(31) Озвучь критерии "мусора".
|
|||
55
Web00001
09.10.15
✎
05:57
|
(54) это же был ответ на (30)
|
|||
56
фобка
09.10.15
✎
06:33
|
(53) речь о семерке
|
|||
57
aka AMIGO
09.10.15
✎
08:17
|
Работает? - не трогай! © золотое правило 1с-ника :)
|
|||
58
ADirks
09.10.15
✎
08:30
|
(57) это отмазка недопрограммистов-дебилов
код надо писать так, чтобы его легко можно было модифицировать |
|||
59
DDwe
09.10.15
✎
08:39
|
(58)А, чего хамишь?
|
|||
60
aka AMIGO
09.10.15
✎
08:41
|
(59) да ладно :)
|
|||
61
zak555
09.10.15
✎
08:41
|
(57) абсолютно неправильный подход
вот у меня клиент сидел, работал, ничего не трогал, к базе салаг только подпускал за 5 лет переплатил 1 миллион прибыли |
|||
62
aka AMIGO
09.10.15
✎
08:43
|
(61) бушки прохлопали красивыми глазками :)
|
|||
63
zak555
09.10.15
✎
08:46
|
(62) ты думаешь, что большинство бухов знает бухучёт ?
даже в журнале главбух такую ересть пишут (иногда) |
|||
64
DDwe
09.10.15
✎
08:47
|
(61) Значит не работало. Иначе зачем подпускал. А разговор о том что - Работает? - не трогай!
|
|||
65
zak555
09.10.15
✎
08:51
|
(64) подпускали, чтобы обновиться
а смысл что-то обновлять, если конфа не настроена |
|||
66
VladZ
09.10.15
✎
08:52
|
(58) "код надо писать так, чтобы его легко можно было модифицировать" - это да. Но нужно понимать, что сам по себе "рефакинг" кода никакого эффекта не дает. Даже более того, после "рефакинга" обычно перестает работать "что-то важное". В общем, к чему я веду: нужно понимать цель (зачем это делается) и к чему приведет (последствия). Если цель неясна, а последствия трагичны - то какой смысл в этих "телодвижениях"?
|
|||
67
aka AMIGO
09.10.15
✎
08:54
|
(63) кхм.. да.. твоя правда.
Квалификакция бухов упала, у большинства за плечиками - курсы в 1месяц длиной. А то и того нет. Во времена допотопные (мерзопакостные) были или бух-техникум, или трехгодичные курсы. После таких курсов-техникумов развивалось чутьё к "хомутам" в учете.. И книга была "Экономика предприятия" с элементами бухучета. Неквалифицированный бух может ой, как сильно наказать предприятие.. Как, впрочем и квалифицированный, но этот - намеренно :) (66) Если цель неясна, а последствия трагичны - то какой смысл в этих "телодвижениях"? Так ЧСВ! :) |
|||
68
DDwe
09.10.15
✎
08:58
|
Код нужно писать так, чтобы потом не было мучительно больно за бесцельно стёртые клавиши.
|
|||
69
aka AMIGO
09.10.15
✎
08:58
|
(66) "рефакинг" - это красиво, и по-делу :)
|
|||
70
aka AMIGO
09.10.15
✎
09:00
|
(68) это дается с опытом.. да и с желанием написать-таки красивую нетленку..
А когда не очень хочется, то не очень и получается. © |
|||
71
TormozIT
гуру
09.10.15
✎
09:14
|
в EDT будет 1Сshaper
|
|||
72
pumbaEO
09.10.15
✎
09:18
|
(71) пусть сначала edt пережует erp, тогда посмотрим.
|
|||
73
aka AMIGO
09.10.15
✎
09:25
|
(68) у ТС идея не такая сложная. Просто "повыметать" неиспользуемое.
Тогда "работает не трожь" несколько не применима к сабжу. Действительно, при этом алгоритм любой сложности не будет затронут. |
|||
74
NikVars
09.10.15
✎
09:28
|
Щас поуберет "мусор" из модуля, потом какое-нибудь действие кнопки на икс вкладке отвалится...
|
|||
75
Salimbek
09.10.15
✎
09:38
|
(0) На сколько я помню, - главное правило рефакторинга - обвязка этого кода тестами.
|
|||
76
BMW1C
09.10.15
✎
09:55
|
Скопируй модуль в 8-ку и проверь этим http://cloudconf.org/CodeInspector
вроде синтаксис один, может получится |
|||
77
trdm
09.10.15
✎
10:31
|
(52) Можешь на почту скинуть? Нема маней на инфостарте.
|
|||
78
trdm
09.10.15
✎
10:35
|
(73) Правильно сообразил.
(76) Это нужно фраймверки ставить. Не хочу. |
|||
79
trdm
09.10.15
✎
10:35
|
(74) Так и надо сделать достаточно мошную рефакторную софтину.
|
|||
80
Гёдза
09.10.15
✎
10:38
|
Для 7 уже не актуально
|
|||
81
NikVars
09.10.15
✎
12:08
|
(79) Или делай или бюджет озвучь - тут тебе забацают.
Да и цель этой возни с уборкой мусора не понятна. Деятельность есть, выхлопа нет, есть вероятность порчи. |
|||
82
vcv
09.10.15
✎
19:50
|
К вопросу о необходимости какого-то рефакторинга кода, стиля программирования или еще чего-нибудь подобного, вниманию предлагается вопрос-загадка. Спрашивается, как, в нижеприведенном коде во второй строке, может возникнуть ошибка "Индекс не входит в границы списка значений."
Если СписокОтложенныхДействий.РазмерСписка()<>0 Тогда Объект = СписокОтложенныхДействий.ПолучитьЗначение(1, Действие); |
|||
83
vcv
09.10.15
✎
19:52
|
Вопрос не теоретический, а практический. Сегодняшний из рабочей базы. Притом возник у двух разных пользователей в разных ПБ на разных серверах.
|
|||
84
mehfk
09.10.15
✎
20:01
|
СписокОтложенныхДействий - экспортная переменная глобального модуля?
|
|||
85
vcv
09.10.15
✎
20:10
|
(84) СписокОтложенныхДействий переменная глобального модуля, не экспортная. Используется в обработке обработке ожидания. Обработка ожидания запускается вот так
ТаймерОтложенногоДействия = СоздатьОбъект("Сервис"); ТаймерОтложенногоДействия.ОбработкаОжидания("ОбработкаОжиданияОтложенногоДействия",100); Начало процедуры ожидания выглядит так: Процедура ОбработкаОжиданияОтложенногоДействия() Перем Объект, Действие; Если ТипЗначенияСтр(СписокОтложенныхДействий) <> "СписокЗначений" Тогда СписокОтложенныхДействий = СоздатьОбъект("СписокЗначений");; КонецЕсли; Если СписокОтложенныхДействий.РазмерСписка() > 0 Тогда Объект = СписокОтложенныхДействий.ПолучитьЗначение(1, Действие); СписокОтложенныхДействий.УдалитьЗначение(1); Как-то, по моему, очень маловероятно, что следующий "тик" таймера попадёт между проверкой размера списка и получением из него значения. |
|||
86
mehfk
09.10.15
✎
20:25
|
Значит не маловероятно. О наличии аналогичной логики догадывался, поэтому и задал вопрос. Значит в обработке ожидания надо "замораживать" значение переменной и устанавливать в конце.
|
|||
87
mehfk
09.10.15
✎
20:26
|
Может немного сумбурно высказался, если надо схематично могу поянсить.
|
|||
88
vcv
09.10.15
✎
20:42
|
(87) В общем-то всё понятно. Просто ни как не укладывалось в голове, что между строчками 7 и 8 может пройти 100 миллисекунд на серьёзном сервере туда попадёт следующий тик таймера. Сейчас, конечно первой строкой в обработке ожидания остановлю таймер, а в конце, если еще остались события в очереди, запущу снова.
|
|||
89
mehfk
09.10.15
✎
20:49
|
Перечитал еще раз. Мистика. Лучше заведите флаговую переменную, которая указывает, что выполняется обработка ожидания.
|
|||
90
mehfk
09.10.15
✎
20:50
|
Ой, нет. "Мистику" можно зачеркнуть, это же FormEx.
|
|||
91
Злопчинский
09.10.15
✎
20:55
|
Очень мне сомнительно что обработка ожидания может прерывать выполняющийся код
Имхо оо может выполняться только в простое системы Но я не готов подписаться под этим Так что желательно бы получить однозначное подтвержден е такой работы оо |
|||
92
vcv
09.10.15
✎
20:59
|
(91) Штатная не может, из FormEx срабатывает в любой момент.
|
|||
93
Злопчинский
09.10.15
✎
21:06
|
(92) тады там где код не должен прерываться устанавливать флаг
В оо если флаг то тупой возврат |
|||
94
vcv
09.10.15
✎
21:10
|
(93) Таки хочется, что бы некоторые события, которые не связаны с чем-то визуальным и легки по ресурсам, могли выполняться асинхронно.
Но это ладно, техническое проблемы организации очереди событий. Меня несколько ошарашило именно та догадка, что тик таймера умудрился попасть так близко от начала процедуры обработки ожидания. И совершенно непонятно, куда делось время то ли в вызове процедуры ожидания, то ли в выполнении её первых семи строк. |
|||
95
Злопчинский
09.10.15
✎
21:19
|
(94) генери тем же самым формексом внешние события в нужных местах и все
|
|||
96
vcv
09.10.15
✎
21:32
|
(95) Идея. Нужно попробовать, как визуальные вещи могут работать из обработки внешнего события.
Одно из назначений этой обработки ожидания, открывать всякие модальные и не только окна. Например, хочется по некой кнопке открывать в журнале своё окно выбора периода просмотра. Перехватываю в журнале с помощью формэкса нажатие клавиши, в процедуре ПриНажатииКнопкиКлавиатуры дёргаею ОткрытьФормуМодально и всё. Глюки и падения 1С. А если запустить таймер и через сотню миллисекунд сделать то же самое ОткрытьФормуМодально, всё работает. Нужно попробовать обработку внешнего события, спасибо, про него не подумал. |
|||
97
vcv
09.10.15
✎
21:36
|
Боюсь не взлетит
<Источник>,<Событие>,<Данные> - строки для передачи в процедуру ОбработкаВнешнегоСобытия(). А мне нужно передавать объекты и контексты :( |
|||
98
vcv
09.10.15
✎
21:41
|
Да, не выходит каменный цветок. В обработку внешнего события передаются исключительно строки. И если объект еще можно в виде строки передать, то контекст уже вряд ли.
|
|||
99
Злопчинский
09.10.15
✎
22:01
|
Это ты какието стльные колдунства делаешь
Ну Формексом можно получить контекст формы Попробовать получить контекст активной формы в овс? |
|||
100
trdm
10.10.15
✎
08:21
|
(94) > Таки хочется, что бы некоторые события, которые не связаны с чем-то визуальным и легки по ресурсам, могли выполняться асинхронно.
для нормальной обработки в 1С надо тогда мютексы и семафоры заводить. А если действительно очень хочется, то лучше выводить такие модули за пределы 1С. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |