Имя: Пароль:
1C
1С v8
Как "правильно" в управляемом приложении искать объекты?
,
0 Guerro
 
16.12.21
19:47
После обычных форм переходим на управляемые и возник вопрос как все таки не кастыльно искать объекты в справочнике или документах, как получать константы или перечисления. у нас более 80% это код на клиенте(вывод табличного документа, предупреждения, получение объектов и т.п.), мне обязательно каждый раз теперь писать отдельный код на сервер, чтобы получить например констатну или я не на правильном пути?
В данный момент написал на экспорт функцию в общем модуле и через нее получаю объекты, но реквизиты недоступны, снова прыгать на сервер и выходить на клиент? Это нормальная практика или я придераюсь?
1 Asmody
 
16.12.21
19:58
(0) ты не на правильном пути.
Меняй мышление: на клиенте только визуализация и интерактив. Всё остальное - на сервере
2 Guerro
 
16.12.21
20:02
(1) Короче сделал все запросы и вычисления на сервере и вернул от нее структуру или т.п.?
3 Guerro
 
16.12.21
20:03
(1) Не плохой тон писать куча функций на одно действие?
4 LevelUP
 
16.12.21
20:11
Раньше тоже удивлялся подобному УФ: Присвоение &НаКлиенте вида Объект.ххх=объект.ууу.zzz
Потом втянулся. У меня выходит так, что примерно 90% кода и самое вкусное на сервере.
Копание в типовых способствует пониманию концепции.
5 Guerro
 
16.12.21
20:15
(4) я писал и на других языках и у меня общая какая-то концепция в голове, а вот в типовые захожу, там они как будто-то сами кашу варят, особенно с соединениями с внешними сервисами
6 Guerro
 
16.12.21
20:16
(4) или типовые считаются гарантом?
7 Йохохо
 
16.12.21
20:18
(0) перепутали клиент-сервер с ОФ/УФ
8 Asmody
 
16.12.21
20:52
(3) Не может быть одного действия одновременно на клиенте и на сервере.
9 Asmody
 
16.12.21
20:52
(5) меняй свои концепции
10 mikecool
 
16.12.21
22:32
(1) не совсем ,часть вычислений можно на клиенте оставить
11 Hans
 
16.12.21
22:51
(0) Обращение через точку Контрагент.ИНН уже не приветствуется на управляемых формах. Все что нужно надо получать сразу, одним запросом. Реквизиты ссылки можно получать ОБщегоНазначения.ЗначениеРеквизитаОбъекта(контрагент, "ИНН") аналогичные функции для множества реквизитов.
12 ildary
 
17.12.21
03:25
(10) только надо проверять - не упадёт ли быстродействие, если действие выполняется на клиенте.
13 Мультук
 
гуру
17.12.21
07:15
(0)

Нужно переформатировать мозг. Несколько раз.
Из чтения типовых рекомендую БП 3.0 или Розницу 2.x
Они не идеальны, но код много лучше/проще чем в УТ/ЕРП/ЗУП

Стиль акына: процедура в 1000 строк в который намешаны данные, вопросы к пользователю, получение и обработка данных тут (а на самом деле и раньше) уже не работают.

P.S.
>> Не плохой тон писать куча функций на одно действие?

Оно конечно прикольно видеть процедуру "ПередЗаписью" в документе на 5000 строк, ибо программистам было лень выделять свой код проверок в отдельные функции
Но сопровождать такой код -- просто боль.
14 Ryzeman
 
17.12.21
08:56
(2) В общих чертах - да. В идеале ты все интерактивные действия выполняешь на клиенте, не интерактивные действия выполняешь на сервере, а длительные - в фоне.
Если на клиенте в местах нужны какие-то свойства объектов, ничего особо криминального нет в том, что бы их получать, если это какие то единичные случае (не тяжелые запросы в циклах), но тут по максимуму следует использовать вызовы без контекста, особенно в случае тяжёлых форм.
Через точку обращаться не принято, да и на клиенте у тебя не получится - на клиенте у ссылок нет свойств объектов.
15 Dmitrii
 
гуру
17.12.21
09:27
(0) >> обязательно каждый раз теперь писать отдельный код на сервер.

На ОФ это за тебя делала платформа - бегала каждый раз на сервер для получения данных.
В концепции жесткого разделения клиента и сервера подобные вопросы отданы на откуп разработчику (тебе).
Поэтому при переходе с ОФ на УФ тупое переписывание кода "в лоб" в большинстве случаев приведёт к "куча функций на одно действие".
Придётся включить голову для того, чтобы минимизировать количество таких вызовов и функций, а потом ещё и миниизировать объём запрашиваемых данных. Получать только то, что действительно нужно, разобраться с контекстными и внеконтекстными вызовами, чтобы не гонять каждый раз контекст формы с клиента на сервер и обратно и т.д.
Например, если тебе на форме нужны три реквизита Контрагента, то лучше получить их сразу в виде структуры за один раз через вызов без контекста, чем по мере выполнения кода три раза бегать на сервер за каждым реквизитом. В БСП, например, для этого есть отдельные функции в модуле ОбщегоНазначения - ЗначениеРеквизитаОбъекта и ЗначенияРеквизитовОбъекта. Это самый простой пример. На практике всё зависит от конкретной механики работы твоей формы.
Присоединюсь к (13) - посмотри типовые конфигурации типа БП 3.0. И много где не лишним будет пересмотреть работу самих форм, а не пытаться перерисовать их с ОФ "как есть".
16 mikecool
 
