|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Одним из главных новшеств от 1С последних лет стало разделение процедур которые создает программист на процедуры, выполняющиеся на сервере и процедуры, выполняющиеся на клиенте. Принципиальное различие между ними в том, что клиентские процедуры не могут изменять и читать данные в базе данных. Представим, что у вас на форме есть кнопка «Заполнить», которая меняет данные в базе. Тогда в клиент-серверной технологии 1С, нужно в модуле формы создать процедуру с директивой &НаКлиенте, которая вызывается при нажатии кнопки, а внутри этой процедуры нужно вызывать процедуру с директивой &НаСервере. Уже непосредственно в ней можно выполнять запросы на чтение и изменение данных. &НаКлиенте Процедура КнопкаЗаполнить() ПоменятьДанные(); КонецПроцедуры &НаСервере Процедура ПоменятьДанные() //здесь меняем данные КонецПроцедуры Данное новшество повлекло глобальное переписывание типовых конфигураций, старые конфигурации выброшены в очередной раз на свалку (это когда-нибудь закончится?). (Что за ноу-хау от 1С) Зачем – делить процедуры на серверные и на клиентские? Такое разделение должно быть (и есть по факту) не на уровне процедур, которые написал программист, а на уровне методов объектов самой платформы 1С. Т.е. и так понятно, что на сервере должны выполняться методы выполняющие запросы на выборку и изменение данных, зачем их выводить в отдельные процедуры? Тем более что программа сама определяет методы, выполняющиеся на сервере, программист не может этим управлять. То что раньше было в одной процедуре, сейчас будет минимум в двух. Чтение и восприятие модулей превратилось в ад. Нужно скакать с одной процедуры в другую, третью. Читать такой код очень сложно. Сегодня модули в 1С это нагромождение процедур с не поддающимся обоснованию уровнем вложенности. Можете не верить, но ниже реальный пример кода из конфигурации 1С, для одного действия создано две процедуры по одной строке кода каждая: &НаКлиенте Процедура КомандаЧО01Меню(Команда) ОткрытьЗакрытьМенюПрочихОпераций(); КонецПроцедуры &НаСервере Процедура ОткрытьЗакрытьМенюПрочихОпераций() Элементы.ГруппаПрочихОпераций.Видимость = НЕ Элементы.ГруппаПрочихОпераций.Видимость; КонецПроцедуры Теоретическую базу подогнать под такую «технологию» у меня никак не получается. Насколько я понимаю в .Net такого нет. Интересно в первую очередь мнение программистов среды .Net и др. подобных систем. Далее. Пишут в 1С книгах, что любое изменение интерфейса вызывает обращение к серверу 1С. Например скрыл/показал кнопку – обращение к серверу. Почему? Зачем? Вот что пишут на мисте: Azverin 5 - 22.07.14 - 09:07 (0) вчера в БП 3.0 бух словила глюк в документе Поступление на расчётный счёт, и мне пришлось попрыгать по отладчику в обработке проведения... скажу честно: желание изучать УФ нет! я прошёл более 50 модулей и больше половины с одной строчкой. такое удручает http://www.forum.mista.ru/topic.php?id=714947 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 12:07 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяТем более что программа сама определяет методы, выполняющиеся на сервере, программист не может этим управлять. этот посыл неверный. Отсюда и весь пост. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 12:51 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Petro123ЙосяТем более что программа сама определяет методы, выполняющиеся на сервере, программист не может этим управлять. этот посыл неверный. Отсюда и весь пост. Голословные утверждения не принимаются. Нужны примеры, из 1С и других систем где программист управляет вызовом методов НаСервере/НаКлиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:06 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Petro123ЙосяТем более что программа сама определяет методы, выполняющиеся на сервере, программист не может этим управлять. этот посыл неверный. Отсюда и весь пост. Т.е. метод .ВыполнитьЗапрос() можно вызвать на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:11 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяТеоретическую базу подогнать под такую «технологию» у меня никак не получается. Насколько я понимаю в .Net такого нет. Это все наследие DOS-вского прошлого. Когда вся БД была в монопольном доступе у клиента. Потом просто добавлялись костыли, для совместного доступа. Т.е. на уровне "архитектуры" не предполагалась совместная работа. Поэтому все проблемы реализации "клиент-сервера" отдали на откуп разработчикам. Т.к. на уровне клиента можно делать все что угодно с БД. Для этого похоже и придумали костыль "сервеных" и "клиентских" процедур. P.S. В ADempiere, например, реализовано так. На клиенте делаются какие-то действия, но полностью транзакция делается только на сервере. Проводки, сохранение документа и т.д. Причем для программиста вся это кухня не плохо скрыта. Ему только нужно в клиенте вызвать соответствующий метод (типа commit) И все изменения сохраняются на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:13 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
mad_nazgulЙосяТеоретическую базу подогнать под такую «технологию» у меня никак не получается. Насколько я понимаю в .Net такого нет. Это все наследие DOS-вского прошлого. Когда вся БД была в монопольном доступе у клиента. Потом просто добавлялись костыли, для совместного доступа. Т.е. на уровне "архитектуры" не предполагалась совместная работа. Поэтому все проблемы реализации "клиент-сервера" отдали на откуп разработчикам. Т.к. на уровне клиента можно делать все что угодно с БД. Для этого похоже и придумали костыль "сервеных" и "клиентских" процедур. P.S. В ADempiere, например, реализовано так. На клиенте делаются какие-то действия, но полностью транзакция делается только на сервере. Проводки, сохранение документа и т.д. Причем для программиста вся это кухня не плохо скрыта. Ему только нужно в клиенте вызвать соответствующий метод (типа commit) И все изменения сохраняются на сервере. Так и не понял при чем здесь DOS и клиент-сервер от 1С. Но версия интересная, какие будут еще предположения? Вот че-то в ASP вроде нет деления процедур на клиентские и серверные. И как-то живут. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:22 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
че-то мне кажется маловероятным что 1С пишет свою прогу с оглядкой на DOS. Тем более что они ее переписали уже сотни раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:24 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяВот че-то в ASP вроде нет деления процедур на клиентские и серверные. И как-то живут. в каком смысле? Нет хранимых процедур на сиквеле? Или JS на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:42 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяPetro123пропущено... этот посыл неверный. Отсюда и весь пост. Т.е. метод .ВыполнитьЗапрос() можно вызвать на клиенте? расскажи толком: - 3-х звенка или 2-х - веб клиент или толстый клиент т.к. программисту лучше ))) решать где вызвать на всех 3-х уровнях ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:45 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяНасколько я понимаю в .Net такого нет ЙосяИнтересно в первую очередь мнение программистов среды .Net и др. подобных систем. Вранье, все, как в .Net и др. подобных системах. button_click - процедура на клиенте внутри SqlCommand.ExecuteReader или что-нить похожее... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:45 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Arm79внутри SqlCommand.ExecuteReader или что-нить похожее... +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:48 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Придется просвятить ребят: хранимые процедуры есть и в 1С. Это для вас открытие? Речь о том, почему для вызова метода .ВыполнитьЗапрос() нужно создать две процедуры? Т.е. в 1С две процедуры вызывается по button_click, а в .Net одна. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 13:57 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Т.е., чтобы сделать примитивный селект из базы, нужно делать две процедуры, а не одну. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:00 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Вообще в .Net какбэ стек вызова процедур. Так, о птичках. Кстати, если клиентские 1с процедуры не меняют данные и т.п., то какой смысл в них вложила 1С? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:07 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Arm79Вообще в .Net какбэ стек вызова процедур. Так, о птичках. Кстати, если клиентские 1с процедуры не меняют данные и т.п., то какой смысл в них вложила 1С? Стек, не стек. 1С тоже вроде как стек. Так, о птичках. Речь о другом. Почему программист должен создать две процедуры для события по кнопке, тогда как в .Net можно обойтись одной процедурой, и прекрасно поменять данные в базе. Какой смысл вложила 1С в клиентские процедуры лучше спросить у нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:16 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Йосякак в .Net можно обойтись одной процедурой, и прекрасно поменять данные в базе. Можно, но не нужно. Такие программисты у меня по рукам получают. Вы слышали про DAL? Я не защищаю 1С, мне фиолетово, что они придумали. Просто в ответ на ваш вопрос я и ответил: ситуация вложенных друг в друга процедур отнюдь не какое-то извращение. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:23 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Arm79Йосякак в .Net можно обойтись одной процедурой, и прекрасно поменять данные в базе. Можно, но не нужно. Такие программисты у меня по рукам получают. Вы слышали про DAL? Я не защищаю 1С, мне фиолетово, что они придумали. Просто в ответ на ваш вопрос я и ответил: ситуация вложенных друг в друга процедур отнюдь не какое-то извращение. Если по существу нечего писать - лучше не пишите. Я не говорил что вложенные процедуры это извращение. Извращение, когда по событию на кнопке последовательно вызывается две процедуры состоящие из одной строки кода. Извращение когда нужно минимум две процедуры создвать, хотя можно было бы и одну. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:35 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяЕсли по существу нечего писать - лучше не пишите. а для вас есть только два мнения: свое и неправильное? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:36 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ЙосяТак и не понял при чем здесь DOS и клиент-сервер от 1С. Но версия интересная, какие будут еще предположения? Вот че-то в ASP вроде нет деления процедур на клиентские и серверные. И как-то живут. При том, что 1С разрабатывалась как однопользовательская система. Клиент-серверная была прикручена в виде костылей. А в однопользовательской системе идет монопольный захват как минимум таблицы, как максимум БД. Это приводит к тормозам при работе с БД. До 8 версии 1С это никак не решалось. С 8 версии стало получше. Явные "клиентские" и "серверные" процедуры это просто очередной костыль, который вытекает из не правильной/устаревшей архитектуры приложения. В других системах так же есть такое деление, но оно "скрыто" для программиста. Т.е. когда программист манипулирует с данными, он просто дает соответствующие команды серверу. Причем даже открытие и закрытие транзакции делается в не явном виде (хотя можно и в явном). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 14:51 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
mad_nazgulЙосяТак и не понял при чем здесь DOS и клиент-сервер от 1С. Но версия интересная, какие будут еще предположения? Вот че-то в ASP вроде нет деления процедур на клиентские и серверные. И как-то живут. При том, что 1С разрабатывалась как однопользовательская система. Клиент-серверная была прикручена в виде костылей. А в однопользовательской системе идет монопольный захват как минимум таблицы, как максимум БД. Это приводит к тормозам при работе с БД. До 8 версии 1С это никак не решалось. С 8 версии стало получше. Явные "клиентские" и "серверные" процедуры это просто очередной костыль, который вытекает из не правильной/устаревшей архитектуры приложения. В других системах так же есть такое деление, но оно "скрыто" для программиста. Т.е. когда программист манипулирует с данными, он просто дает соответствующие команды серверу. Причем даже открытие и закрытие транзакции делается в не явном виде (хотя можно и в явном). Дык о чем я и толкую, деление на клиентские и серверные методы должна делать сама платформа, программист не должен делить процедуры, именно так и есть в других системах. Тут пытались убедить что в ASP две процедуры нужно создать по событию по кнопке, но это не так, это ложь. Обработать событие и сделать запрос можно в одной процедуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 16:03 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Йося, в 1С несколько лет назад пришли Java разработчики, чтобы хоть как-то дотянуть эту систему до мирового уровня. Например, в подавляющем большинстве веб-приложений разделение явное: для клиента код пишется на JavaScript, а для сервера на Java, т.е. даже языки разные и совершенно непохожие друг на друга, не то что процедуры. Есть фреймворки, которые скрывают это разделение, в частности GWT. Он позволяет писать весь код на Java, но клиентские и серверные классы все равно четко разделены. И клиентские классы потом компилируются в JavaScript. Т.е. для веб-приложения Java явное разделение нужно всегда. Это помогает программисту правильнее думать и группировать операции, выполняющиеся на сервере и выполняющиеся на клиенте. Что касается вашего примера, действительно непонятно, зачем здесь разделение. Попробуйте так: &НаКлиенте Процедура КомандаЧО01Меню(Команда) Элементы.ГруппаПрочихОпераций.Видимость = НЕ Элементы.ГруппаПрочихОпераций.Видимость; КонецПроцедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 16:06 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Йосяпропущено... Дык о чем я и толкую, деление на клиентские и серверные методы должна делать сама платформа, программист не должен делить процедуры, именно так и есть в других системах. Тут пытались убедить что в ASP две процедуры нужно создать по событию по кнопке, но это не так, это ложь. Обработать событие и сделать запрос можно в одной процедуре. Не знаю, как это сделано в 1С (да и не хочу знать), но разделение на клиентские и серверные процедуры - это вполне логичный подход. Возьмите, хотя бы, валидацию вводимых данных. Первоначальная валидация (обязательные поля, формат данных, регекспы итп) делается в клиентской процедуре. И только когда в ней выясняется, что данные валидны, тогда вызывается процедура на сервере (а там уже проверяется соответствие бизнес-правилам, запись в хранилище, аудит и прочая...). Нагружать сервер при каждом нажатии кнопки на клиенте - верный способ получить немасштабируемую систему. Выносить всю валидацию на клиента - дыра в безопасности и простор для злоумышленников. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 16:32 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
ДиезНагружать сервер при каждом нажатии кнопки на клиенте - верный способ получить немасштабируемую систему в последнее время это общее направление движения ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 16:36 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevв последнее время это общее направление движения В каких технологиях, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 16:40 |
|
Клиент-серверная технология и 1С
|
|||
---|---|---|---|
#18+
Я недавно познакомился с конфигурацией 1С УПП 2.0. Это что то, доложу я вам! Не вдаваясь в функционал, я сразу же оторопел от получившейся производительности по-сравнению с УПП 1.3. Она стала медленней во много раз! Каждое нажатие любой кнопки вызывает тоскливое ожидание. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2014, 17:12 |
|
|
start [/forum/topic.php?fid=33&msg=38702831&tid=1547555]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 197ms |
0 / 0 |