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

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

Перейти к публикации

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

В этой переменной лежит что-то, что ваш объект в своем коде использует. Представьте, что это значение - объект из внешней DLL. 1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
Поэтому, в УФ сделан облегченный вариант - объект ДанныеФормы. Вот он хранит ровно то, что может передаваться туда-сюда.
AlexO тут еще сказал про временное хранилище, но это он тоже от недостатка опыта и легкомыслия. Временное хранилище не поможет. Если кластер серверов захочет сбросить содержимое временного хранилища на диск (он в ряде случаев это делает), то ДокументОбъект, лежащий в хранилище будет уничтожен, а его данные потеряны.
Bukaska; vikad; +2 1 Ответить
202. AlexO 130 09.05.15 02:24 Сейчас в теме
(198)
В этой переменной лежит что-то, что ваш объект в своем коде использует. Представьте, что это значение - объект из внешней DLL. 1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
Поэтому, в УФ сделан облегченный вариант - объект ДанныеФормы. Вот он хранит ровно то, что может передаваться туда-сюда.
Такой "псевдопрограмминг" даже 1С себе не позволяет.
Высший балл по бессмысленности. А вот этот всевдоумный набор слов: "1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер." - его вообще большими буквами, и вывесить над всей вашей всевдостуденческой братией.
Чтобы вы издалека предупреждали нормальных профессионалов об уровне знаний вашего кружка.
Надо же, что ни пассаж, то "шедевр", чувствуется долгая практика взаимного перекрестного оболванивания:
"Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных)".
А вы его половинчатым передайте. А на остальное ответьте "из-за состояния переменной, увы..."
203. Evil Beaver 6822 10.05.15 22:42 Сейчас в теме
(202) AlexO, если вы не в состоянии понять фразу, это не значит, что она бессмысленная. Я уже говорил, что вы здесь известный тролль-словоблуд. Давайте не будем больше тратить время друг-друга, ок?
204. AlexO 130 11.05.15 14:20 Сейчас в теме
(203)
Давайте не будем больше тратить время друг-друга, ок?
да, пожалуйста, удалитесь из программирования. Ему еще бы пожить немного надо в нашей стране.
205. vikad 118 11.05.15 15:25 Сейчас в теме
(204) AlexO, http://infostart.ru/about/rules/laws/ п.1 Вам разъяснить, что из этого вы своим постом нарушаете? Предыдущие комментарии были конструктивнее. Этот - уже перебор.
206. AlexO 130 11.05.15 19:25 Сейчас в теме
(205) vikad, посты ваших друзей неоднократно попадают под п.1, тем не менее, им замечаний никто не делает.
Т.е. это я "нарушаю", а не эти товарищи:
(203)
Я уже говорил, что вы здесь известный тролль-словоблуд.

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

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

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

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

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

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

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

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

Прошу конструктивно ответить на вопросы 1), 2), 3).
Спасибо.
212. AlexO 130 12.05.15 09:49 Сейчас в теме
(211)
где вы прочитали у меня, что ДокументОбъект тождественен ДаннымФормы? Я такого нигде не говорил..Вместо «Объекта» на клиенте существует его упрощенный аналог
Вот именно, что не вместо Объекта, а вместе с "объектом". Это разные "объекты" для вас как одноэсника, а по сути - разные производные разных скриптов. Потому что вы не понимаете принципов "объектостроения" 1С. И никакого ООП.
По остальным пунктам - такие же нелепости.
213. Evil Beaver 6822 12.05.15 09:55 Сейчас в теме
(212) AlexO, стоп-стоп. не надо отвечать "а по остальным пунктам..." дайте внятный ответ на все пункты. Только потом сможем продолжить. Сейчас у вас получилась просто отписка. И если вы понимаете "принцип объектостроения", то поясните, будьте добры, что вы имеете в виду. А если еще и приложите корректное техническое обоснование - будет вообще прелестно. Я заберу свои слова о том, что вы тролль-словоблуд.
214. AlexO 130 12.05.15 10:03 Сейчас в теме
(213)
А если еще и приложите корректное техническое обоснование - будет вообще прелестно.
Это вам 1С приложит. Если сможет.
дайте внятный ответ на все пункты.
вот вам внятный ответ по п.1.
ДокументОбъект уничтожается каждый раз при возврате на клиента и каждый раз воссоздается с нуля
Да, есть такая глупость у 1С. Но это не значит, что он "передается частями", просто передается совершенно другой псевдообъект; и также не значит, что его (и нужные данные - ту же ТЧ) нельзя передать другим способом, отличным от ДанныеФормы.
215. Evil Beaver 6822 12.05.15 10:09 Сейчас в теме
(214) AlexO,
это не значит, что он "передается частями", просто передается совершенно другой псевдообъект
ну а разве я говорил что-то другое? Где?
216. AlexO 130 12.05.15 10:20 Сейчас в теме
(215)
ну а разве я говорил что-то другое? Где?
Так ваше грандиозное изречение, на которое я написал "отзыв", а вы решили еще и тяжелую артиллерию подтянуть - так вам понравилось собственное высказывание:
(198)
1С не может знать о его внутреннем устройстве и не может как-то его превратить в набор байт и обратно для передачи на сервер. Если мы захотим наш ДокументОбъект передать куда-то, то целым его передать не получится (из-за состояния в переменных), а частичный объект не имеет смысла воссоздавать на сервере.
218. Evil Beaver 6822 12.05.15 10:30 Сейчас в теме
(216) AlexO, попытка номер 2. Дайте пожалуйста ответы на вопросы 1, 2 и 3. Сухие, технические ответы. Как вы видите себе все это дело. Без перехода в риторику в стиле "вы ничего не понимаете, а я понимаю, но не скажу".
Если не можете - не тратьте мое время.
219. AlexO 130 12.05.15 10:32 Сейчас в теме
(218)
Сухие, технические ответы.
А вы покажите свои вопросы и мои ответы кому-то третьему.
А то вы ни свои вопросы не понимаете (копируете откуда-то?), ни мои ответы.
220. Evil Beaver 6822 12.05.15 10:40 Сейчас в теме
(219) AlexO, ну что и требовалось доказать. Конструктива от вас не дождаться. Скучно и неинтересно.
224. AlexO 130 10.07.15 11:09 Сейчас в теме
(220)
Конструктива от вас не дождаться.
Это ни от 1С контруктива не дождешься, ни от вас, кто рад весьма бесконтруктивно восхвалять то, что ему подсунули, и даже не пытаться разобраться - что она самом деле.
(218)
Дайте пожалуйста ответы на вопросы 1, 2 и 3. Сухие, технические ответы.

