Имя: Пароль:
1C
 
Написал хотелку по передаче формы с клиента в серверный общий модуль.
,
0 Гений 1С
 
гуру
02.09.21
18:08
Сюда написал (не спортлото, чай)? https://github.com/SeiOkami/OneS/issues/86
А вы что скажете, вот текст иссью:

В 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) ну например тебе нужно отобрать контрагентов иванов, петров, сидоров.

Ты добавляешь в ТЧ невидимую колонку ЭтоМойКонтрагент, пробегаешься по тч и там где контрагент иванов, петров, сидоров, ставишь ЭтоМойКонтрагент = истина, иначе ложь.

Все, можно отбирать по ЭтоМойКонтрагент = истина. йо?