Имя: Пароль:
1C
1С v8
Раскройте тайный смысл кода
0 mvgfirst
 
27.03.13
11:27
Имеем УТ 10.3
Справочник.НастройкиОбменаССайтом
В модуле объекта есть такой код:

Функция НайтиРеглЗаданиеПоПараметру(УникальныйНомерЗадания)
   
   Попытка
       
       Если НЕ ПустаяСтрока(УникальныйНомерЗадания) Тогда
           
           УникальныйИдентификаторЗадания = Новый УникальныйИдентификатор(УникальныйНомерЗадания);
           ТекущееРегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(УникальныйИдентификаторЗадания);
           
       Иначе
           
           ТекущееРегламентноеЗадание = Неопределено;
           
       КонецЕсли;
       
   Исключение
       
       ТекущееРегламентноеЗадание = Неопределено;
       
   КонецПопытки;
   
   Возврат ТекущееРегламентноеЗадание;
   
КонецФункции

Функция НайтиРегламентноеЗаданиеПоНастройке() Экспорт
   
   ТекущееРегламентноеЗадание = НайтиРеглЗаданиеПоПараметру(РегламентноеЗадание);
   
   Возврат ТекущееРегламентноеЗадание;
   
КонецФункции

Функция ПолучитьОбъектРегламентногоЗадания() Экспорт
   
   Задание = НайтиРегламентноеЗаданиеПоНастройке();
   
   Возврат Задание;    
   
КонецФункции

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

Но зачем "ПолучитьОбъектРегламентногоЗадания()" - если в этом есть тайный смысл, скрыйтый от меня недалекого - то объясните мне, я тоже хочу обладать тайными знаниями.
1 sda553
 
27.03.13
11:31
Посотри кто использует ту, а кто другую. Так просто не ответить, смотреть в 1с надо. Возможно это сделано в целях полиморфизма
2 cw014
 
27.03.13
11:32
Нормальный код, чем он тебе не пригляделся
3 sda553
 
27.03.13
11:33
(2) Тем что вторая функция по функционалу ничем не отличается от первой и ТС задает вопрос, а зачем их тогда две одинаковофункциональных функции?
4 sda553
 
27.03.13
11:33
т.е. третья от второй
5 mvgfirst
 
27.03.13
11:37
Вот именно, зачем третья? Если в принципе даже одной можно было бы обойтись.  Т.к. во второй не делается ни какой выбора и всегда идет поиск только по параметру, то внутри нее и можно было реализовать эту функциональность
А от первой и третьей избавится.

Однако же, возможно в других местах кода, нужно будет использовать поиск по параметру, причем они могут различаться, поэтому я согласен что право на жизнь у первой функции есть.

Но смысл созданий третьей - мне остался непонятным.
6 mvgfirst
 
27.03.13
11:41
Третья вызывается только из модуля формы этого же справочника.
Единственное скольнибудь логичное объяснение - дело в названии в одном случае мы как бы "ищем" в другом как бы "получаем" - видимо АРХИТЕКТОР сего чуда предполагал что у пользователей в головах между этими двумя понятиями пропасть.... и он таким образом ее устранил.
7 Зойч
 
27.03.13
11:44
(0) Это ты еще БСП не видел. Там такие матрешки до 15 уровней вложенности
8 sda553
 
27.03.13
11:50
(6) >>Третья вызывается только из модуля формы

А не клиентская ли она случаем?
9 mvgfirst
 
27.03.13
12:12
(8) УТ 10.3 никаких разделений нет. Все три модуля функции написаны как в (0) без сокращений и искажений. Все три написаны в модуле объекта справочника.
Команд препроцессора нет. Так что ... сами понимаете.
10 mvgfirst
 
27.03.13
12:13
(7) Таки платят зарплату кодерам за строки кода?
11 Паланик
 
27.03.13
12:28
(10) +1
Да и вторая функция не нужна, если первую сделать экспортной и заменть УникальныйНомерЗадания на РегламентноеЗадание, и тоже не используя параметров.
12 samozvanec
 
27.03.13
12:29
(0) есть люди, которые от методологии написание типовых перенимают именно вот такие методики. с ними сложно работать. в целом все выглядит  грамотно и масштабно, видно, что писатель опытный. однако, чтобы понять, что-где, нужно кучу времени(особый фетиш, когда в твоем коде сложно разобраться), да и потом чаще всего выясняется, что доработке такой код не подлежит, либо впаять костыль, либо все переписать.
13 samozvanec
 
27.03.13
12:31
(0) откуда, кстати, вторая берет параметр РегламентноеЗадание?
14 mvgfirst
 
27.03.13
12:34
(13) РегламентноеЗадание - реквизит справочника. Из модуля объекта которого - она собственно и вызвается.
15 Паланик
 
27.03.13
12:35
(13) Наверное переменная модуля, где-то присваивается. В любом случае, по коду в (0) очевидно, что извне напрямую туда ничего не попадает.
16 Reset
 
27.03.13
12:36
Третья вполне может быть заготовкой на будущее.
В дальнейшем в ней мог планироваться дополнительный обработчик и тогда он будет отличаться по смыслу от второй.
В названии уже сейчас можно проследить разное назначение - вторая - ищет, третья получает объект
17 mvgfirst
 
27.03.13
12:38
(11)  Собственно да, функция НайтиЗначениеПоПараметру - может быть смело лишина входного параметра и полностью заменить вторую и третью функции, став экспортной.
18 mvgfirst
 
27.03.13
12:39
(16)
"Управление торговлей", редакция 10.3 (10.3.13.2) (http://v8.1c.ru/trade/)
Copyright (С) ЗАО "1C", 2003-2009. Все права защищены
(http://www.1c.ru)

Вот версия редакции откуда я взял этот код. У вас наверняка есть возможность посмотреть - появилось ли будущее у этой функции в следущих поколениях этой конфигурации. Готов спорить на ящик пива - что нет у нее будуего
19 Reset
 
27.03.13
12:40
(17) С чего это она может быть лишена параметра? В запвисмоти от параметра там делаются разные действия
20 Паланик
 
27.03.13
12:41
(16) Заготовка на будущее... а бабло за строки кода - уже в эту получку. Круто, чо. И зачем там попытку использовать? Так можно вообще весь свой код в попытки засовывать. И зачем разбивать присвоение ТекущееРегламентноеЗадание на две строки? Тупо комуто на ипотеку или на литье пару тыщь не хватало.
21 Reset
 
27.03.13
12:41
(18) Я не собираюсь ничего смотреть. Это тебе интересно, ты и смотри. В (16) говорится, что в момент написания мог планироваться разный смысл.
22 Reset
 
27.03.13
12:42
Кто про что, а адинэсники про бабло