"куда девается ДокументОбъект между клиентом-сервером, почему его "целым его передать не получится".
Отвечаю: ДокументОбъект уничтожается каждый раз при возврате на клиента
Вы путаете сущности, которые создаются "на сервере, на клиенте", т.е. то, что напудрила вам 1С. Передавайте смело ссылку на объект. Хоть куда. Но получить не сможете её в 1С на клиенте из базы, только и всего.
Этот "пудреж" от 1С вы и смакуете раз за разом, вместо вдумчивого понимания - что происходит, и как оно должно быть.
Ерунда у вас и с третьим пунктом.
И наконец, третий пункт: передать ДокументОбъект между клиентом и сервером не получится, потому, что передача по сети это всегда сериализация.
Передача по сети - это передача данных (в битах и байтах) по определенной "договоренности" (называемой "протоколом"), которую понимают обе обменивающиеся "сетевые стороны". И передаваться может все, что угодно, что можно передать как биты и байты.
Поэтому это
1С не может сериализовать объекты, которые ей не принадлежат.
- проблема 1С, что она не может "сериализовать" (т.е. единственно используемым для себя методом превращать свои псевдообъекты - в для себя же читаемую форму) COM-объекты.
Вопрос же "принадлежности" (цитата "Процедуры в модуле завязаны на состояние этого объекта MSWord, учитывают его. Можно передать, как вы говорите, на клиента объект "частично", но это получится уже некорректный, нецелостный объект.") тут вообще увидели только вы - COM объект (его "содержимое", ради чего его и "замутили") никаким образом не обновляется "онлайн", это всего-навсего подключение для получения данных из другой базы.
Захотели бы (или смогли - уж не знаю, у 1С причина обычно "ну не шмогла я, не шмогла...") - получили бы нормальный COM-"объект" со всеми нормально читаемыми реквизитами-причиндалами, а не какую-то ахинею со значением полей "COM-объект", которую надо дополнительно потом получать "индивидуально".
Понятно, что таким образом 1С как-бы говорит "там же ссылка на объект в другой базе, я не могу её "развернуть" в этой", но говорит как-то шепеляво, прикрыв рот рукой и отвернувшись в сторону.
Причем говорит это уже столько времени, что у тру-одноэсников выработалось стойкое "Так было всегда! Так должно быть! Знамена вверх!" ну и т.д., "не отдадим на поругание..." ))))
-------------------
В общем, конструктива у вас - ровно на составление слова "конструктив". А все описанное в статье - повторение размусоливания "мути" из желтых книжек (причем - неверное, пересказанное своими словами в меру собственного понимания и в силу "обожания", что мы и разобрали в (210))
И чего вы там все "щупаете"?
Это, по сути, просто структура, у которой свойства совпадают со свойством объекта. При всей «похожести», это совсем разные объекты. Причем, не просто концептуально, это различие явное, его можно «пощупать» из кода и с этим различием приходится работать в явном виде
Псевдообъекты 1С? Там скрипт, сям скрипт. А вы сразу - "можем пощупать объекты...", работаем из кода...", "явные различия.." Ну да, один скрипт не похож на другой. Но никакого смысла было делать их "разными" - нет.
217. AlexO 130 12.05.15 10:28 Сейчас в теме
(215)
из-за состояния в переменных
Кстати, состояние ваших неопределенных "переменных" прекрасно фиксируется и передается. И ратовать за то, что "с объектом нельзя передать" некие переменные, которые меняются сами по себе, независимо от объекта - это полное непонимание всех этих недомеханизмов УФ в 1С.
Эти переменные существуют отдельно, и передаются - да-да, тоже отдельно. И даже больше - они к объекту-то вообще никак не привязаны. Получай и передавай.
200. AlexO 130 08.05.15 11:43 Сейчас в теме
(196) CheBurator, рекомендую не читать "поток сознания" из предыдущего комментария 198 про объект "ДанныеФормы".
Товарищ явно не понимает, что пишет, пытаясь недостаток знаний прикрыть одноэсовой кашей терминов и бессмысленного набором фраз, густо сдобренных невежеством, не зная ни 1С77, ни 8.х, ни вообще не понимая программирования, его функций, способов, целей и задач.
Про ВременноеХранилище - это он тоже от недостатка опыта и легкомыслия: этот "объект" в 1С доступен минимум в течении вызова других "объектов", и применяется как раз для передачи данных клиент-сервер на УФ в том числе.
Конечно, это не замена глобальной переменной или константе, - о чем предыдущий оратор из-за недостатка опыта даже не подозревает.
201. Evil Beaver 6822 08.05.15 13:34 Сейчас в теме
(200) AlexO, Чувак, жги еще!
199. grand.pers 08.05.15 11:22 Сейчас в теме
Написано грамотно и доступно. спасибо.
221. Мастер1С 767 11.06.15 16:53 Сейчас в теме
Спасибо! Очень полезная статья, даже после многих лет работы с УФ!
223. Johnriv2015 10.07.15 09:05 Сейчас в теме
Спасибо! Полезная статья.
225. 1c.pro.fun 134 15.09.15 13:04 Сейчас в теме
Подскажите пожалуйста если возникла необходимость в Толстом клиенте, НО режиме управляемого приложения (такие извращения ради задачи организации подбора в УТ 11 как в УТ 10.3) с клиента обратиться на сервер каким образом это можно сделать? Такая конструкция например уже не работает:

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

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

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

КонецФункции
Показать


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

1. по поводу самой статьи - нужная и полезная
2. по поводу ругани УФ и всего, что с ними связано
а) понятно, что если я с ОФ работаю на 7 лет дольше, то и привык, и накопилось много заготовок и утилит, чисто на автомате многое делаю, то на УФ оно неудобнее (пока?)
б) не знаю как у кого, у меня почему-то на одних и тех же серверах чисто открытие-сохранение-запуск и т.п. в конфах на УФ работает намного дольше, в разы. из-за этого тоже уходит много дополнительного времени, что раздражает (
230. starik-2005 2197 12.10.15 23:27 Сейчас в теме
В принципе, у любой идеологии есть сторонники и противники, даже если то идеология программирования. Я занимался УПП 1.2, там был толстый клиент, 8.1, мощный сервер СУБД и прочие пироги. У нас считалась себестоимость выпуска после корректировки списания, процесс занимал сутки, но сервер молотил - и все было хорошо. Потом, правда, мой коллега переписал некоторым образом код, и время выполнения "процедур" сократилось до получаса. Странно, что 1С этого не смогла сделать, но в угоду универсальности она бы и не сделала этого, ибо сокращение выражения можно произвести там, где не предполагается значимость сокращаемых переменных. Хотя... Могли бы раз в 5 точно ускорить процесс только переписав все то г., которое они намутили вопреки своим собственным стандартам разработки (типа запроса в цикле, подзапросы с большими выборками вместо внутренних соединений с временными таблицами, проиндексированными по ключевым полям с только нужными объектами, ...). В принципе за два года привык, решал задачи на автомате, крайне удивлялся тем, кто не может выставить привязки на форме...

Потом была УТ 11, уровень модификации которой заставляет говорить о совершенно иной, отличной от УТ, разработки. Там уже все отчеты на СКД, варианты отчетов, СКД-отборы, как функции для отбора значений, выгрузка СКД в табличные документы - это не говоря об управляемых формах, которые ни сначала, ни потом не вызывали никаких неприятных мыслей. Да, были в самом начале заморочки, но они быстро прошли. И те, кто до сих пор управляет видимостью отдельных элементов УФ с помощью кода, вызывают лишь улыбку. А посты в защиту толстого клиента не более, чем умиляют. И все из-за того, что нет хорошей и качественной документации об УФ, СКД, а теперь и асинхронному вызову форм. Но если ты не только в 1С умеешь программировать и знаешь о виртуальных объектах, которые могут отображать себя в каком-нибудь листбоксе, то такая ерунда, как управляемые формы вряд ли сможет ввести тебя в ступор надолго - так, на неделю для осмысления задуманного технологического чуда. А дальше уже нет никаких проблем с клиент-серверным взаимодействием, ибо просто меняешь подход, учитывая новые возможности. для которых старые подходы оказываются просто-напросто устаревшими.
DiegoLidabo; +1 Ответить
232. goldencity178 8 18.11.15 10:06 Сейчас в теме
Единственное что хорошее в этой статье - смысл, но юмор с ядерным редактором - чересчур пошло :))
235. herfis 372 18.11.15 10:10 Сейчас в теме
(232) goldencity178,
Единственное что хорошее в этой статье - смысл

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

