Имя: Пароль:
1C
 
Расположение подпрограмм в модуле друг относительно друга
,
0 Kifsif
 
03.01.15
13:45
Пишу код, нужна, например, вспомогательная функция.
Быстро иду либо непосредственно выше текущей процедуры или функции и создаю там нужную функцию. Либо непосредственно ниже.

В общем, коллеги что-то ругаются - дескать, код у меня какой-то не такой. Причем, я понять не могу, что им не нравится.

Я знаю, что при программировании на ряде языков подпрограмма должна быть в коде выше того места, где она используется.
А также при разработке хранимых процедур для некоторых СУБД (например, Oracle), принято вручную упорядочивать их по алфавиту, иначе потом вообще не найдешь.

Но в 1С это все без разницы.

Посмотрел стандарт оформления кода при разработке под 1С, не нашел ничего подходящего. Ну, документ довольно объемный. Может, не туда смотрел.

В общем, был бы признателен за совет - как лучше организовывать подпрограммы в модулях.
1 mehfk
 
03.01.15
13:52
Показывай код, покритикуем :)
2 Kifsif
 
03.01.15
13:59
Да ну, что ты. Речь о довольно пространных программах Тут вопрос не про конкретный код, а про компоновку. Ну, ребятам там что-то копировать неудобно мой код. Потом. Т.е. они через полгода лезут в старый код, делать на его основе пытаются, а там подпрограммы. Ну, они их давай искать потом по коду. Бред какой-то.

Вы мне скажите, стандарт оформления кода говорит об этом что-нибудь? Или как вообще принято.
3 PLUT
 
03.01.15
14:11
(2) посмотри БСП и типовую БП3.0, УТ11

щас так модно
4 mehfk
 
03.01.15
14:16
(2) Научи их нажимать f12
5 mehfk
 
03.01.15
14:17
>> Вы мне скажите, стандарт оформления кода говорит об этом что-нибудь? Или как вообще принято.

Посмотри как в типовых конфигурациях функции модулей форм упорядочены.
6 Escander
 
03.01.15
14:24
(0) >Я знаю, что при программировании на ряде языков подпрограмма должна быть в коде выше того места, где она используется. А также при разработке хранимых процедур для некоторых СУБД (например, Oracle), принято вручную упорядочивать их по алфавиту, иначе потом вообще не найдешь.

Про Оракл - бред! Такое принято только в ряде языков, как правило в интерпретируемых, где интерпретатор ищет в коде расположенном ранее... так было в 7.7, но в 8.* взаимное место расположения точки вызова и вызывваемой процедуры/функции не имеет значения.

Но етсь правило которому неплохо-бы следовать: если возможно этот кусок кода будет нужен более чем в модуле - вынести его в общий модуль
7 Kifsif
 
03.01.15
14:38
(6) А ты учил PL/SQL?
8 Armando
 
03.01.15
14:50
9 Zhuravlik
 
03.01.15
14:52
(8) + 1 - читать как молитву перед сном :)
Я в шаблонах сделал вызов такого когда по строке "/СтруктураМодуля":

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ <ИМЯ ТАБЛИЦЫ ФОРМЫ>

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
10 Zhuravlik
 
03.01.15
14:53
+ на 8.3. можно использовать области, но как по мне - так нагляднее...
11 Zhuravlik
 
03.01.15
14:56
Еще функции и процедуры всегда предваряю отчерком, в моих шаблонах вызывается по "/*":

<?>//================================================================================================[<?"", ДатаВремя, "">]=

Получается такое вот:

//================================================================================================[03.01.2015 14:55:03]=
&НаКлиенте
Процедура ИмяМоейПроцедуры()
    
КонецПроцедуры

В итоге вижу когда что делал, и н превышаю длину строк в коде более 120 символов (по стандарту оформления  из (8) )
12 Zhuravlik
 
03.01.15
14:57
Почему-то миста вставляет перевод каретки после строки комментария, у меня такого нет в общем.
13 mehfk
 
03.01.15
14:58
(6) В 7.7 было модное в Си слово "Далее" (В Си оно forward'ом зовется). Использовалось для опережающего описания.
14 GROOVY
 
03.01.15
15:25
У меня в шаблонах давно есть описание структуры модуля:

http://goo.gl/M9CyKC

http://1c.chistov.pro/2013/09/83_15.html

Вот, к примеру модуль формы:

#Область ОбработчикиСобытийФормы

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы<ИмяТаблицыФормы>

#КонецОбласти

#Область ОбработчикиКомандФормы

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти
15 Escander
 
03.01.15
15:41
(7)писал на Оракле 3 года... ещё на Oracle-7
16 Escander
 
03.01.15
15:42
(13) которым как правило никто не пользовался
17 mehfk
 
03.01.15
16:06
Почему "Как правило" ?
18 Kifsif
 
03.01.15
17:03
(15) Ну, не знаю. В общем, там есть механизм упорядочивания хранимок.
19 Asmody
 
03.01.15
18:04
От слова "подпрограмма" повеяло нафталином
20 Kifsif
 
03.01.15
18:13
(19) А какой термин ты используешь?
21 Asmody
 
03.01.15
18:15
Обычно "метод". Ну или "функция", "процедура".
22 Escander
 
03.01.15
18:15
(18) в смысле? ты их не по имени вызываешь, а по индексу?
23 Kifsif
 
03.01.15
18:17
(21) А чем подпрограмма не угодила?
24 Escander
 
03.01.15
18:17
(21) от метода веет ООП, 1С он всё-же лишь ПроблемноОриентированный и наличие конструкторов это лишь дань моде.
25 Asmody
 
03.01.15
18:18
(22) а что, в Visual FoxPro вообще нет единого модуля. Там каждый метод в отдельной записи таблицы хранится.
26 Escander
 
03.01.15
18:18
(23) ну этот термин растёт из процедурных ЯП
27 Escander
 
03.01.15
18:20
(25) ну мы типа как про оракл, там хранимые процедуры хранятся в откомпилированном виде (в отличии от например триггеров... хотя возможно с триггерами что-то изменилось в последние года)
28 Escander
 
03.01.15
18:25
(25) Хранимые-то? так это стандартное решение по храннению их в базе (в системной таблице)