17.12.21
09:34
(12) чаще быстродействие падает из-за лишних прыжков с клиента на сервер
а если вычисления тяжелые, то может и лучше их на клиенте выполнять, чтобы остальные могли продолжать комфортно работать?
17 MyNick
 
17.12.21
09:34
(0) Для начала нужно принять то, что это кажущееся усложнение, на самом деле является значительным упрощением в разработке и поддержке.
18 MyNick
 
17.12.21
09:36
Еще бы они модули формы более явно разделили на МодульФормыКлиент и МодульФормыСервер, вообще бы мякотка была.
19 Hans
 
17.12.21
09:42
(17) Ну т.е все эти немодальные вызовы с обраобтками оповещения это на самом деле упрощение?
20 Мультук
 
гуру
17.12.21
09:49
(19)

Нет, это уши Javascript (имхо)

На эту тему есть видео на ютубе с разбором (типа хотели как лучше, но время поджимало, поэтому сделали "как всегда")
21 Dmitrii
 
гуру
17.12.21
09:52
(19) Хотели, чтобы всё это счастье работало в вебклиенте и браузерах? - Получите, распишитесь.
22 ДенисЧ
 
17.12.21
09:54
(19) Тебе сделали асинхи, чтобы не пользоваться оповещениями
23 PLUT
 
17.12.21
09:55
(19) один раз понять и простить

НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <ПомещаемыйФайл>, <Интерактивно>, <УникальныйИдентификаторФормы>, <ОписаниеОповещенияПередНачаломПомещенияФайла>)

Доступен, начиная с версии 8.3.13.
Не рекомендуется использовать, начиная с версии 8.3.15.

чойта? а что рекомендуется?
24 PLUT
 
17.12.21
09:59
(23) мля, я отстал от жЫзни. остановите землю, я сойду

Для того чтобы поместить во временное хранилище один файл, следует использовать метод ПоместитьФайлНаСерверАсинх(). После завершения работы метода, файл из локальной файловой системы будет помещен во временное хранилище
25 Dmitrii
 
гуру
17.12.21
10:09
(18) >> Еще бы они модули формы более явно разделили на МодульФормыКлиент и МодульФормыСервер.

Спорно. Имхо, это усложнило бы работу с кодом. Лишняя беготня по модулям.
И так многие процедуры и функции пишутся парно - НаКлиенте - НаСервере/НаСрвереБезКонтекста.
Да ещё придётся реализовывать в редакторе кода видимость процедур и функций между модулями.
26 PLUT
 
17.12.21
10:10
Оператор Ждать
Синтаксис:
Ждать <Выражение>;

Описание:
Условно-ключевое слово. Является ключевым только в процедурах и функциях, отмеченных как Асинх.
Оператор Ждать используется для ожидания окончания Обещания. Возвращает полученное из Ожидания значение. Если применить этот оператор к значению, которое не является Обещанием, то оно будет неявно преобразовано в Обещание, наполненное этим значением. Ждать останавливает исполнение кода процедуры или функции, частью тела которой он является, до момента, когда Обещание будет наполнено значением.
Оператор Ждать можно использовать только в процедурах и функциях, отмеченных как Асинх.

а есть те, кто не долждался?
27 Hans
 
17.12.21
10:11
Сейчас непонятно где что использвать, где ЖДАТЬ, а где старые обработки оповещения. Переходный период.
28 Ryzeman
 
17.12.21
10:12
(26) Обещать = Не Значит(Жениться)
29 ДенисЧ
 
17.12.21
10:15
(27) В смысле непонятно? Я во всех новых обработках для БП и ЕРП использую асинхи, когда платформа позволяет и методы есть...
30 PLUT
 
17.12.21
10:19
магия 1С

В механизме работы с временным хранилищем есть возможность передать данные из фонового задания в сеанс, инициировавший фоновое задание. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение (с помощью метода ПоместитьВоВременноеХранилище()), указав какой-либо идентификатор создаваемого временного хранилища (параметр Адрес). Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если в фоновом задании этот адрес использовать в качестве значения параметра Адрес метода ПоместитьВоВременноеХранилище(), то результат будет скопирован в сеанс, из которого было запущено фоновое задание.

Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.

сол/фасол пишется с мягким знаком, а вилька/тарелька - без мягкого знака. запомните это, т.к. понять это невозможно :)
31 Hans
 
17.12.21
10:20
(29) Где то платформа не та. Где то могут туда сюда катать платформы. То что сделал на 18 платформе, не будет работать на 17 и т.д.
32 ДенисЧ
 
17.12.21
10:21
(31) Используй те платформы. Зачем использовать не те?
33 Hans
 
17.12.21
10:53
(32) яж не фигси. Какую дали заказчеги, с тем и работаем.
34 acht
 
17.12.21
10:57
(28) Ждать Обещанное(86400 * 365 * 3);
35 PLUT
 
17.12.21
11:07
(34) три невисокосных года

еще не всё потеряно! - слоган Почты России
36 Guerro
 
17.12.21
19:55
Прочитал всю инфу, было полезно, спасибо большое
AdBlock убивает бесплатный контент. 1Сергей