Главным недостатком является попытка сделать часть значимых операций незаметными для программиста. В итоге вытекают последствия, которые существенно ограничивают в полном использовании всех предлагаемых возможностей.
Короче, УФ - это построенная четко под задачи типовиков система, которая при должной реализации могла бы стать реально полезным инструментом. Некий обрезок, который можно применять лишь для узкого типа задач и невозможно применять на уровне дельфи и с++. Слишком много ограничений у формы, слишком много отрезано возможностей.
239. Alex_Dug 19.05.16 14:49 Сейчас в теме
Давно хотел прочитать статью, сегодня осилил и ... ВПЕЧАТЛЕН, остался очень доволен описанием нюансов, юмором, изложением!
КРУТО!!!
Спасибо.
240. nyuya@mail.ru 15.08.16 21:46 Сейчас в теме
Замечательная, очень полезная статья. Спасибо!
241. lastcontra 80 23.08.16 10:16 Сейчас в теме
Автору большое спасибо! Чувствуется, что для друзей написано, с душой)
242. yakdenitdn 26.10.16 09:54 Сейчас в теме
А я попробовал в сексе, вместо того чтобы наслаждаться процессом был вынужден (по новым правилам, утвержденным Министерством половых связей) держать вытянутым мизинец на правой ноге, причем так чтобы он не опускался ниже уровня 12 см от кромки матраца. Причем министерство убеждало меня, что именно при таком методе достигается максимальная оптимизированность процесса и наименьшая нагрузка на позвоночник.
243. Evil Beaver 6822 31.10.16 10:16 Сейчас в теме
(242) yakdenitdn, ок, по этому отрывку текста можно определить некую попоболь у его автора. Но что конкретно он хотел сказать - неясно.
244. rsl 15.11.16 10:20 Сейчас в теме
Здоровья желаю, форумчане.
Статья очень подробная, проясняющая многие принципы взаимодействия клиент-серверной технологии. Автору, большое спасибо и пожелания дальнейших таких же статей.
У меня есть вопрос. Можно ли создав общую форму, скажем для редактирования контактной информации контрагентов, физлиц, сотрудников и т.д, и её программно внедрить в форму соответствующего справочника?
Некий такой фрейм, который отображался во вкладке (на странице) формы справочника, а не вызывалась новая форма (много форм на экране - это всегда плохо). На мой взгляд, механизм фреймов был бы очень удобен: один внешний вид некоего блока информации, и один отлаженный функционал.
Заранее благодарен за ответы.
245. Pasha1st 604 16.11.16 14:58 Сейчас в теме
(244) Сдается мне что штатно фреймов тут нет, но можно попробовать их сымитировать разобрав элементы "образца" и вставив их в отведенное место целевой формы при создании этой формы. Дополнительно заморочившись с обработчиками и данными формы. За образец можно взять мелькавшие тут обработки деструктивного разбора структуры форм.
246. rsl 16.11.16 16:00 Сейчас в теме
(245) Элементы "фрейма" разобрать и собрать в нужном месте не проблема. Реквизиты формы тоже программно можно перетащить. А вот с обработчиками, я что-то никак не соображу - как-то все сложно получается.
Хочется обработчики их модуля "фрейма" подключать, а не в модуле целевой формы заново создавать.
247. Alister 9 17.11.16 13:40 Сейчас в теме
(244) расширения для Ваших целей не подойдут?
248. Evil Beaver 6822 20.11.16 19:52 Сейчас в теме
(244) rsl, можно открыть другую форму в окне основной формы. Есть же панель навигации (переход к подчиненным регистрам, справочникам и т.п.).
Делаете команду в форме, размещаете ее в панели навигации. В коде команды пишете, что окно должно быть тем же самым.
249. grachev1c 14.12.16 15:37 Сейчас в теме
(0) Андрей спасибо за статью - помогло все уложить по полочкам.
Но есть вопрос. Для управляемых форм есть не только тонкий клиент, но еще и толстый клиент. В чем разница работы управляемой формы в толстом и тонком клиентах?
250. herfis 372 14.12.16 15:45 Сейчас в теме
(249) Как побочный эффект - в УФ под толстым клиентом будут доступны некоторые фишки (просто не помню, все или не все), в тонком клиенте недоступные. ИМХО, просто недосмотрели этот момент. Но вообще, этот режим исключительно для облегчения перехода. Чтобы можно было еще оставаясь на толстом клиенте уже начинать постепенно переписывать формы на УФ. Особенно это для отчетов легко и удобно и профит на фишках УФ ощутимый. Ведь отчеты СКД на УФ значительно более продвинуты.
TeMochkiN; grachev1c; +2 Ответить
251. Evil Beaver 6822 15.12.16 15:07 Сейчас в теме
(249) толстый управляемый клиент это концептуальное недоразумение от которого сама фирма 1С давно хочет отказаться.
252. PoZiTiFFF 783 24.04.17 16:11 Сейчас в теме
Странно, сказано про передаваемый параметр формы с ключом "Отбор", а передается сразу структура со значениями отборов. Так ведь сразу отбор не сработает в открываемой форме, по идее должно быть вот так:
УсловияОтбора = Новый Структура;
УсловияОтбора.Вставить("ТипКонтрагента", "Поставщик");
УсловияОтбора.Вставить("Лояльность", "Надежный");

ПараметрыФормы = Новый Структура ("Отбор", УсловияОтбора);

ОткрытьФорму("Справочник.Контрагенты.ФормаСписка", ПараметрыФормы);
Evil Beaver; TreeDogNight; +2 Ответить
253. Evil Beaver 6822 25.04.17 16:25 Сейчас в теме
(252) Ваш вариант верный. Исправил в статье. Спасибо!
254. astracrypt 72 06.02.18 05:34 Сейчас в теме
Очень интересная статья.
Nataly_g; +1 Ответить
255. alexey.kutya 227 28.02.18 15:45 Сейчас в теме
Спасибо, очень доходчиво все расписано. Однако вот с этим не согласен
"Управляемые формы позволили реализовать интерфейс в виде веб-страницы, причем разработчик практически не обязан думать о том, что пишет сайт. Один и тот же код работает и в браузере, и в родном клиенте. Как по мне, так это очень круто."


imho, может оно и круто, только кому это нужно. 1С по большей части используется как desktop приложение. А попытка сделать универсальный код, который будет выполняться и под веб-клиента привела к существенному усложнению кода. Да что там говорить, код становится просто нечитабельным. Все эти асинхронные вызовы, ограничения и особенности веб-клиента необходимо учитывать. Возьмите БСП и посмотрите реализацию какой-либо функции. Поддерживать такой код конечно можно, но вот как-то нет желания. Клиент-серверная архитектура это хорошо, а вот затачивать конфигурации под веб-клиент не слишком изящное решение. Чисто IMHO.
256. herfis 372 28.02.18 16:10 Сейчас в теме
(255) Непонятно, в каком месте вы не согласны с автором статьи. Автор восхитился способом реализации в 1С тонкого клиента. Вы с ним согласились.
А ничего другого автор и не утверждал.
Что вынужденная разработка под тонкий клиент приносит дополнительные сложности в случаях, когда тонкий клиент не требуется - это уже отдельный разговор. Но и тут дело не в изяществе. Тут банальное отсутствие вариантов у 1С. Попытка развивать и поддерживать параллельно две концепции таит в себе гораздо больше проблем, чем неудобства разработчиков пилить тонкого клиента когда тонкий клиент не нужен. Никаких изящных решений тут в принципе быть не может. Банальный выбор меньшего из зол. Или скажите, как бы вы поступили на месте 1С.
258. alexey.kutya 227 28.02.18 17:07 Сейчас в теме
(256) я же не про тонкого клиента, я про веб-клиента, это разные вещи
259. herfis 372 28.02.18 17:12 Сейчас в теме
(258)
я же не про тонкого клиента, я про веб-клиента, это разные вещи

А что именно вас напрягает из того, что спецом под веб-клиента заточено? Я такого особо и не припоминаю.
Разве что отказ от модальности, так это и так всегда считалось плохим тоном в UI, просто для веба это особенные неудобства создавало.
261. alexey.kutya 227 28.02.18 17:34 Сейчас в теме
(259) К модальности нет претензий, мне не нравится как в платформе 1С реализовали асинхронные вызовы. При их использовании код становится нечитабельным и теряется логика.
262. herfis 372 28.02.18 17:45 Сейчас в теме
(261)
мне не нравится как в платформе 1С реализовали асинхронные вызовы

Мне тоже не нравится. В других языках есть более удобные реализации. Только веб-клиент тут каким боком?
263. Evil Beaver 6822 28.02.18 17:46 Сейчас в теме
(262) Да, асинхрон в 1С убог и ужасен.
264. alexey.kutya 227 28.02.18 18:02 Сейчас в теме
(262) Для него то в основном и используются асинхронные вызовы, desktop приложение это не сильно затрагивает. А еще ограничения по работе с файлами в браузерах, тоже костыли в виде расширения работы с файлами. Я понимаю что это концепция web и ее надо было как-то реализовать в платформе. Я как разработчик против того, чтобы при такой реализации всего этого, конфигурации затачивались под веб-клиента. Я думаю, что это маркетинговый ход. Навряд-ли этим будет пользоваться большое число пользователей, а разработчикам жизнь они усложнили.
265. Evil Beaver 6822 01.03.18 10:30 Сейчас в теме
(264) Сервис 1С-в-облаке не взлетел бы, без веб-сценариев использования. Сделав веб-клиент и заточив типовые под него - 1С убивает очень много зайцев и они молодцы. Но асинхронный API все-равно убог и ужасен.
alexey.kutya; +1 Ответить
267. alexey.kutya 227 01.03.18 12:44 Сейчас в теме
(265)
Сервис 1С-в-облаке не взлетел бы, без веб-сценариев использования. Сделав веб-клиент и заточив типовые под него - 1С убивает очень много зайцев и они молодцы. Но асинхронный API все-равно убог и ужасен.


Про облачные решения согласен. Но есть сомнение в востребованности этих решений. Думаю, основные клиенты это мелкие компании. Навряд ли крупная, или даже средняя компания перейдет на аутсорс или сделает свое облако. В наших реалиях вопрос контроля и безопасности стоит на первом месте. И если, например, у 1С доля облачных решений 10 %, а все остальное это desktop приложения, то стоит ли затачивать систему под эти 10 % (цифры условные, но думаю соотношение примерно такое). Опять же, никому не навязываю, чисто IMHO :) . Это скорее мои размышления, полной уверенности в своей правоте у меня нет, но думаю такой взгляд тоже имеет право быть. Ну и надеюсь, когда-нибудь, они сделают нормальный асинхрон :) .
266. herfis 372 01.03.18 11:31 Сейчас в теме
(264) Да нет там никаких ужасных заточек под веб-клиента, которые "портят карму" тонкому клиенту. Вы придираетесь не по делу, ИМХО. Как существование расширения по работе с файлами сказывается на разработке? Да никак. Асинхронность, несмотря на то что ее появление было продиктовано не в последнюю очередь вебом, является общей концепцией разработки. И очень хорошо, что ее появление было простимулировано еще и потребностями веба. То, что ее неудобно реализовали, поленившись развивать синтаксис языка - это уже другой вопрос. Особенно ужасный спагетти-код появляется, если несколько последовательных асинхронных вызовов требуется. Настолько больно было на это смотреть, что я даже так извращался :)
alexey.kutya; +1 Ответить
268. alexey.kutya 227 01.03.18 14:21 Сейчас в теме
(266)
Особенно ужасный спагетти-код появляется, если несколько последовательных асинхронных вызовов требуется. Настолько больно было на это смотреть, что я даже так извращался :)


Да, в вашей статье это хорошо показано :). Понятно, что надо шагать в ногу со временем. Будем надеяться что 1С все таки реализует асинхрон с человеческим лицом :)
257. rusmil 216 28.02.18 16:25 Сейчас в теме
(255)
код становится просто нечитабельным
Код усложняется не только из-за управляемых форм, а еще из-за других факторов:
1. Фирма 1С стала продвигать кучу всяких сервисов 1СПАРК Риски, 1С:ДиректБанк, 1С-ЭДО и т.д, для работы которых в типовые конфигурации включаются большие блоки программного кода.
2. Наши "любимые" контролирующие органы автоматизируют свои системы и требуют от всех остальных интеграции и выгрузки данных в электронном виде в разных форматах (ЕГАИС, Маркировка, онлайн кассы по 54-ФЗ, Электронные больничные).

Поэтому в типовых конфигурации пухнут как на дрожжах.

только кому это нужно

Это нужно клиентам в первую очередь которые хотят зайти в базу 1С со своего iPad или iPhone, у которых распределенная структура услуги во Владивостоке, а бухгалтер в Красноярске.
260. alexey.kutya 227 28.02.18 17:26 Сейчас в теме
(257) Нечитабельным код становится отнюдь не из-за этого, а из-за особенностей разработки под веб-клиент, а также от способа ее реализации компанией 1С.
И много ли найдется желающих через iphone или ipad заходить в базу 1С через веб-клиент. Смогут ли они нормально работать там? Сомневаюсь. Это должно быть реализовано по другому, на уровне сервисов. Есть конечно какой-то сегмент, в котором будут использовать веб-клиент (облачные решения в основном), но думаю он не очень велик.
270. bayce 39 14.08.20 08:36 Сейчас в теме
Всегда было интересно "Переменные уровня модуля формы" зачем они вообще нужны и кто нибуть их использует?
271. Evil Beaver 6822 17.08.20 11:29 Сейчас в теме
(270) Конечно. А почему они вам непонятны?
272. bayce 39 17.08.20 11:39 Сейчас в теме
(271) смысл их использования? реквизит формы есть, зачем переменная нужна
273. Evil Beaver 6822 17.08.20 11:52 Сейчас в теме
(272) 1. Хранение на клиенте значений, которые не поддерживают миграцию между клиентом и сервером.
2. Хранение значений, которые не требуют миграции между клиентом и сервером
274. bayce 39 17.08.20 13:23 Сейчас в теме
(273) что это за значения не совсем понятно. И по поводу миграции. Переменная объявленная на клиенте живет на клиенте, как она мигрирует на сервер. Переменная объявленная на сервере хранит значение только один вызов сервера. После восзвращения на клиент она потеряет свое значение. Не понятно как использовать.
Оставьте свое сообщение
Вопросы с вознаграждением