Под капотом управляемых форм

Опубликовал Evil Beaver в раздел Программирование - Практика программирования

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

Введение

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

Немного истории

Исторически сложилось, что клиентское приложение 1С всегда было реализовано в виде так называемого «толстого» клиента – программы, которая сама все делает в плане обработки данных. Это создавало заметную нагрузку на сеть, а кроме того, требовало наличия мощных клиентских машин.

Толстый клиент имеет и свои преимущества, поскольку прост, понятен и часто не требует дополнительных архитектурных звеньев в виде сервера приложений.

Версия 8.0 принесла нам трехзвенную архитектуру, в которой появился «сервер 1С:Предприятия» – отдельный программный компонент, который мог выполнять код бизнес-логики на специально выделенной мощной машине (сервере), тем самым, снизив объем данных, гуляющих по сети и требования к аппаратной части клиентских машин.

И все бы ничего, но до версии 8.2 и появления управляемого приложения реализация серверного кода была совсем необязательной частью. Существовал ряд проблем, объективных и субъективных, которые мешали использовать сервер для обработки бизнес-логики. Код на сервере выполнялся, но в очень редких случаях, когда его специально, не без помощи костылей, заставляли там выполняться.

В основном, все оставалось по-старому, и клиентское приложение так и оставалось «толстым» клиентом, гоняющим сотни мегабайт по сети.

Версия 8.2 кардинально сломала устоявшийся подход к работе приложения и заставила по-новому взглянуть на архитектуру приложения. Об этом новом подходе и пойдет речь в данной статье.

Волшебный зверь Клиент-сервер

С выходом версии 8.0 все учебные курсы, книжки, статьи на ИТС и прочее, и прочее, все в один голос твердили нам – «обработка данных должна идти на сервере», «все нужно выполнять на сервере». Волшебное заклинание «на сервере» плотно забило мозг, так сильно, что на него уже никто внимания не обращал, как на информационный шум.

Опыт показывает, что рядовой программист практически никогда не знал, как нужно перенести код на сервер и что это вообще значит – «на сервер». Удивительно часто встречался код, который переносился «на сервер», но был написан с явным непониманием того, что это в итоге принесет.

На самом деле, все просто. Фраза «выполнить на сервере», означает, что ваш код будет выполнен на физически другой машине. Совсем на другом компьютере (который может располагаться на другом континенте), со всеми вытекающими эффектами. Там будет другая структура каталогов, другие права доступа и даже другая операционная система.

Однако многие уже опытные разработчики запросто писали такой код:

  • - Выбирается локальный файл
  • - Его путь передается на сервер
  • - Там по этому пути файл пытается открыться и падает с ошибкой «Файл не найден» (еще бы, он же остался на клиенте).

Переход на сервер

До версии 8.2 перенести исполнение кода на сервер можно было только одним способом – а именно, вызовом общего модуля с флагом «Сервер». Причем, только с этим флагом. Если помимо флага «сервер» поставить «клиент», то перехода не произойдет. По этому поводу на Инфостарте не так давно была неплохая статья про флажки в свойствах общих модулей (к сожалению, не могу найти ссылку, подскажете?).

Суть всех флагов модуля сводится к простым правилам:

  1. Флаг показывает, где будет скомпилирован код модуля (на клиенте, на сервере, во внешнем соединении)
  2. Если модуль скомпилирован в нескольких местах, то он будет виден только в соответствии с флагами. Клиентский – на клиенте, серверный на сервере. Переноса исполнения с машины на машину не будет.
  3. Перенос исполнения кода возможен только если в текущем контексте исполнения нет вызываемого модуля, но он есть в другом месте (если – модуль есть только на сервере, а на клиенте его нет, то будет сделан вызов сервера)

Флаг «Вызов сервера»

В версии 8.2 добавился флаг «вызов сервера», который помогает разрулить условия перехода на другую машину. Если модулю назначить этот флаг, то модуль будет виден с клиента, если нет – то попытка вызова с клиента приведет к ошибке. Код модуля виден не будет, как будто его нет совсем.

Таким образом, в обычном толстом клиенте перенести код на сервер можно, только если с клиента вызвать общий модуль, для которого:

  1. Установлен флажок «Сервер»
  2. Установлен флажок «Вызов сервера»
  3. Сняты все «клиентские» флажки

Особенности перехода на сервер

Платформа заботится о том, чтобы переход исполнения кода на другую машину был как можно более незаметным. Мы вызываем функции серверного кода, передаем туда параметры, получаем возвращаемые значения, получаем изменения параметров, передаваемых по ссылке. Все выглядит так, как будто никакого сервера нет. Однако, это не так.

При любом вызове серверного кода всегда происходит сериализация передаваемых данных. Все параметры упаковываются в строковый вид и передаются по сети. Результат работы также передается назад в сериализованном виде, где потом восстанавливается в привычные объекты.

Это объясняет, почему не все объекты можно передавать на сервер. Это все потому, что не все они поддерживают сериализацию (превращение в строку и обратно). На сервер нельзя передать, например, «ДокументОбъект», т.к. у него в модуле объекта могут быть глобальные переменные, а в них записаны какие-нибудь сложные несериализуемые значения, вроде COM-объектов… Короче, ограничения по обмену с сервером понятны и обоснованны. Нужно следить за тем, что мы передаем на сервер и что возвращаем назад.

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

Мне кажется, что простота реализации серверного вызова сыграла с платформой 1С злую шутку. Серверный вызов настолько прозрачен, что его сложно заметить, сложно осознать, что вот здесь, с этого момента, мы находимся на совсем другом компьютере. В результате и получается такой код, о котором я написал выше.

Отсутствие контекста (состояния) на сервере

Существует такая модель серверных приложений, когда сервер только отвечает на запросы, но ничего не сохраняет у себя в промежутке между двумя запросами. Эта модель называется моделью «без состояния» (англ. state-less).

Все HTTP-серверы современного интернета работают именно так. Клиенты посылают запросы, сервер выдает ответ и забывает все, что получал от клиента. Разумеется, есть вариации, но общая модель именно такая: сервер отрабатывает запрос и очищает все данные.

Сервер 1С работает по такому же принципу. В общем случае, в памяти сервера нельзя сохранить промежуточные данные между вызовами. Нельзя определить переменную, которая будет хранить данные между двумя вызовами.

Есть специальные объекты, в которых можно хранить очень незначительную часть данных – так называемые «параметры сеанса», но это именно специально выделенное место для хранения состояния. Каждый серверный вызов выполняет некоторую работу, возвращает результат и забывает все свои данные. В управляемом режиме про это всегда необходимо помнить.

Управляемое приложение

С выходом управляемого приложения фирма «1С» поступила с клиент-серверным взаимодействием, на мой взгляд, совершенно правильно. Она не стала его прятать, наоборот, она заставила всех видеть его, тыкнула всех носом: «смотрите, тут вы пишете код для физически разных машин, думайте, что делаете».

Новый подход к взаимодействию клиента и сервера позволил создать новую модель пользовательского интерфейса. Теперь интерфейс декларируется, проектирование интерфейса начинается с данных, с реквизитов и табличных частей. Создавая реквизит, вы обязаны думать, как он будет выглядеть в интерфейсе, будет ли он обязательным, как связан с другими реквизитами и т.п.

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

Тонкий клиент

Клиентское приложение максимально облегчили, оно больше не может выполнять запросы к базе данных, а значит, не требует огромных сетевых ресурсов. Оно может быть просто браузером, в конце-концов. Клиентское окно просто показывает нам картинку интерфейса, вся сложная обработка теперь обязана выполняться на сервере.

Такое облегчение не далось бесплатно. Очень многие привычные операции стали выполняться сложнее. Упомянутая выше сериализация никуда, разумеется, не делась, а данные, которые нельзя было передавать на сервер, так и нельзя туда передавать.

Все это привело к особенностям, с которыми мы сталкиваемся при разработке управляемых форм. Ключевая особенность, в общем-то, всего одна – форма полностью отделена от данных объекта.

Чтение данных из ИБ в форму и запись из формы в ИБ выполняется практически явно, этот момент можно отловить в событиях формы.

Тонкий клиент стал поистине «клиентом». Он больше не обрабатывает данные, он их показывает и позволяет редактировать. Всю обработку мы теперь явно переносим на сервер.

Устройство управляемой формы

Давайте рассмотрим, из каких частей состоит управляемая форма.

Самая важная часть в управляемой форме, это ее реквизиты. Те, синенькие, что расположены в панели справа вверху. Это, собственно, данные формы, ее основа. Только то, что указано в реквизитах можно разместить на форме.

В панели слева размещены элементы формы. Это кнопки, поля ввода, таблицы и т.п. Основное их отличие от обычных форм в том, что они обязательно связаны с каким-либо реквизитом формы. Отдельно висящий элемент на форму поместить нельзя, он обязательно должен быть связан с данными.

Данные формы

Есть старая уже хохма про ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокументИмениНуралиеваБорисаГеоргиевича.

Управляемая форма добавляет очередного претендента на звание длинного и непонятного идентификатора: ДанныеФормыСтруктураСКоллекцией и еще ряд новых классов с именами вида «ДанныеФормы….что-то там». Давайте попробуем выяснить, что это за новые объекты.

Как уже говорилось выше, сервер предприятия не сохраняет свое состояние между двумя вызовами. Когда мы обратимся к серверу, он что-то выполнит для нас и тут же очистит все данные, созданные во время вызова. Объекты с именами «ДанныеФормы…» это как раз то место, в котором мы можем сохранять свои данные между двумя серверными вызовами. На сервере нельзя создать глобальную переменную уровня формы. Такой глобальной переменной должен быть реквизит в данных формы.

Обратите внимание, что классы данных формы любопытно называются «ДанныеФормыСтруктура» или «ДанныеФормыКоллекция». Это вообще, как мне кажется, неспроста. Эти объекты – это просто немного модифицированная стандартная Структура (или ТаблицаЗначений, соответственно).

Здесь стоит немного вспомнить обычные формы. Ведь как мы привыкли – В форме справочника достаточно присвоить переменной «Наименование» какой-то текст и этот текст попадет в СправочникОбъект, а оттуда – в информационную базу.

У управляемой форме все почти так, за исключением того, что все совсем не так :).Платформа предпринимает массу усилий, чтобы в повседневной работе программиста ему не приходилось с этим заморачиваться. Как правило, мы, как и раньше, присваиваем свойства реквизитам формы, а они попадают в СправочникОбъект, а оттуда – в ИБ.

Разница заключается в том, что теперь на клиенте не существует «СправочникОбъект». Как я уже говорил, это сложный объект, он не сериализуется, а значит, его нельзя передавать с клиента на сервер. Вместо «Объекта» на клиенте существует его упрощенный аналог – хранилище данных – объект ДанныеФормы.

Это, по сути, просто структура, у которой свойства совпадают со свойством объекта. При всей «похожести», это совсем разные объекты. Причем, не просто концептуально, это различие явное, его можно «пощупать» из кода и с этим различием приходится работать в явном виде.

Адресация данных формы

Данные формы доступны непосредственно в коде по тем именам, как они расположены в дереве реквизитов формы (в окне редактора)

Реквизиты верхнего уровня доступны сразу. Вложенные реквизиты доступны через точку. Раньше в обычной форме мы обращались к данным объекта напрямую. Мы писали «Наименование = «АААААА» и данные попадали в объект. Теперь надо писать «Объект.Наименование = «ААААА», потому, что реквизит «Наименование» вложен внутрь реквизита «Объект».

Обмен формы с сервером

Основным «двигателем» всех аспектов управляемой формы является то, что у нас state-less сервер. На нем не сохраняется ничего, никаких промежуточных данных. Всё состояние формы (текст в полях ввода, строки табличных частей и т.п.) хранится на клиенте. Вся совокупность данных формы называется контекстом формы.

Весь клиент-серверный обмен выполняется через сериализацию данных, а это, в свою очередь накладывает ограничения на те типы данных, которые можно передавать на сервер и обратно. Объект ДанныеФормыСтруктура и его «родственники» является этаким «хранилищем», которое гуляет с клиента на сервер и обратно. Только то, что хранится в данных формы, может сохраняться в промежутках между серверными вызовами.

Жизненный цикл формы объекта

Давайте рассмотрим, что происходит, когда мы открываем форму существующего элемента справочника.

  1. На клиенте вызывается метод «ОткрытьФорму» или мы просто открываем форму из какого-либо списка справочника. Начинается серверный вызов
  2. В памяти сервера создается новый СправочникОбъект, выполняется код модуля объекта (тот, что написан в самом низу модуля)
  3. Данные объекта считываются из базы данных, присваиваются значения реквизитов, наполняются табличные части объекта СправочникОбъект.
  4. В памяти сервера создается новая управляемая форма элемента
  5. Вызывается событие формы ПриЧтенииНаСервере, куда передается свежесозданный СправочникОбъект в параметре ТекущийОбъект
  6. Основной реквизит формы «Объект», тот, что в списке реквизитов выделен жирным шрифтом наполняется данными на основании данных СправочникОбъект. Здесь происходит обычное поэлементное присваивание свойствам объекта ДанныеФормы значений, записанных в одноименных свойствах объекта СправочникОбъект. По сути, происходит «ЗаполнитьЗначенияСвойств(ДанныеФормы, СправочникОбъект)
  7. СправочникОбъект уничтожается. Все его данные стираются из памяти сервера.
  8. Вызывается событие формы «ПриСозданииНаСервере», в котором мы получаем уже заполненные ДанныеФормы
  9. Данные формы сериализуются и отправляются на клиента, где форма отображается пользователю

Обратите внимание, что СправочникОбъект, к которому мы так привыкли в обычном приложении, уничтожился. Если в модуле объекта были какие-либо глобальные переменные, экспортные или не экспортные, все они стали потеряны.

Сохранить что-либо в данных объекта больше нельзя, все сохранение состояния должно выполняться в ДанныхФормы.

Теперь, давайте рассмотрим процесс записи данных справочника:

  1. Пользователь нажимает кнопку «Записать»
  2. Выполняется обработчик формы «ПередЗаписью» (на клиенте)
  3. Происходит серверный вызов
  4. В памяти сервера создается новый СправочникОбъект, он наполняется данными на основании данных текущей формы (что-то вроде ЗаполнитьЗначенияСвойств, но в обратном направлении – пишется из формы в объект)
  5. Вызывается обработчик события формы «ПередЗаписьюНаСервере», куда передается свежесозданный СправочникОбъект. С этого момента, если мы хотим что-то записать в базу данных, то менять нужно именно СправочникОбъект. Изменения данных формы не отразятся в записываемом объекте.
  6. Вызывается обработчик «ПередЗаписью» самого СправочникОбъект (в модуле объекта)
  7. Вызывается обработчик «ПриЗаписи» самого СправочникОбъект (в модуле объекта)
  8. Вызывается обработчик события формы «ПриЗаписиНаСервере», транзакция записи еще не завершена и можно отменить запись
  9. Вызывается обработчик события формы «ПослеЗаписиНаСервере», транзакция записи уже завершена
  10. СправочникОбъект уничтожается
  11. Выполняется возврат на клиента, где вызывается обработчик события формы «ПослеЗаписи»

Обратите внимание, серверное состояние восстанавливается с нуля, каждый раз создается новый СправочникОбъект. В промежутках между вызовами сервера он не сохраняется.

Конвертация данных формы

Для упрощения жизни существуют простые способы преобразования универсальных объектов «ДанныеФормы….» в привычные прикладные объекты и наоборот.

Так, например, можно получить наполненный данными СправочникОбъект на основании данных формы, если вызвать метод «РеквизитФормыВЗначение(«Объект»). При этом произойдет то, что описано выше – будет создан новый СправочникОбъект и наполнен данными из указанного реквизита данных формы.

Обратное преобразование выполняется методом «ЗначениеВРеквизитФормы». Если мы произвели какие-то действия с данными СправочникОбъект, например, очистили табличную часть, то мы должны поместить наши изменения обратно в форму, иначе будет что?

Правильно, измененный СправочникОбъект будет уничтожен при возврате на клиента, а данные формы останутся неизменными. Цикл записи объекта будет построен на старых данных формы, а стало быть, изменение табличной части просто пропадет.

Не все так плохо ;)

Все эти сложности с преобразованием данных полезно знать, однако, они совсем не обязательны. Платформа прекрасно справляется с ними сама. В большинстве случаев достаточно никогда не вспоминать про СправочникОбъект, а работать непосредственно с данными формы. Грязную работу платформа сделает сама.

Команды формы

Про команды формы много говорить не получится, это довольно простая вещь. Команда олицетворяет некоторое действие, которое может запустить пользователь. Подобно тому, как поля ввода и флажки привязываются к реквизитам формы, кнопки и гиперссылки привязываются к командам. Каждая кнопка обязательно ссылается на какую-либо команду.

У команды есть обработчик, в этом и заключается главное отличие от кнопок в обычных формах. В управляемой форме у кнопки нет обработчиков событий. Кнопки лишь запускают исполнение команды.

Каждая команда может быть размещена в командной панели, подменю, или на самой форме. Создаются команды на закладке «Команды» в редакторе формы.

Параметры формы

Параметры, это специальные переменные, которые можно передать в форму в момент ее открытия. Параметры задаются на закладке «Параметры» редактора формы и о них речь пойдет чуть ниже.

Управление открытием формы

Отображение форм на экране в управляемом режиме также претерпело некоторые изменения. Прежде всего, формы получили имена, по которым к ним можно обращаться. Например, форма списка справочника  «Контрагенты» будет называться «Справочник.Контрагенты1.ФормаСписка».

Методика открытия формы теперь такова: форма должна открываться одной строчкой кода и одним вызовом сервера. Эту задачу на себя берет глобальный метод «ОткрытьФорму». В данный метод мы должны передать имя формы (см. выше), параметры формы, владельца и ключ уникальности. Все параметры, кроме имени являются необязательными.

Поскольку открытие формы это интерактивная операция, то осуществляться она может только на клиенте. Однако, создание формы, как мы видели из ее жизненного цикла, происходит на сервере. Возникает резонный вопрос, а как открыть форму одной строчкой кода, если нужно каким-то образом параметризовать ее создание, передать ей что-то, чтобы она знала, как именно ей нужно создаваться?

Для этого и нужны Параметры формы. Это структура, которую можно передать в метод «ОткрытьФорму». Переданные параметры можно проанализировать в серверном коде формы и предпринять какие-то действия на основании переданных параметров.

Простой пример, открытие формы списка с отбором. Для того, чтобы список справочника открылся с отбором по определенному условию нужно открыть форму списка и передать ей параметр с именем «Отбор», значением которого будет структура с полями отбора и значениями отбора.

УсловияОтбора = Новый Структура;
УсловияОтбора.Вставить("ТипКонтрагента", "Поставщик");
УсловияОтбора.Вставить("Лояльность", "Надежный");
ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", УсловияОтбора);

Существуют системные параметры, на которые реагирует сама платформа. Упомянутый параметр «Отбор» как раз является системным, если он передан форме списка, то платформа сама установит отбор на список.

Кроме того, параметры можно создавать произвольные, в редакторе формы. Более того, параметры можно передавать даже с теми именами, которые не объявлены в форме, они все равно будут видны в серверном коде формы.

Жизненный цикл параметров

Все параметры, переданные в форму в момент ее открытия видны только в процедуре «ПриСозданииНаСервере». После создания все параметры уничтожаются и более не доступны в форме.

Исключение составляют параметры, которые в редакторе формы объявлены с признаком «Ключевой параметр». Такой параметр будет существовать до тех пор, пока существует сама форма.

Процедура ПриСозданииНаСервере(Отказ)

    Если Параметры.ЗапуститьЯдерныйРеакторПриОткрытии Тогда
        УправлениеРеактором.Запустить();
    КонецЕсли;

КонецПроцедуры

 

Ключевые параметры определяют уникальность окна. В обычных формах был такой атрибут «Ключ уникальности». Если запрашивалась форма, то она сначала искалась в уже открытых. Ключ уникальности позволял варьировать условия при которых создавалась новая форма или возвращалась существующая. Ту же самую роль играют ключевые параметры. Если метод «ОткрытьФорму» вызван два раза подряд с одним и тем же значением ключевого параметра, то второй вызов не откроет новое окно, а активирует существующее.

Модуль формы

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

Справедливости ради стоит отметить, что они доступны не только в модулях форм, но, как правило, используются только там. Директива компиляции это строчка вида &НаКлиенте перед объявлением процедуры.

Для модуля форм возможны следующие директивы:

  • &НаКлиенте
  • &НаСервере
  • &НаСервереБезКонтекста
  • &НаКлиентеНаСервереБезКонтекста

Директива указывает компилятору, где нужно скомпилировать указанную процедуру. С директивами «НаКлиенте» и «НаСервере» все понятно, а вот с добавкой «БезКонтекста» нужно разобраться подробнее.

Вернемся еще раз к модели взаимодействия клиента и сервера. Представьте себе: пользователь редактирует большую форму, в ней несколько табличных частей и куча реквизитов. Все эти данные (если не учитывать разных, не зависящих от разработчика, оптимизаций) хранятся в контексте формы, то бишь, в ее реквизитах. На сервере никаких данных не хранится, он не знает о том, какие буквы написаны в полях нашей формы.

Теперь, пользователь нажимает кнопку, которая вызывает процедуру с директивой «НаСервере». Все данные формы, должны быть отправлены на сервер, чтобы там с ними можно было поработать. Процедуры «с контекстом» (НаКлиенте и НаСервере) видят контекст формы, т.е. ее данные. Когда мы вызываем сервер «с контекстом», то контекст должен быть передан на сервер, поскольку его там в данный момент просто не существует (сервер state-less).

Все реквизиты и табличные части сериализуются, формируется json-документ с данными формы и этот документ отправляется на сервер. На сервере json считывается и поднимается серверный контекст формы. Далее, запускается наш серверный код, который видит, что утю-тю-волшебство, на совсем другой машине, даже на другом континенте, в серверной части формы все данные живы-здоровы и с ними можно работать.

Поскольку все происходит настолько для нас прозрачно, что порой кажется: «какая красота, не надо заморачиваться, можно всегда писать «НаСервере» и на сервере все будет доступно». Однако, как видно из предыдущего абзаца, такая прозрачность не бесплатна. Все данные формы должны упаковаться, отправиться на другой континент, там распаковаться, после чего должен быть выполнен серверный код, и потом обратная упаковка и возврат изменений на клиента. Понятно, что накладные расходы на передачу контекста очень высоки.

Платформа выполняет ряд оптимизаций по передаче контекста. Так, например, между клиентом и сервером передаются только изменения контекста, а не весь контекст целиком. Тем не менее, так происходит не всегда, и часто форма пересылается почти полностью. Кроме того, программист не может явно управлять этим процессом и можно считать, что вызов серверного метода «с контекстом» передает все данные формы, а потом еще и получает их обратно с теми изменениями, которые внесены в данные на сервере.

Для облегчения клиент-серверного обмена введено понятие серверного вызова «без контекста». Отличается он тем, что при вызове «без контекста» контекст формы не передается и в серверном коде будет недоступен. Процедура «без контекста» не видит данных формы. Фактически, это вообще не модуль формы, а некий отдельный модуль, который ничего про форму не знает.

Во внеконтекстный метод можно передавать параметры и можно получать возвращаемые значения, однако, нельзя обращаться к данным формы, поскольку, нет самой формы.

Преимуществом внеконтекстного вызова является то, что он выполняется довольно быстро. Нет лишних данных, нет лишних операций, просто выполняется вызов сервера с передачей нескольких аргументов метода.

Внеконтекстные вызовы позволяют пообщаться с сервером и избежать ненужных расходов на передачу контекста формы. Разумеется, можно сделать очень медленным даже внеконтекстный вызов, если передать параметром метода какой-нибудь огромный текст на много мегабайт.

Переменные уровня модуля формы

В форме могут быть объявлены глобальные переменные, а их доступность отрегулирована все теми же директивами компиляции.

Причем, переменная, которая объявлена НаКлиенте, будет доступна все время жизни формы, а переменная НаСервере будет очищаться каждый раз при возврате с сервера (уничтожении данных серверного вызова).

Временное хранилище – секретное оружие

При работе с управляемыми формами быстро становится ясно, что ограничения клиент-серверного взаимодействия очень сильно сужают возможности разработчика. Поэтому, платформа 1С предоставляет хитрый секретный ход под названием «ВременноеХранилище». Эта сущность позволяет сохранить на сервере некоторое состояние между двумя серверными вызовами. Я слышу возгласы: «А кто сказал, что состояние нельзя хранить!» Справедливое замечание, состояние хранить все-таки можно, но недолго.

Временное хранилище позволяет оставить на сервере некоторые данные, а вместо них получить короткую строку – адрес временного хранилища. Этот адрес можно передать на клиента, там он будет спокойно лежать, а когда понадобятся данные из хранилища, то мы по этому адресу сможем их получить.

Для работы со временным хранилищем используются методы ПоместитьВоВременноеХранилище и ПолучитьИзВременногоХранилища.

С методом «Получить» все просто, он по заданному адресу возвращает значение, которое лежит в хранилище.

С методом «Поместить» несколько сложнее. Дело в том, что помещать можно в 2 разных хранилища – простое и хранилище формы. Хранилище формы живет на сервере столько, сколько живет сама форма. Простое хранилище живет ровно 2 серверных вызова. В синтакс-помощнике об этом написано целых несколько умных строк. Я никогда не понимал, что они означают. Опытным путем было установлено, что срок жизни – 2 серверных вызова.

  • Первый – мы помещаем что-то в хранилище и возвращаем адрес на клиента.
  • Клиент делает второй вызов и по этому адресу может получить данные.
  • В третьем вызове по этому адресу уже ничего не будет. Платформа очистит хранилище

С хранилищем формы ситуация более интересная. Если вторым параметром метода «ПоместитьВоВременноеХранилище» передать идентификатор формы (ЭтаФорма.УникальныйИдентификатор), то данные в хранилище будут привязаны к сроку жизни формы и не будут удалятся ни в первых, ни во вторых, ни во всех прочих вызовах сервера.

Таким образом, временное хранилище, это еще одно место, в котором (помимо реквизитов формы) можно сохранять состояние на сервере. Причем, в хранилище можно хранить даже данные, которые на клиенте недоступны, а стало быть, в реквизитах формы их разместить нельзя.

Особенности временного хранилища

Временное хранилище лучше всего представить себе, как файл на сервере. Технически это не так, но особенности оптимизации могут попить крови. Проще думать о нем, как о файле.

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

Как примерно работает временное хранилище:

  • Данные помещаются в ВХ
  • Управление возвращается на клиента
  • Клиент делает повторный серверный вызов
  • Менеджер кластера переключает вызов на другую машину из кластера (не ту, что помещала данные в хранилище)
  • И вот тут, если данные в хранилище были сериализуемые, то все отлично, мы получим их даже на другой машине кластера.
  • Если данные не были сериализуемые (СправочникОбъект, COM-объект, что-то еще), то они просто пропадут, ибо нефиг.

Если не вдаваться в дебри документации, то можно сказать примерно следующее: данные во временном хранилище существуют в пределах двух серверных вызовов, либо, если они помещены в хранилище формы, то в течение жизни формы.

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

Если тип данных, помещенных в хранилище не поддерживал сериализацию, то данные просто уничтожаются.

Данные помещаются в хранилище по ссылке. Это значит, что помещая данные в хранилище и изменяя их вне хранилища мы, фактически, меняем и само хранилище, т.к. в нем лежит только ссылка на данные. Пример:

Массив = Новый Массив; Массив.Добавить("Привет");

Адрес = ПоместитьВоВременноеХранилище(Массив);

Массив.Добавить("До свидания");

МассивИзХранилища = ПолучитьИзВременногоХранилища(Адрес);

Сообщить(Массив = МассивИзХранилища); // Истина

Сообщить(МассивИзХранилища.Количество()); // 2 элемента

В приведенном коде массив помещается в хранилище, после чего к нему добавляется еще один элемент. Видим, что в хранилище лежит тот же самый объект и объект получаемый из хранилища тоже изменен.

Тем не менее, если данным пришлось сериализоваться (например, произошло переключение на другой сервер кластера), то ссылки уже будут разными, по понятным причинам.

С одной стороны, логика довольно путанная, с другой стороны, ничего страшного. Главное помнить о подводных камнях и не закладывать логику на какое-то побочное поведение хранилища.

Краткий итог

  • - Взаимодействие с сервером теперь не спрятано от разработчика. Наоборот, оно каждую минуту напоминает о себе. И это хорошо.
  • - Сервер 1С не сохраняет данные между обращениями клиента к серверу. Нужно проектировать взаимодействие с учетом этой особенности
  • - Временное хранилище – мощное средство, которое нивелирует сложности state-less взаимодействия и позволяет строить сложные схемы серверных вызовов.
  • - У формы есть контекст, который передается с клиента на сервер и обратно при каждом контекстном вызове сервера. Для несложных вызовов, где не требуется вся форма целиком, следует использовать внеконтекстные вызовы.

Заключение

Управляемый интерфейс – это кардинально новый подход к построению приложения на платформе 1С. Он привносит свои сложности, но привносит и массу преимуществ. Однозначно, за управляемым интерфейсом будущее, и я не видел еще ни одного человека, который поработав с управляемыми формами, захотел бы вернуться к обычным.

Понятно, что в рамках одной статьи нельзя описать все аспекты управляемых форм. Например, я совсем не затронул принципы размещения элементов на форме, группировку полей, команд и пр. Считаю, что на этот счет имеется достаточно литературы и пересказывать книжки просто неэффективно.

Литература к прочтению

Новичкам однозначно нужно прочитать книжку Максима Радченко «Разработка управляемого интерфейса». На старости лет мог напутать с точным названием, извиняйте. Книжка зеленоватая такая.

Все основные моменты разработки не только форм, но и вообще всего управляемого приложения в ней описаны просто замечательно.

Постскриптум

Я постарался затронуть наиболее неочевидные моменты устройства управляемых форм, те которые есть в документации и наблюдаются экспериментально, однако не упоминаются в учебниках. На этих особенностях можно потерять кучу времени, если не знать архитектурных принципов и особенностей взаимодействия клиента и сервера 1С. Если держать в голове то, как оно работает, то становится понятнее почему некий механизм реализован так, а не иначе.

Удачи вам в разработке управляемых форм. Если вы дочитали до конца, значит, вам было что узнать. Скорее ставьте плюсик :)

См. также

Лучшие комментарии

139. j3d 06.03.2014 12:54
Не знаю, писал ли кто нить тут выше, но выскажусь тоже.
Работа в толстом клиенте конечно примитивна и не столь гибка как в клиент серверном варианте.
тут я с вами согласен.
Но я пишу софт более 10 лет (из них, 6 лет в 1С:Предпиятии) и скажу вам вот что:
УФ афигеннейший инструмент для оптимизации клиент серверных процессов и уменьшения нагрузки на локальные машины.
Столкнулся сам, и не раз, при автоматизации крупных предприятий от 200 рабочих мест.

Но 95% всей моей клиентуры (как я думаю и в общей картине по России и СНГ) это небольшие конторки в стиле "бухгалтер<->директор<->оператор.менеджер<->зав.склада"
т.е. компании до 5 рабочих мест.
и как ни странно именно они кормят большинство 1С-ников потому как на всех 1С-ников крупных предприятий не напасешься.
а в этих мелких конторках, когда бухгалтеру необходимо добавить кнопочку в документ дабы автоматически создавать какое-нить пакетное начисление авансов и т.п. он зовет программиста 1С.
и раньше, любой мог напрямую с толстого клиента написать модуль обработки и взять за это с не очень то и богатой мелкой конторки какие то час или два.
Нынче же чтобы написать эту же кнопку приходится прыгать с бубном изгаляясь как бы передать те или иные данные с сервера на клиент. И счет тому же бухгалтеру приходится выставлять на порядок выше.
Само собой методом простой калькуляции все эти 95% клиентов посылают новомодную конфигурацию на УФ в .... и возвращаются к старой учетной системе.
Только в 2013 году я заработал кучу денег на клиентах которые просили перевести их с УТ11 на УТ10.3
(Это не значит, что я не пытался увещевать их и доказать что УТ11 лучше и более гибкая. Просто желание клиента все равно остается при нем) Писал правила конвертации, собственные обработки переноса и пр.
А все почему?
потому что ОЧЕНЬ МНОГИМ КЛИЕНТАМ УФ НА Х... НЕ СДАЛИСЬ. При всей их удобности и прочих плюшках.
Клиенты рассматривают управляемый интерфейс как очень хитрый способ компании 1С увеличить мзду с работы специалиста.


Теперь об удобстве написания кода для программиста:
Раньше у меня было четкое деление.
Клиент, придумавший очередное задание, в котором из 15 абсолютно не связанных регистров надо консолидировать данные и при выполнении условия в каком то там документе и вывести это в отчет или сохранить в каком нить непонятном формате на диске

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

Это все равно что при сексе вместо того чтобы наслаждаться процессом ты будешь вынужден (по новым правилам, утвержденным Министерством половых связей) держать вытянутым мизинец на правой ноге, причем так чтобы он не опускался ниже уровня 12 см от кромки матраца. Причем министерство будет убеждать вас что именно при таком методе достигается максимальная оптимизированность процесса и наименьшая нагрузка на позвоночник.
И все как бы правильно. И есть уже даже люди, которые по другому уже и не умеют.
Но, называйте меня ретроградом, даун-шифтером и пр. я все равно за старый добрый процесс программирования в толстом клиенте.

я для тех кому нужно клиент-серверное программирование пусть придумают насадки на ... платформу которые можно будет подключать при необходимости.

Просьба не кидать гнилые помидоры и постараться понять это крик души )))
Ответили: (140) (141) (148) (150) (154) (222)
+ 124 [ Android1234; bonk; bonnybrowns; desarz; 7OH; Adeptus; ketr; Sup4ik; chudnovsky; kiros; poritskiy; savirin; tormozit; Yimaida; assa; frost_a; sashapere; Rodnaya; Deletex; den_bat; ccserg; ZVN; Kirich2; Arc; meuses; talych; vlad636; dobro7; SGordon1; vtatarskih; tezin; Atatator; ЧИА; landrev; Nandarou; v0vjik; ekomova; Uncore; alek-sand-er; zsergey_; ivprovotorov; Krio2; shalimski; ogonek!; Катя84; kansler; VooDOOPRo; DoctorRoza; Azamat1c; maksi_ko; Kuein; Windsor77; Tokyo Marui; prodines; MaiorovYury; anatolly; Eremita; AlexB.; surikateg; virdg; fokses; orfos; MOHCTP; gigapevt; sbcode; tunesoft; Yakud3a; strelez; primara; Glavdir.1C; e-aleks; BolshoySmal; it@contlog.ru; andreydmv; vovant; dr2c; imxored; vadimusimus; bidond; BBons; AlexFierst; okami; Serg548; RadoLex; Poison Angel; Rabot; m.s.moiseev; Fominro; needmic; NovSL; DenisF8; bankir1982; abcelektronic; medovich; NeFarT; Bambini23; t278; kostyaomsk; simich; sir.wbg; Death_eye; DenP2010; Maximysis; PythonJ; thevist; ЖУДА; depresnjak; uri1978; RvvRvv; monkbest; Manticor; AllexSoft; Bukaska; krendel; serg1974; ediks; Morales; Zemlyak; Дмитрий74Чел; PONOM; ansonat; User80; svetanik; ckopn72; ]
# Ответить
61. mzelensky 02.09.2013 12:00
Прочел статью. К самому написанию никаких вопросов - все довольно доходчиво изложено. Не понравилось только то, что автор безустанно "втирает" идею "УФ - ЭТО ЛУЧШЕЕ, ЧТО С НАМИ БЫЛО".

По мне так УФ это г***о полное. Я работал с УФ и плевался на всем протяжении работы. Если кто-то все-таки захочет поспорить на счет "быстроты разработки", то я тоже подписываюсь! Я вижу УФ только в качестве того случая, когда нужно разработать функционал под "веб" (т.е. для работы в браузере).
Ответили: (66)
# Ответить
10. Oleg_nsk 27.08.2013 07:17
Однозначно, за управляемым интерфейсом будущее, и я не видел еще ни одного человека, который поработав с управляемыми формами, захотел бы вернуться к обычным.


Работаю с УФ полгода и хотел бы вернуться к обычным. Часто занимаюсь конвертацией данных и сложными обменами между базам. Скорость разработки увеличилась. Нагрузка на сеть для меня не критична. Сложно организовать простой прогресс бар. Передавать файл через временное хранилище грустно. Но плюсы тоже есть, однако минусы их перекрывают.
Ответили: (12) (23)
# Ответить
35. Oleg_nsk 28.08.2013 08:45
(23) Поручик, Перечислите пожалуйста достоинства УФ кроме "престижа", уменьшения сетевой нагрузки и простоты конструирования форм? У вас на самом деле уходит меньше времени на разработку? Какая специфика ваших задач? Вот сегодня например прилетела задача по УТ11 при заполнении установки цен на основании документа поступление заполнить свою цену ценой поставщика с НДС. Эта задача была оценена на полчаса. При попытки вникнуть в суть кода разработчиков чуть не поехала крыша. Создание временного хранилища со схемой скд, её извлечение, двойное перезаполнение и т.п. В общем задача заняла у меня 4 часа. На толстом клиенте на это ушло бы минут пять. Добавление внешних печатных форм отчетов и обработок стало каким-то муторным. Не говорю о том что отладка на клиент-сервере невозможна без флага -debug и приходится делать файловую копию большой базы. Знаю людей которым нравятся УФ, но не знаю никого, кто-бы работал с ними быстрее чем под толстым клиентом. Сам я проходил курсы по УФ и знаю все его основные особенности, читал спецлитру, мышление перестроил под него, однако, остаюсь при своем мнении, что разработка под толстым клиентом проще и быстрее. Если будет время согласен устроить соревнование - решение нескольких шаблонных задач на скорость параллельно в УФ и на толстом клиенте :)
Ответили: (36) (43) (46) (134)
# Ответить
67. Поручик 03.09.2013 00:06
Вброшу и пойду спать.
Короче говоря, кто плюётся от управляемых форм, просто неудачники, не умеющие осваивать новые технологии и перестраивать мышление. Мозг жиром заплыл.
# Ответить
100. EmpireSer 10.10.2013 13:53
Спасибо! Классная статья.
Но я не разделяю эту радость от управляемых форм. Мне больше хотелось видеть больше возможностей на стороне клиента. Ну например:
1) Зачем ограничения сериализацией? Если бы оставался контекст и на сервере, то для не поддерживаемых типов можно организовать было что-то типа "проксирование" (Remoting, RMI). Ведь "невидимый" вызов производится, если на клиенте обратится к какой-то ссылке через точку, типа такой же "фокус" можно было делать и тут.
Я согласен, что возможность распределять нагрузку в кластере - это хорошо, но, как я помню, даже в Oracle Weblogic есть возможность и держать северный контекст и даже запретить ему распределять его в кластере.
2) Что за странное ограничения на работу с таблицей значений?
3) Особенно огорчило отсутствие метода "СоздатьКолонки", т.к. нет возможности сгеренировать правильно столбцы для системных таблиц (например КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор)
4) Почему обработка СКД выполняется на сервере? А может я хочу поработать только с набором данных "объект" и просто его по особенному "обработать" (наложить сложные отборы, использовать вычисляемые поля)

Вместе с правильными новшествами были принесены ограничения "высосанные из пальца"...
# Ответить
62. rosinfo1 02.09.2013 14:11
(36) нормальный такой, У меня есть заказчик, оптовая торговая фирма, 30 пользователей, 500 документов в день, включая субботу и воскресенье, работают на 7.7 самописная "примитивная" конфигурация, 15 документов, 5 регистров, и несколько сотен отчетов и обработок. Работают в терминале, файловая база. Они счастливы, довольны и скоростью и производительностью, и тем, что я им функционал под каждый чих, быстро дорабатываю. По функционалу, УТ 11 только сейчас придвинунась, к тем идеям, которые у них были реализованы еще 10 лет назад. Торговые представители через карманник, подключаются по терминалу к базе. Внешние клиенты также, у них урезанные интерфейсы, делают самостоятельно заказы. Один блок логистики, загрузки автомобилей, и доставки по районам чего стоит. Также блок производства и фасовки, со сдельными рассчетами зарплаты. Учет бонусов и откатов. Учет затрат и себестоимости, точки безубыточности. Обмен с БП 2.0 типовой конфигурацией реализован, аффилирование клиентов, как в УТ 11. Им УФ нафиг не нужны, и УТ 11 это кошмар, для их бизнеса - тормоза, и лишние затраты в ИТ инфраструктуру, а также расходы на программистов.
Ответили: (63)
# Ответить
117. scape 04.01.2014 22:45
Как не выпендривайся, а без говнокода на управляемых формах (клиент-сервер) не обойтись.
И зачем было это изобретать. Можно же было сделать "тонкое" управление взаимодействием клиента и сервера программистом там, где это действительно нужно, а не заставлять писать, например, говнофункцию возвращающую значение на клиент потому что функция платформы, которая возвращает это значение, работает только на сервере.

Современные стандарты языков программирования стремятся к облегчению жизни программиста, 1с похоже доставляет садистское удовольствие издеваться таким изощренным способом. Противно это все...
Ответили: (118)
# Ответить
144. v.hitrin 04.04.2014 16:05
А как же движение вперед? Попробуйте через обычные формы реализовать веб-интерфейс... не получается?
Скажете, да кому нужны эти веб-клиенты?
А кому тогда нужны эти сложные иномарки? Давайте будем и дальше делать "девятки", "четырки", ведь они такие простые и понятные, можно любой косячек починить с помощью молотка и благого мата ("полностью отдаться решению поставленной клиентом задачи"). Большинство пользователей "девяток" (читай "обычных форм") всегда довольны тем, что у них есть, и искренне не понимают, зачем хоть что-менять в их привычном мире, кому это надо вообще.
А есть задачи и цели, которые можно достичь только новыми подходами, и хвала Нуралиеву (может быть тут перегнул палку), что он, несмотря на такой вот мелькающий негатив, стремиться к созданию своего, отечественного БМВ.
А УФ нормально программируются, если не лениться, почитать хотя бы "Разработка управляемого интерфейса" (250 руб.) и приятно для себя подтянуть знания по 1С, которая развивается. И дальше, как и привычно "полностью отдаться решению поставленной клиентом задачи".
ПС: в машинах абсолютно не разбираюсь, просто попытался провести понятную (надеюсь) аналогию.
Ответили: (147)
# Ответить
11. sikuda 27.08.2013 08:30
(0) О Книжках:
"Разработка управляемого интерфейса" Ажеронок, Островерх, Радченко, Хрусталева - зеленая
"1C:Предприятие 8.2 Коротко о главном" Радченко - коричневая
# Ответить

Комментарии

1. Поручик 26.08.2013 19:07
(0) Дочитал до конца, но нового ничего не узнал. Так, чисто время занять, пока большой файл скачивается.
Всё написано и разжёвано в книге Хрусталёвой Разработка управляемого интерфейса.
Ответили: (106) (111)
+ 1 [ AlexO; ]
# Ответить
2. Evil Beaver 26.08.2013 19:22
В аннотации про это честно сказано :)
# Ответить
3. B2B 26.08.2013 20:34
Сервер 1С работает по такому же принципу. В общем случае, в памяти сервера нельзя сохранить промежуточные данные между вызовами.

Не согласен.
хранилище данных

Зря использовали это словосочетание. Оно напоминает "ХранилищеЗначений". Кто-то может спутать.
СправочникОбъект уничтожается. Все его данные стираются из памяти сервера.

Не согласен.

При открытии формы элемента справочника СправочникОбъект остается на сервере, а на клиент передается описывающий его ДанныеФормыСтруктура*. И будет существовать этот СправочникОбъект на сервере до тех пор, пока форма не будет уничтожена (ну, может еще по таймауту).

Именно поэтому существуют контекстные и бесконтекстные вызовы сервера. Это подчеркивает, что контекст существует и на сервере и на клиенте.
Ответили: (4) (5)
# Ответить
4. TrinitronOTV 26.08.2013 21:37
(3) B2B, не смотря на ваши замечания, всё равно прочитал с большой пользой для себя. Спасибо автору статьи за данный материал
Ответили: (146)
+ 1 [ Fominro; ]
# Ответить
5. MarSeN 26.08.2013 21:53
(3) B2B,
Именно поэтому существуют контекстные и бесконтекстные вызовы сервера. Это подчеркивает, что контекст существует и на сервере и на клиенте

Рискую ошибится, но думаю, что это ни о чем не говорит.

Я рассуждаю так: если СправочникОбъект остается на сервере, тогда зачем в принципе нужно разделение на контекстные и бесконтекстгые процедуры? Ведь контекст остался на сервере?
Но тут возникают но... Данные на форме могли поменяться и поэтому при контекстном вызове их надо обновить (должно происходить если на сервере контекст сохранен), либо если контекст уничтожен на сервере, тогда контекстный вызов просто необходим.
На личном опыте замечено что не важно сколько ты информации изменил на форме, на скорости контекстного вызова это не сказывается (т.е. платформа не отслеживает только измененные объекты и не передает только их) что косвенно подтверждает теорию отсутствия СправочникОбъект на сервере. Либо говорит о том что 1С здесь чего-то не доработало.
Это мое сугубо личное мнение и оно, возможно, является ошибочным.
Ответили: (6)
# Ответить
6. B2B 26.08.2013 22:09
(5) Суть контекстных и бесконтекстных вызвовов следующая: в случае контекстного вызова на сервер кроме всех параметров формы передается контекст (некий идентификатор), по которому сервер находит и обновляет состояние СправочникОбъект, а бесконтекстный вызов всего этого не делает.
Ответили: (7)
− 3 [ bonv; CratosX; Evil Beaver; ]
# Ответить
7. Evil Beaver 26.08.2013 22:30
(6) B2B, грубейшая ошибка. С чего вы взяли про идентификатор какой-то?
СправочникОбъект уничтожается при возврате на клиента. Контекст формы существует только в виде ДанныхФормы и ее элементов. У вас есть подтверждения ваших слов про то, что СправочникОбъект живет на сервере пока открыта форма?
Ответили: (32)
# Ответить
8. Evil Beaver 26.08.2013 22:33
Коллеги, еще раз: из СправочникОбъект-а создается структура с такими же свойствами, заполняется данными из СправочникОбъект-а. Все, дальше в форме живет только эта структура.

Доказательство - ХранилищеЗначения в реквизитах объекта.
Домашнее задание - сделать управляемую форму справочника с реквизитом типа ХранилищеЗначения. В хранилище нужно записать файл, выбранный с диска.
Ответили: (9) (25)
+ 1 [ MarSeN; ]
# Ответить
9. MarSeN 26.08.2013 23:35
(8) Evil Beaver,
Такое задание делал не раз на работе ))))
# Ответить
10. Oleg_nsk 27.08.2013 07:17
Однозначно, за управляемым интерфейсом будущее, и я не видел еще ни одного человека, который поработав с управляемыми формами, захотел бы вернуться к обычным.


Работаю с УФ полгода и хотел бы вернуться к обычным. Часто занимаюсь конвертацией данных и сложными обменами между базам. Скорость разработки увеличилась. Нагрузка на сеть для меня не критична. Сложно организовать простой прогресс бар. Передавать файл через временное хранилище грустно. Но плюсы тоже есть, однако минусы их перекрывают.
Ответили: (12) (23)
# Ответить
11. sikuda 27.08.2013 08:30
(0) О Книжках:
"Разработка управляемого интерфейса" Ажеронок, Островерх, Радченко, Хрусталева - зеленая
"1C:Предприятие 8.2 Коротко о главном" Радченко - коричневая
# Ответить
12. Evil Beaver 27.08.2013 09:14
(10) Oleg_nsk, поддержу в плане прогресс-бара. Точную индикацию прогресса организовать можно только извратившись. Однако, как мне кажется, для большинства прочих задач УФ намного удобнее.
Ответили: (15)
# Ответить
13. veluga 27.08.2013 09:21
а ещё хочется отметить, что не все методы работает на сервере -
например если база развернута на 64битном сервере, то поработать на нем, к примеру с XBase не получиться.
+ 2 [ d0dger; wunderland; ]
# Ответить
14. ivs200999 27.08.2013 09:42
Спасибо. Уже почти год как вынужден был вернуться к обычным формам, кое-что по УФ начало забываться, благодаря публикации память рефрешнута.
Ответили: (149)
# Ответить
15. xzorkiix 27.08.2013 09:46
(12) Evil Beaver, Oleg_nsk

Глобальный контекст (Global context)
Состояние (Status)
Синтаксис:

Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Параметры:

<ТекстСообщения> (необязательный)

Тип: Строка.
Строка, предназначенная для вывода в панель состояния. Если параметр не указан, возобновляется вывод системного текста в панель состояния.
<Прогресс> (необязательный)

Тип: Число.
Значение индикатора прогресса (от 1 до 100).
Если не задан, индикатор прогресса не отображается.
<Пояснение> (необязательный)

Тип: Строка.
Текст пояснения.
<Картинка> (необязательный)

Тип: Картинка.
Картинка.
Описание:

Выводит текст в панель состояния.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

Для режима запуска ОбычноеПриложение используется только параметр <ТекстСообщения>, а вывод текста осуществляется в панель состояния.
Пример:

Состояние("Выполняется обновление информационной базы");


Частота исполнения строго на плечи программиста реализующего серверное решение.
Ответили: (17) (20)
# Ответить
16. mxm2 27.08.2013 09:49
ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", "УсловияОтбора");


очепятка во втором параметре (он должен быть без ковычек)
+ 1 [ Mortiferus; ]
# Ответить
17. mxm2 27.08.2013 09:52
(15) xzorkiix, тут напрягает то, что нужно постоянно "выныривать" на уровень клиента. Логичнее решать проблему отображения хода вычислений через асинхронное фоновое задание.
# Ответить
18. BH 27.08.2013 10:04
Данные помещаются в хранилище по ссылке. Это значит, что помещая данные в хранилище и изменяя их вне хранилища мы, фактически, меняем и само хранилище, т.к. в нем лежит только ссылка на данные. Пример:

Массив = Новый Массив; Массив.Добавить("Привет");
Адрес = ПоместитьВоВременноеХранилище(Массив);
Массив.Добавить("До свидания");
МассивИзХранилища = ПолучитьИзВременногоХранилища(Адрес);
Сообщить(Массив = МассивИзХранилища); // Истина
Сообщить(МассивИзХранилища.Количество()); // 2 элемента
...Показать Скрыть


Если этот код выполнять с клиента, то результат будет вовсе не таким, как написано.
Ответили: (19)
+ 1 [ billlater; ]
# Ответить
19. Evil Beaver 27.08.2013 10:14
(18) BH, это серверный код, выполнять надо в одной серверной процедуре. Кстати, результат, скорее всего, будет таким, как написано, однако, я там же говорил, что процесс хранения управляется платформой и она может сериализовать данные по своему усмотрению. Поэтому, в общем случае, поведение непредсказуемое.
# Ответить
20. Evil Beaver 27.08.2013 10:15
(15) xzorkiix, да, а еще нужен реальный сервер, ибо в файловом режиме фоновые задания работают извращенскими методами и, де-факто, не применяются вовсе.
Ответили: (21)
+ 1 [ rosinfo1; ]
# Ответить
21. xzorkiix 27.08.2013 10:26
(20) Поторопился с примером, каюсь, метод выполняется строго на клиенте. Тут скорее в решении платформы должна быть реализация методов, которые бы работали с пользовательским интерфейсом без прерывания серверного кода, те клиент паралельно всегда должен ожидать каких либо откликов со стороны сервера. Тот же метод Состояние. Возможно, это будет реализовано так позже. Пока я сомневаюсь, что разработчики платформы настроены на реализацию асинхронного вызова силами 1С-программиста.
# Ответить
22. foliage 27.08.2013 10:50
Статья понравилась и четким изложением "по пунктам", и содержанием. Эту информацию пришлось с полгода назад выискивать по разным источникам, в т.ч. в упоминаемой книге. Но и из статьи немало узнала, спасибо автору!
Однозначный "плюс", мне бы эту статью в начале работы с УФ :)
# Ответить
23. Поручик 27.08.2013 10:53
(10) Работаю с УФ три года и не хотел бы возвращаться к обычным на постоянную основу или на долгое время. Во-первых, больше престижа, во-вторых, достоинства УФ с лихвой перекрывают недостатки. Так что перестраивайте мышление.

С обычными формами работаю время от времени, но только по превеликой просьбе клиентов.

Франч, УТ 11, Розница 2, свои конфигурации.
Ответили: (35)
+ 2 [ TreeDogNight; MarSeN; ]
# Ответить
24. petrov_al 27.08.2013 10:55
Спасибо за публикацию, хоть освежил свою память поскольку редко работаю с уф.
# Ответить
25. Поручик 27.08.2013 11:00
(8) А что его делать? Справочник Файлы или регистри ХранимыеФайлыВерсий, ПрисоединенныеФайлы в любой типовой на БСП.
Ответили: (26)
# Ответить
26. Evil Beaver 27.08.2013 11:04
(25) Поручик, Помещать ДвоичныеДанные во временное хранилище формы, а в ДанныхФормы завести реквизит "АдресДвоичныхДанных".
Затем, в событии "ПередЗаписьюНаСервере" проверять, если по этому адресу что-то лежит, то засунуть эти данные в ТекущийОбъект.
# Ответить
27. GreenFox 27.08.2013 13:59
Автору спасибо, сейчас начинаю плотно работать с УФ - приходится восстанавливать знания по ним после сдачи спеца.
# Ответить
28. sergnik 27.08.2013 14:24
С УФ работаю где-то полгода, некоторые моменты, описанные в статье, изучал методом тыка)
Как раз подхожу под
Введение
Данная статья ориентирована на разработчиков, которые волею судеб не успели плотно поработать с управляемыми формами. Если вы уже хорошо знаете, как работают УФ и вообще управляемый интерфейс приложения, то можете статью не читать, поскольку, вряд ли узнаете много нового.


Автору спасибо, буду ссылаться на Вашу статью)
# Ответить
29. SinglCOOLer 27.08.2013 15:06
Хорошо написано, еще много вопросов вызывает Условное оформление(особенно если строки надо подсветить), его программное добавление и т.п., отборы в списках
# Ответить
30. ant2be 27.08.2013 16:41
спасибо, закрепил
# Ответить
31. Mortiferus 27.08.2013 19:10
Спасибо автору - как всегда качественное изложение материала. До многого сам своими мозгами доходил, раньше бы на полгодика эту статью... Тем не менее еще раз спасибо, лишний раз утряслось все по полочкам.
# Ответить
32. B2B 27.08.2013 21:14
(7) Извините, был не прав :(
# Ответить
33. soulsteps 27.08.2013 23:04
Отличная статья!
# Ответить
34. alsoftik 28.08.2013 07:58
Как раз статья кстати, вчера поставил в контору конфы 8.2 УТ и БП, бум разбираться. Еще раз спс за статью.
# Ответить
35. Oleg_nsk 28.08.2013 08:45
(23) Поручик, Перечислите пожалуйста достоинства УФ кроме "престижа", уменьшения сетевой нагрузки и простоты конструирования форм? У вас на самом деле уходит меньше времени на разработку? Какая специфика ваших задач? Вот сегодня например прилетела задача по УТ11 при заполнении установки цен на основании документа поступление заполнить свою цену ценой поставщика с НДС. Эта задача была оценена на полчаса. При попытки вникнуть в суть кода разработчиков чуть не поехала крыша. Создание временного хранилища со схемой скд, её извлечение, двойное перезаполнение и т.п. В общем задача заняла у меня 4 часа. На толстом клиенте на это ушло бы минут пять. Добавление внешних печатных форм отчетов и обработок стало каким-то муторным. Не говорю о том что отладка на клиент-сервере невозможна без флага -debug и приходится делать файловую копию большой базы. Знаю людей которым нравятся УФ, но не знаю никого, кто-бы работал с ними быстрее чем под толстым клиентом. Сам я проходил курсы по УФ и знаю все его основные особенности, читал спецлитру, мышление перестроил под него, однако, остаюсь при своем мнении, что разработка под толстым клиентом проще и быстрее. Если будет время согласен устроить соревнование - решение нескольких шаблонных задач на скорость параллельно в УФ и на толстом клиенте :)
Ответили: (36) (43) (46) (134)
# Ответить
36. нормальный такой 28.08.2013 09:20
(35) Oleg_nsk, и меня подпишите)

в высоконагруженых системах, считаю, без УФ никуда, в параллель с обязательным клиент-сервером.
вот вы привели, что толстые формы быстрее в разработке, так давайте вернемся к 77 где вообще все просто как 3 рубля.
не помню где читал про похожий холивар, "усложнение" мол разработки, но в конечном итоге ведь - все во благо! а по другому никак. прогресс так сказать.
Ответили: (37) (62)
# Ответить
37. Oleg_nsk 28.08.2013 10:15
(36) нормальный такой, В высоконагруженных, возможно. Однако, я работаю с небольшими фирмами. Переход с 77 на 8 проходил относительно безболезненно, т.к. 8 позволяла именно ускорить процесс разработки и давала новые возможности. Усложнение меня не пугает, однако, сама концепция реализации тонкого клиента увеличивает время разработки. У меня претензии к тому, что тонкий клиент давая преимущества в тех аспектах, которые для меня не важны усложнил жизнь в тех, которые составляли 90% моей работы. Теперь выгоднее стало уйти на крупное предприятие нежели работать со многими небольшими фирмами, т.к. завышение цены на услуги в 1.5-2 раза никому не нравится.
# Ответить
38. gruk 28.08.2013 10:37
dgh

Прикрепленные файлы:

140411.jpeg
# Ответить
39. Ёпрст 28.08.2013 10:38
еб@нутый каталог.. хз чего я там поставил, + или минус ?
п..ц наступил, аутор, если че, я плюсую
# Ответить
40. gruk 28.08.2013 10:50
Мне, как начинающему, понравилось. Основные принциы изложены кратко и доходчиво. Название "под капотом" четко дает понять что это не "руководство по экспуатации и ремону".
ЗЫ. Побежал читать Радченко

Прикрепленные файлы:

140411.jpeg
# Ответить
41. Bukaska 28.08.2013 11:05
Спасибо автору! Отличная статья)
# Ответить
42. Pavl0 28.08.2013 11:08
Статья отличная, рекомендую к прочтению.
Много нюансова разжевано.
# Ответить
43. help1Ckr 28.08.2013 12:18
(35) Oleg_nsk, Вы знаете, когда делал на обычных формах документ и в момент сдачи пользователи попросили добавить маленький реквизхит - просто текстовое поле типа комментария. Добавил вроде ничего такого не трогал, но как полетели у меня привязки - полчаса потом выравнивал((((((( в тот момент я подумал что УФ это рай на земле)
− 1 [ prodines; ]
# Ответить
45. doxflow 28.08.2013 13:29
[QUOT]
Ключевые параметры определяют уникальность окна. В обычных формах был такой атрибут «Ключ уникальности». Если запрашивалась форма, то она сначала искалась в уже открытых. Ключ уникальности позволял варьировать условия при которых создавалась новая форма или возвращалась существующая. Ту же самую роль играют ключевые параметры. Если метод «ОткрытьФорму» вызван два раза подряд с одним и тем же значением ключевого параметра, то второй вызов не откроет новое окно, а активирует существующее.
[/QUOT]
Не совсем верно. Поиск по ключевым параметрам это поведение по умолчанию.
Но при этом у метода ОткрытьФорму есть параметр <Уникальность>, если его заполнить, то поиск среди открытых окон будет выполняться по нему.
Ответили: (47)
# Ответить
46. help1Ckr 28.08.2013 13:30
(35) Oleg_nsk, кстати. на вскидку - преимущества уф - функциональные опции, которые позволяют скрывать ненужное от пользователя. "Самоформирующийся" интерфейс
Ответили: (48)
# Ответить
47. Evil Beaver 28.08.2013 13:33
(45) doxflow,
Не совсем верно. Поиск по ключевым параметрам это поведение по умолчанию.
Но при этом у метода ОткрытьФорму есть параметр <Уникальность>, если его заполнить, то поиск среди открытых окон будет выполняться по нему.


Не знал. Думал, что они друг-друга дополняют. Спасибо.
# Ответить
48. Oleg_nsk 28.08.2013 13:51
(46) help1Ckr, Да. Плюс. Для разработчиков решений. Но я не разрабатываю конфигурации с нуля, а дорабатываю типовые в основном. Там таких проблем нет. С привязками ну было у меня пару раз что сбивались когда начинал на 8.0, потом понял как они работают и более затруднений не возникало.
Ответили: (57)
# Ответить
49. bulpi 28.08.2013 14:06
" Все кто поработал с УФ более-менее плотно не хотят возвращаться назад, как в страшный кошмар."
Ну ты за всех-то не расписуйся :) После таких заявок так и хочется минус влепить.
# Ответить
50. bulpi 28.08.2013 14:07
"Один и тот же код работает и в браузере, и в родном клиенте."
А это просто неправда.
Ответили: (52)
# Ответить
51. donikx 28.08.2013 15:46
Интересная и полезная информация. Все важное об управляемых форма в одной статье. Буду использовать в моей практике.
# Ответить
52. Evil Beaver 28.08.2013 16:14
(50) bulpi, :) Скажем так, в идеале, один и тот же код работает и там и там.
Понятно, что есть документированные особенности, как то "РасширениеРаботыСФайлами" и прочее...
А что именно неправда?
# Ответить
53. bulpi 28.08.2013 16:28
Код, отлаженный в тонком клиенте, вовсе не обязательно будет работать в веб-интерфейсе. У меня была куча странных ошибок в браузере. Помогали только танцы с бубнами.
Ответили: (54) (55)
# Ответить
54. Evil Beaver 28.08.2013 17:02
(53) bulpi, это да, веб-клиент имеет недостатки. Но о них надо сообщать и скорее всего их будут править.
Проектная идеология подразумевает корректную работу кода в тонком и веб-клиентах.
+ 1 [ Kom-off; ]
# Ответить
55. doxflow 28.08.2013 17:58
(53) bulpi, и обратное тоже верно: код отлаженный в веб-клиенте не обязательно будет работать в тонком)
+ 1 [ Evil Beaver; ]
# Ответить
56. harleq2 29.08.2013 03:18
57. help1Ckr 29.08.2013 09:52
(48) Oleg_nsk, ну так речь была о разработке) ну и построение интерфейса с функциональными опциями это тоже плюшка для доработки типовых - сколько мне пришлось рабочих столов делать и отдельных интерфейсов для типовых потом у как каждый руководитель ларька считает что его информация обладает ценностью для пентагона и потому надо закрыть везде доступ.
# Ответить
58. Evil Beaver 29.08.2013 10:38
Коллеги, а что за странная тенденция прикреплять картинки с аватарками? Это новая фича редизайна от Инфостарта? Особо везучие вместо своего поста публикуют аватарку крупного размера?
Ответили: (72)
# Ответить
59. aimerlive 30.08.2013 15:21
спасибо за статью, побольше бы таких. доходчивым языком для новичков основы.
# Ответить
60. Karmerruk 31.08.2013 23:07
Спасибо за статью, прояснила некоторые моменты. :)
# Ответить
61. mzelensky 02.09.2013 12:00
Прочел статью. К самому написанию никаких вопросов - все довольно доходчиво изложено. Не понравилось только то, что автор безустанно "втирает" идею "УФ - ЭТО ЛУЧШЕЕ, ЧТО С НАМИ БЫЛО".

По мне так УФ это г***о полное. Я работал с УФ и плевался на всем протяжении работы. Если кто-то все-таки захочет поспорить на счет "быстроты разработки", то я тоже подписываюсь! Я вижу УФ только в качестве того случая, когда нужно разработать функционал под "веб" (т.е. для работы в браузере).
Ответили: (66)
# Ответить
62. rosinfo1 02.09.2013 14:11
(36) нормальный такой, У меня есть заказчик, оптовая торговая фирма, 30 пользователей, 500 документов в день, включая субботу и воскресенье, работают на 7.7 самописная "примитивная" конфигурация, 15 документов, 5 регистров, и несколько сотен отчетов и обработок. Работают в терминале, файловая база. Они счастливы, довольны и скоростью и производительностью, и тем, что я им функционал под каждый чих, быстро дорабатываю. По функционалу, УТ 11 только сейчас придвинунась, к тем идеям, которые у них были реализованы еще 10 лет назад. Торговые представители через карманник, подключаются по терминалу к базе. Внешние клиенты также, у них урезанные интерфейсы, делают самостоятельно заказы. Один блок логистики, загрузки автомобилей, и доставки по районам чего стоит. Также блок производства и фасовки, со сдельными рассчетами зарплаты. Учет бонусов и откатов. Учет затрат и себестоимости, точки безубыточности. Обмен с БП 2.0 типовой конфигурацией реализован, аффилирование клиентов, как в УТ 11. Им УФ нафиг не нужны, и УТ 11 это кошмар, для их бизнеса - тормоза, и лишние затраты в ИТ инфраструктуру, а также расходы на программистов.
Ответили: (63)
# Ответить
63. нормальный такой 02.09.2013 14:27
(62) rosinfo1, Дорогой мой! Я за Вас очень рад! правда!
В каждом конкретном случае ессесно свои решения, вот Вы нашли такой вот подход, и самое классное что он работает! Но если делать на УФ и можно таки вообще развернуть веб сервер и юзверя с "карманников" не будут подымать rdp и т.д!
Каждому своё, и вы правильно указали, 500 документов в день, у кого то их 5000 на 500 пользователей, и тут, простите, файловым вариантом не отделаться. Сразу начнете изучать управляемые блокировки и кластеризацию.
Впрочем не стоит раздувать этот бесконечный холивар коих на просторах тырнета не счесть.
Я учился с 8ки, с 77 тоже сталкивался и работал (но не разрабатывал с "нуля") и то что я успел потрогать мне не очень понравилось. Сейчас у нас уже 83 накатываем, и то что мы видим нам очень нра :)
# Ответить
64. yuraskas 02.09.2013 16:15
Вопрос новичка в УФ. Все что здесь написано, относится к клиент-серверному варианту работы 1С? А с файловым вариантом можно писать как и раньше и не заморачиваться с &НаКлиенте и &НаСервере?
Ответили: (66) (71)
# Ответить
65. snic 02.09.2013 16:35
Спасибо. Кратко и понятно.
# Ответить
66. Evil Beaver 02.09.2013 22:54
(64) yuraskas, нельзя.
(61) mzelensky, я тоже плевался поначалу. Когда поработаете подольше (будут ломки) то поймете преимущества.
# Ответить
67. Поручик 03.09.2013 00:06
Вброшу и пойду спать.
Короче говоря, кто плюётся от управляемых форм, просто неудачники, не умеющие осваивать новые технологии и перестраивать мышление. Мозг жиром заплыл.
# Ответить
68. 1cSupport - третий 03.09.2013 11:55
Скажите, коллеги - фраза "Все кто поработал с УФ более-менее плотно не хотят возвращаться назад, как в страшный кошмар" только мне кажется недостоверной, или я отстал от прогресса и то, что делалось на НФ за час теперь можно делать за 15 минут?
Ответили: (73)
# Ответить
70. dimk@a 03.09.2013 13:13
[B]Evil Beaver[\B], спасибо за статью - все четко изложил и доходчиво. Вот про то что ВременноеХранилище живет два серверных вызова даже не знал, точнее не сталкивался.
# Ответить
71. dimk@a 03.09.2013 13:17
(64) yuraskas, С файловым все так же, надо разделять процедуры на серверные и клиентские.
# Ответить
72. dimk@a 03.09.2013 13:25
(58) Evil Beaver, у меня в Хроме инфостарт вообще неадекватно работает... с редактированием сообщений полная фигня
# Ответить
73. Evil Beaver 03.09.2013 14:55
(68) 1cSupport - третий, видимо, все-таки, кому как. Для всех моих знакомых эта фраза полностью достоверна. Да, на УФ я могу форму нарисовать намного быстрее, чем на обычных. Двигать элементы по пикселям уже просто противно. А уж если вставить что-то в середину существующей сложной обычной формы....
# Ответить
74. Foma4382 03.09.2013 16:47
Спасибо за статью!
# Ответить
75. in_nochka 05.09.2013 13:25
Спасибо за статью, очень полезно.
# Ответить
76. sommid 05.09.2013 18:33
спасибо за труд.
# Ответить
77. Широкий 06.09.2013 15:43
"ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", "УсловияОтбора");"
Передаешь все-таки текстовую строку или структуру?
# Ответить
78. Alex_IT 07.09.2013 20:28
Структуру. Опечатался автор, вон сколько букв. Ничего страшного, поправит.
+ 1 [ moonchild1; ]
# Ответить
79. Yashazz 18.09.2013 16:26
На спор с одним товарищем делали красивую сложную форму - он на УФ, я на обычных. Обогнал его на полчаса и сделал гораздо более симпатичный дизайн. Имхо, УФ намного неудобнее в плане конструирования в конфигураторе. И да, я поработал с УФ и я хочу работать с обычными, они гибче и круче. Жаль, что будущее за уродством вроде "такси". Не понимаю, почему толковые и безусловно полезные меры по клиент-серверной оптимизации сопровождаются такими извратами внешнего вида и его разработки. Что, трудно было оставить прежние возможности нелюбимой автором "пиксельной" работы, а потом уже транслировать в отрисовываемую?..
Ответили: (80)
+ 1 [ Yakud3a; ]
# Ответить
80. Evil Beaver 18.09.2013 18:28
(79) Yashazz, да блин, вот вы все прицепились к скорости! Нравится вам делать обычные - ради Бога, я что, запрещаю что-ли? :) Или вам надо, чтобы я статью поменял? Ну сформулируйте тогда, что именно надо сказать, а я опубликую.
Ответили: (82)
# Ответить
81. Alister 18.09.2013 22:17
Спасибо автору за систематизацию информации для чайников... от чайника :)
# Ответить
82. Yashazz 20.09.2013 01:05
(80) Да потому, что навязчивая, а зачастую оголтелая агитация за УФ (не от вас, а вообще) поднадоедает, вот и вышел крик души. Статья полезная, у кого нет Ажеронка-Островерха-Радченко-Хрусталёвой, тем и просто манна небесная. Хорошая статья. Не принимайте на свой счёт мои зубовные скрежеты )))
# Ответить
83. dutlovva 24.09.2013 10:41
Спасибо за статью!
# Ответить
84. KliMich 02.10.2013 19:29
Спасибо! Без воды и для начинающих познавательно
# Ответить
85. warrior1985 03.10.2013 01:17
Отличная статья! Спасибо автору.
# Ответить
86. Vo-Va 03.10.2013 15:03
Спасибо автору, реально получил ответы на многие вопросы. Недавно был случай. Заполнение таблицы формы на сервере выполнялось очень долго. Причем сам запрос отрабатывал за 3 сек, а переход с клиентской процедуры в серверную и обратно занимал порядка 20 сек. Причем если заставить исполняться весь код на клиенте с помощью директив и инструкций препроцессора в толстом клиенте весь код исполнялся да 3 сек. Т.е. запрос напрямую с клиента работает быстрее, чем запрос с сервера с последующей передачей результата на клиент!!! Я не понимал почему это происходит. Теперь понятно что в это "потерянное" время происходила сериализация таблицы. И скорость этого процесса упирается в мощность процессора.
+ 1 [ prodines; ]
# Ответить
87. ogoneksergei 03.10.2013 15:32
Спасибо за статью.
# Ответить
88. den_bo 03.10.2013 16:16
Спасибо! Особенно за разъяснения некоторых особенностей поведения временного хранилища.
# Ответить
89. Sirruf 03.10.2013 16:29
Так и как сохранять com-объекты, если их нельзя помещать во временное хранилище?
Ответили: (90)
# Ответить
90. Evil Beaver 04.10.2013 10:27
(89) Sirruf, а ответьте сами: есть кластер из 3-х серверов. 2 из них на Windows, третий на Linux.
Вызвали сервер, менеджер кластера передал вызов на машину с Windows, там создался ком объект. Предположим, что мы сможем его где-то сохранить.
Делаем другой вызов, менеджер кластера передает вызов на другую win-машину, где этот COM не создавался. Как его получить с первой машины?
Дальше-больше, третий вызов придет на машину с Linux, там вообще не бывает COM. Как вообще обеспечить работу такой информационной системы?

Ваша необходимость сохранять COM объекты между серверными вызовами, это архитектурный просчет и нужно менять само проектное решение.
Ответили: (91)
# Ответить
91. Sirruf 04.10.2013 13:30
(90) Таким образом, вариант решения данной проблемы предложенный в статье http://kb.mista.ru/article.php?id=787 неверен. Тогда каким образом можно поменять проектное решение, если требуется хранить ком-объект долгое время, на протяжении работы всего сеанса, чтобы не создавать его каждый раз заново...
Ответили: (92) (93)
# Ответить
92. Evil Beaver 04.10.2013 13:41
(91) Sirruf, решение предложенное в статье хоть и костыльное, но теоретически верное, т.к. тонкости создания объекта скрыты. Это как бы кеш, а не хранение состояния. Если жив объект, хорошо, а если нет, то фиг с ним, создадим заново.

Другой вопрос, если решается задача не кеширования объекта, а надежного хранения его состояния (состояния всех его внутренних переменных). В этом случае предложенное решение некорректно. В условиях нескольких серверов оно некорректно в принципе, даже если мы забудем про 1С и возьмем какую-то другую информационную систему.
# Ответить
93. xzorkiix 04.10.2013 13:52
(91) Sirruf, а что это за объект такой, если не секрет? Для чего он?
Ответили: (94)
# Ответить
94. Sirruf 04.10.2013 14:47
(93) у меня часто используется VBScript.RegExp. Я его хранил в параметрах сеанса так как описано в статье на мисте, но в 8.3 этот прием не прокатывает - ругается при помещении ком-объекта в хранилище :(
Ответили: (101)
# Ответить
95. Sirruf 04.10.2013 14:50
Вообще понятно, что ком-объеты лучше не использовать в принципе. Хочу реализовать через веб-сервисы, но это не так быстро сделать. Поэтому думаю как бы мне сейчас перейти на 8.3
Ответили: (96)
# Ответить
96. Evil Beaver 04.10.2013 15:12
(95) Sirruf, внешняя компонента, либо TRex от Орефкова (есть на Инфостарте)
Ответили: (97)
# Ответить
97. Sirruf 04.10.2013 15:16
(96) Что это за зверь TRex? Не могу найти
Ответили: (98)
# Ответить
98. Evil Beaver 04.10.2013 15:45
(97) Sirruf, RexV8, попутал название.
http://infostart.ru/public/183084/

Я не пользовался, если вдруг не работает, пишите автору.
Ответили: (99)
# Ответить
99. Sirruf 04.10.2013 16:22
(98) Спасибо! попробую
# Ответить
100. EmpireSer 10.10.2013 13:53
Спасибо! Классная статья.
Но я не разделяю эту радость от управляемых форм. Мне больше хотелось видеть больше возможностей на стороне клиента. Ну например:
1) Зачем ограничения сериализацией? Если бы оставался контекст и на сервере, то для не поддерживаемых типов можно организовать было что-то типа "проксирование" (Remoting, RMI). Ведь "невидимый" вызов производится, если на клиенте обратится к какой-то ссылке через точку, типа такой же "фокус" можно было делать и тут.
Я согласен, что возможность распределять нагрузку в кластере - это хорошо, но, как я помню, даже в Oracle Weblogic есть возможность и держать северный контекст и даже запретить ему распределять его в кластере.
2) Что за странное ограничения на работу с таблицей значений?
3) Особенно огорчило отсутствие метода "СоздатьКолонки", т.к. нет возможности сгеренировать правильно столбцы для системных таблиц (например КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор)
4) Почему обработка СКД выполняется на сервере? А может я хочу поработать только с набором данных "объект" и просто его по особенному "обработать" (наложить сложные отборы, использовать вычисляемые поля)

Вместе с правильными новшествами были принесены ограничения "высосанные из пальца"...
# Ответить
101. EmpireSer 10.10.2013 13:57
(94) Sirruf,
А что если тебе использовать общий модуль с повторным использованием на сеанс? Тоже хороший вариант
# Ответить
102. Sofi975 19.12.2013 12:35
Очень полезнное сообщение.
Теперь можно залезть и в код
# Ответить
103. Bukaska 19.12.2013 15:33
Я лично наоборот скоро забуду обычные формы. как-то уже привыкла сидеть с управляемыми, несмотря на то, что ещё досконально чего-то не знаешь
# Ответить
104. kote 23.12.2013 13:09
Работаю с управляемыми формами уже давно, года 2 точно.. Но чем дальше - тем меньше оно все радует, т.к. шаг вправо/влево - и все, ничего не работает..

А после того, как стал интересоваться другими подходами (web-разработка на RubyOnRails, Node.js, Django на Pithon`e) - стало копиться какое-то раздражение на предлагаемые в 1С реализации и подходы.. и вообще - язык 1С - это по сути DSL..

.. ау, проджект Доминикана? Может проще запилить альтернативный интерпретатор 1С скриптов на то же Ruby, например? Не уж-то никому еще не приходили подобные мысли?
Ответили: (105) (106)
+ 2 [ Synoecium; talych; ]
# Ответить
105. Evil Beaver 23.12.2013 14:08
(104) kote,
альтернативный интерпретатор 1С скриптов на то же Ruby


Ну допустим запилили. И что это решает? Только конкретно - мол, решает проблемы а, б, в, г?
Ответили: (106)
# Ответить
106. EmpireSer 30.12.2013 14:51
(104) kote,
Вообще-то уже запилил кто-то, создав свою 1С. Мой коллега как-то рассказывал, но я забыл название продукта.

(105) Evil Beaver,
1) Все возможности стороннего языка доступны, а так же их дополнения. Т.е. не нужно создавать COM/Native обёртки
2) Учитывая (1) мы получаем свободу способа создания форм, а так же применяя ООП более гибкое их "встраивание"
3) ... да кучи всего можем исправить...

А что-бы это не создало лишних проблем нужно и для IDE создать плагины с визуальным конструированием и настройкой, как в 1С.

P.S. Но это мечты... Кроме Google и Microsoft не найти компаний, готовых милионы просаживать в "возможную трубу" (если смотреть в сторону возврата инвестиций).
Ответили: (107)
# Ответить
107. Evil Beaver 30.12.2013 16:06
(106) EmpireSer, 1,2,3,4,5 - это все вода, да и не в тему немного.
Я просил назвать конкретные прикладные проблемы разработки, которые решит переход на Руби/Питон/Ваш любимый язык. Т.е. я спрашивал сугубо про интерпретатор и возможности языка. Сравнение IDE в мой вопрос не входило.

А по поводу "свободы способа создания форм" то есть обычные формы - относительная свобода, есть веб-интеграция, а в 8.3 так обещают и вообще REST-API из коробки. Берете HTML+Руби/Питон/Ваш любимый язык и делаете свой интерфейс, какой захотите. Полная свобода.
А теперь считаем трудозатраты и скорость разработки веб-морды на управляемых формах и на Руби с аналогичным функционалом (моксель, СКД, формы объектов, ввод по строке и т.п.)...
Писать на Руби уже не так экономически эффективно, правда?
Ответили: (108) (121) (227)
+ 2 [ Redokov; Bukaska; ]
# Ответить
108. EmpireSer 31.12.2013 14:22
(107) Evil Beaver,
Вообще-то формы Windows Form на C# так же быстро собираются. А если использовать WPF то и Web поддержку сразу получаешь. При этом наследовать формы ни кто не запрещает. Если грамотно разрабатывать формы, то возможность их доработки "наследованием" снимает неудобства их обновления.

В формах 1С мне не нравится отсутствие возможности наследования, а в управляемых формах, в добавок, бесит отсудствия доступа к форме минуя 1С. Т.е. под уф стоит то же HTML + JavaScript, но, например, элементарное наложение компонентов друг на друга сделать не могу...
Ответили: (109)
# Ответить
109. Evil Beaver 31.12.2013 17:38
(108) EmpireSer, ну во-первых, у WPF веб-поддержка очень ограничена, насколько мне известно. К тому же, работает только в IE. Возможно, ошибаюсь, спорить не буду.

Ну а "доступ к форме, минуя 1С" - это как вообще? есть абстракция "форма 1С". Ее нельзя миновать, в веб она превращается в HTML+Ajax, в тонком клиенте - в отрисовку средствами ОС. Что вы миновать предлагаете - непонятно...

Я не спорю, что другие технологии разработки, тот же WPF или Ruby очень интересны, однако, в 1С вы получаете инструмент решения бизнес-задачи, а не универсальное средство построения любых приложений. Фреймворк 1С из коробки дает вам сразу подавляющее большинство элементов бизнес-приложения - ORM, Абстракцию от СУБД, RAD-подход, Reporting, автоматический веб-клиент (без отдельной HTML ветки разработки), распределенные базы, отказоустойчивый кластер серверов, SOAP/REST (на 8.3), доступ к разным non-text носителям, вроде DBF и FastInfoset, плюс возможность расширения внешними компонентами.

Какой фреймворк бизнес-разработки дает столько же всего сразу? Какова его стоимость?

Не будем далеко ходить. Возьмем очень простое 1С-приложение (http://platform.demo.1c.ru/demo83/ru_RU/)
Оцените, пожалуйста, сколько времени/денег у вас займет реализация такого же, но на любом другом средстве разработки?
Ответили: (110)
# Ответить
110. EmpireSer 31.12.2013 23:23
(109) Evil Beaver,
Ну для Oracle WebLogic мы тоже быстро создавали формы и HTML+Ajax "из коробки". И ORM с абстрагированием от базы данных и т.п.

Я "доступ к управ. форме" в 1С - это я про доступ к приложении, которое "воспроизводит" форму (как в объекте "HTML документа", где есть доступ к "Документ").
Кстати, я Вас поправлю: в тонком клиенте, под Windows, используется тот же IE, только подключен он через COM.

Мне 1С нравится, но очень "достаёт", что они столько искусственных ограничений накладывают. Зато радуют обычные программисты - сколько идей, что бы обойти эти ограничения :-)
Ответили: (112)
# Ответить
111. AnryMc 01.01.2014 00:02
(1) Поручик,

Некоторые только начинают учить... Книги - хорошо... Но потом, зачастую, нужна "шпаргалка" пока не "почувствуешь"... А в книге искать долго... Так, что на роль "шпаргалки" вполне тянет...
# Ответить
112. Evil Beaver 01.01.2014 17:27
(110) EmpireSer, сдается мне, что это не искусственные ограничения, а необходимость. Дай вам доступ к COM и вы налепите приложений, а они потом на линуксе работать не станут. Тут вся фишка в абстракции от СУБД, инструментария GUI и ОС. Да, это привносит ограничения, но мне они кажутся оправданными.

И вопрос такой про Oracle и абстракцию от СУБД.. Что, правда инструмент в названии которого есть слово Oracle, может работать с MS SQL Server или IBM DB2?
Ответили: (113)
# Ответить
113. EmpireSer 01.01.2014 22:14
(112) Evil Beaver,
А какой тогда смысл девать возможность создавать внешние компоненты, если так же нельзя гарантировать работу и на Windows и на Linux. И какой смысл тогда открывать доступ к объекту в компоненте "HTML документ" и не открывать в объекте управляемой формы?

А абстракция от СУБД у Oracle это: JDBC + ORM JPA. При этом нет ограничений программисту: хочешь напрямую работай с БД, хочешь через ORM.
Ответили: (114)
# Ответить
114. Evil Beaver 02.01.2014 20:27
(113) EmpireSer, ну а СУБД- Oracle, или любая?
Ответили: (115)
# Ответить
115. EmpireSer 03.01.2014 02:58
(114) Evil Beaver,
СУБД - любая, что поддерживает JDBC. Среди них IBM, MS SQL, Oracle, MySQL, PostgreSQL, MS Access и т.д.

А вот быстрая разработка Ajax форм основана на технологии Oracle ADF (Servlet -> JSP -> JSF -> Trinidat -> ADF). IDE Oracle JDeveloper её позволяет использовать полноценно, если система подключена к СУБД Oracle, но есть хитрость: разработать приложение можно с СУБД Oracle, а потом можно поменять на любую, т.к. сама технология универсальная (просто в IDE ограничения встроены)

P.S. Кстати вспомнил странное ограничение в управ. формах - не поддерживается "Выполнить", хотя "Вычислить" поддерживается.
У меня из-за этого ограничения не работает система динамической подмены событий у управ. форм, т.к. я не могу вызвать оригинальную процедуру, если она с директивой "НаКлиенте".
Ответили: (116)
# Ответить
116. Evil Beaver 04.01.2014 10:54
(115) EmpireSer, ну так а нафига вам вся эта 1С с ее ограничениями, раз вы все равно делаете "как в Oracle". Почему тогда не Oracle? Почему пытаетесь подменять что-то в формах 1С?
Ответили: (118)
# Ответить
117. scape 04.01.2014 22:45
Как не выпендривайся, а без говнокода на управляемых формах (клиент-сервер) не обойтись.
И зачем было это изобретать. Можно же было сделать "тонкое" управление взаимодействием клиента и сервера программистом там, где это действительно нужно, а не заставлять писать, например, говнофункцию возвращающую значение на клиент потому что функция платформы, которая возвращает это значение, работает только на сервере.

Современные стандарты языков программирования стремятся к облегчению жизни программиста, 1с похоже доставляет садистское удовольствие издеваться таким изощренным способом. Противно это все...
Ответили: (118)
# Ответить
118. EmpireSer 04.01.2014 23:14
(116) Evil Beaver,
Oracle для Российского рынка - дорого. Даже если взять только Java EE + Oracle ADF - то на одни лицензии уйму денег уйдёт.
1С как раз то, что может себе позволить Российский рынок.
Я 1С ругаю только за то, что они специально не дают доступа к многим механизмам. И они это не скрывают.

(117) scape,
Вот странно, что компания 1С в конфигурации БСП не создали модули, которые "сгладили" бы это неудобство.
# Ответить
119. rayastar 09.01.2014 14:53
Производительность с УФ упала на 40-45%. Теперь клиентов ставлю в осведомление, что если будем внедррять ПП на УФ, то цена работы возрастает на 30% минимум. Все прекрасно соглашаются на обычные и их все устраивает
Ответили: (120)
+ 1 [ prodines; ]
# Ответить
120. Evil Beaver 09.01.2014 15:29
(119) rayastar, 40-50%?! Где-то вы что-то не то делаете, при разработке, имхо. Мои исследования говорят о примерно равной или ~10% худшей производительности УФ на хорошем канале связи. На плохом канале обычные формы вообще не работают, это не их случай. УФ - кое-как могут пыхтеть.
Никто не запрещает делать на обычных формах, хозяин-барин, но 50% ухудшение это, скорее всего, косяк разработчика.
− 1 [ prodines; ]
# Ответить
121. kote 13.01.2014 05:47
(107) Evil Beaver,
Я наверное Вас расстрою, но 1С имеет преимущество только в небольших приложениях. Считаю, что тотальный ООП подход (как, например, в Ruby) позволил бы на 50% уменьшить код конфигураций.. а может и меньше..

Я участвовал на День программиста на хакатоне - HackDay 28.. и то, что я там увидел - вселило в меня сомнения на предмет удачности и скорости разработки в 1С - я говорю о web-морде 1С на управляемых формах..

А то, что в 1С отсутствует асинхронная обработка событий (правда разработчики платформы уже предложили оооочень геморройный способ разработки для поддержки ассинхронности - см. заметки из Зазеркалья) - отбрасывает её по юзабельности на последние места.. рядом с web-гонокдерами, не знающих о call-бэках и замыканиях.. а кстати - почему этого нет в 1С.. ну хотя бы первого?

Ну и web-сервисы можно упомянуть - ну где вы увидите больший геморр при работе с ними?

Так что - я бы так сказал - любой из перечисленных мной языков позволяет даже простое web-приложение разработать с такими качествами, которые на 1С дадутся Вам очень большой кровью.. ИМХО.
Ответили: (122) (123)
# Ответить
122. Поручик 13.01.2014 07:45
(121) Я тоже не знаю о call-бэках и замыканиях. Вернее знаю, что есть такие штуки, но где их приспособить, ума не приложу. Хотя веб-программированием занимаюсь тринадцать лет, как и с 1С.
Ответили: (124)
# Ответить
123. Evil Beaver 13.01.2014 10:13
(121) kote, я и не говорю, что 1С - лучшая в мире платформа бизнес разработки. Я говорю о том, что за цену Х вы получаете наибольшее количество инструментов и технологий бизнес-разработки, чем в прочих аналогичных фреймворках.
Т.е, обсуждая достоинства платформ, не забывайте включать в аргументацию их стоимость, а также стоимость поддержки и сопровождения.
Ответили: (124)
# Ответить
124. kote 13.01.2014 11:39
(123) Evil Beaver, (122) Поручик

.. не холивара ради, но погружаясь в тему web-разработки (Ruby, Python, node.js) - обнаруживаешь, что за цену 0 получаешь кучу плюшек.. в частности - ОТКРЫТЫЕ фреймворки на любой вкус с широкими возможностями. Эти обеспечиваются (назову так) "идеологией" пакетной сборки проектов.. Посмотрите сами - RubyOnRails, Django, Express и примочки к ним.. там свободно-доступные репозитории на github`е и ресурсы, где они упорядоченно хранятся для каждого языка..

Единственное, что не дотягивает до 1С - это специфические штуки, типа сложных 1С объектов - например, аналогов регистров бухгалтерии и расчета - тут 1С впереди..

Ну а на счет самых востребованных "складских" бизнес объектов - регистров накопления и сведений - по мне, их несложно и самому реализовать..

Вспомогательных же пакетов для генерации отчетов и выгрузки их в эксель или pdf - везде предостаточно.

В части же мастеров и построителей - не знаю, как Вы - но через несколько лет работы на 1С у мне потребность во всем, кроме построителей запросов и СКД практически сошла на нет.. как то проще взять пустую форму и нуля.

Ну а дальше - если касаться поддержки, сопровождения и быстроты разработки - тут я бы не был столь уверенным. Как сказал - если речь о простеньких решениях - может быть да, 1С будет иметь где-то преимущество.. но по мере усложнения - 1С (да и те же SAPы, axapt`ы и т.п.) будут терять свои преимущества. В силу того, что языки этих систем "плоские", не поддерживающие ни ООП, ни функциональный подход.

Про call-беки/замыкания.. ну, лучше всего посмотреть какая идеология заложена в node.js, что бы понять, что это дает и как это реализовывается. Эта платформа - "однопоточная", но способна обрабатывать большее количество одновременных запросов, т.к. получив запрос - связывает запрос и функцию, которая должна обработать этот запрос - и переходит с следующей строке кода.. т.е. она не ждет завершения обработки запроса - функция отработав сама ассинхронно возвратит результат пользователю..

вот этого в 1С сильно нехватает - и разработчики платформы это уже осознали.. но решение, которое предлагается (т.н. технология отказа от модальности) - это откровенная халтура, ИМХО, т.к. сильно загаживает код.. Вот ссылка, убедитесь сами - http://v8.1c.ru/o7/201312ref/index.htm

Хотя то, что об этом задумались - уже хороший знак. Значит, что-то будет меняться. Главное - чтоб не через "одно место".
Ответили: (125) (126)
# Ответить
125. Evil Beaver 13.01.2014 12:28
(124) kote,
Единственное, что не дотягивает до 1С - это специфические штуки, типа сложных 1С объектов - например, аналогов регистров бухгалтерии и расчета - тут 1С впереди..

Собственно, об этом и речь. 1С начиналась с этих объектов, это ее основная задача и 1С прекрасно ее решает, лучше любого из веб-фреймворков. Средой веб-разработки 1С никогда не являлась и сейчас не является. Другое дело, что сейчас бизнес заинтересован в веб-ориентированных решениях, и мы видим, что новые изменения в платформе направлены на удовлетворение этих потребностей бизнеса.

потребность во всем, кроме построителей запросов и СКД практически сошла на нет

Вот-вот... покажите мне бесплатный (или примерно равный по цене) инструмент для reporting хотя-бы немного близкий по функционалу к СКД.

Платформа однопоточная, асинка там пока нет. Но она изначально такой никогда не была и от нее этого не требовалось. Сейчас эти требования возникли, 1С их реализует. Думаю, что через год-другой в платформе появится много плюшек на тему веб-интеграции.
# Ответить
126. mymyka 13.01.2014 13:41
(124)Асинхронность тяжелых вычислений в 1С едва ли не с 8.1 реализована через фоновые задания.
Приведите, пожалуйста, пример алгоритма, в котором можно продолжать выполнение кода, например, без результатов запроса(наиболее емкая операция в 1С).
Ответили: (127)
+ 1 [ alsen; ]
# Ответить
127. Evil Beaver 13.01.2014 14:04
(126) mymyka, ну асинхронность через фоновые задания и нормальная асинхронность, о которой говорил kote, это, мягко говоря, сильно разные вещи. Кажется, что вы немного не в теме беседы.
Ответили: (128)
# Ответить
128. mymyka 13.01.2014 14:50
(127)я поэтому и попросил пример алгоритма, использующего "реальную" асинхронность. Т.к. слабо себе представляю, какая вообще от нее может быть выгода.
Ответили: (129) (130)
# Ответить
129. Evil Beaver 13.01.2014 19:44
(128) mymyka, ну примеров очень много.
Основная суть такая: Вы просите сервер выполнить долгую операцию. Когда она завершится, сервер САМ позовет ваш код для обработки результата.
Сейчас даже если запустить фоновое задание, то приходится по таймеру опрашивать его состояние, формируя кучу серверных вызовов.
+ 1 [ kote; ]
# Ответить
130. kote 15.01.2014 03:09
(128) mymyka,
.. выше Evil Beaver описал недостатки работы с фоновыми заданиями, но самое главное - они не обладают методами возврата результатов (точнее - единственный способ возвратить результат - вызвать ошибку и в её описании возвратить какой-то результат - т.е. это "костыль", придуманный 1С-никами обход проблемы)

К вопросу практической применимости: ну, например, можно было бы сделать так, что бы пользователю не нужно было каждый раз ожидать окончания работы обработки, а продолжать работать в программе. Выглядеть может так - пользователь запускает обработку - форма обработки блокируется до окончания работы её алгоритма.. а по окончании работы - пользователю выскакивает сообщение об окончании работы обработки.. Ну и - пока запущенная обработка дожидается результатов - пользователь может что-то делать в этом же сеансе - документы, там вводить... или другие обработки запускать.

Сейчас пользователи вынуждены открывать новый сеанс работы с базой для этого. И если в случае толстого клиента - это означает только лишь лишнее потребление ресурсов, то в случае вэб-доступа - еще и ЛИШНИЕ ЛИЦЕНЗИИ занимаются. А вот это уже совсем неправильно, не так ли?
Ответили: (131)
# Ответить
131. Evil Beaver 15.01.2014 09:42
(130) kote, вернуть результат можно через временное хранилище. Но это точно такой же костыль.
Ответили: (132)
# Ответить
132. kote 16.01.2014 03:23
(131) Evil Beaver,
.. ну можно и через хранилище значений.. регистр там организовать - типа очереди сообщений и может еще что придумать - но такие костыли еще больше усложняют разработку и снижают производительность (хотя могут обеспечить доп. защиту от сбоев) - в общем, их совсем не хочется рассматривать..

Основная причина снижения производительности при них - то, что передача данных происходит с участием HDD или с доп. преобразованиями данных.. в случае же передачи "по ошибке" - все в в пределах оперативной памяти, ИМХО
Ответили: (133)
# Ответить
133. Evil Beaver 16.01.2014 10:04
(132) kote, не через "ХранилищеЗначений", а через "Временное хранилище". То, которое с адресами. Как раз в "оперативной памяти", без HDD.
Ответили: (135)
# Ответить
134. IgoSt 19.01.2014 01:10
(35) Oleg_nsk,
На толстом клиенте на это ушло бы минут пять.

Часто по работе встречаю "пятиминутные доработки", последствия которых проявляются не сразу.
Для "обычного приложения" при организации правильной работы трехзвенки, разработка не совсем тривиальна.

Политика 1С вполне ясна, большинство 1С специалистов имеют низкую квалификацию, переход на УФ заставит писать более менее грамотно. Это повысит общий уровень продукции.
# Ответить
135. kote 19.01.2014 16:54
(133) Evil Beaver,
ага, понятно.. победил ;)
Надо бы попробовать.. А что можешь сказать, насколько шустро это работает с встроенными типами данных?
Я через него только файлы передавал с сервера и обратно.. ну и ассоциация укрепилась - где файлы, там и диски.
Ответили: (136)
# Ответить
136. Evil Beaver 19.01.2014 22:11
(135) kote, шустрота как бы не имеет значения, вот почему:
Получить из фонового сеанса через временное хранилище какой-либо результат можно только после его завершения. Когда оно завершится, можно по адресу забрать результат. Работает быстро, по отношению ко времени работы самого задания.
Если хочется следить за работой задания до его завершения, то единственное, что можно придумать это сообщения пользователю и метод "ПолучитьСообщенияПользователю". Разумеется, это дикий костыль, но он работает, я проверял :)
Ответили: (137)
# Ответить
137. kote 24.01.2014 17:04
(136) Evil Beaver,

Это все понятно.. если фоновый процесс работает долго - то таки да.. а если мне надо интерфейсную логику перенести на сервер? Что-то типа MVC-паттерна сделать - а Модель - на сервере держать, скажем.. некоторые приложения на nodejs, например, допускают указывать, где и что будет обсчитываться, или даже - держать копию модели как на сервере, так и на клиенте.. ну и в случае краха клиента - ничего не теряется, все состояние его рабочее восстанавливается - ну удобно же? Но для этого как раз и нужно, чтоб скорость была адекватная..
Ответили: (138)
# Ответить
138. Evil Beaver 24.01.2014 19:02
(137) kote, ну node.js, вообще другая технология вроде как... Даже фреймворком бизнес-приложений назвать трудно.
# Ответить
139. j3d 06.03.2014 12:54
Не знаю, писал ли кто нить тут выше, но выскажусь тоже.
Работа в толстом клиенте конечно примитивна и не столь гибка как в клиент серверном варианте.
тут я с вами согласен.
Но я пишу софт более 10 лет (из них, 6 лет в 1С:Предпиятии) и скажу вам вот что:
УФ афигеннейший инструмент для оптимизации клиент серверных процессов и уменьшения нагрузки на локальные машины.
Столкнулся сам, и не раз, при автоматизации крупных предприятий от 200 рабочих мест.

Но 95% всей моей клиентуры (как я думаю и в общей картине по России и СНГ) это небольшие конторки в стиле "бухгалтер<->директор<->оператор.менеджер<->зав.склада"
т.е. компании до 5 рабочих мест.
и как ни странно именно они кормят большинство 1С-ников потому как на всех 1С-ников крупных предприятий не напасешься.
а в этих мелких конторках, когда бухгалтеру необходимо добавить кнопочку в документ дабы автоматически создавать какое-нить пакетное начисление авансов и т.п. он зовет программиста 1С.
и раньше, любой мог напрямую с толстого клиента написать модуль обработки и взять за это с не очень то и богатой мелкой конторки какие то час или два.
Нынче же чтобы написать эту же кнопку приходится прыгать с бубном изгаляясь как бы передать те или иные данные с сервера на клиент. И счет тому же бухгалтеру приходится выставлять на порядок выше.
Само собой методом простой калькуляции все эти 95% клиентов посылают новомодную конфигурацию на УФ в .... и возвращаются к старой учетной системе.
Только в 2013 году я заработал кучу денег на клиентах которые просили перевести их с УТ11 на УТ10.3
(Это не значит, что я не пытался увещевать их и доказать что УТ11 лучше и более гибкая. Просто желание клиента все равно остается при нем) Писал правила конвертации, собственные обработки переноса и пр.
А все почему?
потому что ОЧЕНЬ МНОГИМ КЛИЕНТАМ УФ НА Х... НЕ СДАЛИСЬ. При всей их удобности и прочих плюшках.
Клиенты рассматривают управляемый интерфейс как очень хитрый способ компании 1С увеличить мзду с работы специалиста.


Теперь об удобстве написания кода для программиста:
Раньше у меня было четкое деление.
Клиент, придумавший очередное задание, в котором из 15 абсолютно не связанных регистров надо консолидировать данные и при выполнении условия в каком то там документе и вывести это в отчет или сохранить в каком нить непонятном формате на диске

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

Это все равно что при сексе вместо того чтобы наслаждаться процессом ты будешь вынужден (по новым правилам, утвержденным Министерством половых связей) держать вытянутым мизинец на правой ноге, причем так чтобы он не опускался ниже уровня 12 см от кромки матраца. Причем министерство будет убеждать вас что именно при таком методе достигается максимальная оптимизированность процесса и наименьшая нагрузка на позвоночник.
И все как бы правильно. И есть уже даже люди, которые по другому уже и не умеют.
Но, называйте меня ретроградом, даун-шифтером и пр. я все равно за старый добрый процесс программирования в толстом клиенте.

я для тех кому нужно клиент-серверное программирование пусть придумают насадки на ... платформу которые можно будет подключать при необходимости.

Просьба не кидать гнилые помидоры и постараться понять это крик души )))
Ответили: (140) (141) (148) (150) (154) (222)
+ 124 [ Android1234; bonk; bonnybrowns; desarz; 7OH; Adeptus; ketr; Sup4ik; chudnovsky; kiros; poritskiy; savirin; tormozit; Yimaida; assa; frost_a; sashapere; Rodnaya; Deletex; den_bat; ccserg; ZVN; Kirich2; Arc; meuses; talych; vlad636; dobro7; SGordon1; vtatarskih; tezin; Atatator; ЧИА; landrev; Nandarou; v0vjik; ekomova; Uncore; alek-sand-er; zsergey_; ivprovotorov; Krio2; shalimski; ogonek!; Катя84; kansler; VooDOOPRo; DoctorRoza; Azamat1c; maksi_ko; Kuein; Windsor77; Tokyo Marui; prodines; MaiorovYury; anatolly; Eremita; AlexB.; surikateg; virdg; fokses; orfos; MOHCTP; gigapevt; sbcode; tunesoft; Yakud3a; strelez; primara; Glavdir.1C; e-aleks; BolshoySmal; it@contlog.ru; andreydmv; vovant; dr2c; imxored; vadimusimus; bidond; BBons; AlexFierst; okami; Serg548; RadoLex; Poison Angel; Rabot; m.s.moiseev; Fominro; needmic; NovSL; DenisF8; bankir1982; abcelektronic; medovich; NeFarT; Bambini23; t278; kostyaomsk; simich; sir.wbg; Death_eye; DenP2010; Maximysis; PythonJ; thevist; ЖУДА; depresnjak; uri1978; RvvRvv; monkbest; Manticor; AllexSoft; Bukaska; krendel; serg1974; ediks; Morales; Zemlyak; Дмитрий74Чел; PONOM; ansonat; User80; svetanik; ckopn72; ]
# Ответить
140. Evil Beaver 06.03.2014 13:16
(139) j3d, Спасибо за искренность.
Я на УФ с самого момента их появления, еще с бета-версии. Ни разу не испытал проблем с "ублажением" среды разработки. Решение задачи выполняется так же, как и раньше. Более того, если надо в середину большой формы добавить какой-нибудь флажочек, то делается это элементарно. На надо долбаться со сдвиганием элементов и последующей перенастройкой привязок.

Короче говоря, каждый делает, как хочет. Я не хочу обратно на обычные формы. А вы - дело ваше.
Ответили: (142)
# Ответить
141. Farpost 22.03.2014 16:42
(139) Полностью с Вами согласен...
Я вообще не понимаю столь полярного разделения - всё с нового года мы будем жить только с УФ... Ура товарищи...
В 90% вся 1Сина крутится на локальной машине, и там УФ вообще нужны как собаке 5 лапа... ну а "удобств" особенно с написанием простеньких или непростеньких обработок и разного рода фичей, УФ приносят столько, что кроме матов в адрес 1С с её политикой больше ничего на язык не приходит...
Ответили: (143)
# Ответить
142. Farpost 22.03.2014 16:47
(140) Ну а Вам, я могу ответить только одно - каждому своё... но после сравнения только по времени открытия приложений (БП 3 и БП 2) на обычных формах и управляемых, не говоря уже о том что писал выше, у меня стойкая неприязнь к УФ... придётся конечно осваивать и их, никуда не денешься, но если бы фирма 1С хотя бы давала выбор между обычным приложением и управляемым, то было бы гораздо лучше и легче... в той же БП есть очень большой смысл использовать и УФ и обычные... вот тогда была бы гибкость и в работе юзеров и в программировании
# Ответить
143. Evil Beaver 22.03.2014 17:31
(141) Farpost, а можете привести пример распространенной задачи, которая на обычных формах решается в два счета, а на управляемых - только с матом?
Уговор - приводить в пример COM контролы на 1С-ных формах нельзя.
+ 1 [ Lotar; ]
# Ответить
144. v.hitrin 04.04.2014 16:05
А как же движение вперед? Попробуйте через обычные формы реализовать веб-интерфейс... не получается?
Скажете, да кому нужны эти веб-клиенты?
А кому тогда нужны эти сложные иномарки? Давайте будем и дальше делать "девятки", "четырки", ведь они такие простые и понятные, можно любой косячек починить с помощью молотка и благого мата ("полностью отдаться решению поставленной клиентом задачи"). Большинство пользователей "девяток" (читай "обычных форм") всегда довольны тем, что у них есть, и искренне не понимают, зачем хоть что-менять в их привычном мире, кому это надо вообще.
А есть задачи и цели, которые можно достичь только новыми подходами, и хвала Нуралиеву (может быть тут перегнул палку), что он, несмотря на такой вот мелькающий негатив, стремиться к созданию своего, отечественного БМВ.
А УФ нормально программируются, если не лениться, почитать хотя бы "Разработка управляемого интерфейса" (250 руб.) и приятно для себя подтянуть знания по 1С, которая развивается. И дальше, как и привычно "полностью отдаться решению поставленной клиентом задачи".
ПС: в машинах абсолютно не разбираюсь, просто попытался провести понятную (надеюсь) аналогию.
Ответили: (147)
# Ответить
145. non1ka 16.05.2014 16:54
Всем доброго времени суток. Если не сложно, помогите решить проблему, озвученную здесь: http://forum.infostart.ru/forum14/topic30548/
Тема: Передача параметров из фонового задания (работа с временным хранилищем). Особенная просьба к автору статьи)
# Ответить
146. Evil Beaver 19.05.2014 14:06
Дайте пожалуйста весь связанный код. Например, откуда вызывается ПолучитьСлово(), где вы пытаетесь достаеть результат?
Короче, сможете сделать конкретный пример воспроизведения в виде обработки, чтобы не тратить время на подготовку к поиску проблемы?
# Ответить
147. Bukaska 19.05.2014 15:24
(144) v.hitrin,
если не лениться, почитать хотя бы "Разработка управляемого интерфейса" (250 руб.)


Но цену -то вы назвали партнерскую))) а розничная - в два раза дороже)))
# Ответить
148. Пан 27.05.2014 21:39
(139) неплохо вы на клиентов навешиваете собственную неграмотность в отношении УФ) все задачи, которые вы решаете на обычных формах за один-два часа, решаются на УФ как минимум в те же сроки) а то что Вам приходится пыхтеть, узнавая передовые технологии, так клиент не виноват же)) и как раз из за тех, кто за четыре строчки передачи управления с клиента на сервер, помимо повышения прайса еще и бухтит при этом как все плохо, клиенты посылают УФ))
− 1 [ prodines; ]
# Ответить
149. khnatik 28.05.2014 12:46
(14) Тоже было любопытно почитать, освежить в памяти, так сказать =)
П.С. Работаю и с обычными, и с управляемыми формами, обычные все-таки попроще, хотя и для управляемых если знать основные моменты (открытие файлов, передачу ссылки для обработки на сервер и т.д., ну и что где работает конечно), то все не так страшно, как кажется вначале. Хотя и задачи бывают разные...
А за статью спасибо!
# Ответить
150. AllexSoft 28.05.2014 15:39
(139) j3d, у меня было примерно такое же мнение о УФ когда они появились и я не знал что с этим всем делать.. но понял что вещь хорошая, довольно быстро.. решил что нужно учится, записался на курсы в 1С, неделя интенсивного обучения и все стало ясно как божий день.. огромный плюс в УФ для меня что там доступна БСП. А что прайс накручивать просто вы не понимаете клиент-серверную модель это точно не вина клиентов, это вы лишку дали.. с таким же успехом можно было на 7.7 сидеть до сих пор. Как писали выше могу отметить что моделирование форм особенно сложных становится очень простым и формы очень функциональные изначально, много чего что делалось раньше кодом сейчас делается через условное оформление формы..
Единственное что меня еще напрягает в УФ это "перлы от 1С" типа функций РеквизитФормыВЗначение()...
# Ответить
151. Puk2 31.05.2014 22:44
Отличная статья! Всё никак не перейду на активное практическое использование УФ, но стараюсь поглядывать код и смотреть демки новых конфигураций. Ещё в 2008 году для высоконагруженной базы переносили многие сложные процедуры и функции, обрабатывающие большие объемы данных на сервер, да и просто чтоб снизить объем передаваемой туда-сюда информации. "Ошибка: Попытка передачи с клиента на сервер мутабельного значения".

Все комментарии читать смысла не увидел, но пробежался по некоторым и понял, что спор по поводу обычных и управляемых форм ещё долго не утихнет. Призывая фирму 1С сохранить обычные формы, не забывайте, что фирма 1С создана для получения прибыли, содержать штат поддерживающий много различных версий и вариаций конфигураций - это слишком затратный подход. В их подходе есть свои причины, когда ты создаешь новые конфигурации, которые по сути подходят и малым и средним и крупным(? рассчитывают по крайней мере) предприятиям, и тем кто хочет разместить данные в облаке, и тем кто локально, и тем кто на Linux, и тем кто на Windows, и тем у кого мощные клиентские машины и тем у кого "тонкие" клиенты. Если посмотреть интервью Бориса Нуралиева, то он выделяет для критерия успеха фирмы 1С:
1) большая партнерская сеть благодаря выгодным условиям
2) ориентация на массовый рынок (т.е. "в среднем" подходит всем)

есть ещё неофициальное мнение, что сейчас фирма 1С своей политикой пытается поднять рейтинг СПЕЦИАЛИСТОВ и серьёзных партнёров (считай, убрать с рынка "неугодных", дискредитирующих фирму 1С и её разработки своим непрофессионализмом)
Ответили: (152)
− 1 [ prodines; ]
# Ответить
152. Bukaska 02.06.2014 10:10
(151) Puk2,
"Ошибка: Попытка передачи с клиента на сервер мутабельного значения".

Общие модули???.. если у вас общий модуль серверный, то ошибка такая может быть)))
Поставьте галочку в свойствах общего модуля ещё и "ВызовСервера" - и тогда можно будет к нему обращаться с клиента, все будет ок)
Ответили: (153)
# Ответить
153. Puk2 05.06.2014 12:51
(152) Bukaska, да это из воспоминаний первых попыток на 8.1, насколько помню, там в свойствах не было "вызов сервера". Да и дело не в этом, просто нельзя было передавать данные типа "табличная часть" "документОбъект" и т.п. Смысл почти тот же, что сейчас в управляемом интерфейсе.
# Ответить
154. prolog 13.06.2014 09:14
(139) j3d, За статью спасибо. Ещё не раз её перечитаю.
Есть желание ЗДЕСЬ высказаться по поводу доработок типовых конфигураций "добавить КНОПОЧКУ". 75% пользователей программ 1С работают на ЧИСТО типовых конфигурациях и правильно делают. Они не ищут приключений на своё одно место. Обновления у них проходят без всяких проблем и без лишних расходов. Кроме того и с версии на версию они переходят практически безболезненно.
Из остальных 25% клиентов не многим повезло. Хорошо если они напали на Программиста, который прежде чем что то менять в типовой, сто раз подумает, не вылезет ли это потом ему и клиенту боком. Потом Программист постарается сделать всё так, чтобы даже при его уходе от клиента, сопровождение конфигурации не вызывало проблем.
И совсем не повезло тем бухгалтерам, которым установили КНОПОЧКУ по двум тривиальным причинам:
1. по требованию бухгалтера переделать типовую конфигурацию только потому, что сам бухгалтер с нею не знаком
2. есть программист, которому надо заработать. Для этого надо что то поменять в типовой, ведь просто так деньги не возьмёшь. Предлагается первая пришедшая на ум КНОПОЧКА. Всем нравиться.

Выполняется изменение, оплачивается работа и ... проблемы начинают накручиваться и расти как снежный ком(падает производительность системы, долго и нудно выполняются обновления и так далее). Решение их связано с большими финансовыми затратами. Да и часть отрицательных эмоций этой темы тоже связаны с решением аналогичных, высосанных из пальца проблем.
+ 2 [ Archange1; Bukaska; ]
# Ответить
155. SunShinne 13.06.2014 14:10
Спасибо автору за статью. 1С крайне редко занимаюсь, но если для себя что-либо сделать, то не ленюсь. А управляемые формы все ж таки много нюансов в себе несут, нашел в статье очень важную для себя фичу.
# Ответить
156. Styvi 26.06.2014 18:04
Благодарности автору. За расшифровку понятия ВременногоХранилища, точнее - его двух вариантов...
Ответили: (157)
# Ответить
157. Evil Beaver 28.06.2014 20:00
(156) Styvi, каких таких "двух" вариантов? У него нет вариантов, оно одно вроде как...
# Ответить
158. monkbest 29.06.2014 10:09
Вот и от меня порция какашек в сторону УФ. Когда такие статьи, рекламные проспекты все в один голос твердят, что УФ работают быстро, нагрузка меньше... я в это как дурак верю, убеждаю в этом клиента... начинаем внедрение...
ВНИМАНИЕ:
открываем форму списка с пользователем (любую, например справочник номенклатуры, контрагентов) где много-много записей и считаем до 10 (иногда до 30, но мгновенно не открывается ни одна форма списка), пользователь поворачивается ко мне и спрашивает:
"Сколько по твоему я буду набивать накладную из 10 строк?" (Кладовщик)
"Сколько приказов о приеме на работу я смогу оформить в день?" (Кадровик)
"Я каждый раз так по долгу буду вносить одну сраную проводку?" (Бухгалтер)
"Во сколько раз увеличится мой штат сотрудников после внедрения?" (Директор)

я конечно отмазываюсь, что выйдут обновления, что все исправится, что мы все настроим...

но люди передо мной сидят видавшие виды, они помнят с какой скоростью можно было колотить данные и обрабатывать их в 1С 7.7
С 1С 8.1 они тоже были рады так как скорость работы с лихвой окупилась новыми удобными фишками из-за нового функционала и удобства

но в УФ от 8.3 никто ничего хорошего не видит

стремно говорить о распределении нагрузок, когда клиент написанный на УФ тормозит и жутко лагает, а на сервере в диспетчере задач - тишина, там процессор вообще не работает, там MS SQL на 1% жрет скорость жесткого диска и процесс 1С сервера просто потихонечку пухнет съедая по паре килобайт в минуту, не напрягая ни сеть ни процессор ни жесткий диск. Такое ощущение, что серверу кроме оперативной памяти ничего и не нужно, а заказчик купил духпроцессорный сервак с 8 ядрами каждый, а он простаивает
Ответили: (159) (160)
+ 2 [ prodines; Maximysis; ]
# Ответить
159. EmpireSer 01.07.2014 18:30
(158) monkbest,
Зачем всё валить на УФ???
В 8.3 файловом работает ещё и фоновый процесс для рег./фон задач. Можно просто произвести отключение не нужных рег. задач (типа обновление индекса ППД, которым ни один наш клиент не пользуется). Скорость вырастит в разы. Это можно сделать и в клиент-серверном варианте.
Не забывает, что УФ (тонкий клиент) в видне - это IE, а IE нужны обновления винды и он зависит от оптимальности настройки. Если винду настроил хорошо и она обновляется, то IE тоже начинает "полётывать".

P.S. Вам не хватает знаний ХОРОШЕГО системного администратора и знаний работы 1С "за кадром". Знания работы HDD (чтение/запись данных на "блины" или правила работы SDD (работа контролера при перемагничивании)), работы ОС с разделами (смещение, размеры кластеров и т.п.), знаний в работе файловых систем (индексирование, журнал транзакций, файловые потоки, фрагментация). Плюсом идут специфики работы СУБД разных производителей и разных версий.

Тут всё накладывается так или иначе. А если ставите на "то, что есть", то ни кто Вам не гарантирует, что это вообще будет работать (рекомендуемые параметры системы - это для "идеального мира")
Ответили: (162) (164)
+ 1 [ TreeDogNight; ]
# Ответить
160. AllexSoft 01.07.2014 18:41
(158) monkbest, от части ты прав.. той невиданной скорости от переписывания кода на УФ - думаю никто не заметил.. по поводу тормозов то они как правило не связаны с платформой, хотя и такие случаи бывали... тормоза от кривого кода и кучи ненужных никому колонок в динамических списках например, сначала напридумывают "а вот хочу чтобы рядом с контрагентом в списке появлялась его контактная информация, телефон и почта, а еще рядом колонка с остатками по взаиморасчетам на текущий момент" .. как минимум инфа будет доставаться из 3х таблиц в таком случае, сами понимаете почему оно будет тормозить... да и плюс нельзя использовать пакеты запросов, которые помогли бы оптимизировать скажем параметры виртуальных таблиц в таких запросах
# Ответить
161. EmpireSer 01.07.2014 19:13
Кстати тут кто-то писал про callback-и с сервера на клиент. Они ведь "внутри" реализованы как открытие и на сервере и на клиенте какого-то клиента и сервера (например TCP). И получается сервер просто передаёт специальный пакет клиенту с данными.
Ну если кто-то знает как создать сервер приёма TCP сообщений на JavaScript, то можно подумать как "это" заставить крутиться на клиенте и принимать вызовы с сервера 1С.
# Ответить
162. RomanRomans 03.08.2014 12:21
(159) Уважаемый EmpireSer, вы верно заметили, что регламентная задача "Обновление индекса ПДД" потребляет много ресурсов.
До последнего времени ее отключение было нормой.

Но сайчас, в свете последних тенденций развития платформы это решение будет скорее мешать пользователю. Например в случае, если он воспользуется поиском данных в динамическом списке.

Нововведение от 1С о котором идет речь, обсуждается в статье http://infostart.ru/public/292828/
# Ответить
163. SemenovaMarinaV 08.10.2014 16:37
Начинаю только знакомиться с управляемыми формами.
Супер интересно.
# Ответить
164. monkbest 09.10.2014 12:22
(159) EmpireSer, Вы пытаетесь свести проблему тормозов к плохо настроенной винде, или к излишним задачам, которые на 1С повешены.
Ну начнем с того, что типовые конфигурации пишутся той же конторой, что и платформа. Я понимаю, что это разные команды разработчиков, но никто им не мешает общаться и обсуждать использование тех или иных приемов. Если в конфе задумана индексация ПП, то пусть индексирует. Мне обещали быструю работу программы, а в ответ они на якобы более быстрой платформе запускают функционал, который делает новую систему более медленной, чем систему двумя поколениями старше. ЗУП 3.0 - провал 1С. Они там такое нахреновертили, что лагает просто до невозможного. Видимо, они тестировали производительность на одном сотруднике, в реальности - лагает все.

Второе - не надо для установки системы делать шаманство. Запусти сетуп и начал работать. Все настройки и конфиги - от лукавого, я допускаю такое только для бесплатного ПО. Если Вы говорите, что для 1С нужен обновленный IE (в чем я сомневаюсь), то пусть они сами проверяют версию IE и его настройку при запуске или установке. телепатов.net
# Ответить
165. Evil Beaver 09.10.2014 12:48
Все настройки и конфиги - от лукавого, я допускаю такое только для бесплатного ПО


Мир UNIX смотрит на Вас с недоумением. И допускает конфиги для платного ПО, независимо от того, что Вы такого не допускаете. А так - гнев насчет УПП понятен)
Ответили: (166)
+ 1 [ Bukaska; ]
# Ответить
166. monkbest 14.10.2014 15:14
(165) Evil Beaver, я уже довольно давно в 1С франчайзи (8 лет), но "Мир UNIX" пока мне не ведом. Были прецеденты, люди ставили сервера на якобы бесплатном ПО, а потом платили "одаренным" системщикам, которые им пророчили халяву стабильную ЗП за написание конфигов. Но большинство контор платят один раз за ПО и потом просто живут с ним. Мне то, как 1Снику, до лампочки на чем крутится платформа, моя задача закодить функционал, для автоматизации бизнес-процессов.
Ответили: (167)
+ 1 [ v12345; ]
# Ответить
167. Evil Beaver 14.10.2014 15:28
(166) monkbest, всякое бывает. Я вот например сейчас знакомым привожу в порядок самописную конфу, которую один такой вот, которому "лишь бы закодить", такое позакодил, что у меня волосы на заднице шевелятся. А тоже з/п получал и с умным видом к ним приходил лапшу навешивать. В 1С всегда открыт набор персонала, отправляйте резюме и учите их там уму-разуму, как будто кто-то мешает, в самом деле)
Ответили: (168) (169)
# Ответить
168. monkbest 15.10.2014 11:22
(167) Evil Beaver, ну грубо говоря Вы поддерживаете меня в том, что решение должно быть из коробки, чтобы потом никто нигде не лазил ни в коде, ни в конфигах :)
Ответили: (170)
# Ответить
169. AllexSoft 15.10.2014 11:41
(167) Evil Beaver,
Я вот например сейчас знакомым привожу в порядок самописную конфу, которую один такой вот, которому "лишь бы закодить", такое позакодил, что у меня волосы на заднице шевелятся.

ох как верно сказано.. занимался на прошлой работе вот таким ( да и сейчас кусками.. благо сейчас имею возможность полностью выкинуть написаное через жо (потому что база еще не работает) и написать с нуля по нормальному.

Второе - не надо для установки системы делать шаманство. Запусти сетуп и начал работать. Все настройки и конфиги - от лукавого, я допускаю такое только для бесплатного ПО.

а как же быть скажем с разным аппаратно-программным обеспечением сервера скажем.. у одного пользователя сервер это простой комп с 8гб оперативы и PostGreSQL, а у другого 128Гб оперативы и SaaS диски.. вы им предлагаете одинаковые конфигурации SQL-сервера лепить? да и от специфики работы баз очень много что зависит.. какие запросы, какая база, количество операций записи\чтения, количество юзеров и тд и тп.. как без тонкой настройки то?
Ответили: (171)
# Ответить
170. Evil Beaver 15.10.2014 12:01
(168) monkbest, чтобы прямо вот нигде и никто - нет, не поддерживаю. Но в том, что настроек должен быть минимум, а не на каждый чих - да, конечно. Но найти баланс между этими крайностями - задачка похитрее филосовского камня, имхо.
+ 1 [ monkbest; ]
# Ответить
171. monkbest 15.10.2014 14:58
(169) AllexSoft,
а как же быть скажем с разным аппаратно-программным обеспечением сервера скажем.. у одного пользователя сервер это простой комп с 8гб оперативы и PostGreSQL, а у другого 128Гб оперативы и SaaS диски.. вы им предлагаете одинаковые конфигурации SQL-сервера лепить

ммм, а скуль сам не видит сколько оперативы? скока подкачки? каков объем базы? скорость работы дисков? он сам не может выбрать оптимальный режим работы?
кажись, что может
а вот Постгре - бесплатный, так к нему и претензий нет
# Ответить
172. Pasha1st 04.11.2014 12:04
В принципе понятно зачем УФ взялись - для полноценного тонкого клиента и для интерфейса, создаваемого под нужды конкретного клиента - будь то родное приложение или браузер. И 1С проделала огромную работу чтобы это хозяйство таки взлетело. Но и разработка под УФ ИМХО заметно усложнилась за счет наложенных ограничений, что клиент "отощал". Печаль в том что в это светлое будущее нас тянут за уши. А ведь при необходимости вычислительную логику и выборки данных можно в толстом клиенте на сервер отправлять.
Повышение уровня разработчиков вряд ли произойдет - ну только если самые бестолковые отсеются, а индусский код как писали так и будут писать. Тем более что в части составления запросов чистые 1С-ники будут лажать намного чаще чем специалисты, знакомые с SQL в принципе.
Ответили: (173)
+ 1 [ prodines; ]
# Ответить
173. monkbest 05.11.2014 17:16
(172) Pasha1st, что такое чистый 1С-ник? и почему он всегда будет лажать?
Ответили: (175)
# Ответить
174. scarfase 05.11.2014 22:58
Спасибо за статью, написано понятным языком
# Ответить
175. Pasha1st 06.11.2014 20:31
(173) monkbest, который учился сразу на 1С. Если программист имеет работы с другими языками и средами, с базами данных, т.е. прошел более высокий порог вхождения, то и результат у него будет в среднем лучше. ИМХО, разумеется.
Ситуация как с бейсиком или PHP - языки изначально имеют низкий порог вхождения, и на них пишется много фигни. При этом и классный код на них тоже пишут.
Ответили: (178)
# Ответить
176. kudim 13.11.2014 12:35
Спасибо! несколько моментов разъяснили простым языком, без тонн справочной информации в подарок.
Печально что куча написанных обработок под толстый клиент в новых конфигурациях только на управляемых формах для обычного пользователя, который не умеет переключать режим запуска стали недоступны.
Может существует какой-то конвертер перехода с неуправляемых форм на УФ?
# Ответить
177. Sholl 18.11.2014 22:23
Очень полезно. Спасибо
# Ответить
178. monkbest 25.11.2014 08:24
(175) Pasha1st, понятно, просто у меня другое понятие "чистого 1С`ника". По Вашему определению я - "грязный" 1С`ник, т.к. перед карьерой в 1С сфере получил высшее ИТ образование, где узнал много про все, кроме 1С, другие среды и технологии, поработал в другой сфере (сайтостроения), а потом попал в 1С и понеслось:)
Но по своему самоопределению, я "чистый" 1С`ник, т.к. уже давно работаю в 1С, достиг в нем определенного уровня и ничем другим пока заниматься не собираюсь.
# Ответить
179. Serg548 26.11.2014 10:32
Хорошая статья.
# Ответить
180. RomanBor 04.12.2014 09:02
Подход к Самим УФ то от 1С более менее нормальный и понятный, но что мне лично не нравится, так это обилие объектов 1С например на фига делать "таблицу значений", "массив", "список значений", если в принципе это практически один и тот же объект можно же было его объединить в один типа навороченного многомерного массива с отборами и прочем.
И притом они еще и не структуированны грамотно, где нормальная конвертация, особенно это видно в объектах для работы с СКД.
Где нормальная классовая структура с абстракцией чтобы большинство объектов имели во первых нормально перегруженные операторы присвоения, чтобы во всех объектов метод получить был получить, а не так что тут получить тут квадратные скобки в других найти

На месте 1С я вообще бы не стал плодить объекты типа обработка, отчет если в принципе это одно и тоже.
Когда же 1С будут улучшать на свистелки и перделки интерфейсные а среду разработки, когда наконец то сделают в запросах нормальный ltrim(rtrim), самое смешное что в практически любом полноценном SQL это есть, где конвертация в запросах строки в число и наоборот.

Кстате про УФ можно было модули разделить на блоки вот блок для сервера, это для клиента а не пихать все в одну кучу, когда грамотный отлатчик чтобы посмотреть стек вызовов функций, где нормальный intelisearch, блин в телепате для 7.7 это реализовано а в 8.х нормально до сих пор не сделано

ЗЫ: И Самое обидное что раньше чем 1с 9 и более: нормально структуированного интуитивно понятного языка мы не получим, а скорее всего вообще некогда :(
− 2 [ Bukaska; Evil Beaver; ]
# Ответить
181. sergey_irk 19.12.2014 00:10
Начал знакомиться с УФ. Понравилась статья. Особенно без нудных разъяснений и комментариев, довольно сжато и практично. Кое что уяснил для себя. Особенно про конвертацию данных
# Ответить
182. dmitry-gr 25.12.2014 13:43
Управляемые формы это некоторый промежуточный этап между двумя крайностями - толстым клиентом, работающим непосредственно с базой данных и легким (web) клиентом работающим с api сервера приложений.
Переходить о толстого к тонкому клиенту так же психологически сложно как с процедурного языка переходить на объектный. Вроде бы все то же самое, а проектировать код надо по другому.
Следующий разрыв шаблона будет если в 1С надумают внедрять асинхронный принцип работы с сервером.
# Ответить
183. quick 27.12.2014 01:39
Все кто поработал с УФ более-менее плотно не хотят возвращаться назад, как в страшный кошмар

У меня ощущения с точностью до наоборот.
# Ответить
184. crazy.admin91119 15.01.2015 10:06
мне как новичку в этом деле была очень интересна эта статья
# Ответить
185. OlgaMarvel 02.02.2015 11:13
Благодарю автора за статью! На некоторое время станет хорошей памяткой на моем рабочем столе
# Ответить
186. TreeDogNight 11.03.2015 08:11
Первые полгода работал на обычных формах, потом пришлось перейти на управляемые. Первое время было жутко непонятно и неудобно, но потом постепенно привык, и теперь возвращаться на обычные, нету никакого желания..
# Ответить
187. AlexO 16.03.2015 10:48
Опыт показывает, что рядовой программист практически никогда не знал, как нужно перенести код на сервер и что это вообще значит – «на сервер».
Все бы ничего, но и сейчас в УФ программист не знает, где исполняется код. Лишь платформа ему вырисовывает "НаСервере" - "не смей использовать инструкции клиента!" Или "НаКлиенте" - "не смей использовать инструкции сервера!" Это тот самый "клиент-сервер по 1С", разделение инструкций которого 1С могла беспрепятственно разделять сама и автоматически в платформе, без участия программиста.
Т.е. 1С нам что-то сообщает, а что реализовано на самом деле - это искусственное разделение на уровне платформы (а не клиента-сервера), и, как и ранее, код как исполнялся "везде и всюду", так и исполняется "везде и всюду". Отсюда, кстати, и тормоза на формах УФ в 8.3 под всякими "тонкими клиентами".
Так что все остальные построения "от клиента-сервера" рассыпаются в самом начале.
Ответили: (188)
+ 1 [ Идальго; ]
# Ответить
188. Evil Beaver 16.03.2015 12:00
(187) AlexO,
Это тот самый "клиент-сервер по 1С", разделение инструкций которого 1С могла беспрепятственно разделять сама и автоматически в платформе, без участия программиста.
Т.е. 1С нам что-то сообщает, а что реализовано на самом деле - это искусственное разделение на уровне платформы (а не клиента-сервера), и, как и ранее, код как исполнялся "везде и всюду", так и исполняется "везде и всюду"


лолшто?
Ответили: (189) (190)
+ 1 [ minimajack; ]
# Ответить
189. AlexO 16.03.2015 13:04
(188) Evil Beaver, "лолништо".
Не агитки читайте, а конфигуратор откройте, и подумайте над вопросом - а почему то-то и то-то, и работает именно вот так-то.
− 1 [ Evil Beaver; ]
# Ответить
190. AlexO 16.03.2015 13:06
(188) Evil Beaver, не работают, получается, дружище, твои "УФ", "на сервере или на клиенте", а сугубо только платформа тебе имитирует "показывает" сервер-клиент при написании кода.
Ответили: (191)
− 1 [ Evil Beaver; ]
# Ответить
191. Evil Beaver 16.03.2015 18:30
(190) AlexO, дружище, если бы я не знал, что ты знаменитый местный тролль, то, наверное, попытался бы выяснить, что ты хочешь сказать.
Ответили: (193)
+ 1 [ VasMart; ]
− 1 [ AlexO; ]
# Ответить
192. prodines 20.04.2015 13:16
К минусам УФ относится также непонятность где и как включить отладчик для них.
Ответили: (194)
# Ответить
193. AlexO 20.04.2015 14:08
(191) Evil Beaver,
если бы я не знал
Обычно тролли называют троллями - других. Чтобы их не было видно на фоне.
А если не знаешь про УФ, и знать не хочешь - то к кому вопросы?
Ответили: (195)
− 1 [ Evil Beaver; ]
# Ответить
194. AlexO 20.04.2015 14:09
(192) prodines,
К минусам УФ относится также непонятность где и как включить отладчик для них.
Отладчик включается при запуске сервера ключом, и только для тонкого клиента и веб-клиента. УФ в толстом клиенте работают как обычно.
+ 1 [ prodines; ]
# Ответить
195. Evil Beaver 21.04.2015 10:19
(193) AlexO,
не знаешь про УФ, и знать не хочешь

Спасибо, поржал от души. Жги еще!
+ 1 [ Bukaska; ]
− 1 [ AlexO; ]
# Ответить
196. CheBurator 22.04.2015 03:32
Поясните полному чайнику в 8-ке
"ДокументОбъект" - нельзя передать на сервер в сериализуемом виде.
я как-то по наивной простоте думал что документ, как объект - это совокупность его реквизитов и их значений, без модулей и форм. А получается - что я глубоко заблуждался..?
Ответили: (197) (198) (200)
# Ответить
197. AlexO 22.04.2015 12:57
(196) CheBurator,
"ДокументОбъект" - нельзя передать на сервер в сериализуемом виде.
А зачем в сериализуемом? Запихайте во временное хранилище, там можно хранить любой объект между вызовами сервера - ТЧ, документ, etc.
как объект - это совокупность его реквизитов и их значений
Можете отдельно сохранить реквизиты как объекты.
(196) CheBurator,
без модулей и форм. А получается - что я глубоко заблуждался..?
В чем? Что объект в 1С без форм? Без форм. Они у него "сбоку" пришпандорены, поэтому, чтобы вызвать форму в 8-ке, нужно создать объект, тот скриптом создаст "свою" форму, и уже теперь только её можно получить. А не напрямую "из метаданных конфигуратора", как кажется знатокам вроде Evil Beaver, которые основываются не на знании 1С, а на рассуждениях типа "форму же в конфигураторе создаем? - да. Описание объекта в конфигураторе делаем? - да. Ну так форма привязана к объекту, как в ООП".
А почему не сериализуется? Потому что 1С никак не может нормально "разложить" свои же объекты. Идут попытки в 8.3 (выгрузка конфигурации в XMl и прочее), но вот просто сохранить и восстановить объект, как в ООП - 1С не может. Хотя и платформа её, и делает в ней, что хочет. А - не может, и все тут.
# Ответить
198. Evil Beaver 22.04.2015 20:45
(196) CheBurator, рекомендую не читать поток сознания из предыдущего комментария, можно засорить голову ненужной информацией.
На ваш вопрос можно ответить очень просто:
ДокументОбъект - это не только набор реквизитов, это еще и состояние переменных, которые объявлены в начале модуля объекта. Представьте, что у вас там записано
Перем мСложныйКомОбъект

В этой переменной лежит что-то, что ваш объект в своем коде использует. Представьте, что это значение - объект из внешней DLL. 1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
Поэтому, в УФ сделан облегченный вариант - объект ДанныеФормы. Вот он хранит ровно то, что может передаваться туда-сюда.
AlexO тут еще сказал про временное хранилище, но это он тоже от недостатка опыта и легкомыслия. Временное хранилище не поможет. Если кластер серверов захочет сбросить содержимое временного хранилища на диск (он в ряде случаев это делает), то ДокументОбъект, лежащий в хранилище будет уничтожен, а его данные потеряны.
Ответили: (202) (208) (216)
+ 2 [ Bukaska; vikad; ]
− 1 [ AlexO; ]
# Ответить
199. grand.pers 08.05.2015 11:22
Написано грамотно и доступно. спасибо.
# Ответить
200. AlexO 08.05.2015 11:43
(196) CheBurator, рекомендую не читать "поток сознания" из предыдущего комментария 198 про объект "ДанныеФормы".
Товарищ явно не понимает, что пишет, пытаясь недостаток знаний прикрыть одноэсовой кашей терминов и бессмысленного набором фраз, густо сдобренных невежеством, не зная ни 1С77, ни 8.х, ни вообще не понимая программирования, его функций, способов, целей и задач.
Про ВременноеХранилище - это он тоже от недостатка опыта и легкомыслия: этот "объект" в 1С доступен минимум в течении вызова других "объектов", и применяется как раз для передачи данных клиент-сервер на УФ в том числе.
Конечно, это не замена глобальной переменной или константе, - о чем предыдущий оратор из-за недостатка опыта даже не подозревает.
Ответили: (201)
# Ответить
201. Evil Beaver 08.05.2015 13:34
(200) AlexO, Чувак, жги еще!
+ 1 [ Bukaska; ]
# Ответить
202. AlexO 09.05.2015 02:24
(198) Evil Beaver,
В этой переменной лежит что-то, что ваш объект в своем коде использует. Представьте, что это значение - объект из внешней DLL. 1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
Поэтому, в УФ сделан облегченный вариант - объект ДанныеФормы. Вот он хранит ровно то, что может передаваться туда-сюда.
Такой "псевдопрограмминг" даже 1С себе не позволяет.
Высший балл по бессмысленности. А вот этот всевдоумный набор слов: "1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер." - его вообще большими буквами, и вывесить над всей вашей всевдостуденческой братией.
Чтобы вы издалека предупреждали нормальных профессионалов об уровне знаний вашего кружка.
Надо же, что ни пассаж, то "шедевр", чувствуется долгая практика взаимного перекрестного оболванивания:
"Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных)".
А вы его половинчатым передайте. А на остальное ответьте "из-за состояния переменной, увы..."
Ответили: (203)
# Ответить
203. Evil Beaver 10.05.2015 22:42
(202) AlexO, если вы не в состоянии понять фразу, это не значит, что она бессмысленная. Я уже говорил, что вы здесь известный тролль-словоблуд. Давайте не будем больше тратить время друг-друга, ок?
Ответили: (204) (206)
# Ответить
204. AlexO 11.05.2015 14:20
(203) Evil Beaver,
Давайте не будем больше тратить время друг-друга, ок?
да, пожалуйста, удалитесь из программирования. Ему еще бы пожить немного надо в нашей стране.
Ответили: (205)
# Ответить
205. vikad 11.05.2015 15:25
(204) AlexO, http://infostart.ru/about/rules/laws/ п.1 Вам разъяснить, что из этого вы своим постом нарушаете? Предыдущие комментарии были конструктивнее. Этот - уже перебор.
Ответили: (206)
# Ответить
206. AlexO 11.05.2015 19:25
(205) vikad, посты ваших друзей неоднократно попадают под п.1, тем не менее, им замечаний никто не делает.
Т.е. это я "нарушаю", а не эти товарищи:
(203) Evil Beaver,
Я уже говорил, что вы здесь известный тролль-словоблуд.

и прочее, таких постов - масса.
Ответили: (207)
# Ответить
207. vikad 11.05.2015 19:36
(206) AlexO, автор терпеливо отвечает каждому на вопросы, связанные с сутью публикации. И Вам тоже (притом, что Вы отказываетесь это воспринимать). А Ваша критика не имеет непосредственного отношения к самой статье и выходит за рамки конструктива.
Ответили: (208)
# Ответить
208. AlexO 11.05.2015 20:05
(207) vikad, я, конечно, весьма далек от подобного "конструктива", но может Вы объясните - что это такое(198) Evil Beaver
"1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер."

Ваши подзащитные без ругани и оскорблений не смогли прояснить сей "конструктив".
Вариант "так художник видит", конечно, что-то объяснит, но далеко не все... :)
Ответили: (209)
# Ответить
209. vikad 11.05.2015 20:25
(208) AlexO, и Вы (согласно Вашему плюсу в первом посте комментариев) и автор солидарны с тем, что всю эту информацию можно прочитать в книге по разработке управляемого интерфейса. Там на 388-389 странице описано ограничение типов ДанныеФормы и то, чем оно обусловлено. Возможно, Вам будет удобнее прочитать об этом там.
Ответили: (210)
# Ответить
210. AlexO 11.05.2015 23:21
(209) vikad, осталось выложить эти страницы и понять, куда девается ДокументОбъект между клиентом-сервером, почему его "целым его передать не получится", и каким образом ДанныеФормы стали тождественны ДокументОбъект.
Ни я, ни Хрусталева (вообще, В. А. Ажеронок, А. В. Островерх, М. Г. Радченко, собственно Е. Ю. Хрусталева - на последнем месте) через страницы 388-389 - из конструктивных объяснений Evil Beaver понять не можем.
Ответили: (211) (224)

Прикрепленные файлы:

стр.388.png
стр.389.png
# Ответить
211. Evil Beaver 12.05.2015 09:38
(210) AlexO, ну что же, давайте попробуем конструктивно. Спасибо, vikad, за стимулирование конструктивной беседы.
Итак, AlexO, вы пишете "и каким образом ДанныеФормы стали тождественны ДокументОбъект"

У меня вопрос:
1) где вы прочитали у меня, что ДокументОбъект тождественен ДаннымФормы? Я такого нигде не говорил, напротив, цитата:
Вместо «Объекта» на клиенте существует его упрощенный аналог – хранилище данных – объект ДанныеФормы.

Это, по сути, просто структура, у которой свойства совпадают со свойством объекта. При всей «похожести», это совсем разные объекты. Причем, не просто концептуально, это различие явное, его можно «пощупать» из кода и с этим различием приходится работать в явном виде

Возможно, это непонятно написано, не знаю... ДанныеФормы и ДокументОбъект это разные объекты, они не тождественны.

Далее, вы спрашиваете:
"куда девается ДокументОбъект между клиентом-сервером, почему его "целым его передать не получится"
Отвечаю: ДокументОбъект уничтожается каждый раз при возврате на клиента и каждый раз воссоздается с нуля при каждой попытке поработать с ним, как с "объектом".
Этот принцип написан у Радченко, это написано в статье.
2) Какой момент в этом тезисе кажется вам непонятным или неправильным?

И наконец, третий пункт: передать ДокументОбъект между клиентом и сервером не получится, потому, что передача по сети это всегда сериализация. 1С не может сериализовать объекты, которые ей не принадлежат. Представьте, что в модуле документа есть глобальная переменная, в которую записан COM-объект скажем MSWord и в этом объекте открыт какой-то файл. Процедуры в модуле завязаны на состояние этого объекта MSWord, учитывают его. Можно передать, как вы говорите, на клиента объект "частично", но это получится уже некорректный, нецелостный объект.

3) Как ДокументОбъект поведет себя поведет при потере части своих данных? Что станет с поведением процедур, которые завязаны на потерянный COM?

Прошу конструктивно ответить на вопросы 1), 2), 3).
Спасибо.
Ответили: (212)
− 1 [ AlexO; ]
# Ответить
212. AlexO 12.05.2015 09:49
(211) Evil Beaver,
где вы прочитали у меня, что ДокументОбъект тождественен ДаннымФормы? Я такого нигде не говорил..Вместо «Объекта» на клиенте существует его упрощенный аналог
Вот именно, что не вместо Объекта, а вместе с "объектом". Это разные "объекты" для вас как одноэсника, а по сути - разные производные разных скриптов. Потому что вы не понимаете принципов "объектостроения" 1С. И никакого ООП.
По остальным пунктам - такие же нелепости.
Ответили: (213)
− 1 [ Evil Beaver; ]
# Ответить
213. Evil Beaver 12.05.2015 09:55
(212) AlexO, стоп-стоп. не надо отвечать "а по остальным пунктам..." дайте внятный ответ на все пункты. Только потом сможем продолжить. Сейчас у вас получилась просто отписка. И если вы понимаете "принцип объектостроения", то поясните, будьте добры, что вы имеете в виду. А если еще и приложите корректное техническое обоснование - будет вообще прелестно. Я заберу свои слова о том, что вы тролль-словоблуд.
Ответили: (214)
+ 1 [ kote; ]
− 1 [ AlexO; ]
# Ответить
214. AlexO 12.05.2015 10:03
(213) Evil Beaver,
А если еще и приложите корректное техническое обоснование - будет вообще прелестно.
Это вам 1С приложит. Если сможет.
дайте внятный ответ на все пункты.
вот вам внятный ответ по п.1.
ДокументОбъект уничтожается каждый раз при возврате на клиента и каждый раз воссоздается с нуля
Да, есть такая глупость у 1С. Но это не значит, что он "передается частями", просто передается совершенно другой псевдообъект; и также не значит, что его (и нужные данные - ту же ТЧ) нельзя передать другим способом, отличным от ДанныеФормы.
Ответили: (215)
# Ответить
215. Evil Beaver 12.05.2015 10:09
(214) AlexO,
это не значит, что он "передается частями", просто передается совершенно другой псевдообъект
ну а разве я говорил что-то другое? Где?
Ответили: (216) (217)
# Ответить
216. AlexO 12.05.2015 10:20
(215) Evil Beaver,
ну а разве я говорил что-то другое? Где?
Так ваше грандиозное изречение, на которое я написал "отзыв", а вы решили еще и тяжелую артиллерию подтянуть - так вам понравилось собственное высказывание:
(198) Evil Beaver,
1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
Ответили: (218)
# Ответить
217. AlexO 12.05.2015 10:28
(215) Evil Beaver,
из-за состояния в переменных
Кстати, состояние ваших неопределенных "переменных" прекрасно фиксируется и передается. И ратовать за то, что "с объектом нельзя передать" некие переменные, которые меняются сами по себе, независимо от объекта - это полное непонимание всех этих недомеханизмов УФ в 1С.
Эти переменные существуют отдельно, и передаются - да-да, тоже отдельно. И даже больше - они к объекту-то вообще никак не привязаны. Получай и передавай.
# Ответить
218. Evil Beaver 12.05.2015 10:30
(216) AlexO, попытка номер 2. Дайте пожалуйста ответы на вопросы 1, 2 и 3. Сухие, технические ответы. Как вы видите себе все это дело. Без перехода в риторику в стиле "вы ничего не понимаете, а я понимаю, но не скажу".
Если не можете - не тратьте мое время.
Ответили: (219) (224)
− 1 [ AlexO; ]
# Ответить
219. AlexO 12.05.2015 10:32
(218) Evil Beaver,
Сухие, технические ответы.
А вы покажите свои вопросы и мои ответы кому-то третьему.
А то вы ни свои вопросы не понимаете (копируете откуда-то?), ни мои ответы.
Ответили: (220)
# Ответить
220. Evil Beaver 12.05.2015 10:40
(219) AlexO, ну что и требовалось доказать. Конструктива от вас не дождаться. Скучно и неинтересно.
Ответили: (224)
− 1 [ AlexO; ]
# Ответить
221. Мастер1С 11.06.2015 16:53
Спасибо! Очень полезная статья, даже после многих лет работы с УФ!
# Ответить
222. Мастер1С 11.06.2015 16:59
(139) j3d, По моим наблюдениям, переход с УТ11 на УТ10.3 не связан с УФ, а скорее с новой методологией, с изменениями терминов, изменением работы в программе. Это напрягает.

Что же касается сложности разработки. Когда-то в начале программирования на УФ я бы с вами согласился, но не теперь. Некоторые вещи безусловно сложнее, но что б в разы... нет.
# Ответить
223. Johnriv2015 10.07.2015 09:05
Спасибо! Полезная статья.
# Ответить
224. AlexO 10.07.2015 11:09
(220) Evil Beaver,
Конструктива от вас не дождаться.
Это ни от 1С контруктива не дождешься, ни от вас, кто рад весьма бесконтруктивно восхвалять то, что ему подсунули, и даже не пытаться разобраться - что она самом деле.
(218) Evil Beaver,
Дайте пожалуйста ответы на вопросы 1, 2 и 3. Сухие, технические ответы.

"куда девается ДокументОбъект между клиентом-сервером, почему его "целым его передать не получится".
Отвечаю: ДокументОбъект уничтожается каждый раз при возврате на клиента
Вы путаете сущности, которые создаются "на сервере, на клиенте", т.е. то, что напудрила вам 1С. Передавайте смело ссылку на объект. Хоть куда. Но получить не сможете её в 1С на клиенте из базы, только и всего.
Этот "пудреж" от 1С вы и смакуете раз за разом, вместо вдумчивого понимания - что происходит, и как оно должно быть.
Ерунда у вас и с третьим пунктом.
И наконец, третий пункт: передать ДокументОбъект между клиентом и сервером не получится, потому, что передача по сети это всегда сериализация.
Передача по сети - это передача данных (в битах и байтах) по определенной "договоренности" (называемой "протоколом"), которую понимают обе обменивающиеся "сетевые стороны". И передаваться может все, что угодно, что можно передать как биты и байты.
Поэтому это
1С не может сериализовать объекты, которые ей не принадлежат.
- проблема 1С, что она не может "сериализовать" (т.е. единственно используемым для себя методом превращать свои псевдообъекты - в для себя же читаемую форму) COM-объекты.
Вопрос же "принадлежности" (цитата "Процедуры в модуле завязаны на состояние этого объекта MSWord, учитывают его. Можно передать, как вы говорите, на клиента объект "частично", но это получится уже некорректный, нецелостный объект.") тут вообще увидели только вы - COM объект (его "содержимое", ради чего его и "замутили") никаким образом не обновляется "онлайн", это всего-навсего подключение для получения данных из другой базы.
Захотели бы (или смогли - уж не знаю, у 1С причина обычно "ну не шмогла я, не шмогла...") - получили бы нормальный COM-"объект" со всеми нормально читаемыми реквизитами-причиндалами, а не какую-то ахинею со значением полей "COM-объект", которую надо дополнительно потом получать "индивидуально".
Понятно, что таким образом 1С как-бы говорит "там же ссылка на объект в другой базе, я не могу её "развернуть" в этой", но говорит как-то шепеляво, прикрыв рот рукой и отвернувшись в сторону.
Причем говорит это уже столько времени, что у тру-одноэсников выработалось стойкое "Так было всегда! Так должно быть! Знамена вверх!" ну и т.д., "не отдадим на поругание..." ))))
-------------------
В общем, конструктива у вас - ровно на составление слова "конструктив". А все описанное в статье - повторение размусоливания "мути" из желтых книжек (причем - неверное, пересказанное своими словами в меру собственного понимания и в силу "обожания", что мы и разобрали в (210))
И чего вы там все "щупаете"?
Это, по сути, просто структура, у которой свойства совпадают со свойством объекта. При всей «похожести», это совсем разные объекты. Причем, не просто концептуально, это различие явное, его можно «пощупать» из кода и с этим различием приходится работать в явном виде
Псевдообъекты 1С? Там скрипт, сям скрипт. А вы сразу - "можем пощупать объекты...", работаем из кода...", "явные различия.." Ну да, один скрипт не похож на другой. Но никакого смысла было делать их "разными" - нет.
− 1 [ Evil Beaver; ]
# Ответить
225. 1c.pro.fun 15.09.2015 13:04
Подскажите пожалуйста если возникла необходимость в Толстом клиенте, НО режиме управляемого приложения (такие извращения ради задачи организации подбора в УТ 11 как в УТ 10.3) с клиента обратиться на сервер каким образом это можно сделать? Такая конструкция например уже не работает:

Процедура ПриОткрытии()
	
	Сообщить(ПримерФункции());
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ПримерФункции()

	Возврат "Hello world!";

КонецФункции
...Показать Скрыть


Конечно на сервер я иду не для того чтобы строковую константу вернуть, а например для выполнения запроса к базе или вызова эскортной процедуры из общего модуля (модуль без флажка "Вызов сервера").
# Ответить
226. ЧИА 16.09.2015 10:22
в общем, у меня 2 мнения

1. по поводу самой статьи - нужная и полезная
2. по поводу ругани УФ и всего, что с ними связано
а) понятно, что если я с ОФ работаю на 7 лет дольше, то и привык, и накопилось много заготовок и утилит, чисто на автомате многое делаю, то на УФ оно неудобнее (пока?)
б) не знаю как у кого, у меня почему-то на одних и тех же серверах чисто открытие-сохранение-запуск и т.п. в конфах на УФ работает намного дольше, в разы. из-за этого тоже уходит много дополнительного времени, что раздражает (
# Ответить
227. kote 21.09.2015 12:12
(107) Evil Beaver,

А теперь считаем трудозатраты и скорость разработки веб-морды на управляемых формах и на Руби с аналогичным функционалом (моксель, СКД, формы объектов, ввод по строке и т.п.)...
Писать на Руби уже не так экономически эффективно, правда?


У Рубистов есть фреймворк RubyOnRails и куча гемов к нему - в т.ч. решающих проблемы учёта и движения товаров - для интернет магазинов.. с бухгалтерией связанного ничего не видел - но и не искал.

В общем и целом - на счёт экономической эффективности разработки на RoR & Ruby Вы сильно заблуждаетесь - был на Хакатоне в 2013 году.
За 2 суток люди поднимали проекты и с приличным UX и бизнеслогикой.. А если еще принять во внимание модель лицензирования - то вообще аут, ИМХО. Никакой REST-API не изменит этого. Да и REST API, говорят, не очень гибкое у 1С (ссылка ниже, где об этом пишут и предлагают альтернативное решение)


Да и потом - сделать на 1С то же, что и на Ruby - порой будет гораздо дороже или вовсе невозможно..


===
И Ваш скепсис тоже не совсем понятен - люди таки занимаются и что-то пытаются допилить в 1С.. близко к теме - посмотрите наработки вот тут https://github.com/oknosoft/metadata.js и http://www.oknosoft.ru/metadata/
Оцените скорость работы этого по сравнению с управляемыми формами в вэб_морде 1С.

Ну как?
Ответили: (228) (229)
# Ответить
228. Evil Beaver 21.09.2015 13:18
(227) kote, хорошо, все соскакиваем с 1С и переходим на руби.
# Ответить
229. unpete 12.10.2015 21:37
(227) kote, Evil Beaver
хорошо, все соскакиваем с 1С и переходим на руби
В решениях на Ruby, SAP UI5, Java или традиционном 1С проблемы будут совершенно одинаковыми.
В силу исторических причин, идеологи большинства фреймворков, рассматривают front-end лишь как средство отобразить данные и принять ввод пользователя.
Тонкий и веб-клиенты 1С, вместе с интернет-магазинами и платежными системами, справедливо названы и являются "мордами", а не клиентскими приложениями.

Фундаментальное отличие metadata.js - данные на клиенте. С настоящей ссылочной типизацией и настоящим SQL на клиенте. Полноценный ДокументОбъект или СправочникОбъект, а не убогая ДанныеФормыСтруктура. Короткие справочники (до 30 тысяч записей) рекомендуется кешировать целиком не задумываясь. Они займут в javascript-массивах лишь несколько десятков мегабайт. Документы, регистры и длинные справочники лучше оставить на сервере и получать на клиента по необходимости. Клиентский SQL к некешируемым объектам работать не будет - только серверный, но в остальном, некешируемые объекты ведут себя точно так же, как кешируемые. Работает ссылочная типизация и разыменование.
Ответили: (231)
# Ответить
230. starik-2005 12.10.2015 23:27
В принципе, у любой идеологии есть сторонники и противники, даже если то идеология программирования. Я занимался УПП 1.2, там был толстый клиент, 8.1, мощный сервер СУБД и прочие пироги. У нас считалась себестоимость выпуска после корректировки списания, процесс занимал сутки, но сервер молотил - и все было хорошо. Потом, правда, мой коллега переписал некоторым образом код, и время выполнения "процедур" сократилось до получаса. Странно, что 1С этого не смогла сделать, но в угоду универсальности она бы и не сделала этого, ибо сокращение выражения можно произвести там, где не предполагается значимость сокращаемых переменных. Хотя... Могли бы раз в 5 точно ускорить процесс только переписав все то г., которое они намутили вопреки своим собственным стандартам разработки (типа запроса в цикле, подзапросы с большими выборками вместо внутренних соединений с временными таблицами, проиндексированными по ключевым полям с только нужными объектами, ...). В принципе за два года привык, решал задачи на автомате, крайне удивлялся тем, кто не может выставить привязки на форме...

Потом была УТ 11, уровень модификации которой заставляет говорить о совершенно иной, отличной от УТ, разработки. Там уже все отчеты на СКД, варианты отчетов, СКД-отборы, как функции для отбора значений, выгрузка СКД в табличные документы - это не говоря об управляемых формах, которые ни сначала, ни потом не вызывали никаких неприятных мыслей. Да, были в самом начале заморочки, но они быстро прошли. И те, кто до сих пор управляет видимостью отдельных элементов УФ с помощью кода, вызывают лишь улыбку. А посты в защиту толстого клиента не более, чем умиляют. И все из-за того, что нет хорошей и качественной документации об УФ, СКД, а теперь и асинхронному вызову форм. Но если ты не только в 1С умеешь программировать и знаешь о виртуальных объектах, которые могут отображать себя в каком-нибудь листбоксе, то такая ерунда, как управляемые формы вряд ли сможет ввести тебя в ступор надолго - так, на неделю для осмысления задуманного технологического чуда. А дальше уже нет никаких проблем с клиент-серверным взаимодействием, ибо просто меняешь подход, учитывая новые возможности. для которых старые подходы оказываются просто-напросто устаревшими.
# Ответить
231. Evil Beaver 13.10.2015 10:47
(229) unpete, Обязательно поймаю Вас на Инфостарте 2015 и порасспрашиваю о деталях! :)
# Ответить
232. goldencity178 18.11.2015 10:06
Единственное что хорошее в этой статье - смысл, но юмор с ядерным редактором - чересчур пошло :))
Ответили: (235) (237)
− 1 [ herfis; ]
# Ответить
233. goldencity178 18.11.2015 10:07
Много воды ) нет примеров :)
− 1 [ herfis; ]
# Ответить
235. herfis 18.11.2015 10:10
(232) goldencity178,
Единственное что хорошее в этой статье - смысл

В мемориз!
+ 1 [ Evil Beaver; ]
# Ответить
236. herfis 18.11.2015 10:13
(234) goldencity178,
И это говорит человек, пытающийся за деньги поучать новичков, как правильно готовить управляемые формы.
+ 1 [ Evil Beaver; ]
# Ответить
237. Evil Beaver 18.11.2015 12:25
(232) goldencity178, чересчур пошло? Ну на всякого эстета не угодишь... Я в прошлом скромный автор на удафком, вот там было пошло. А здесь - в самый раз. И мы тут про IT вообще-то...
# Ответить
238. Euroset1 04.12.2015 06:18
Управляемый интерфейс по задумке - очень даже крутая вещь. Но к сожалению, он реализован через Ж по факту и позволяет полноценно решать только простые задачи по построению типовых конфигураций. По факту же интерфейс не управляемый и постоянно приходится бороться ради даже самого минимального результата - вплоть до ширины какой-то кнопки, которая методично обрезается и пытается быть уже своего наименования. Чтобы применить условное оформление к таблице, приходится делать контекстный вызов сервера и терпеть подвисания, когда как в толстом клиенте оно применяется мгновенно.

Главным недостатком является попытка сделать часть значимых операций незаметными для программиста. В итоге вытекают последствия, которые существенно ограничивают в полном использовании всех предлагаемых возможностей.
Короче, УФ - это построенная четко под задачи типовиков система, которая при должной реализации могла бы стать реально полезным инструментом. Некий обрезок, который можно применять лишь для узкого типа задач и невозможно применять на уровне дельфи и с++. Слишком много ограничений у формы, слишком много отрезано возможностей.
# Ответить
239. Alex_Dug 19.05.2016 14:49
Давно хотел прочитать статью, сегодня осилил и ... ВПЕЧАТЛЕН, остался очень доволен описанием нюансов, юмором, изложением!
КРУТО!!!
Спасибо.
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл