|
УФ. Почему экспортные процедуры модуля объекта больше недоступны? | ☑ | ||
---|---|---|---|---|
0
Stim
16.10.12
✎
15:45
|
сабж. ни из клиента, ни из сервера нельзя выполнить экспортную процедуру или функцию модуля объекта из его управляемой формы. Почему разработчики так сделали? с какой целью?
зачем сейчас нужно переносить все процедуры из модуля объекта в модуль менеджера объекта? да еще и объект туда передавать |
|||
1
vmv
16.10.12
✎
15:47
|
просто стаду ленивых и жадных в принудительном порядке намекают, что нужно перестать г-кодить и вернуться к объектой классике.
1С лелеет надежду создать ооп-систему и уже сейчас идет экспансия этой технологии |
|||
2
Stim
16.10.12
✎
15:50
|
(1) ну и зря. для тех прикладных направлений, в которых работает 1с ООП особо не пригодится
|
|||
3
Defender aka LINN
16.10.12
✎
15:52
|
Вас, одинэснегов, хрен разберешь. Нет ООП - плохо, есть ООП - плохо... Когда ж вам хорошо-то будет?
|
|||
4
vmv
16.10.12
✎
15:52
|
+(1) как только появились менеджеры в справочниках и пр. - я все выборки относительно этого объекта пренес в них.
пример, в каждой типовой есть метод проверки уникальнисти ИНН контргента, который сидел и сидит в общих модулях, а на фига их раздувать(общие модули) спецефичными относительно таблицы БД методами, если логичнее и проще написать Если Справочники.Контрегнты.ИннУникален(СсылкаКонтрагента) Вовзрат "няха"; ИначеЕсли ОбщегоНазначенияСервер.ИннУникален Вовзрат "ты тупой и жадный"; (СсылкаКонтрагента) КонецЕсли; Тогда |
|||
5
vmv
16.10.12
✎
15:53
|
(2) -> (4)
|
|||
6
Stim
16.10.12
✎
15:54
|
(3) нам хорошо, когда все работает и не надо ничего переделывать
|
|||
7
Stim
16.10.12
✎
15:54
|
+ математические модели на 1С не пишут. а товарно-денежно-учетные и без ООП прекрасно реализуются
|
|||
8
ProProg
16.10.12
✎
15:55
|
вот балбес то.
Чтобы их вызывать теперь надо через сам объект обращаться. |
|||
9
ProProg
16.10.12
✎
15:56
|
ОбработкаОбьект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.ЭкспортнаяПроцедураМодуляТраляляляляля(); |
|||
10
Stim
16.10.12
✎
15:56
|
(8) чукча писатель?
я не спрашиваю, что надо делать. Я спрашиваю - почему |
|||
11
acsent
16.10.12
✎
15:56
|
РезвизитФормыВЗначение
|
|||
12
acsent
16.10.12
✎
15:57
|
(10) потому что на форме нет объекта
|
|||
13
acsent
16.10.12
✎
15:57
|
есть только "проекция" объекта
|
|||
14
ProProg
16.10.12
✎
15:57
|
(10) шо почему? почему надо писать лишнюю строку?
|
|||
15
vmv
16.10.12
✎
15:58
|
(10) для локализации собственных, написанных тобой, методов относительно таблицы БД в ее локальном контесте, как это принято в любой современной системе программирования или ты тока с тайги вышел?
|
|||
16
ProProg
16.10.12
✎
15:59
|
Вопрос фигня.
Вот есть гораздо интереснее)))) Один объект. Несколько форм. какого уя приходится между формами полностью перебрасывать данные. Тк. если из одной формы открываем другую - то данных уже нету... Вот вот это реально писцец. |
|||
17
YF
16.10.12
✎
15:59
|
(10) Потому что объекты на клиенте более недоступны
|
|||
18
vmv
16.10.12
✎
16:01
|
(16) для этого нужен полиформизм - один из трех слонов опп, но тебе пока рано об этом думать)
|
|||
19
Stim
16.10.12
✎
16:02
|
(13) объект проецируется на форму, да. на клиенте он обрабатывается, отдается на сервер. вот на сервере можно было бы и разрешить прямой вызов обработчиков модуля объекта
|
|||
20
vmv
16.10.12
✎
16:05
|
(19) на клиенте образ объекта, а не сам объект - хватит чушь нести, как истеричка возле сгоревшего омлета
|
|||
21
vmv
16.10.12
✎
16:06
|
+(20) и на сервере в УФ тоже образ объекта типа "ДанныеФормыСтруктура"
|
|||
22
Stim
16.10.12
✎
16:06
|
(20) на клиенте - да. но я говорю про сервер.
|
|||
23
ProProg
16.10.12
✎
16:06
|
(20) причем тут модули? сам не неси чущь.
Например я хочу в модули поместить процедурки просто для того чтобы защитить модуль. форма то не защищается. И хочу их вызывать. |
|||
24
vmv
16.10.12
✎
16:07
|
(22) давай честно и открыто скажем - ты просто тормоз, ну и чуть-чуть истеричка. Надо это признать и начать искоренять эту напасть в себе, я лично в тебя верю
|
|||
25
Ахиллес
16.10.12
✎
16:08
|
(4) Дибильный пример. ИНН есть не только в справочнике контрагентов, но и в справочнике организаций. И никто мне не запретит добавить ещё справочников где будет ИНН использоваться. Теперь дублировать эту процедуру в каждом справочнике вместо того, что бы в одном модуле её один раз прописать?
|
|||
26
vmv
16.10.12
✎
16:09
|
(23) вырази свою мысль на профессиональном языке, как баба кипятишься чес-слово)
|
|||
27
1Страх
16.10.12
✎
16:09
|
потому что в 1С сидят дятлы архитекторы
|
|||
28
Stim
16.10.12
✎
16:10
|
(24) если ты не готов к нормальному адекватному диалогу - признай это, будь мужиком. в твои-то годы это давно пора сделать.
|
|||
29
vmv
16.10.12
✎
16:10
|
(25) конечно дублировать, тем более что проверка уникальности для каждого своя, если речь вести о госклассификации, а плодить г-код с условными кейсами и шаблонами запросов которые хрен откроешь в конструкторе - много ума не надо
|
|||
30
acsent
16.10.12
✎
16:12
|
1с просто решила не разворачивать автоматом проекцию на сервере в объект, ибо это затратная процедура и требуется далеко не всегда
|
|||
31
acsent
16.10.12
✎
16:13
|
(27) я думаю уж поумнее тебя
|
|||
32
Stim
16.10.12
✎
16:13
|
(21) и что? это полноценная "версия" объекта, со всеми значениями,реквизитами, реквизитами реквизитов и пр.
|
|||
33
ProProg
16.10.12
✎
16:13
|
(30) +100 и все 1Сники на этом кучу денег будут зарабатывать тк это лишние трудозатраты.
|
|||
34
1Страх
16.10.12
✎
16:14
|
(31) откуда знаешь?
|
|||
35
Stim
16.10.12
✎
16:14
|
(33) это не всегда хорошо
|
|||
36
kiruha
16.10.12
✎
16:14
|
(0)
Вызывай из общего модуля |
|||
37
1Страх
16.10.12
✎
16:16
|
(1) ООП тут каким боком?
|
|||
38
Stim
16.10.12
✎
16:16
|
(36) ну это вообще никуда не годится. десяток вложенных процедур из одной строки - это только разработчики с их проектным взглядом так могут
|
|||
39
ProProg
16.10.12
✎
16:17
|
Короче не парься. в 1С очень много вопросов на которые не будет ответов.
|
|||
40
ProProg
16.10.12
✎
16:18
|
делай так как есть и как можно.
Выйдет девятка, потом десятка. - там будет все по новому. и тоже будут вопросы без ответов. |
|||
41
kiruha
16.10.12
✎
16:21
|
(38)
Смотрю сейчас форму закрытия Заказ поставщику // Установка статуса документа Если Не Объект.УстановитьСтатус("Закрыт", Новый Структура("ОтменаНеотработанныхСтрок", ПричинаОтмены)) Тогда Продолжить; КонецЕсли; потом модуль объекта Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт ЧЯДНеТак ? |
|||
42
5 Элемент
16.10.12
✎
16:22
|
(0) он что серьезно?
|
|||
43
acsent
16.10.12
✎
16:22
|
а перенос из модуля объекта в модуль менеджера - это верное направление
|
|||
44
Stim
16.10.12
✎
16:25
|
(41) а я смотрю типовую БП3.0
&НаКлиенте Процедура ВидОперацииПриИзменении(Элемент) ВидОперацииПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура ДатаПриИзменении(Элемент) ДатаПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура ОрганизацияПриИзменении(Элемент) ОрганизацияПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура СкладПриИзменении(Элемент) СкладПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура КонтрагентПриИзменении() КонтрагентПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура ДоговорКонтрагентаПриИзменении(Элемент) ДоговорКонтрагентаПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура СпособЗачетаАвансовПриИзменении(Элемент) СпособЗачетаАвансовПриИзмененииНаСервере(); КонецПроцедуры &НаКлиенте Процедура ГрузополучательПриИзменении(Элемент) ГрузополучательПриИзмененииНаСервере(); КонецПроцедуры |
|||
45
ProProg
16.10.12
✎
16:25
|
(41) автор недоволен что надо писать Объект.
|
|||
46
5 Элемент
16.10.12
✎
16:26
|
(43) надо несколько модулей менеджера. для поддержки проще.
|
|||
47
kiruha
16.10.12
✎
16:38
|
(0)
Т.е. проблема - писать в серверной процедуре модуля формы - Объект.ВызовМоейЭкспортнойФункцииОбъекта() ? |
|||
48
Stim
16.10.12
✎
16:38
|
(41) не хочет она в толстом клиенте так работать. ни на сервере ни на клиенте
|
|||
49
1Страх
16.10.12
✎
16:38
|
(44) доступно и всырьес
|
|||
50
Stim
16.10.12
✎
16:42
|
(47) изобрази это здесь: http://zalil.ru/33858686
|
|||
51
acsent
16.10.12
✎
16:44
|
(44) скажи спасибо что тебе форму не приходится с клиента на сервер вручную переносить
|
|||
52
Stim
16.10.12
✎
16:46
|
(51) спасибо :)
|
|||
53
Stim
16.10.12
✎
16:47
|
+ имхо - 1С надо двигаться в сторону компоновщиков,конструкторов и прочих облегчающих работу помощников. Это и будет ООП, адаптированное под прикладную область
|
|||
54
acsent
16.10.12
✎
16:48
|
(53) как ты представляешь себе написать например РАУЗ на "компоновщике"
|
|||
55
Stim
16.10.12
✎
16:49
|
(54) с раузом не сталкивался, хз. но партионный учет можно было бы запилить компоновщиком с кучей галочек и настроек. ведь там единый принцип практически во всех типовых
|
|||
56
acsent
16.10.12
✎
16:54
|
(55) типа такого
http://habrahabr.ru/post/145067/ |
|||
57
Stim
16.10.12
✎
16:56
|
(56) класс :)
ребенок появится - будет играть) |
|||
58
GANR
16.10.12
✎
17:02
|
(0) И правильно сделали... Я вообще за появление ООП в рамках 1С. Сделаю базовый класс для объекта "Форма", например - перестану однотипный код обращений к общим модулям в модулях форм объектов плодить. И документы можно будет в иерархию классов выстроить и не е...ся с настройкой регистрации по регистрам каждого дока индивидуально, например.
|
|||
59
GLazNik
16.10.12
✎
17:10
|
(56) а че... прикольно... но как начнешь делать что-то серьезное то сразу возникает ограниченность всяких конструкторов
|
|||
60
kiruha
16.10.12
✎
17:10
|
(50)
Через общий модуль получилось только Можно сделать универсальную ЗапускМетодаОбъекта(МойОбъект,ИмяМетода, СтруктураПараметров) |
|||
61
kiruha
16.10.12
✎
17:13
|
А нет прошло и на форме
&НаСервере Процедура ВыполнитьКомандуСервер() // ТекстПроверки=Объект.МойТест(); // ТекстПроверки= ОбщийМодуль1.ТестоваяПроцедура(); ТекстПроверки=Документы.Документ1.СоздатьДокумент().МойТест(); МоеСообщение= Новый СообщениеПользователю; МоеСообщение.Текст=ТекстПроверки; МоеСообщение.Сообщить(); КонецПроцедуры |
|||
62
Stim
16.10.12
✎
17:18
|
(61) ну да, прикольно. создатьДокумент(), чтобы достучаться до модуля объекта)
|
|||
63
kiruha
16.10.12
✎
17:18
|
&НаСервере
Процедура ВыполнитьКомандуСервер() ТекстПроверки=Объект.Ссылка.ПолучитьОбъект().МойТест(); МоеСообщение= Новый СообщениеПользователю; МоеСообщение.Текст=ТекстПроверки; МоеСообщение.Сообщить(); КонецПроцедуры |
|||
64
kiruha
16.10.12
✎
17:29
|
Еще усовершенствование
&НаСервере Процедура ВыполнитьКомандуСервер() ИмяТипа = "ДокументОбъект.Документ1" ; ОбъектЗначение = ДанныеФормыВЗначение(Объект, Тип(ИмяТипа)); ТекстПроверки=ОбъектЗначение.МойТест(); МоеСообщение= Новый СообщениеПользователю; МоеСообщение.Текст=ТекстПроверки; МоеСообщение.Сообщить(); КонецПроцедуры |
|||
65
Mafoni
16.10.12
✎
17:38
|
если расположить функцию / процедуру в модуле менеджера можно и не создавать объект а обращатся на прямую Документы.МойДокумент.МояФункция
|
|||
66
Stim
16.10.12
✎
17:38
|
(65) спасибо, кэп
|
|||
67
Stim
16.10.12
✎
17:38
|
+ ты как всегда на страже
|
|||
68
kiruha
16.10.12
✎
17:39
|
(64)+
Т.е. экспортные никуда не делись, просто Объект формы не то же самое что документ объект |
|||
69
Stim
16.10.12
✎
17:46
|
(68) а зачем ты тип задаешь? и без него все прекрасно работает
|
|||
70
kiruha
16.10.12
✎
17:47
|
(69)
По привычке - в типовой так |
|||
71
kiruha
16.10.12
✎
17:52
|
Лучше от греха - задавать(в спраке обяз поле)
ДанныеФормыВЗначение (FormDataToValue) Синтаксис: ДанныеФормыВЗначение(<Объект>, <Тип>) Параметры: <Объект> (обязательный) Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево. Данные формы. <Тип> (обязательный) Тип: Тип. Тип значения, получаемого из данных формы. Возвращаемое значение: Тип: Произвольный. Описание: Преобразует данные формы в объект прикладного типа. Доступность: Сервер, толстый клиент. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |