|
Написал хотелку по передаче формы с клиента в серверный общий модуль. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
02.09.21
✎
18:08
|
Сюда написал (не спортлото, чай)? https://github.com/SeiOkami/OneS/issues/86
А вы что скажете, вот текст иссью: В 1С на УФ можно из серверного кода формы передать форму как параметр в серверный общий модуль. И далее из серверного общего модуля в другой серверный общий модуль. Но из клиенского кода формы и из клиентского модуля невозможно передать форму в серверный общий модуль. Можно передать форму только из клиентского кода формы в серверный код формы. Для решения проблемы из клиентского кода формы или клиентского общего модуля вызывают серверный метод формы, который уже передает форму в серверный общий модуль. Это крайне ужасное решение, которое провоцирует весь код писать в форме, не разнося ее по модулям. Нужно как можно скорее убрать это противоречивое ограничение. |
|||
1
Новый1сник2
02.09.21
✎
18:14
|
(0) практическое применение какое?
|
|||
2
Beduin
02.09.21
✎
18:14
|
ПриСозданииФормыНаСервере() А тут тебе чего не хватает?
|
|||
3
Гений 1С
гуру
02.09.21
✎
18:15
|
(1) не осилил о чем? я думаю, 80% сталкивались с этой проблемой.
(2) это о другом |
|||
4
Новый1сник2
02.09.21
✎
18:16
|
(3) откуда статистика ?
|
|||
5
Новый1сник2
02.09.21
✎
18:17
|
(2) присоединяюсь?
|
|||
6
Гений 1С
гуру
02.09.21
✎
18:20
|
(5) ну вот ты написал некую серверную процедуру Процедура(Форма) в общем модуле МойСервер.
А теперь хочешь эту процедуру вызывать из общего модуля Клиент, куда управление попадает из формы. и получаешь ошибку невозможности передать форму на сервер. |
|||
7
Новый1сник2
02.09.21
✎
18:22
|
(6) в чем проблема написать этот модуль в форме?
|
|||
8
Andreyyy
02.09.21
✎
18:24
|
В этот раз соглашусь с ТС !
Вот ни разу невнятное ограничение. Чем общий модуль хуже серверной процедуры формы ... Геноцид. |
|||
9
RomanYS
02.09.21
✎
18:24
|
(6) на ОФ же как-то жили с невозможность передачи мутабельных значений, и здесь переживём
|
|||
10
Новый1сник2
02.09.21
✎
18:26
|
(8) может и так, но как часто это нужно?
|
|||
11
Andreyyy
02.09.21
✎
18:29
|
(10) Нечасто. Но попадалось здоровые штуки делать, и это нелепое (на первый взгляд) ограничение неприлично нервов попортило.
|
|||
12
Жан Пердежон
02.09.21
✎
18:30
|
контекстный серверный вызов и так передает форму
с чем должны были сталкиваться в (3) не ясно зачем нужен лисапед в (0)? |
|||
13
Andreyyy
02.09.21
✎
18:30
|
(9) С таким "оптимизмом" на лошадей недолго пересесть.
|
|||
14
H A D G E H O G s
02.09.21
✎
18:35
|
(0) Нахрен не нужно.
|
|||
15
Гений 1С
гуру
02.09.21
✎
18:36
|
//=== Форма ===
&НаКлиенте Процедура Тест() Сервер.Обработка(ЭтаФорма); //Так не работает ТестНаСервере(); //Так работает КонецПроцедуры &НаСервере Процедура ТестНаСервере() Сервер.Обработка(ЭтаФорма); //Так работает КонецПроцедуры //=== Общий модуль Клиент === Процедура Обработка(Форма) Экспорт Сервер.Обработка(ЭтаФорма); //Так не работает КонецПроцедуры //=== Общий модуль Сервер === Процедура Обработка(Форма) Экспорт //Тут желаемая обработка формы КонецПроцедуры |
|||
16
Василий Алибабаевич
02.09.21
✎
18:42
|
Опять ТС взял квадратные колеса и героически толкает свой лисапед по дороге?
|
|||
17
PuhUfa
02.09.21
✎
18:43
|
Передавать всю форму с клиента на сервер... фу таким быть -)
|
|||
18
polosov
02.09.21
✎
18:48
|
(0) Ты еще Объект.Товары передай в серверный метод.
Тебе из спортлото плевок прилетит. |
|||
19
Новый1сник2
02.09.21
✎
18:48
|
(0) может в каком то частном случае это и нужно, но пока не сталкивался с таким, проблем написать в модуле формы нету
|
|||
20
Ненавижу 1С
гуру
02.09.21
✎
18:50
|
Иногда неудобно, согласен.
Но тут думаю вопрос в целом такой - сложные объекты не передать туда/обратно. Каждый раз вызывая серверные етоды мы передаем туда весь контекст формы!(а не только ссылку на нее) Предположим, что можно и передадим две формы На сервере вторая форма пусть получит первую как реквизит (или переменную модуля) ВтораяФорма.РеквизитСудногоДня = ПерваяФорма; теперь первая форма на клиенте закрылась. Если на клиенте нет на нее ссылок, то 1С имеет право ее положить в мусор. Не бегать же за подсчетом ссылок на сервер? Теперь вызывает так: ВтораяФорма.ПолучитьРеквизитСудногоДня().Обновить(); //простите что? оно же в мусоре! |
|||
21
Ненавижу 1С
гуру
02.09.21
✎
18:52
|
+(20) именно поэтому всякие массивы передаются с клиента на сервер как копии своих значений, чтобы не заниматься подсчетом ссылок
|
|||
22
Гений 1С
гуру
02.09.21
✎
18:58
|
(17) как будто у тебя это при каждом серверном вызове не происходит? гггг
В общем, написал статью на эту тему: https://geniy1s.ru/nevozmozhnost-peredachi-formy-s-klienta-na-server/ |
|||
23
Гений 1С
гуру
02.09.21
✎
18:59
|
(20) в статье я описал, что при вынесении кода в общие модули с этой проблемой встретишься гарантированно. Это не неудобство, это БЕДА 1С
|
|||
24
Жан Пердежон
02.09.21
✎
19:03
|
обычно думаешь, как бы оптимизировать: где несколько вызовов в один объединить, где по значению передавать, где без контекста, а то и без серверного вызова
тс думает, как бы сделать, чтобы говнокодить было проще |
|||
25
Гений 1С
гуру
02.09.21
✎
19:05
|
(24) если кодить проще, то результат лучше получается. Для этого 1с и была задумана, чтобы доступно и всерьез.
как видишь, из-за этой шняги все пишут формы не разбивая ее по модулям. |
|||
26
Гений 1С
гуру
02.09.21
✎
19:06
|
Что вредит читаемости, повторному использованию кода и т.п.
обрати внимание, что в формах на ОФ было принято использовать модуль формы, в УФ это рудиментом стало. |
|||
27
H A D G E H O G s
02.09.21
✎
19:08
|
Автор грешит контекстными вызовами. Стыд и срам.
|
|||
31
Гений 1С
гуру
02.09.21
✎
19:15
|
(27) при рефакторинге формы это нормально
|
|||
32
BeerHelpsMeWin
02.09.21
✎
20:18
|
(0) Да уж, какую х-ню только люди не придумают, чтобы не писать нормальный код.
|
|||
33
Гений 1С
гуру
02.09.21
✎
20:30
|
(32) я вот все хочу посмотреть на этот "нормальный код", но все скрывают, приходится самому статьи писать, просвещать дремучих
|
|||
34
Guk
02.09.21
✎
21:06
|
а ведь у этого "специалиста" какие-то клиенты есть ;) жалко их, чесслово...
|
|||
35
acht
02.09.21
✎
22:32
|
Боженьки, Геня пишет письма в спортлото против мутабельных объектов. Какая прелесть.
|
|||
36
Вафель
02.09.21
✎
22:34
|
(35) но формально то платформа это умеет
|
|||
37
acht
02.09.21
✎
22:37
|
(36) Неа. Это не передача на сервер, а синхронизация контекстов.
|
|||
38
dangerouscoder
02.09.21
✎
23:03
|
(34) жадные клиенты должны страдать
|
|||
39
Гений 1С
гуру
03.09.21
✎
07:44
|
(36) вот именно.
|
|||
40
Гений 1С
гуру
03.09.21
✎
07:44
|
(38) наблюдаю "стокгольмский синдром"
|
|||
41
Mort
03.09.21
✎
08:12
|
Мда уж. "Гении" не пытаются разобраться/почитать мануалы, они сразу, по своим поверхностным представлениям выдают шедевры космической глупости.
Вот пара предложений с ИТС из которых открывается вся абсурдность фантазий про "взять клиентскую форму и отправить в параметре на сервер": "Т.к. данные формы доступны и на клиенте и на сервере, то основным хранилищем всех данных выступает сервер, просто потому что взаимодействие клиента и сервера инициируется только с клиента. Это означает, что в момент работы в памяти сервера находятся все данные формы, и доступ к ним осуществляется напрямую. На клиенте же имеется в общем случае частичное представление этих данных, при необходимости подгружаемое с сервера. При дальнейшей работе с формой изменения данных могут передаваться туда и/или обратно для синхронизации состояний клиента и сервера." |
|||
42
Ненавижу 1С
гуру
03.09.21
✎
08:20
|
(40) я тебе проблему в (20) описал, но ты не вчитывался
|
|||
43
Гений 1С
гуру
03.09.21
✎
09:07
|
(41) и? любая существующая на клиенте форма существует на сервере. В параметре передается просто ссылка на эту форму. В чем парадокс? Почему эту ссылку нельзя передать с клиента на сервер? Алле? Что за отрицание реальности?
|
|||
44
Гений 1С
гуру
03.09.21
✎
09:09
|
(20) а в чем проблема? Если форма не закрыта, она существует на сервере и следовательно, на нее существует ссылка на клиенте. Даже если все ссылки на клиенте закрыты, если форма открыта, она существует и ее можно получить через коллекцию форм. Проблема надумана и отсосана из пальца
|
|||
45
Гений 1С
гуру
03.09.21
✎
09:09
|
любая ссылка на форму - это ссылка на контекст формы (на клиенте и на сервере). Пока форма жива, эта ссылка имеет смысл, после закрытия формы она обращается в ничто.
|
|||
46
Ненавижу 1С
гуру
03.09.21
✎
09:10
|
(44) ты вообще не читаешь, а если она закрыта и ссылок на нее нет на клиенте?
|
|||
47
Ненавижу 1С
гуру
03.09.21
✎
09:11
|
(45) в ничто, на клиенте закрыли форму - ее можно уничтожить? а ссылка на сервере есть...
|
|||
48
Гений 1С
гуру
03.09.21
✎
09:12
|
(47) при вызове команды закрытия формы она фактически закрывается (т.е. в интерфейсе закрывается). И все ссылки на клиенте и сервере обращаются в Неопределено. В чем проблема?
|
|||
49
Гений 1С
гуру
03.09.21
✎
09:13
|
(47) если ты именно про ссылки на созданные формы, то если форма создана и явно не уничтожена, она должна храниться в памяти. Она будет доступна в коллекции форм, если что.
|
|||
50
Гений 1С
гуру
03.09.21
✎
09:13
|
это будет избавлять от неряшливого кодирования.
|
|||
51
Гений 1С
гуру
03.09.21
✎
09:14
|
т.е. пока форма не уничтожена, она хранится в памяти, не вижу проблем.
|
|||
52
Ненавижу 1С
гуру
03.09.21
✎
09:15
|
(48) во первых это не так, никто не будет оббегать все объекты в поисках ссылок, это дорого
во-вторых, для этого понадобилось внезапно бы лезть еще раз на сервер (49) внезапно мнение поменялось ты вообще знаешь как устроены системы с управляемой памятью и сборщиком мусора? |
|||
53
Гений 1С
гуру
03.09.21
✎
09:15
|
Способ вызывать форму из клиента через функцию-посредник формы есть. значит, платформа может это делать, но не делает.
В итоге провоцируется длинный монокод формы. |
|||
54
Гений 1С
гуру
03.09.21
✎
09:16
|
(52) ты что-то не уловил. Никакого подсчета ссылок. Нет явной команды уничтожения формы - форма хранится.
(52) как сборщики мусора устроены. знаю. Теперь расскажи, как ты это применяешь для форм. |
|||
55
Ненавижу 1С
гуру
03.09.21
✎
09:17
|
(53) да, но только в контексте одной формы, ты войдешь в этом контексте на сервере и выйдешь из него в нем же, другие формы на сервере ты так не изменишь
|
|||
56
acht
03.09.21
✎
09:17
|
(54) Геня. У тебя доступ на партнерский есть?
|
|||
57
Гений 1С
гуру
03.09.21
✎
09:18
|
(56) нету. (55) ошибаешься, в любой форме, где есть такая процедура-затычка
|
|||
58
Cyberhawk
03.09.21
✎
09:19
|
Подключили на форме 2 обработчика ожидания. В них передаем форму в разные методы (или даже модули) на сервер. Там параллельно с формой что-то делается.
Как синхронизировать потом на клиенте эти изменения? |
|||
59
acht
03.09.21
✎
09:19
|
(57) > нету
А ты делал что нибудь, для его получения, клоун? |
|||
60
Гений 1С
гуру
03.09.21
✎
09:20
|
(58) платформа стандартно все делает, в чем проблема? Для тебя удивительно, что все формы синхронизируются на клиенте и сервере.
Мы передаем не форму, а ссылку на нее. Форма всегда есть на клиенте и сервере. |
|||
61
acht
03.09.21
✎
09:21
|
(59) + Вот это вот твоё отсутсвие доступа очень хорошо характеризует твое истинное желание что-то понять и исправить.
Ггг, в айти кризис. |
|||
62
acht
03.09.21
✎
09:25
|
(60)
Удачи в синхронизации |
|||
63
Гений 1С
гуру
03.09.21
✎
09:32
|
(61) там доступ платный. И особого смысла не вижу. Обычно там хоронят проблемы
|
|||
64
Гений 1С
гуру
03.09.21
✎
09:32
|
(62) изивини, твой пассаж не понял
|
|||
65
acht
03.09.21
✎
09:36
|
(63) > И особого смысла не вижу
Браво. |
|||
66
Гений 1С
гуру
03.09.21
✎
09:38
|
(65) ну может ты мне его откроешь? 1С не заинтересована в обратной связи, она анально огорожена от критики, даже конструктивной. даже от багов.
|
|||
67
Ненавижу 1С
гуру
03.09.21
✎
09:39
|
(60) "Мы передаем не форму, а ссылку на нее"
это прям ошибка-ошибка, мы синхронизируем формы, а не просто ссылки передаем при передачи других объектов на сервер - мы делаем копию объекта, а не ссылку передаем Вот пример для демонстрации: &НаКлиенте Процедура Команда1(Команда) Массив = Новый Массив; МассивНаКлиенте(Массив); Сообщить(Массив.Количество()); // 1 Массив = Новый Массив; МассивНаСервере(Массив); Сообщить(Массив.Количество()); // 0 КонецПроцедуры &НаКлиенте Процедура МассивНаКлиенте(Знач Массив) Массив.Добавить(42); КонецПроцедуры &НаСервере Процедура МассивНаСервере(Знач Массив) Массив.Добавить(42); КонецПроцедуры |
|||
68
Asmody
03.09.21
✎
09:58
|
(60) [Форма всегда есть на клиенте и сервере] - с каких это пор "форма всегда есть на сервере"?
|
|||
69
Конструктор1С
03.09.21
✎
10:03
|
(25) нет, 1с была задумана не для говнокодинга, как бы тебе этого не хотелось
|
|||
70
Конструктор1С
03.09.21
✎
10:04
|
(26) >>Что вредит читаемости, повторному использованию кода
Читаемости вредит твоя манера делать наркоманскую архитектуру |
|||
71
Dmitrii
гуру
03.09.21
✎
10:22
|
(34) >> у этого "специалиста" какие-то клиенты есть ;) жалко их, чесслово.
Мало того. У него наверняка и последователи есть, которые читают его статьи и пользуются этими "откровениями". |
|||
72
lodger
03.09.21
✎
10:39
|
(25) это совершенно нормальная архитектура К-С взаимодействия. и точка перехода контекста формы в самой форме, это тоже совершенно нормально. а ТС наркоман и расписывается в этом тут (22)
|
|||
73
lodger
03.09.21
✎
10:40
|
(71) надо пошерстить его ресурс, вычленить кей-поинты и спрашивать у соискателей что они про это думают. легкий способ отсеять говнокодеров и коекакеров.
|
|||
74
Конструктор1С
03.09.21
✎
10:44
|
(71) самое досадное, что этот рукозад объявил себя в домике, и ничего слышать не хочет
|
|||
75
acht
03.09.21
✎
11:11
|
(66) > она анально огорожена от критики
Чой-то ржу. Ты на себя-то давно смотрел, родной? =) |
|||
76
Гений 1С
гуру
03.09.21
✎
11:18
|
(68) что-то не так?
|
|||
77
Гений 1С
гуру
03.09.21
✎
11:19
|
(72) ты забываешь, что заплаткой я получаю желаемый результат, проблема не в архитектуре КС, а в искусственных ограничениях. Наблюдаю стокгольмский синдром, когда программисты восхваляют свои цепи
|
|||
78
Ненавижу 1С
гуру
03.09.21
✎
11:26
|
(77) наблюдаю выборочный подход к ответам на поставленные вопросы по существу
|
|||
79
BeerHelpsMeWin
03.09.21
✎
11:28
|
(73) Я уже неоднократно говорил, что его сайт отлично подходит для собеседований. Берешь любую статью, показываешь соискателю и спрашиваешь, что сделано не так и как надо сделать правильно. Мало где в интернете есть такое количество говнорешений в открытом доступе.
|
|||
80
ildary
03.09.21
✎
11:33
|
(79) Опасная идея - соискатель рискует лопнуть от смеха и фейспалма.
|
|||
81
VladZ
03.09.21
✎
11:40
|
Я так и не понял, зачем это автору.
|
|||
82
Mort
03.09.21
✎
11:43
|
(81) Любой плохой код рано или поздно натыкается на какие-то платформенные/логические ограничения. Гена вместо приведения кода к логике, хочет сломать эти ограничения.
|
|||
83
Гений 1С
гуру
03.09.21
✎
12:10
|
(82) логика простая - нужно сделать рефакторинг. Иногда нужно передавать форму целиком, чтобы настроить ее элементы, например. Вопросы, юнга?
|
|||
84
Конструктор1С
03.09.21
✎
12:11
|
(77) вся история развития программирования связана с ограничениями. Изобрели XML - по сути ограничение, зажимает в использование текстового формата определенной структуры, на деле - огромный прорыв. Без XML различные системы с трудом обменивались информацией, ибо каждый городил кто во что горазд, с XML смогли обмениваться данными самые разношерстные системы. Изобрели реляционные БД, SQL, они зажимают в структурирование данных до таблиц, на деле - огромный прорыв. Без РБД данные хранили кто во что горазд, было почти невозможно достигнуть многопользовательской работы с данными... Также и платформа 1С - кладезь полезных ограничений.
Но вот выбежал рукожоп с горы, и давай рассуждать про вред ограничений |
|||
85
Гений 1С
гуру
03.09.21
✎
12:11
|
(78) какие вопросы остались не отвеченными. Подсчет ссылок не нужен. Еще вопросы?
|
|||
86
Гений 1С
гуру
03.09.21
✎
12:11
|
(81) ну например, чтобы вынести код формы в общие модули. простейшее
|
|||
87
Гений 1С
гуру
03.09.21
✎
12:12
|
(84) да, но это ограничение абсолютно искусственно, просто кому-то из архитекторов было лень почесаться в итоге имеем ягодицы.
|
|||
88
lodger
03.09.21
✎
12:13
|
(86) выноси, плохому танцору сам знаешь что мешает.
|
|||
89
Maniac
03.09.21
✎
12:18
|
Суть глобальных модулей это выносить код который используется многократно во множестве модулей.
А не для того чтобы ты какую то сраную форму выносил. |
|||
90
Конструктор1С
03.09.21
✎
12:19
|
(86) скажи спасобо всем этим ограничениям. Благодаря им твои поделия хотя бы запускаются. Пусти тебя в чистое поле, наперевес с языком программирования общего назначения, ты такую аритектурную наркоманию нагородишь, которая даже не сможет запуститься. Благодаря "ограничениям" программировать могут даже такие рукозады, как ты
|
|||
91
Maniac
03.09.21
✎
12:21
|
(90) у Гени нет подделок даже. за 10 лет только куча никому не нужного мусора.
|
|||
92
Гений 1С
гуру
03.09.21
✎
12:21
|
(90) стокгольмский синдром детектед.
(91) а они должны быть? |
|||
93
Mort
03.09.21
✎
12:23
|
Допустим Гена стал главным разработчиком платформы и решил всё-таки запилить передачу формы из клиента в параметрах. Сейчас покажу как он обломается.
Пример1: Форма.Реквизит1 = 10; СерверныйМодуль.МояПроцедура(Форма); Гена предлагает на сервере поймать ID формы или как он пишет "Ссылку". Но тогда все клиентские изменения не попадут на сервер (вот это: Форма.Реквизит1 = 10;), т.е. если платформа видит передачу формы параметром, она должна сначала её синхронизировать с объектом формы на сервере. И это мы ещё не передали массив или структуру с формами внутри. Дальше, в общем модуле: Процедура МояПроцедура(Форма) Форма.Реквизит1 = 30; КонецПроцедуры Форма на сервере изменилась, а когда эти изменения попадут в клиентскую форму? т.е. платформа должна проводить синхронизацию и при возвращении? И таких вопросов полно. Только Гений их не видит. Глаза заплыли "гениальностью" )) |
|||
94
Гений 1С
гуру
03.09.21
✎
12:24
|
(93) Ошибка "т.е. если платформа видит передачу формы параметром, она должна сначала её синхронизировать с объектом формы на сервере"
При передаче ссылки на форму с клиента на сервер происходит синхронизация клиентской и серверной формы. Дальше не читал. |
|||
95
Гений 1С
гуру
03.09.21
✎
12:24
|
Еще раз, чтобы не было домыслов - уже сейчас все это прекрасно работает через заплатку. Речь только о том, чтобы это работало без костыля
|
|||
96
Конструктор1С
03.09.21
✎
12:25
|
(92) наркоман детектед
|
|||
97
acht
03.09.21
✎
12:27
|
(93) Процедура МояПроцедура(Знач Форма) =)
|
|||
98
Mort
03.09.21
✎
12:28
|
(95) Кстати да, насчет заплатки. Я думал там действительно гениальное решение по передаче данных формы на сервер или какой-нибудь грязный хак для работы с экземпляром формы на сервере в обход. А там тупо обычный контекстный переход на сервер срущий в модуль формы. Если можно писать в модуль формы, надо туда не это говно запихивать, а нормальный код по работе с формой на сервере с её логикой.
|
|||
99
Конструктор1С
03.09.21
✎
12:28
|
Нормальные программисты всегда стремятся к порядку, единообразию. Ты стремишься к анархии. Таким не место в программировании
|
|||
100
Конструктор1С
03.09.21
✎
12:33
|
(95) твоя проблема в том, что ты задачи решаешь ректально. Если бы до тебя дошел архитектурный принцип, согласно которому бизнес-логика не должна зависить от интерфейса, то надобность в проталкивании формы через анус отпала бы сама собой
|
|||
101
Maniac
03.09.21
✎
12:37
|
На самом деле я не понял что Геня изобрел. в типовой полно глобальников где передается форма.
У меня даже есть такие процедуры некоторые - потому что например условные оформления для формы можно только на сервере программно управлять. А в типовой вообще это на раз два. Что Геня придумал - вообще не понял. очередной припадок видимо гениальности. |
|||
102
Maniac
03.09.21
✎
12:39
|
О придумал параметр передаваемый в процедуре? Типа???
&НаСервере Процедура УстановитьУсловноеОформлениеСтрок(Объект,ФормаОбъекта,ЭлементОбъекта,ЭлементФормы) Экспорт |
|||
103
Вафель
03.09.21
✎
12:41
|
(93) не нужно передавать ссылку на форму на сервер.
форма живет и на сервере и на клиенте. те при передаче формы с клиента на сервер, должна придти ссылка на серверную часть |
|||
104
Вафель
03.09.21
✎
12:42
|
сейчас конечно это невозможно ибо пытается на сервер попасть именно клиентская часть.
|
|||
105
Maniac
03.09.21
✎
12:45
|
Из клиенской процедуры - создается серверная процедура.
После того как форма синхронизировалась с серверной частью там уже можно любые глобальники юзать. |
|||
106
Maniac
03.09.21
✎
12:49
|
в том числе в которых передавать параметр формы, для того чтобы обращаться к реквизитам и данным в этих реквизитах как вздумается.
Иногда можно делать просто глобальные серверные процедуры, в которые передавать структурой любые реквизиты формы и работать с ними. С некоторыми можно даже без контекста работать. если в параметре был указан конкретный перечень реквизитов. Пример. Есть реквизит формы табличный документ. Есть глобальная процедура которая формирует отчет выводимый в этот табличный документ (поле формы). Без контекста можно из клиента создать серверную процедуру без контектса, в которой будет в своюб очередь глобальная процедура. в параметр которой впихнут реквизит формы. |
|||
107
Maniac
03.09.21
✎
12:51
|
&НаСервереБезКонтекста
Процедура СформироватьОтчетПоЦенамСервер(ТаблицаОтчета,ПараметрыЗапроса) МегаПомощникПродажСервер.СформироватьОтчетПоЦенам(ТаблицаОтчета,ПараметрыЗапроса); КонецПроцедуры &НаКлиенте Процедура СформироватьОтчетПоЦенам() ПараметрыЗапроса = Новый Структура; ПараметрыЗапроса = ПолучитьПараметрыДетальногоЗапроса(ПараметрыЗапроса); СформироватьОтчетПоЦенамСервер(ТаблицаЦеныНоменклатуры,ПараметрыЗапроса); КонецПроцедуры ТаблицаЦеныНоменклатуры - реквизит формы с типом ТабличныйДокумент. |
|||
108
Ыцшесрук
03.09.21
✎
12:51
|
Геню, похоже, нужно вводить в анналы истории как эталонный пример синдрома Даннинга-Крюгера.
|
|||
109
acht
03.09.21
✎
12:57
|
(108) > вводить в анналы
Да его уже давно и по самые помидоры. Сейчас народ просто прикидывает, как его в мирных целях использовать можно, например (73). Может и сгодится на что... |
|||
110
Ненавижу 1С
гуру
03.09.21
✎
15:20
|
опять ждать Free RAD?
https://geniy1s.ru/developments-soft/free-rad/ |
|||
111
Гений 1С
гуру
03.09.21
✎
15:24
|
(101) это говорит о твоем уровне, как программиста
|
|||
112
Гений 1С
гуру
03.09.21
✎
15:25
|
(110) Базуху жи
|
|||
113
Maniac
03.09.21
✎
15:34
|
FREE RAD
Миссия проекта: дать программистам-разработчикам инструмент для быстрой разработки приложений (RAD — Rapid Application Development), связанных с базами данных. Человек пишет инструмент для разработки приложений, тот кто ни одного приложения в жизни не создал)) Тем более коммерческого)) |
|||
114
Maniac
03.09.21
✎
15:38
|
https://geniy1s.ru/developments-1s/1s-data-exchanges/csv-xml-translation/
"Для считывания CSV использовался не очень быстрый метод считывания файла в строку с последующим разбором отсюда. Метод реально медленный на 72 Мб файле работал 10 минут. Но работает правильно, т.к. обрабатывает переносы строк." Геня научился CSV читать!!))) Открыл АМЕРИКУ. но 10 минут! Геня у меня обработка чтения CSV есть которая файл в 1 гиг с 15 000 000 строк - за 8 секунд читает. |
|||
115
Maniac
03.09.21
✎
15:39
|
А за минуту может создать новый файл в новыми ценами из этого первого файла.
|
|||
116
lodger
03.09.21
✎
15:44
|
(114) ты просто не понимаешь всего гения.
|
|||
117
Гений 1С
гуру
04.09.21
✎
17:29
|
(114) я надеюсь перенос строки в кавычках она отрабатывала?
|
|||
118
acht
04.09.21
✎
17:30
|
(117) Подожди. Маня воюет с иностранцами в интернете, ему не до кода =)
|
|||
119
Гений 1С
гуру
04.09.21
✎
22:02
|
(118) с украинцами штоли? У него ж оттедова конкуренты
|
|||
120
dmitryds
04.09.21
✎
22:05
|
(94) Ты ведь вроде сайтами занимался, должен понимать, что на клиенте не может быть ссылки на форму (как при работе на сервере)
|
|||
121
МнеТолько Спросить
05.09.21
✎
05:07
|
(72) >ТС наркоман и расписывается в этом тут
Тоже мне новость (77)Ты лучше расскажи ты от цепей ограничения использования ОРМ 1с уже отказался? Ты вот вот(прям уже почти готово было) хотел выпустить набор обработок которые не будут использовать базу 1С а будут использовать, любые другие БД и за 12 копеек можно было получить полный функционал работы с 1С и даже какой-то способ перевести свои конфигурации с БД которую юзает 1С на ту какая тебе нравится. Как там дела? Готово? (91)Видел на ИС публикацию когда гений в 1с не смог в цикле сложить две строки и решил использовать для этого эксель |
|||
122
Гений 1С
гуру
05.09.21
✎
09:49
|
(120) шта? форма живет на сервере и клиенте и синхронизируется. Конечно же, ссылка на форму может быть (или гуид формы, или как не назови). Что за бред вы пишите? при чем сайты к УФ?
|
|||
123
Гений 1С
гуру
05.09.21
✎
09:50
|
(121) что такое ОРМ? Базуха - хорошая тема, но я пока увлечен ЕБОША, т.е. вкалыванием
|
|||
124
Юрий Лазаренко
05.09.21
✎
10:15
|
(0) Крайне ужасные решения появятся, если в платформе будет возможность передавать все данные формы при каждом вызове серверного общего модуля. Подробности вот тут посмотри: https://youtu.be/PvQX0H28S_M?t=851
Если кратко: каждый такой вызов будет серверным контекстным. То есть, все данные формы превращаются в структуру (условно "структуру"), передаются на сервер, там актуализируются; далее выполняется какое-то действие и все конвертация и передача происходит в обратном порядке. Пример с лагерем и спичками тут подходит прекрасно. Сейчас для того, чтобы выполнить какие-то действия на сервере, не все заморачиваются выбором типа вызова: серверный контекстный или серверный бесконтекстный. Нагрузка на сервер при этом различается на порядки, то есть в сотни раз. Для передачи контекста формы на сервер сейчас надо вызвать серверную процедуру формы. Это "лишнее" телодвижение, которое хоть как-то отбивает желание 1Сника сделать несколько контекстных серверных вызовов там, где можно обойтись одним. Если же общие серверные модули можно будет вызывать из любого места формы, то скоро от быстродействия этой формы не останется ничего. |
|||
125
Гений 1С
гуру
05.09.21
✎
11:25
|
(124) при каждом не надо. форма и так уже существует на сервере
|
|||
126
Гений 1С
гуру
05.09.21
✎
11:25
|
Если это сложно определить платформе, можно указать директиву препроцессора
|
|||
127
Ненавижу 1С
гуру
05.09.21
✎
11:30
|
(125) а толку? Она на клиенте возможно изменилась и её надо синхронизовать и потом в обратную сторону
|
|||
128
Гений 1С
гуру
05.09.21
✎
11:32
|
(127) послушай, я делаю все то же самое через заплатку в форме, почему это не может сделать платформа. Ну можно изменить и в обратную сторону, в чем проблема?
|
|||
129
lucbak
05.09.21
✎
11:36
|
(124) Цитата "Сервер не может вызвать клиента даже если очень этого захочет" (возможно не дословно, но смысл именно такой был). Ставим СВ и о чудо - оказывается сервер может вызвать клиента :) Я конечно не программист, но складывается ощущение, что что-то не то в консерватории...
|
|||
130
Гений 1С
гуру
05.09.21
✎
11:45
|
(129) мне не нужно вызывать клиента с сервера, мне нужно вызывать сервера с клиента.
А что такое СВ? |
|||
131
Ненавижу 1С
гуру
05.09.21
✎
11:49
|
(128) твоя заплатка не сработает если нужно передать две формы
|
|||
132
lucbak
05.09.21
✎
11:56
|
(130) Сервер Взаимодействия
|
|||
133
Ненавижу 1С
гуру
05.09.21
✎
12:08
|
(129) ну это может быть постоянный опрос клиентом сервера в отдельном потоке
|
|||
134
lucbak
05.09.21
✎
12:19
|
(133) Все может быть, но факт остается фактом - если нельзя, но очень хочется то можно все. Есть много вещей которые я не понимаю (относительно платформы) - почему можно гонять с клиента на сервер (и наоборот) массивы,списки,структуры,соответствия, но по какой-то странной логике нельзя - таблицы (разумеется я могу разложить ее в массив структур и т.д.), но ...
|
|||
135
Гений 1С
гуру
05.09.21
✎
12:51
|
(131) две не нужно.
|
|||
136
Гений 1С
гуру
05.09.21
✎
12:52
|
(134) ну вот о том и речь, что нужно убирать странности и приводить в норму
|
|||
137
Юрий Лазаренко
05.09.21
✎
12:55
|
(129) Слайд 33, мелким шрифтом внизу: https://youtu.be/PvQX0H28S_M?t=1034
|
|||
138
Ненавижу 1С
гуру
05.09.21
✎
12:58
|
(134) кажется я уже писал в (67) - потому что объекты не передаются так с клиента на сервер как ссылки, а происходит полная сериализация/десериализация объекта, фактически создается копия
они решили пойти компромисс и сделать возможной передачу относительно легких по структуре объектов я не говорю, что решение идеальное вообще все выглядит довольно странным - просто запомните, как неправильные глаголы, но что есть, то есть |
|||
139
Юрий Лазаренко
05.09.21
✎
13:01
|
+(137) Необязательно даже СВ ставить, можно и ВК + сокеты.
https://www.youtube.com/watch?v=5le3A2f3QjM |
|||
140
lucbak
05.09.21
✎
13:01
|
(137) Не прочитал сразу (сори). Другими словами, сделать можно все, но 1С это просто не нужно.
(138) Да я "запомнил" и смирился уже, но осадочек как говорится остался :) |
|||
141
Юрий Лазаренко
05.09.21
✎
13:04
|
(140) Платформа и так не сильно быстрая, нагружать ее дополнительными фишками - это утяжелить еще. К тому же, зачем весь дополнительный функционал включать в платформу и отдавать просто так, если можно продавать за дополнительные деньги, как СВ. Маркетинг и разные версии за разные деньги никто не отменял.
|
|||
142
Ненавижу 1С
гуру
05.09.21
✎
13:04
|
(140) а с формой так нельзя, нельзя просто взять и развернуть копию, а надо найти этот объект и синхронизовать
вообще форма на клиенте и на сервере в каком-то смысле объекты разных типов, просто синхронизированные друг с другом |
|||
143
Юрий Лазаренко
05.09.21
✎
13:08
|
(142) И тут важно помнить, что они не постоянно синхронизированные. Если форму открыть и в элемент ввода типа "Число" ввести цифру 2, то на клиенте цифра появится, а на сервере нет. Для синхронизации необходимо сделать контекстный серверный вызов (чаще всего). А серверный вызов - это суть разобрать/собрать весь лагерь, чтобы сходить за спичками. И чтобы таких вызовов было поменьше и платформа хоть как-то ворочалась и не погибла вместе с сервером, 1С сознательно не выполняет пожелалку ТС из (0). И правильно делает.
|
|||
144
Юрий Лазаренко
05.09.21
✎
13:13
|
(134) Кстати, в первых версиях управляемых форм, в 2008 году, таблица значений была доступна на клиенте. То есть, в управляемой форме в процедуре &НаКлиенте можно было написать
МояТЗ = Новый ТаблицаЗначений и это не было ошибкой. В следующих релизах это стало невозможным. |
|||
145
Гений 1С
гуру
05.09.21
✎
13:15
|
(140) вот потому я и оставил хотелку, чтобы показать 1с, что нам, простым программистам нужно
|
|||
146
lucbak
05.09.21
✎
13:17
|
(141) >>Платформа и так не сильно быстрая
Это одна из проблем 1С (вместо того, что бы делать очередные мало кому нужные бантики) могли бы заняться ее ускорением, но нет... (144) Забавно. |
|||
147
Юрий Лазаренко
05.09.21
✎
13:23
|
(146) 8.3 ускорить практически невозможно (ИМХО, конечно)
|
|||
148
acht
05.09.21
✎
13:40
|
(145) > что нам, простым программистам
Геня, ты с собой определись уже - ты простой программист или не простой? |
|||
149
Ненавижу 1С
гуру
05.09.21
✎
13:44
|
(148) альтернативно одаренный
|
|||
150
Вафель
05.09.21
✎
14:22
|
А какая задача решается?
Скорее всего тут плохой дизай формы. Но сама 1с мало думает о доработках. Но уже больше чем в обычных формах |
|||
151
MyNick
05.09.21
✎
14:43
|
(0)Гений, что-то я не понял, а накуа тащить контекст всей формы в общий модуль?
Для манипуляции со всей формой используется модуль формы. Для манипуляции с данными формы - передавай их в структуре параметра фунции общего модуля. Для чего эти костыли, "кулибин" ты наш? Чтобы было проще говнокодить? Обрисуй конкретную задачу, где это тебе надо и мы скажем почему тебе это не надо. |
|||
152
Ненавижу 1С
гуру
05.09.21
✎
14:52
|
(151) ну какой-то смысл есть
вот например мне понадобилось и форме заказа клиента и заказа на перемещение добавить колонки остатки/резервы по складу, объем и вес они общие для обеих форм, так не копировать же код два раза? |
|||
153
acht
05.09.21
✎
14:59
|
(152) Там из "скопированного два раза кода" будет ровно одна серверная контекстная процедура из ровно одной строки, вызывающей общий серверный модуль.
|
|||
154
MyNick
05.09.21
✎
15:06
|
(152) Так чтоли?
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //ОбщийДляФорм.ДобавитьЭлементы(Элементы); КонецПроцедуры // ИЛИ С КЛИЕНТА &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлементы(); КонецПроцедуры &НаСервере Процедура ДобавитьЭлементы() ОбщийДляФорм.ДобавитьЭлементы(Элементы); КонецПроцедуры /////////////////// ОБЩИЙ МОДУЛЬ /////////////// Функция ДобавитьЭлементы(Элементы) Экспорт Декорация = Элементы.Добавить("Декорация1", Тип("ДекорацияФормы")); Декорация.Заголовок = "Текст.."; КонецФункции |
|||
155
Ненавижу 1С
гуру
05.09.21
✎
15:07
|
(154) что-то в этом духе
Ну там еще расчет данных при добавлении/изменении товаров |
|||
156
MyNick
05.09.21
✎
15:11
|
(155) ...вооот... Т.е. Гении в одной функции хотят делать фарш из мух и котлет.
Это и есть говнокод. В одной функции получаем условия для отображения элементов и прочей манипуляции с ними. В другой - формируем интерфейс. И это правильно. Получение и обработка данных и их отображение должны располагаться в разных местах. Но гениям это мешает жить. Они целые статьи пишут и изобретают велосипеды с квадратными колесами. Лишь бы у последователей, читающих их божественный код, кровь из глаз шла. |
|||
157
Гений 1С
гуру
05.09.21
✎
18:21
|
(152) вызовешь отдельно для каждой формы
|
|||
158
Гений 1С
гуру
05.09.21
✎
18:22
|
(156) почитай про вынесение кода формы в модули, потом пиши с умным видом.
|
|||
159
Гений 1С
гуру
05.09.21
✎
18:22
|
(150) например, вынесение кода формы в модули
|
|||
160
Гений 1С
гуру
05.09.21
✎
18:22
|
(151) почитай статью не по диагонали, думаю, поймешь.
|
|||
161
Гений 1С
гуру
05.09.21
✎
18:23
|
(146) в данном случае скорость не важна, важнее наличие функционала, чтобы не писать заплатки (функции-посредники)
|
|||
162
Гений 1С
гуру
05.09.21
✎
18:23
|
ок. пусть 1с сделает встроенную функцию-посредник, если она не может в вызов серверного модуля с формой с клиента
|
|||
163
Ненавижу 1С
гуру
05.09.21
✎
18:47
|
(161) если параметры передавать через запись в справочник, то да, скорость не важна
|
|||
164
acht
05.09.21
✎
19:34
|
(162) > пусть 1с
Повелеваешь? |
|||
165
Конструктор1С
05.09.21
✎
19:48
|
(158) Геня, бизнес-логика и интерфейс должны быть разделены. Бизнес-логика не должна зависеть от интерфейса. Ты когда уже программировать научишься? То, чем ты сейчас занимаешься, сложно назвать программированием, это кодошлёпство
|
|||
166
Конструктор1С
05.09.21
✎
19:52
|
Елитный говнокод. Смесь индусского с наркоманским
#Область ДляВызоваССервера &НаСервере Процедура ПроцедураНаСервере(ИмяМетода, П1 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П2 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П3 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П4 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П5 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a") Экспорт П = ""; Если П1 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = ", П1"; Если П2 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П2"; Если П3 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П3"; Если П4 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П4"; Если П5 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П5"; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Выполнить(ИмяМетода + "(ЭтаФорма" + П + ")"); КонецПроцедуры &НаСервере Функция ФункцияНаСервере(ИмяМетода, П1 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П2 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П3 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П4 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П5 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a") Экспорт Р = Неопределено; П = ""; Если П1 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = ", П1"; Если П2 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П2"; Если П3 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П3"; Если П4 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П4"; Если П5 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда П = П + ", П5"; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Выполнить("Р = " + ИмяМетода + "(ЭтаФорма" + П + ")"); Возврат Р; КонецФункции #КонецОбласти |
|||
167
Конструктор1С
05.09.21
✎
19:55
|
Пойду глаза прополощу
|
|||
168
Гений 1С
гуру
05.09.21
✎
22:28
|
(165) 0 бит, прости. Есть задачи по дизайну формы, они связаны с интерфейсом, а не логикой, их хочется и нужно выносить в общие модули
|
|||
169
DropDead
06.09.21
✎
03:24
|
Я все ещё не понимаю, зачем вы за гения работу делаете?
Он вам башляет? |
|||
170
Конструктор1С
06.09.21
✎
06:40
|
(168) в UI/UX ты тоже полное дно, поэтому у тебя и рождаются перлы типа (0)
|
|||
171
Юрий Лазаренко
06.09.21
✎
09:50
|
(161) Конечно, "скорость не важна". Подумаешь - сервак положили.
|
|||
172
Ненавижу 1С
гуру
06.09.21
✎
10:02
|
(171) в ларьках клиентов фиксина нет серваков
|
|||
173
acht
06.09.21
✎
10:10
|
(172) > нет серваков
гггг, 0 бит, в айтикризис, фирма 1С не может, вот вам статья как я с ней борюсь. =) |
|||
174
sikuda
06.09.21
✎
11:29
|
(171) Гений 1С как осел в Шреке - повод лучше разобраться...
|
|||
175
Конструктор1С
06.09.21
✎
12:04
|
(174) если бы Г1С писал для себя, то фиг бы с ним. А так придёт ведь после него прогер, который будет вынужден иметь дело со всей той наркоманией, которую Г1С нагородил
|
|||
176
acanta
06.09.21
✎
12:07
|
В последних версиях типовых было уже не модно с такими параметрами как в (166), рекомендовалось структуру одну в качестве параметра или максимум три параметра - структура, форсмажорный отказ и что то на ответ по аналогии с функцией.
|
|||
177
acanta
06.09.21
✎
12:09
|
То есть вся лирика с гуидами в одной переменной, и еще мухи с котлетами как необязательные.
|
|||
178
BeerHelpsMeWin
06.09.21
✎
13:00
|
(175) Это будет отличный повод запросить больше денег. Но есть одна проблема - у Гениных клиентов-нищебродов таких денег нет.
|
|||
179
MyNick
06.09.21
✎
13:54
|
(158), (159), (160).
Твои гениальные мысли я читал. И не по диагонали. Понятно, что ты хочешь. Даже понятно, зачем. Даже сталкивался с такой потребностью сам, когда начинал осваивать УФ. На первых порах плевался как и ты (вот же гады, не дают по быстренькому нафигачить "чтобы работало"). Но осознание позже, с опытом пришло - что так делать кака. И почему - написано в (165) например. (166) согласен... вот это жесть так жесть. |
|||
180
Maniac
06.09.21
✎
15:42
|
зачем Геня дарит миру) то что никому не нужно?
У него даже нет ни одного массового решения которое кому либо было нужно, я уже молчу про коммерческие. Получается он на ком то из клиентов эксперементы ставит! коверкает до ужаса. Потом уходит. Вместо него приходят люди и окуевают! Так получается? |
|||
181
acht
06.09.21
✎
17:10
|
(180) Потому что у него ничего больше нет. И вот этим последним он делится с нами, которые окуевают даже не приходя у его клиенту. Получается так.
|
|||
182
Гений 1С
гуру
06.09.21
✎
17:50
|
(179) Гуру, преклоняю перед вами колени, если конечно не пи...., ой, не врете... а в 165 у тебя общие слова.
|
|||
183
H A D G E H O G s
06.09.21
✎
23:12
|
Вот чего действительно не хватает в УФ - так это прямого вызова методов модулей менеджеров с клиента.
|
|||
184
H A D G E H O G s
06.09.21
✎
23:13
|
Ты не сможешь вызвать код вот так с клиента
КодыВидовЛицензируемойДеятельности=Справочники.АСФЛицензии.ПолучитьКодыВидовЛицензируемойДеятельности(); |
|||
185
RomanYS
06.09.21
✎
23:23
|
(183) так если самих менеджеров не на клиенте, то и их модулей логично нет. Чем общий клиентский модуль не устраивает?
|
|||
186
acanta
06.09.21
✎
23:24
|
(184) как бы да, это был первый пункт рекламной кампании новой 8ки для семерочников.
|
|||
187
acanta
06.09.21
✎
23:26
|
Поэтому семерочникам (у которых не было) проще переходить на УФ (где тоже уже нет), чем на ОФ (где все есть, но как то не очень получается).
|
|||
188
H A D G E H O G s
06.09.21
✎
23:52
|
(185)
ПредопределенноеЗначение("Перечисление.АСФВидыЛицензируемойДеятельности.ЗакупкаЭСПофармакопейнымСтатьямБолее200дклВГод") |
|||
189
Ненавижу 1С
гуру
06.09.21
✎
23:54
|
(185) а чем общий серверный модуль в этом случае отличается от модуля менеджера?
|
|||
190
RomanYS
07.09.21
✎
00:09
|
(188) ну да, сами перечисления недоступны, а значения доступны. Может и можно было красивее сделать. Раньше от этого тоже подташнивало, а теперь привык)
(189) ну должна же где-то быть граница. Все метаданные тащить на клиент, тоже так себе идея |
|||
191
H A D G E H O G s
07.09.21
✎
00:18
|
(190) В начальных 8.2 этой функции не было, приходилось в ПриСозданииНаСервере на клиент тащить ссылки. Потом впилили костыльчик.
|
|||
192
Конструктор1С
07.09.21
✎
05:02
|
(191) так не нужно писать бизнес-логику на клиенте, и не будет такой уродливой надобности. Форма впринципе не должна заведовать бизнес-логикой, только отвечать за интерфейс
|
|||
193
Ыцшесрук
07.09.21
✎
05:27
|
Геня старательно вызывает на себя ковшики с какахами и методично ими обмазывается :)
|
|||
194
Гений 1С
гуру
07.09.21
✎
08:12
|
(193) я за истену.
|
|||
195
luter-89
07.09.21
✎
09:04
|
(33) Есть такая штука как БСП, может почерпнешь что-то новое
|
|||
196
Гений 1С
гуру
07.09.21
✎
12:44
|
(165) а мы где говорили про бизнес-логику? Клиент как раз и обращается на сервер, чтобы что-то однотипно отрисовать, т.е. сделать настройки интерфейса.
|
|||
197
acht
07.09.21
✎
12:57
|
(196) А пользователь входит в программу чтобы поработать.
|
|||
198
H A D G E H O G s
07.09.21
✎
13:01
|
Ловите любителя подергать за сервер в (192)!
|
|||
199
acht
07.09.21
✎
13:13
|
(198) А он прав.
Вот, например раньше была дырка, все серверные методы были экспортные и видимые с клиента... И пишет один такой геня, которому думать неохота, в форме на клиенте: Если ЕстьВозможностьУвольнятьСотрудникаНаСервере() Тогда УволитьСотрудникаНаСервере(); КонецЕсли; А второй геня пишет: Форма = ПолучитьФорму(...); Форма.Объект.Сотрудник = НенавистныйДиректор; Форма.УволитьСотрудникаНаСервере(); И все, бизнес логика пошла лесом, потому что геням так удобно. |
|||
200
acht
07.09.21
✎
13:15
|
А потом статью пишет и на форумах ссылки раскидывает - посмотрите, мол, какой я молодец, обошел дурацкое ограничение фирмы 1С, гггг, в айти кризис.
|
|||
201
Maniac
07.09.21
✎
13:28
|
(192) да ну. я тебе могу привести кучу примеров когда стоят задачи обработки данных которых вообще в базе НЕТ!!!
А с какого уя их приходиться все время ТАСКАТЬ НА СЕРВЕР чтобы что то там сделать и ВЕРНУТЬ НАЗАД. Потому что большую часть каких то действие ФИГ СДЕЛАЕШЬ. например получили какие то данные на клиенте. в форму в таблицы. каого фени к ним ни запроса, ничерта сделать невозможно. Повторю - этих данных в базе НЕТ и на сервере нет. А с 1С жесткие ограничения на клиенте. |
|||
202
Maniac
07.09.21
✎
13:29
|
Даже у одно обработки есть несколько ФОРМ. нужно всю байду затащить на сервер, чтобы потом оттуда вытащить. БРЕД
|
|||
203
Maniac
07.09.21
✎
13:31
|
И еще что убивает. Даже если имеем обьект, в котором к примеру много таблиц и частей.
Даже если хотим на сервере что то обработать. Почему нет элементарной возможности просто передать некоторые реквизиты или таблицы обьекта а не ВЕСЬ ОБЪЕКТ. |
|||
204
Maniac
07.09.21
✎
13:33
|
Нафига нужно выгружать ТЧ в переменную чтобы передать в запрос?
А потом приходится еще после запроса еще выборку делать чтобы опять в ТЧ запихнуть выгрузкой или перебором - если всего пара колонок каких то нуждалась в обработке. Вопросов миллион на самом деле к конфигуратору. |
|||
205
Maniac
07.09.21
✎
13:41
|
А к типовым еще БОЛЬШЕ вопросов.
Почему в УНФ БСП не такое как у всех? Почему в регистре не ВидЦен и ВидЦены Почему справочник Склады - Структурные подразделения Почему Виды номенклатуры - Категории номенклатуры Почему Использование характеристик - Использовать характеристики Почему в номенклатуру поставщиков нет владельца, а есть реквизит Владелец. Почему нет ни одного обработчика табличных частей (суммы, ндс, скидки) с Экспортом. Даже в 1С розница есть Почему в регистрах полный бред. |
|||
206
Maniac
07.09.21
✎
13:43
|
Почему чтобы в любой типовой посмотреть процедуру глобальную - нужно 10 глобальников пролистать.
Даже просто на обработке строки - например сумму ндс - затаскает по километру кода и 25 глобальным модулям. |
|||
207
acht
07.09.21
✎
13:57
|
(204) Маня, зачем ты занимаешься этим мазохизмом в 1С?
Шел бы, например, могилки копал. Там всегда спокойные клиенты, четкое ТЗ, нет этого "ай, не того закопали, перезакапывайте заново", устоявшийся и эффективный набор инструментов. |
|||
208
BeerHelpsMeWin
07.09.21
✎
13:59
|
(201) А зачем обрабатывать данные, которых в базе нет?
|
|||
209
Олеша Попович
07.09.21
✎
14:02
|
(207) а что написано на партнерском форуме, для Гени 1с? скинь ссылку почитаю
|
|||
210
Kassern
07.09.21
✎
14:06
|
(204) вот тут я не понял в чем проблема выгрузить ТЧ в ТЗ, обработать запросом и загрузить обратно? В типовых при обработке строк есть как для всей ТЧ, есть для конкретной строчки процедуры, просто передаешь структуру действий необходимую. Про УНФ это отдельная песня...
|
|||
211
Maniac
07.09.21
✎
15:05
|
(210) а если ТЗ размером 1 миллион строк?
|
|||
212
Maniac
07.09.21
✎
15:05
|
да фиг с ним пусть даже 100 000
|
|||
213
Kassern
07.09.21
✎
15:07
|
(212) а какие проблемы со 100 000? Без проблем пихается во временную таблицу и обрабатывается запросом.
|
|||
214
Maniac
07.09.21
✎
15:08
|
а зачем пихать?? вот скажи мне. туда сюда пихать выпиховывать.
|
|||
215
Maniac
07.09.21
✎
15:08
|
вот есть данные на клиенте. все. нафига их нужно пихать.
|
|||
216
Maniac
07.09.21
✎
15:08
|
вот на клиенте юзер и хочет с ними поработать, пофильтровать, чота там запросики понаделать.
|
|||
217
Kassern
07.09.21
✎
15:12
|
(216) когда у клиента миллион строк с артикулом, а ему вдруг понадобилось это дело сопоставить с данными базы, тоже через клиент хотите это реализовать?)
|
|||
218
lodger
07.09.21
✎
15:15
|
(215) на клиенте вьюха на 30-50 строк. какие миллион?
|
|||
219
Mort
07.09.21
✎
15:27
|
Всё-таки у 1С пробел в обучении УФ на этом месте. Очень много одинэсников считает, что форма на клиенте содержит все данные и все эти данные едут на сервер при контекстном вызове. И начинают их на клиенте мучить (и как раз наоборот в этом случае данные начинают ездить, только с сервера на клиент).
|
|||
220
MyNick
07.09.21
✎
15:32
|
(211) На клиенте 100 тыс строк? Это в консерватории надо править.
(215) Динамические списки? Не, не слышал. На клиенте видимая порция. Хочешь поиск - дуй на сервер (ну что по сути и происходит в отборах ДС неявно) |
|||
221
MyNick
07.09.21
✎
15:40
|
(219) им надо погрузиться в замечательный мир веба. Или еще каких тру клиент-серверных технологий.
Где сервер и клиент разделен так, что подобных дурацких вопросов возникать не будет. Сервер отдает джейсончик с данными, клиент (неважно на чем) через API эти данные получает - загружает - отображает. И ТОЛЬКО работает с пользователем. Упаси боже на клиента миллион строк тащить, чтобы поиск там сделать. Сервер и клиент абсолютно независимы друг от друга. Как локомотив и вагон. Сцепка = API. Задача машиниста - управлять, задача пассажиров смотреть в окошко и пить чай. Пассажирам пох на машиниста, машинисту пох на пассажиров. Главное чтобы не творили откровенную дичь (не срывали стоп кран и не бросали лом в унитаз). И... вопросы ворочать миллионами строк отпадают. И так разбаловали одинэсников не слишком строгой архитектурой клиент-серверного кода... |
|||
222
MyNick
07.09.21
✎
15:47
|
+(221) Вот если бы 1С сделала конфигурацию из двух частей - Серверная и Клиентская, все бы встало на места.
На серверной только модули с обращением к БД, на клиентской только интерфейс и модули для его реализации. На стыке - только простые типы + массивы и структуры. То и не было бы подобных пробелов. И не возникало бы мысли у гениев формы туда сюда гонять. |
|||
223
Ненавижу 1С
гуру
07.09.21
✎
16:00
|
(219) д, никто этого толком не говорит, включая саму 1С
|
|||
224
Ненавижу 1С
гуру
07.09.21
✎
16:01
|
+(223) хотя хз что ты хотел в (220) сказать
|
|||
225
Олеша Попович
07.09.21
✎
16:14
|
(223) вроде бы говорит https://its.1c.ru/db/v8std#content:628:hdoc
|
|||
226
lodger
07.09.21
✎
16:17
|
(225) чушь какая то! другое дело что пишут маня и геня - труъ эксперты.
|
|||
227
Олеша Попович
07.09.21
✎
16:23
|
(221) что значит разбаловали? изначально она такой и была, потому что сервер был stateful
|
|||
228
Гений 1С
гуру
07.09.21
✎
17:54
|
(221) у фузины формы живут только на сервере, а на клиенте просто отображаются (как РДП)
|
|||
229
Гений 1С
гуру
07.09.21
✎
17:55
|
(206) потому что Маня, УНФ писали не в 1С изначально. Это 1С потом ее купила
|
|||
230
Конструктор1С
07.09.21
✎
18:00
|
(198) а ты в модуле формы с сервером не работаешь?
|
|||
231
acht
07.09.21
✎
18:11
|
(209) Для Гени на партнерском форуме ничего нет, извини.
|
|||
232
Конструктор1С
07.09.21
✎
18:11
|
(201) и что ты делаешь с данными на клиенте? Ну покажешь пользователю... А дальше тебе за каждым чихом придётся нырять на сервер, ибо таблицы, запросы, метаданные да и вообще всё на сервере.
Завтра возникнет ситуация, которая возникает в автоматизации чуть реже, чем постоянно: надобно исключить тело пользователя из процесса, делать всё автоматически. Тут-то ты со своим клиентом и встрянешь. "Внезапно" выяснится, что весь код нужно утаскивать на сервер, да ещё и от интерфейса отделять. Причем разлучить бизнес-логику с интерфейсом ой как непросто, ибо срослись они аки сиамские близнецы |
|||
233
Новый1сник2
07.09.21
✎
18:13
|
(205) да УНФ отличается от типовых, но это не значит что УНФ какашка, многим заходит норм.
только ее нужно доработать, в т.ч. бсп |
|||
234
acht
07.09.21
✎
18:21
|
(232) Кстати да, будет очередная тема "гуру-тест как теперь открыть форму на сервере" =)
|
|||
235
Конструктор1С
07.09.21
✎
18:22
|
(202) что ты там собрался на сервер затаскивать? У тебя и так данные живут на сервере в БД
|
|||
236
acht
07.09.21
✎
18:24
|
(235) У Мани вся куча примеров сводится к файлу, который на клиенте. Данные из которого он "обрабатывает". Для его сжатия и загона на сервер Мане не хватает опыта.
|
|||
237
Конструктор1С
07.09.21
✎
18:25
|
(234) с разделением интерфейсов и бизнес-логики в 1с вообще беда. Этим не только Г1Сы грешат, но и разработчики типовых юзают во весь рост
|
|||
238
Олеша Попович
07.09.21
✎
18:58
|
(237) Им некогда делать как правильно, им пилить нада. Вон в УТ 11 для программного заполнения зависимых цен в документе "Установка цен номенклатуры" нужно в ОМ расчета цен одним из параметров форму передавать. А откуда у меня форма, если я документ программно создаю? Вы вот тут Геню ругаете, а у вендора такие же Гени работают.
|
|||
239
piter3
07.09.21
✎
19:01
|
(238) Странно,но ахксаптовцы и некторые саперы ноют так же.Правда,не всегда на форумах.Одни вебщики впереди планеты всей)
|
|||
240
Maniac
07.09.21
✎
23:22
|
(236) какой нафиг файл.? опять попридумал за меня и сам себе какую то хрень несешь)
причем тут файл. Я тебе говорю про то что на клиенте монут быть какие то таблицы, с которомы работает юзер. что то делает, обрабатывает и так далее. |
|||
241
Maniac
07.09.21
✎
23:24
|
Вот даже простой пример. Все знают что в ТЧ на форме есть отбор только по фиксированной структуре. по списку никаких отборов делать нельзя вообще.
Чтобы по ТЧ еще какой то смочь отфильтровать надо изворачиваться на сервере. Или вот условный оформления. они не работают на клиенте. исключительно на сервере, нужно ннать все данные на сервер |
|||
242
H A D G E H O G s
07.09.21
✎
23:37
|
Дайте людям удочку и они наловят рыб.
Дайте людям сервер и они его завызывают. Дайте Осипову форум и он его засрет. |
|||
243
Конструктор1С
08.09.21
✎
10:55
|
(242) когда бизнес-логика отделена от интерфейса, нет смысла завызовывать сервер, всё и так будет происходить на сервере
|
|||
244
Mort
08.09.21
✎
12:22
|
А моё имхо MVC это устаревший способ делать надеждные приложения с херовым интерфейсом. Вот у нас продуманная бизнес-логика, а вот соответствующий этой логике убогий интерфейс.
|
|||
245
Mort
08.09.21
✎
12:26
|
Ну и натягивать сову разделения между интерфейсом и логикой на глобус разделения клиент-сервер тоже нет никакой надобности.
|
|||
246
acanta
08.09.21
✎
12:27
|
А чем рдп то не устроил?
|
|||
247
Конструктор1С
08.09.21
✎
12:43
|
(244) вопрос не в красоте интерфейса, а в стоимости доработки и сопровождения. Обрати внимание на мобильные приложения, они написаны по MVVM или MVC, но интерфейс у многих из них намного лучше и понятнее, чем у типичных1сных приложений. MVC и иже с ними нисколько не вредят качеству интерфейса.
Когда идёт архитектурное деление на условные слои, код становится более гибким, доработка и сопровождение более дешевыми. Если всё скидано в единую кучу-малу (типичная для 1с картина), то этот винигрет сложнее понимать, сложнее дорабатывать и так далее (соответственно цена владения растёт) |
|||
248
Конструктор1С
08.09.21
✎
12:49
|
(245) отделение бизнес-логики от интерфейса это такой фундаментальный и давно известный принцип, что в тру-программировании аж родились отдельные профессии - фронтендеры и бэкендеры. Плохо что 1сники об этом не знают
|
|||
249
ДенисЧ
08.09.21
✎
12:51
|
О. Веб-программирование уже стало тру....
|
|||
250
ДенисЧ
08.09.21
✎
12:51
|
(244) МВЦ и плохие интерфейсы друг другом связаны чуть менее, чем никак.
|
|||
251
Конструктор1С
08.09.21
✎
12:54
|
(249) в вебе Г1С-стайл ударил больнее всего. К тому же деление на фронт и бэк не только в вебе, в энтерпрайзе также юзается всю дорогу
|
|||
252
Конструктор1С
08.09.21
✎
12:58
|
+ в мобильной разработке MVVM, MVC, MVP, MVI тоже юзаются всю дорогу
|
|||
253
H A D G E H O G s
08.09.21
✎
13:12
|
(243)
&НаКлиенте Процедура ВидАктаПриИзменении(Элемент) Элементы.СтраницаТовары.Видимость=Объект.ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения"); Элементы.ДвижениеМарок.Видимость=Объект.ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения"); КонецПроцедуры Ты, конечно, тут сделаешь контекстный серверный, да? |
|||
254
lodger
08.09.21
✎
13:19
|
&НаКлиенте
Процедура ВидАктаПриИзменении(Элемент) Флаг = ВидАктаРавноАктРасхождения(Объект.ВидАкта); Элементы.СтраницаТовары.Видимость=Флаг; Элементы.ДвижениеМарок.Видимость=Флаг; другие параметры = Флаг; КонецПроцедуры &НаСервере Процедура НастроитьФормуПоДаннымОбъекта() Флаг = ВидАктаРавноАктРасхождения(Объект.ВидАкта); Элементы.СтраницаТовары.Видимость=Флаг; Элементы.ДвижениеМарок.Видимость=Флаг; другие параметры = Флаг; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ВидАктаРавноАктРасхождения(ВидАкта) возврат ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения"); КонецФункции |
|||
255
lodger
08.09.21
✎
13:20
|
+(254) хотя, лучше видимостью на клиенте не управлять. и вообще не управлять этим после создания и передачи формы на клиента.
|
|||
256
lodger
08.09.21
✎
13:21
|
+(255) вот доступностью вроде можно.
|
|||
257
H A D G E H O G s
08.09.21
✎
13:25
|
(255) (256) Ну смысл понятен, надеюсь?
&НаКлиенте Процедура АСФВвестиАктРасхожденияТТН(Команда) Если ЭтаФорма.Модифицированность Тогда ЭтаФорма.Записать(Неопределено); КонецЕсли; АСФОбменСУТМКлиент.ВвестиАктКТТНЕГАИС(Объект.Ссылка,ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения")); КонецПроцедуры |
|||
258
Конструктор1С
08.09.21
✎
13:26
|
(253) ты не понял смысл отделения бизнес-логики от интерфейса. Настройка видимости, доступности, состава полей на форме и вот это всё - работа с интерфейсом
|
|||
259
H A D G E H O G s
08.09.21
✎
13:26
|
(258) Ну вот я настраиваю видимость, на клиенте, отдельно от бизнес-логики.
|
|||
260
H A D G E H O G s
08.09.21
✎
13:27
|
(258) Давай, отдели бизнес-логику от интерфейса.
|
|||
261
Конструктор1С
08.09.21
✎
13:27
|
(259) молодец, держи в курсе
|
|||
262
Конструктор1С
08.09.21
✎
13:28
|
(260) у тебя там нет бизнес-логики, у тебя просто настройка интерфейса
|
|||
263
H A D G E H O G s
08.09.21
✎
13:29
|
(262) Которую я настраиваю на клиенте. И не могу обойтись без значений перечисления. Что не так?
|
|||
264
Конструктор1С
08.09.21
✎
13:37
|
(263) давай так. В твоём документе можно делать всё программно?
НовыйДокумент = Документы.ТвойДокумент.СоздатьДокумент(); НовыйДокумент.Заполнить(); НовыйДокумент.Вжух1(); НовыйДокумент.Вжух2(); НовыйДокумент.Вжух3(); НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); если нельзя, если для части действий нужно занырнуть в форму и подёргать кнопки/поля/таблички, то у тебя интерфейс слипся с бизнес-логикой |
|||
265
lodger
08.09.21
✎
13:40
|
возьмите дядю из поста (264) и отнести в отдел разработки ЗУП в головном офисе 1с.
|
|||
266
Ыцшесрук
08.09.21
✎
13:42
|
(265) Не только ЗУП. В УТ та же шняга с расчётами скидок.
|
|||
267
Конструктор1С
08.09.21
✎
13:44
|
(265) чур меня...
|
|||
268
H A D G E H O G s
08.09.21
✎
14:08
|
(264) Я просто напомню, что все начало с поста (192), в которой необходимость ссылок на клиенте обозвали уродливой надобностью.
Я прекрасно знаю, когда интерфейс сливается с бизнес-логикой. |
|||
269
Конструктор1С
08.09.21
✎
14:14
|
(268) ладно, каюсь, не внимательно прочитал. Но и ссылки на клиенте могут служить для разных целей. Если для настройки интерфейса, или чтобы показать пользователю, то это нормально. Но если условный Г1С делает на клиенте расчет себестоимости, которую потом складывает в ТЧ документа, то за такое нужно бить по рукам
|
|||
270
Гений 1С
гуру
08.09.21
✎
14:47
|
(269) я так не делаю, если че.
|
|||
271
lodger
08.09.21
✎
14:48
|
(270) а в (0) ты что делать собрался?
|
|||
272
Гений 1С
гуру
08.09.21
✎
14:54
|
(241) есть хитрый хак - пробегаешь по ТЧ, проставляешь галку отбора и отбираешь по этой галке. лично так делал
|
|||
273
MyNick
08.09.21
✎
15:53
|
(272) Какую еще галку? ОтборСтрок работает по фиксированной структуре.
|
|||
274
Гений 1С
гуру
08.09.21
✎
16:10
|
(273) ну например тебе нужно отобрать контрагентов иванов, петров, сидоров.
Ты добавляешь в ТЧ невидимую колонку ЭтоМойКонтрагент, пробегаешься по тч и там где контрагент иванов, петров, сидоров, ставишь ЭтоМойКонтрагент = истина, иначе ложь. Все, можно отбирать по ЭтоМойКонтрагент = истина. йо? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |