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

В 1С на УФ можно из серверного кода формы передать форму как параметр в серверный общий модуль. И далее из серверного общего модуля в другой серверный общий модуль.
Но из клиенского кода формы и из клиентского модуля невозможно передать форму в серверный общий модуль.
Можно передать форму только из клиентского кода формы в серверный код формы.

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

Это крайне ужасное решение, которое провоцирует весь код писать в форме, не разнося ее по модулям. Нужно как можно скорее убрать это противоречивое ограничение.
1 Новый1сник2
 
02.09.21
18:14
(0) практическое применение какое?
2 Beduin
 
02.09.21
18:14
ПриСозданииФормыНаСервере() А тут тебе чего не хватает?
3 Гений 1С
 
гуру
02.09.21
18:15
(1) не осилил о чем? я думаю, 80% сталкивались с этой проблемой.
(2) это о другом
4 Новый1сник2
 
02.09.21
18:16
(3) откуда статистика ?
5 Новый1сник2
 
02.09.21
18:17
(2) присоединяюсь?
6 Гений 1С
 
гуру
02.09.21
18:20
(5) ну вот ты написал некую серверную процедуру Процедура(Форма) в общем модуле МойСервер.

А теперь хочешь эту процедуру вызывать из общего модуля Клиент, куда управление попадает из формы.

и получаешь ошибку невозможности передать форму на сервер.
7 Новый1сник2
 
02.09.21
18:22
(6) в чем проблема написать этот модуль в форме?
8 Andreyyy
 
02.09.21
18:24
В этот раз соглашусь с ТС !
Вот ни разу невнятное ограничение. Чем общий модуль хуже серверной процедуры формы ... Геноцид.
9 RomanYS
 
02.09.21
18:24
(6) на ОФ же как-то жили с невозможность передачи мутабельных значений, и здесь переживём
10 Новый1сник2
 
02.09.21
18:26
(8) может и так, но как часто это нужно?
11 Andreyyy
 
02.09.21
18:29
(10) Нечасто. Но попадалось здоровые штуки делать, и это нелепое (на первый взгляд) ограничение неприлично нервов попортило.
12 Жан Пердежон
 
02.09.21
18:30
контекстный серверный вызов и так передает форму
с чем должны были сталкиваться в (3) не ясно
зачем нужен лисапед в (0)?
13 Andreyyy
 
02.09.21
18:30
(9) С таким "оптимизмом" на лошадей недолго пересесть.
14 H A D G E H O G s
 
02.09.21
18:35
(0) Нахрен не нужно.
15 Гений 1С
 
гуру
02.09.21
18:36
//=== Форма ===

&НаКлиенте
Процедура Тест()
    Сервер.Обработка(ЭтаФорма); //Так не работает
    ТестНаСервере(); //Так работает
КонецПроцедуры

&НаСервере
Процедура ТестНаСервере()
    Сервер.Обработка(ЭтаФорма); //Так работает
КонецПроцедуры

//=== Общий модуль Клиент ===

Процедура Обработка(Форма) Экспорт
    Сервер.Обработка(ЭтаФорма); //Так не работает
КонецПроцедуры

//=== Общий модуль Сервер ===

Процедура Обработка(Форма) Экспорт
    //Тут желаемая обработка формы
КонецПроцедуры
16 Василий Алибабаевич
 
02.09.21
18:42
Опять ТС взял квадратные колеса и героически толкает свой лисапед по дороге?
17 PuhUfa
 
02.09.21
18:43
Передавать всю форму с клиента на сервер... фу таким быть -)
18 polosov
 
02.09.21
18:48
(0) Ты еще Объект.Товары передай в серверный метод.
Тебе из спортлото плевок прилетит.
19 Новый1сник2
 
02.09.21
18:48
(0) может в каком то частном случае это и нужно, но пока не сталкивался с таким, проблем написать в модуле формы нету
20 Ненавижу 1С
 
гуру
02.09.21
18:50
Иногда неудобно, согласен.
Но тут думаю вопрос в целом такой - сложные объекты не передать туда/обратно.
Каждый раз вызывая серверные етоды мы передаем туда весь контекст формы!(а  не только ссылку на нее)
Предположим, что можно и передадим две формы
На сервере вторая форма пусть получит первую как реквизит (или переменную модуля)

ВтораяФорма.РеквизитСудногоДня = ПерваяФорма;

теперь первая форма на клиенте закрылась. Если на клиенте нет на нее ссылок, то 1С имеет право ее положить в мусор. Не бегать же за подсчетом ссылок на сервер?
Теперь вызывает так:

ВтораяФорма.ПолучитьРеквизитСудногоДня().Обновить(); //простите что? оно же в мусоре!
21 Ненавижу 1С
 
гуру
02.09.21
18:52
+(20) именно поэтому всякие массивы передаются с клиента на сервер как копии своих значений, чтобы не заниматься подсчетом ссылок
22 Гений 1С
 
гуру
02.09.21
18:58
(17) как будто у тебя это при каждом серверном вызове не происходит? гггг
В общем, написал статью на эту тему: https://geniy1s.ru/nevozmozhnost-peredachi-formy-s-klienta-na-server/
23 Гений 1С
 
гуру
02.09.21
18:59
(20) в статье я описал, что при вынесении кода в общие модули с этой проблемой встретишься гарантированно. Это не неудобство, это БЕДА 1С
24 Жан Пердежон
 
02.09.21
19:03
обычно думаешь, как бы оптимизировать: где несколько вызовов в один объединить, где по значению передавать, где без контекста, а то и без серверного вызова
тс думает, как бы сделать, чтобы говнокодить было проще
25 Гений 1С
 
гуру
02.09.21
19:05
(24) если кодить проще, то результат лучше получается. Для этого 1с и была задумана, чтобы доступно и всерьез.
как видишь, из-за этой шняги все пишут формы не разбивая ее по модулям.
26 Гений 1С
 
гуру
02.09.21
19:06
Что вредит читаемости, повторному использованию кода и т.п.
обрати внимание, что в формах на ОФ было принято использовать модуль формы, в УФ это рудиментом стало.
27 H A D G E H O G s
 
02.09.21
19:08
Автор грешит контекстными вызовами. Стыд и срам.
31 Гений 1С
 
гуру
02.09.21
19:15
(27) при рефакторинге формы это нормально
32 BeerHelpsMeWin
 
02.09.21
20:18
(0) Да уж, какую х-ню только люди не придумают, чтобы не писать нормальный код.
33 Гений 1С
 
гуру
02.09.21
20:30
(32) я вот все хочу посмотреть на этот "нормальный код", но все скрывают, приходится самому статьи писать, просвещать дремучих
34 Guk
 
02.09.21
21:06
а ведь у этого "специалиста" какие-то клиенты есть ;) жалко их, чесслово...
35 acht
 
02.09.21
22:32
Боженьки, Геня пишет письма в спортлото против мутабельных объектов. Какая прелесть.
36 Вафель
 
02.09.21
22:34
(35) но формально то платформа это умеет
37 acht
 
02.09.21
22:37
(36) Неа. Это не передача на сервер, а синхронизация контекстов.
38 dangerouscoder
 
02.09.21
23:03
(34) жадные клиенты должны страдать
39 Гений 1С
 
гуру
03.09.21
07:44
(36) вот именно.
40 Гений 1С
 
гуру
03.09.21
07:44
(38) наблюдаю "стокгольмский синдром"
41 Mort
 
03.09.21
08:12
Мда уж. "Гении" не пытаются разобраться/почитать мануалы, они сразу, по своим поверхностным представлениям выдают шедевры космической глупости.

Вот пара предложений с ИТС из которых открывается вся абсурдность фантазий про "взять клиентскую форму и отправить в параметре на сервер":

"Т.к. данные формы доступны и на клиенте и на сервере, то основным хранилищем всех данных выступает сервер, просто потому что взаимодействие клиента и сервера инициируется только с клиента. Это означает, что в момент работы в памяти сервера находятся все данные формы, и доступ к ним осуществляется напрямую. На клиенте же имеется в общем случае частичное представление этих данных, при необходимости подгружаемое с сервера. При дальнейшей работе с формой изменения данных могут передаваться туда и/или обратно для синхронизации состояний клиента и сервера."
42 Ненавижу 1С
 
гуру
03.09.21
08:20
(40) я тебе проблему в (20) описал, но ты не вчитывался
43 Гений 1С
 
гуру
03.09.21
09:07
(41) и? любая существующая на клиенте форма существует на сервере. В параметре передается просто ссылка на эту форму. В чем парадокс? Почему эту ссылку нельзя передать с клиента на сервер? Алле? Что за отрицание реальности?
44 Гений 1С
 
гуру
03.09.21
09:09
(20) а в чем проблема? Если форма не закрыта, она существует на сервере и следовательно, на нее существует ссылка на клиенте. Даже если все ссылки на клиенте закрыты, если форма открыта, она существует и ее можно получить через коллекцию форм. Проблема надумана и отсосана из пальца
45 Гений 1С
 
гуру
03.09.21
09:09
любая ссылка на форму - это ссылка на контекст формы (на клиенте и на сервере). Пока форма жива, эта ссылка имеет смысл, после закрытия формы она обращается в ничто.
46 Ненавижу 1С
 
гуру
03.09.21
09:10
(44) ты вообще не читаешь, а если она закрыта и ссылок на нее нет на клиенте?
47 Ненавижу 1С
 
гуру
03.09.21
09:11
(45) в ничто, на клиенте закрыли форму - ее можно уничтожить? а ссылка на сервере есть...
48 Гений 1С
 
гуру
03.09.21
09:12
(47) при вызове команды закрытия формы она фактически закрывается (т.е. в интерфейсе закрывается). И все ссылки на клиенте и сервере обращаются в Неопределено. В чем проблема?
49 Гений 1С
 
гуру
03.09.21
09:13
(47) если ты именно про ссылки на созданные формы, то если форма создана и явно не уничтожена, она должна храниться в памяти. Она будет доступна в коллекции форм, если что.
50 Гений 1С
 
гуру
03.09.21
09:13
это будет избавлять от неряшливого кодирования.
51 Гений 1С
 
гуру
03.09.21
09:14
т.е. пока форма не уничтожена, она хранится в памяти, не вижу проблем.
52 Ненавижу 1С
 
гуру
03.09.21
09:15
(48) во первых это не так, никто не будет оббегать все объекты в поисках ссылок, это дорого
во-вторых, для этого понадобилось внезапно бы лезть еще раз на сервер

(49) внезапно мнение поменялось

ты вообще знаешь как устроены системы с управляемой памятью и сборщиком мусора?
53 Гений 1С
 
гуру
03.09.21
09:15
Способ вызывать форму из клиента через функцию-посредник формы есть. значит, платформа может это делать, но не делает.
В итоге провоцируется длинный монокод формы.
54 Гений 1С
 
гуру
03.09.21
09:16
(52) ты что-то не уловил. Никакого подсчета ссылок. Нет явной команды уничтожения формы - форма хранится.
(52) как сборщики мусора устроены. знаю. Теперь расскажи, как ты это применяешь для форм.
55 Ненавижу 1С
 
гуру
03.09.21
09:17
(53) да, но только в контексте одной формы, ты войдешь в этом контексте на сервере и выйдешь из него в нем же, другие формы на сервере ты так не изменишь
56 acht
 
03.09.21
09:17
(54) Геня. У тебя доступ на партнерский есть?
57 Гений 1С
 
гуру
03.09.21
09:18
(56) нету. (55) ошибаешься, в любой форме, где есть такая процедура-затычка
58 Cyberhawk
 
03.09.21
09:19
Подключили на форме 2 обработчика ожидания. В них передаем форму в разные методы (или даже модули) на сервер. Там параллельно с формой что-то делается.
Как синхронизировать потом на клиенте эти изменения?
59 acht
 
03.09.21
09:19
(57) > нету
А ты делал что нибудь, для его получения, клоун?
60 Гений 1С
 
гуру
03.09.21
09:20
(58) платформа стандартно все делает, в чем проблема? Для тебя удивительно, что все формы синхронизируются на клиенте и сервере.
Мы передаем не форму, а ссылку на нее. Форма всегда есть на клиенте и сервере.
61 acht
 
03.09.21
09:21
(59) + Вот это вот твоё отсутсвие доступа очень хорошо характеризует твое истинное желание что-то понять и исправить.

Ггг, в айти кризис.
62 acht
 
03.09.21
09:25
(60)

&НаКлиенте
Перем МойНаборДанных Экспорт


Удачи в синхронизации
63 Гений 1С
 
гуру
03.09.21
09:32
(61) там доступ платный. И особого смысла не вижу. Обычно там хоронят проблемы
64 Гений 1С
 
гуру
03.09.21
09:32
(62) изивини, твой пассаж не понял
65 acht
 
03.09.21
09:36
(63) > И особого смысла не вижу
Браво.
66 Гений 1С
 
гуру
03.09.21
09:38
(65) ну может ты мне его откроешь? 1С не заинтересована в обратной связи, она анально огорожена от критики, даже конструктивной. даже от багов.
67 Ненавижу 1С
 
гуру
03.09.21
09:39
(60) "Мы передаем не форму, а ссылку на нее"
это прям ошибка-ошибка, мы синхронизируем формы, а не просто ссылки передаем
при передачи других объектов на сервер - мы делаем копию объекта, а не ссылку передаем

Вот пример для демонстрации:



&НаКлиенте
Процедура Команда1(Команда)
    Массив = Новый Массив;
    МассивНаКлиенте(Массив);
    Сообщить(Массив.Количество());  // 1
    
    Массив = Новый Массив;
    МассивНаСервере(Массив);
    Сообщить(Массив.Количество());  // 0
КонецПроцедуры

&НаКлиенте
Процедура МассивНаКлиенте(Знач Массив)
    Массив.Добавить(42);
КонецПроцедуры

&НаСервере
Процедура МассивНаСервере(Знач Массив)
    Массив.Добавить(42);
КонецПроцедуры
68 Asmody
 
03.09.21
09:58
(60) [Форма всегда есть на клиенте и сервере] - с каких это пор "форма всегда есть на сервере"?
69 Конструктор1С
 
03.09.21
10:03
(25) нет, 1с была задумана не для говнокодинга, как бы тебе этого не хотелось
70 Конструктор1С
 
03.09.21
10:04
(26) >>Что вредит читаемости, повторному использованию кода

Читаемости вредит твоя манера делать наркоманскую архитектуру
71 Dmitrii
 
гуру
03.09.21
10:22
(34) >> у этого "специалиста" какие-то клиенты есть ;) жалко их, чесслово.

Мало того. У него наверняка и последователи есть, которые читают его статьи и пользуются этими "откровениями".
72 lodger
 
03.09.21
10:39
(25) это совершенно нормальная архитектура К-С взаимодействия. и точка перехода контекста формы в самой форме, это тоже совершенно нормально. а ТС наркоман и расписывается в этом тут (22)
73 lodger
 
03.09.21
10:40
(71) надо пошерстить его ресурс, вычленить кей-поинты и спрашивать у соискателей что они про это думают. легкий способ отсеять говнокодеров и коекакеров.
74 Конструктор1С
 
03.09.21
10:44
(71) самое досадное, что этот рукозад объявил себя в домике, и ничего слышать не хочет
75 acht
 
03.09.21
11:11
(66) > она анально огорожена от критики

Чой-то ржу. Ты на себя-то давно смотрел, родной? =)
76 Гений 1С
 
гуру
03.09.21
11:18
(68) что-то не так?
77 Гений 1С
 
гуру
03.09.21
11:19
(72) ты забываешь, что заплаткой я получаю желаемый результат, проблема не в архитектуре КС, а в искусственных ограничениях. Наблюдаю стокгольмский синдром, когда программисты восхваляют свои цепи
78 Ненавижу 1С
 
гуру
03.09.21
11:26
(77) наблюдаю выборочный подход к ответам на поставленные вопросы по существу
79 BeerHelpsMeWin
 
03.09.21
11:28
(73) Я уже неоднократно говорил, что его сайт отлично подходит для собеседований. Берешь любую статью, показываешь соискателю и спрашиваешь, что сделано не так и как надо сделать правильно. Мало где в интернете есть такое количество говнорешений в открытом доступе.
80 ildary
 
03.09.21
11:33
(79) Опасная идея - соискатель рискует лопнуть от смеха и фейспалма.
81 VladZ
 
03.09.21
11:40
Я так и не понял, зачем это автору.
82 Mort
 
03.09.21
11:43
(81) Любой плохой код рано или поздно натыкается на какие-то платформенные/логические ограничения. Гена вместо приведения кода к логике, хочет сломать эти ограничения.
83 Гений 1С
 
гуру
03.09.21
12:10
(82) логика простая - нужно сделать рефакторинг. Иногда нужно передавать форму целиком, чтобы настроить ее элементы, например. Вопросы, юнга?
84 Конструктор1С
 
03.09.21
12:11
(77) вся история развития программирования связана с ограничениями. Изобрели XML - по сути ограничение, зажимает в использование текстового формата определенной структуры, на деле - огромный прорыв. Без XML различные системы с трудом обменивались информацией, ибо каждый городил кто во что горазд, с XML смогли обмениваться данными самые разношерстные системы. Изобрели реляционные БД, SQL, они зажимают в структурирование данных до таблиц, на деле - огромный прорыв. Без РБД данные хранили кто во что горазд, было почти невозможно достигнуть многопользовательской работы с данными... Также и платформа 1С - кладезь полезных ограничений.
Но вот выбежал рукожоп с горы, и давай рассуждать про вред ограничений
85 Гений 1С
 
гуру
03.09.21
12:11
(78) какие вопросы остались не отвеченными. Подсчет ссылок не нужен. Еще вопросы?
86 Гений 1С
 
гуру
03.09.21
12:11
(81) ну например, чтобы вынести код формы в общие модули. простейшее
87 Гений 1С
 
гуру
03.09.21
12:12
(84) да, но это ограничение абсолютно искусственно, просто кому-то из архитекторов было лень почесаться в итоге имеем ягодицы.
88 lodger
 
03.09.21
12:13
(86) выноси, плохому танцору сам знаешь что мешает.
89 Maniac
 
03.09.21
12:18
Суть глобальных модулей это выносить код который используется многократно во множестве модулей.
А не для того чтобы ты какую то сраную форму выносил.
90 Конструктор1С
 
03.09.21
12:19
(86) скажи спасобо всем этим ограничениям. Благодаря им твои поделия хотя бы запускаются. Пусти тебя в чистое поле, наперевес с языком программирования общего назначения, ты такую аритектурную наркоманию нагородишь, которая даже не сможет запуститься. Благодаря "ограничениям" программировать могут даже такие рукозады, как ты
91 Maniac
 
03.09.21
12:21
(90) у Гени нет подделок даже. за 10 лет только куча никому не нужного мусора.
92 Гений 1С
 
гуру
03.09.21
12:21
(90) стокгольмский синдром детектед.
(91) а они должны быть?
93 Mort
 
03.09.21
12:23
Допустим Гена стал главным разработчиком платформы и решил всё-таки запилить передачу формы из клиента в параметрах. Сейчас покажу как он обломается.

Пример1:

Форма.Реквизит1 = 10;
СерверныйМодуль.МояПроцедура(Форма);

Гена предлагает на сервере поймать ID формы или как он пишет "Ссылку". Но тогда все клиентские изменения не попадут на сервер (вот это: Форма.Реквизит1 = 10;), т.е. если платформа видит передачу формы параметром, она должна сначала её синхронизировать с объектом формы на сервере. И это мы ещё не передали массив или структуру с формами внутри.

Дальше, в общем модуле:

Процедура МояПроцедура(Форма)

Форма.Реквизит1 = 30;

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

Форма на сервере изменилась, а когда эти изменения попадут в клиентскую форму? т.е. платформа должна проводить синхронизацию и при возвращении?

И таких вопросов полно. Только Гений их не видит. Глаза заплыли "гениальностью" ))
94 Гений 1С
 
гуру
03.09.21
12:24
(93) Ошибка "т.е. если платформа видит передачу формы параметром, она должна сначала её синхронизировать с объектом формы на сервере"
При передаче ссылки на форму с клиента на сервер происходит синхронизация клиентской и серверной формы. Дальше не читал.
95 Гений 1С
 
гуру
03.09.21
12:24
Еще раз, чтобы не было домыслов - уже сейчас все это прекрасно работает через заплатку. Речь только о том, чтобы это работало без костыля
96 Конструктор1С
 
03.09.21
12:25
(92) наркоман детектед
97 acht
 
03.09.21
12:27
(93) Процедура МояПроцедура(Знач Форма) =)
98 Mort
 
03.09.21
12:28
(95) Кстати да, насчет заплатки. Я думал там действительно гениальное решение по передаче данных формы на сервер или какой-нибудь грязный хак для работы с экземпляром формы на сервере в обход. А там тупо обычный контекстный переход на сервер срущий в модуль формы. Если можно писать в модуль формы, надо туда не это говно запихивать, а нормальный код по работе с формой на сервере с её логикой.
99 Конструктор1С
 
03.09.21
12:28
Нормальные программисты всегда стремятся к порядку, единообразию. Ты стремишься к анархии. Таким не место в программировании
100 Конструктор1С
 
03.09.21
12:33
(95) твоя проблема в том, что ты задачи решаешь ректально. Если бы до тебя дошел архитектурный принцип, согласно которому бизнес-логика не должна зависить от интерфейса, то надобность в проталкивании формы через анус отпала бы сама собой
101 Maniac
 
03.09.21
12:37
На самом деле я не понял что Геня изобрел. в типовой полно глобальников где передается форма.
У меня даже есть такие процедуры некоторые - потому что например условные оформления для формы можно только на сервере программно управлять.
А в типовой вообще это на раз два.
Что Геня придумал - вообще не понял. очередной припадок видимо гениальности.
102 Maniac
 
03.09.21
12:39
О придумал параметр передаваемый в процедуре? Типа???

&НаСервере
Процедура УстановитьУсловноеОформлениеСтрок(Объект,ФормаОбъекта,ЭлементОбъекта,ЭлементФормы) Экспорт
103 Вафель
 
03.09.21
12:41
(93) не нужно передавать ссылку на форму на сервер.
форма живет и на сервере и на клиенте.
те при передаче формы с клиента на сервер, должна придти ссылка на серверную часть
104 Вафель
 
03.09.21
12:42
сейчас конечно это невозможно ибо пытается на сервер попасть именно клиентская часть.
105 Maniac
 
03.09.21
12:45
Из клиенской процедуры - создается серверная процедура.
После того как форма синхронизировалась с серверной частью там уже можно любые глобальники юзать.
106 Maniac
 
03.09.21
12:49
в том числе в которых передавать параметр формы, для того чтобы обращаться к реквизитам и данным в этих реквизитах как вздумается.
Иногда можно делать просто глобальные серверные процедуры, в которые передавать структурой любые реквизиты формы и работать с ними.

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

Пример.
Есть реквизит формы табличный документ.

Есть глобальная процедура которая формирует отчет выводимый в этот табличный документ (поле формы).

Без контекста можно из клиента создать серверную процедуру без контектса, в которой будет в своюб очередь глобальная процедура. в параметр которой впихнут реквизит формы.
107 Maniac
 
03.09.21
12:51
&НаСервереБезКонтекста
Процедура СформироватьОтчетПоЦенамСервер(ТаблицаОтчета,ПараметрыЗапроса)
    
    МегаПомощникПродажСервер.СформироватьОтчетПоЦенам(ТаблицаОтчета,ПараметрыЗапроса);
    
КонецПроцедуры

&НаКлиенте
Процедура СформироватьОтчетПоЦенам()
    
    ПараметрыЗапроса = Новый Структура;
    ПараметрыЗапроса = ПолучитьПараметрыДетальногоЗапроса(ПараметрыЗапроса);
    СформироватьОтчетПоЦенамСервер(ТаблицаЦеныНоменклатуры,ПараметрыЗапроса);  
    
КонецПроцедуры

ТаблицаЦеныНоменклатуры - реквизит формы с типом ТабличныйДокумент.
108 Ыцшесрук
 
03.09.21
12:51
Геню, похоже, нужно вводить в анналы истории как эталонный пример синдрома Даннинга-Крюгера.
109 acht
 
03.09.21
12:57
(108) > вводить в анналы
Да его уже давно и по самые помидоры. Сейчас народ просто прикидывает, как его в мирных целях использовать можно, например (73). Может и сгодится на что...
110 Ненавижу 1С
 
гуру
03.09.21
15:20
опять ждать Free RAD?
https://geniy1s.ru/developments-soft/free-rad/
111 Гений 1С
 
гуру
03.09.21
15:24
(101) это говорит о твоем уровне, как программиста
112 Гений 1С
 
гуру
03.09.21
15:25
(110) Базуху жи
113 Maniac
 
03.09.21
15:34
FREE RAD
Миссия проекта: дать программистам-разработчикам инструмент для быстрой разработки приложений (RAD — Rapid Application Development), связанных с базами данных.


Человек пишет инструмент для разработки приложений, тот кто ни одного приложения в жизни не создал)) Тем более коммерческого))
114 Maniac
 
03.09.21
15:38
https://geniy1s.ru/developments-1s/1s-data-exchanges/csv-xml-translation/

"Для считывания CSV использовался не очень быстрый метод считывания файла в строку с последующим разбором отсюда. Метод реально медленный на 72 Мб файле работал 10 минут. Но работает правильно, т.к. обрабатывает переносы строк."

Геня научился CSV читать!!))) Открыл АМЕРИКУ.
но 10 минут!

Геня у меня обработка чтения CSV есть которая файл в 1 гиг с 15 000 000 строк - за 8 секунд читает.
115 Maniac
 
03.09.21
15:39
А за минуту может создать новый файл в новыми ценами из этого первого файла.
116 lodger
 
03.09.21
15:44
(114) ты просто не понимаешь всего гения.
117 Гений 1С
 
гуру
04.09.21
17:29
(114) я надеюсь перенос строки в кавычках она отрабатывала?
118 acht
 
04.09.21
17:30
(117) Подожди. Маня воюет с иностранцами в интернете, ему не до кода =)
119 Гений 1С
 
гуру
04.09.21
22:02
(118) с украинцами штоли? У него ж оттедова конкуренты
120 dmitryds
 
04.09.21
22:05
(94) Ты ведь вроде сайтами занимался, должен понимать, что на клиенте не может быть ссылки на форму (как при работе на сервере)
121 МнеТолько Спросить
 
05.09.21
05:07
(72) >ТС наркоман и расписывается в этом тут
Тоже мне новость

(77)Ты лучше расскажи ты от цепей ограничения использования ОРМ 1с уже отказался? Ты вот вот(прям уже почти готово было) хотел выпустить набор обработок которые не будут использовать базу 1С а будут использовать, любые другие БД и за 12 копеек можно было получить полный функционал работы с 1С и даже какой-то способ перевести свои конфигурации с БД которую юзает 1С на ту какая тебе нравится.  Как там  дела? Готово?


(91)Видел на ИС публикацию когда гений в 1с не смог в цикле сложить две строки и решил использовать для этого эксель
122 Гений 1С
 
гуру
05.09.21
09:49
(120) шта? форма живет на сервере и клиенте и синхронизируется. Конечно же, ссылка на форму может быть (или гуид формы, или как не назови). Что за бред вы пишите? при чем сайты к УФ?
123 Гений 1С
 
гуру
05.09.21
09:50
(121) что такое ОРМ? Базуха - хорошая тема, но я пока увлечен ЕБОША, т.е. вкалыванием
124 Юрий Лазаренко
 
05.09.21
10:15
(0) Крайне ужасные решения появятся, если в платформе будет возможность передавать все данные формы при каждом вызове серверного общего модуля. Подробности вот тут посмотри: https://youtu.be/PvQX0H28S_M?t=851
Если кратко: каждый такой вызов будет серверным контекстным. То есть, все данные формы превращаются в структуру (условно "структуру"), передаются на сервер, там актуализируются; далее выполняется какое-то действие и все конвертация и передача происходит в обратном порядке. Пример с лагерем и спичками тут подходит прекрасно. Сейчас для того, чтобы выполнить какие-то действия на сервере, не все заморачиваются выбором типа вызова: серверный контекстный или серверный бесконтекстный. Нагрузка на сервер при этом различается на порядки, то есть в сотни раз. Для передачи контекста формы на сервер сейчас надо вызвать серверную процедуру формы. Это "лишнее" телодвижение, которое хоть как-то отбивает желание 1Сника сделать несколько контекстных серверных вызовов там, где можно обойтись одним. Если же общие серверные модули можно будет вызывать из любого места формы, то скоро от быстродействия этой формы не останется ничего.
125 Гений 1С
 
гуру
05.09.21
11:25
(124) при каждом не надо. форма и так уже существует на сервере
126 Гений 1С
 
гуру
05.09.21
11:25
Если это сложно определить платформе, можно указать директиву препроцессора
127 Ненавижу 1С
 
гуру
05.09.21
11:30
(125) а толку? Она на клиенте возможно изменилась и её надо синхронизовать и потом в обратную сторону
128 Гений 1С
 
гуру
05.09.21
11:32
(127) послушай, я делаю все то же самое через заплатку в форме, почему это не может сделать платформа. Ну можно изменить и в обратную сторону, в чем проблема?
129 lucbak
 
05.09.21
11:36
(124) Цитата "Сервер не может вызвать клиента даже если очень этого захочет" (возможно не дословно, но смысл именно такой был). Ставим СВ и о чудо - оказывается сервер может вызвать клиента :) Я конечно не программист, но складывается ощущение, что что-то не то в консерватории...
130 Гений 1С
 
гуру
05.09.21
11:45
(129) мне не нужно вызывать клиента с сервера, мне нужно вызывать сервера с клиента.
А что такое СВ?
131 Ненавижу 1С
 
гуру
05.09.21
11:49
(128) твоя заплатка не сработает если нужно передать две формы
132 lucbak
 
05.09.21
11:56
(130) Сервер Взаимодействия
133 Ненавижу 1С
 
гуру
05.09.21
12:08
(129) ну это может быть постоянный опрос клиентом сервера в отдельном потоке
134 lucbak
 
05.09.21
12:19
(133) Все может быть, но факт остается фактом - если нельзя, но очень хочется то можно все. Есть много вещей которые я не понимаю (относительно платформы) - почему можно гонять с клиента на сервер (и наоборот) массивы,списки,структуры,соответствия, но по какой-то странной логике нельзя - таблицы (разумеется я могу разложить ее в массив структур и т.д.), но ...
135 Гений 1С
 
гуру
05.09.21
12:51
(131) две не нужно.
136 Гений 1С
 
гуру
05.09.21
12:52
(134) ну вот о том и речь, что нужно убирать странности и приводить в норму
137 Юрий Лазаренко
 
05.09.21
12:55
(129) Слайд 33, мелким шрифтом внизу: https://youtu.be/PvQX0H28S_M?t=1034
138 Ненавижу 1С
 
гуру
05.09.21
12:58
(134) кажется я уже писал в (67) - потому что объекты не передаются так с клиента на сервер как ссылки, а происходит полная сериализация/десериализация объекта, фактически создается копия
они решили пойти компромисс и сделать возможной передачу относительно легких по структуре объектов
я не говорю, что решение идеальное
вообще все выглядит довольно странным - просто запомните, как неправильные глаголы, но что есть, то есть
139 Юрий Лазаренко
 
05.09.21
13:01
+(137) Необязательно даже СВ ставить, можно и ВК + сокеты.
https://www.youtube.com/watch?v=5le3A2f3QjM
140 lucbak
 
05.09.21
13:01
(137) Не прочитал сразу (сори). Другими словами, сделать можно все, но 1С это просто не нужно.
(138) Да я "запомнил" и смирился уже, но осадочек как говорится остался :)
141 Юрий Лазаренко
 
05.09.21
13:04
(140) Платформа и так не сильно быстрая, нагружать ее дополнительными фишками - это утяжелить еще. К тому же, зачем весь дополнительный функционал включать в платформу и отдавать просто так, если можно продавать за дополнительные деньги, как СВ. Маркетинг и разные версии за разные деньги никто не отменял.
142 Ненавижу 1С
 
гуру
05.09.21
13:04
(140) а с формой так нельзя, нельзя просто взять и развернуть копию, а надо найти этот объект и синхронизовать
вообще форма на клиенте и на сервере в каком-то смысле объекты разных типов, просто синхронизированные друг с другом
143 Юрий Лазаренко
 
05.09.21
13:08
(142) И тут важно помнить, что они не постоянно синхронизированные. Если форму открыть и в элемент ввода типа "Число" ввести цифру 2, то на клиенте цифра появится, а на сервере нет. Для синхронизации необходимо сделать контекстный серверный вызов (чаще всего). А серверный вызов - это суть разобрать/собрать весь лагерь, чтобы сходить за спичками. И чтобы таких вызовов было поменьше и платформа хоть как-то ворочалась и не погибла вместе с сервером, 1С сознательно не выполняет пожелалку ТС из (0). И правильно делает.
144 Юрий Лазаренко
 
05.09.21
13:13
(134) Кстати, в первых версиях управляемых форм, в 2008 году, таблица значений была доступна на клиенте. То есть, в управляемой форме в процедуре &НаКлиенте можно было написать
МояТЗ = Новый ТаблицаЗначений
и это не было ошибкой. В следующих релизах это стало невозможным.
145 Гений 1С
 
гуру
05.09.21
13:15
(140) вот потому я и оставил хотелку, чтобы показать 1с, что нам, простым программистам нужно
146 lucbak
 
05.09.21
13:17
(141) >>Платформа и так не сильно быстрая
Это одна из проблем 1С (вместо того, что бы делать очередные мало кому нужные бантики) могли бы заняться ее ускорением, но нет...
(144) Забавно.
147 Юрий Лазаренко
 
05.09.21
13:23
(146) 8.3 ускорить практически невозможно (ИМХО, конечно)
148 acht
 
05.09.21
13:40
(145) > что нам, простым программистам
Геня, ты с собой определись уже - ты простой программист или не простой?
149 Ненавижу 1С
 
гуру
05.09.21
13:44
(148) альтернативно одаренный
150 Вафель
 
05.09.21
14:22
А какая задача решается?
Скорее всего тут плохой дизай формы. Но сама 1с мало думает о доработках. Но уже больше чем в обычных формах
151 MyNick
 
05.09.21
14:43
(0)Гений, что-то я не понял, а накуа тащить контекст всей формы в общий модуль?
Для манипуляции со всей формой используется модуль формы.
Для манипуляции с данными формы - передавай их в структуре параметра фунции общего модуля.

Для чего эти костыли, "кулибин" ты наш?
Чтобы было проще говнокодить?

Обрисуй конкретную задачу, где это тебе надо и мы скажем почему тебе это не надо.
152 Ненавижу 1С
 
гуру
05.09.21
14:52
(151) ну какой-то смысл есть
вот например мне понадобилось и  форме заказа клиента и заказа на перемещение добавить колонки остатки/резервы по складу, объем и вес
они общие для обеих форм, так не копировать же код два раза?
153 acht
 
05.09.21
14:59
(152) Там из "скопированного два раза кода" будет ровно одна серверная контекстная процедура из ровно одной строки, вызывающей общий серверный модуль.
154 MyNick
 
05.09.21
15:06
(152) Так чтоли?


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //ОбщийДляФорм.ДобавитьЭлементы(Элементы);
КонецПроцедуры

// ИЛИ С КЛИЕНТА
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ДобавитьЭлементы();
КонецПроцедуры

&НаСервере
Процедура ДобавитьЭлементы()
    ОбщийДляФорм.ДобавитьЭлементы(Элементы);
КонецПроцедуры


/////////////////// ОБЩИЙ МОДУЛЬ ///////////////
Функция ДобавитьЭлементы(Элементы) Экспорт
    
    Декорация = Элементы.Добавить("Декорация1", Тип("ДекорацияФормы"));
    Декорация.Заголовок = "Текст..";

КонецФункции
155 Ненавижу 1С
 
гуру
05.09.21
15:07
(154) что-то в этом духе
Ну там еще расчет данных при добавлении/изменении товаров
156 MyNick
 
05.09.21
15:11
(155) ...вооот... Т.е. Гении в одной функции хотят делать фарш из мух и котлет.
Это и есть говнокод.
В одной функции получаем условия для отображения элементов и прочей манипуляции с ними.
В другой - формируем интерфейс.
И это правильно. Получение и обработка данных и их отображение должны располагаться в разных местах.
Но гениям это мешает жить.
Они целые статьи пишут и изобретают велосипеды с квадратными колесами.
Лишь бы у последователей, читающих их божественный код, кровь из глаз шла.
157 Гений 1С
 
гуру
05.09.21
18:21
(152) вызовешь отдельно для каждой формы
158 Гений 1С
 
гуру
05.09.21
18:22
(156) почитай про вынесение кода формы в модули, потом пиши с умным видом.
159 Гений 1С
 
гуру
05.09.21
18:22
(150) например, вынесение кода формы в модули
160 Гений 1С
 
гуру
05.09.21
18:22
(151) почитай статью не по диагонали, думаю, поймешь.
161 Гений 1С
 
гуру
05.09.21
18:23
(146) в данном случае скорость не важна, важнее наличие функционала, чтобы не писать заплатки (функции-посредники)
162 Гений 1С
 
гуру
05.09.21
18:23
ок. пусть 1с сделает встроенную функцию-посредник, если она не может в вызов серверного модуля с формой с клиента
163 Ненавижу 1С
 
гуру
05.09.21
18:47
(161) если параметры передавать через запись в справочник, то да, скорость не важна
164 acht
 
05.09.21
19:34
(162) > пусть 1с
Повелеваешь?
165 Конструктор1С
 
05.09.21
19:48
(158) Геня, бизнес-логика и интерфейс должны быть разделены. Бизнес-логика не должна зависеть от интерфейса. Ты когда уже программировать научишься? То, чем ты сейчас занимаешься, сложно назвать программированием, это кодошлёпство
166 Конструктор1С
 
05.09.21
19:52
Елитный говнокод. Смесь индусского с наркоманским

#Область ДляВызоваССервера
&НаСервере
Процедура ПроцедураНаСервере(ИмяМетода, П1 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П2  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П3  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П4  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П5  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a") Экспорт
    П = "";
    Если П1 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
        П = ", П1";
        Если П2 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
            П = П + ", П2";
            Если П3 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                П = П + ", П3";
                Если П4 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                    П = П + ", П4";
                    Если П5 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                        П = П + ", П5";
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
    Выполнить(ИмяМетода + "(ЭтаФорма" + П + ")");
    
КонецПроцедуры

&НаСервере
Функция ФункцияНаСервере(ИмяМетода, П1 = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П2  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П3  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П4  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a", П5  = "3b779cb1-3a77-4984-8e2b-8c7960a3863a") Экспорт
    Р = Неопределено;
    П = "";
    Если П1 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
        П = ", П1";
        Если П2 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
            П = П + ", П2";
            Если П3 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                П = П + ", П3";
                Если П4 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                    П = П + ", П4";
                    Если П5 <> "3b779cb1-3a77-4984-8e2b-8c7960a3863a" Тогда
                        П = П + ", П5";
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
    Выполнить("Р = " + ИмяМетода + "(ЭтаФорма" + П + ")");
    Возврат Р;
КонецФункции
#КонецОбласти
167 Конструктор1С
 
05.09.21
19:55
Пойду глаза прополощу
168 Гений 1С
 
гуру
05.09.21
22:28
(165) 0 бит, прости. Есть задачи по дизайну формы, они связаны с интерфейсом, а не логикой, их хочется и нужно выносить в общие модули
169 DropDead
 
06.09.21
03:24
Я все ещё не понимаю, зачем вы за гения работу делаете?
Он вам башляет?
170 Конструктор1С
 
06.09.21
06:40
(168) в UI/UX ты тоже полное дно, поэтому у тебя и рождаются перлы типа (0)
171 Юрий Лазаренко
 
06.09.21
09:50
(161) Конечно, "скорость не важна". Подумаешь - сервак положили.
172 Ненавижу 1С
 
гуру
06.09.21
10:02
(171) в ларьках клиентов фиксина нет серваков
173 acht
 
06.09.21
10:10
(172) > нет серваков
гггг, 0 бит, в айтикризис, фирма 1С не может, вот вам статья как я с ней борюсь.

=)
174 sikuda
 
06.09.21
11:29
(171) Гений 1С как осел в Шреке - повод лучше разобраться...
175 Конструктор1С
 
06.09.21
12:04
(174) если бы Г1С писал для себя, то фиг бы с ним. А так придёт ведь после него прогер, который будет вынужден иметь дело со всей той наркоманией, которую Г1С нагородил
176 acanta
 
06.09.21
12:07
В последних версиях типовых было уже не модно с такими параметрами как в (166), рекомендовалось структуру одну в качестве параметра или максимум три параметра - структура, форсмажорный отказ и что то на ответ по аналогии с функцией.
177 acanta
 
06.09.21
12:09
То есть вся лирика с гуидами в одной переменной, и еще мухи с котлетами как необязательные.
178 BeerHelpsMeWin
 
06.09.21
13:00
(175) Это будет отличный повод запросить больше денег. Но есть одна проблема - у Гениных клиентов-нищебродов таких денег нет.
179 MyNick
 
06.09.21
13:54
(158), (159), (160).
Твои гениальные мысли я читал. И не по диагонали.
Понятно, что ты хочешь. Даже понятно, зачем.
Даже сталкивался с такой потребностью сам, когда начинал осваивать УФ.
На первых порах плевался как и ты (вот же гады, не дают по быстренькому нафигачить "чтобы работало").
Но осознание позже, с опытом пришло - что так делать кака.
И почему - написано в (165) например.

(166) согласен... вот это жесть так жесть.
180 Maniac
 
06.09.21
15:42
зачем Геня дарит миру) то что никому не нужно?
У него даже нет ни одного массового решения которое кому либо было нужно, я уже молчу про коммерческие.

Получается он на ком то из клиентов эксперементы ставит! коверкает до ужаса. Потом уходит. Вместо него приходят люди и окуевают!
Так получается?
181 acht
 
06.09.21
17:10
(180) Потому что у него ничего больше нет. И вот этим последним он делится с нами, которые окуевают даже не приходя у его клиенту. Получается так.
182 Гений 1С
 
гуру
06.09.21
17:50
(179) Гуру, преклоняю перед вами колени, если конечно не пи...., ой, не врете... а в 165 у тебя общие слова.
183 H A D G E H O G s
 
06.09.21
23:12
Вот чего действительно не хватает в УФ - так это прямого вызова методов модулей менеджеров с клиента.
184 H A D G E H O G s
 
06.09.21
23:13
Ты не сможешь вызвать код вот так с клиента
КодыВидовЛицензируемойДеятельности=Справочники.АСФЛицензии.ПолучитьКодыВидовЛицензируемойДеятельности();
185 RomanYS
 
06.09.21
23:23
(183) так если самих менеджеров не на клиенте, то и их модулей логично нет. Чем общий клиентский модуль не устраивает?
186 acanta
 
06.09.21
23:24
(184) как бы да, это был первый пункт рекламной кампании новой 8ки для семерочников.
187 acanta
 
06.09.21
23:26
Поэтому семерочникам (у которых не было) проще переходить на УФ (где тоже уже нет), чем на ОФ (где все есть, но как то не очень получается).
188 H A D G E H O G s
 
06.09.21
23:52
(185)
ПредопределенноеЗначение("Перечисление.АСФВидыЛицензируемойДеятельности.ЗакупкаЭСПофармакопейнымСтатьямБолее200дклВГод")
189 Ненавижу 1С
 
гуру
06.09.21
23:54
(185) а чем общий серверный модуль в этом случае отличается от модуля менеджера?
190 RomanYS
 
07.09.21
00:09
(188) ну да, сами перечисления недоступны, а значения доступны. Может и можно было красивее сделать. Раньше от этого тоже подташнивало, а теперь привык)
(189) ну должна же где-то быть граница. Все метаданные тащить на клиент, тоже так себе идея
191 H A D G E H O G s
 
07.09.21
00:18
(190) В начальных 8.2 этой функции не было, приходилось в ПриСозданииНаСервере на клиент тащить ссылки. Потом впилили костыльчик.
192 Конструктор1С
 
07.09.21
05:02
(191) так не нужно писать бизнес-логику на клиенте, и не будет такой уродливой надобности. Форма впринципе не должна заведовать бизнес-логикой, только отвечать за интерфейс
193 Ыцшесрук
 
07.09.21
05:27
Геня старательно вызывает на себя ковшики с какахами и методично ими обмазывается :)
194 Гений 1С
 
гуру
07.09.21
08:12
(193) я за истену.
195 luter-89
 
07.09.21
09:04
(33) Есть такая штука как БСП, может почерпнешь что-то новое
196 Гений 1С
 
гуру
07.09.21
12:44
(165) а мы где говорили про бизнес-логику? Клиент как раз и обращается на сервер, чтобы что-то однотипно отрисовать, т.е. сделать настройки интерфейса.
197 acht
 
07.09.21
12:57
(196) А пользователь входит в программу чтобы поработать.
198 H A D G E H O G s
 
07.09.21
13:01
Ловите любителя подергать за сервер в (192)!
199 acht
 
07.09.21
13:13
(198) А он прав.

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

    Если ЕстьВозможностьУвольнятьСотрудникаНаСервере() Тогда
        УволитьСотрудникаНаСервере();
    КонецЕсли;

А второй геня пишет:
    Форма = ПолучитьФорму(...);
    Форма.Объект.Сотрудник = НенавистныйДиректор;
    Форма.УволитьСотрудникаНаСервере();

И все, бизнес логика пошла лесом, потому что геням так удобно.
200 acht
 
07.09.21
13:15
А потом статью пишет и на форумах ссылки раскидывает - посмотрите, мол, какой я молодец, обошел дурацкое ограничение фирмы 1С, гггг, в айти кризис.
201 Maniac
 
07.09.21
13:28
(192) да ну. я тебе могу привести кучу примеров когда стоят задачи обработки данных которых вообще в базе НЕТ!!!
А с какого уя их приходиться все время ТАСКАТЬ НА СЕРВЕР чтобы что то там сделать и ВЕРНУТЬ НАЗАД.

Потому что большую часть каких то действие ФИГ СДЕЛАЕШЬ.
например получили какие то данные на клиенте. в форму в таблицы. каого фени к ним ни запроса, ничерта сделать невозможно.

Повторю - этих данных в базе НЕТ и на сервере нет. А с 1С жесткие ограничения на клиенте.
202 Maniac
 
07.09.21
13:29
Даже у одно обработки есть несколько ФОРМ. нужно всю байду затащить на сервер, чтобы потом оттуда вытащить. БРЕД
203 Maniac
 
07.09.21
13:31
И еще что убивает. Даже если имеем обьект, в котором к примеру много таблиц и частей.
Даже если хотим на сервере что то обработать. Почему нет элементарной возможности просто передать некоторые реквизиты или таблицы обьекта а не ВЕСЬ ОБЪЕКТ.
204 Maniac
 
07.09.21
13:33
Нафига нужно выгружать ТЧ в переменную чтобы передать в запрос?
А потом приходится еще после запроса еще выборку делать чтобы опять в ТЧ запихнуть выгрузкой или перебором - если всего пара колонок каких то нуждалась в обработке.

Вопросов миллион на самом деле к конфигуратору.
205 Maniac
 
07.09.21
13:41
А к типовым еще БОЛЬШЕ вопросов.

Почему в УНФ БСП не такое как у всех?
Почему в регистре не ВидЦен и ВидЦены
Почему справочник Склады - Структурные подразделения
Почему Виды номенклатуры - Категории номенклатуры
Почему Использование характеристик - Использовать характеристики
Почему в номенклатуру поставщиков нет владельца, а есть реквизит Владелец.
Почему нет ни одного обработчика табличных частей (суммы, ндс, скидки) с Экспортом. Даже в 1С розница есть
Почему в регистрах полный бред.
206 Maniac
 
07.09.21
13:43
Почему чтобы в любой типовой посмотреть процедуру глобальную - нужно 10 глобальников пролистать.
Даже просто на обработке строки - например сумму ндс - затаскает по километру кода и 25 глобальным модулям.
207 acht
 
07.09.21
13:57
(204) Маня, зачем ты занимаешься этим мазохизмом в 1С?

Шел бы, например, могилки копал. Там всегда спокойные клиенты, четкое ТЗ, нет этого "ай, не того закопали, перезакапывайте заново", устоявшийся и эффективный набор инструментов.
208 BeerHelpsMeWin
 
07.09.21
13:59
(201) А зачем обрабатывать данные, которых в базе нет?
209 Олеша Попович
 
07.09.21
14:02
(207) а что написано на партнерском форуме, для Гени 1с? скинь ссылку почитаю
210 Kassern
 
07.09.21
14:06
(204) вот тут я не понял в чем проблема выгрузить ТЧ в ТЗ, обработать запросом и загрузить обратно? В типовых при обработке строк есть как для всей ТЧ, есть для конкретной строчки процедуры, просто передаешь структуру действий необходимую. Про УНФ это отдельная песня...
211 Maniac
 
07.09.21
15:05
(210) а если ТЗ размером 1 миллион строк?
212 Maniac
 
07.09.21
15:05
да фиг с ним пусть даже 100 000
213 Kassern
 
07.09.21
15:07
(212) а какие проблемы со 100 000? Без проблем пихается во временную таблицу и обрабатывается запросом.
214 Maniac
 
07.09.21
15:08
а зачем пихать?? вот скажи мне. туда сюда пихать выпиховывать.
215 Maniac
 
07.09.21
15:08
вот есть данные на клиенте. все. нафига их нужно пихать.
216 Maniac
 
07.09.21
15:08
вот на клиенте юзер и хочет с ними поработать, пофильтровать, чота там запросики понаделать.
217 Kassern
 
07.09.21
15:12
(216) когда у клиента миллион строк с артикулом, а ему вдруг понадобилось это дело сопоставить с данными базы, тоже через клиент хотите это реализовать?)
218 lodger
 
07.09.21
15:15
(215) на клиенте вьюха на 30-50 строк. какие миллион?
219 Mort
 
07.09.21
15:27
Всё-таки у 1С пробел в обучении УФ на этом месте. Очень много одинэсников считает, что форма на клиенте содержит все данные и все эти данные едут на сервер при контекстном вызове. И начинают их на клиенте мучить (и как раз наоборот в этом случае данные начинают ездить, только с сервера на клиент).
220 MyNick
 
07.09.21
15:32
(211) На клиенте 100 тыс строк? Это в консерватории надо править.

(215) Динамические списки? Не, не слышал.
На клиенте видимая порция.
Хочешь поиск - дуй на сервер (ну что по сути и происходит в отборах ДС неявно)
221 MyNick
 
07.09.21
15:40
(219) им надо погрузиться в замечательный мир веба. Или еще каких тру клиент-серверных технологий.
Где сервер и клиент разделен так, что подобных дурацких вопросов возникать не будет.
Сервер отдает джейсончик с данными, клиент (неважно на чем) через API эти данные получает - загружает - отображает. И ТОЛЬКО работает с пользователем. Упаси боже на клиента миллион строк тащить, чтобы поиск там сделать.
Сервер и клиент абсолютно независимы друг от друга. Как локомотив и вагон. Сцепка = API. Задача машиниста - управлять, задача пассажиров смотреть в окошко и пить чай. Пассажирам пох на машиниста, машинисту пох на пассажиров. Главное чтобы не творили откровенную дичь (не срывали стоп кран и не бросали лом в унитаз).

И... вопросы ворочать миллионами строк отпадают.
И так разбаловали одинэсников не слишком строгой архитектурой клиент-серверного кода...
222 MyNick
 
07.09.21
15:47
+(221) Вот если бы 1С сделала конфигурацию из двух частей - Серверная и Клиентская, все бы встало на места.
На серверной только модули с обращением к БД, на клиентской только интерфейс и модули для его реализации.
На стыке - только простые типы + массивы и структуры.

То и не было бы подобных пробелов. И не возникало бы мысли у гениев формы туда сюда гонять.
223 Ненавижу 1С
 
гуру
07.09.21
16:00
(219) д, никто этого толком не говорит, включая саму 1С
224 Ненавижу 1С
 
гуру
07.09.21
16:01
+(223) хотя хз что ты хотел в (220) сказать
225 Олеша Попович
 
07.09.21
16:14
(223) вроде бы говорит https://its.1c.ru/db/v8std#content:628:hdoc
226 lodger
 
07.09.21
16:17
(225) чушь какая то! другое дело что пишут маня и геня - труъ эксперты.
227 Олеша Попович
 
07.09.21
16:23
(221) что значит разбаловали? изначально она такой и была, потому что сервер был stateful
228 Гений 1С
 
гуру
07.09.21
17:54
(221) у фузины формы живут только на сервере, а на клиенте просто отображаются (как РДП)
229 Гений 1С
 
гуру
07.09.21
17:55
(206) потому что Маня, УНФ писали не в 1С изначально. Это 1С потом ее купила
230 Конструктор1С
 
07.09.21
18:00
(198) а ты в модуле формы с сервером не работаешь?
231 acht
 
07.09.21
18:11
(209) Для Гени на партнерском форуме ничего нет, извини.
232 Конструктор1С
 
07.09.21
18:11
(201) и что ты делаешь с данными на клиенте? Ну покажешь пользователю... А дальше тебе за каждым чихом придётся нырять на сервер, ибо таблицы, запросы, метаданные да и вообще всё на сервере.
Завтра возникнет ситуация, которая возникает в автоматизации чуть реже, чем постоянно: надобно исключить тело пользователя из процесса, делать всё автоматически. Тут-то ты со своим клиентом и встрянешь. "Внезапно" выяснится, что весь код нужно утаскивать на сервер, да ещё и от интерфейса отделять. Причем разлучить бизнес-логику с интерфейсом ой как непросто, ибо срослись они аки сиамские близнецы
233 Новый1сник2
 
07.09.21
18:13
(205) да УНФ отличается от типовых, но это не значит что УНФ какашка, многим заходит норм.
только ее нужно доработать, в т.ч. бсп
234 acht
 
07.09.21
18:21
(232) Кстати да, будет очередная тема "гуру-тест как теперь открыть форму на сервере" =)
235 Конструктор1С
 
07.09.21
18:22
(202) что ты там собрался на сервер затаскивать? У тебя и так данные живут на сервере в БД
236 acht
 
07.09.21
18:24
(235) У Мани вся куча примеров сводится к файлу, который на клиенте. Данные из которого он "обрабатывает". Для его сжатия и загона на сервер Мане не хватает опыта.
237 Конструктор1С
 
07.09.21
18:25
(234) с разделением интерфейсов и бизнес-логики в 1с вообще беда. Этим не только Г1Сы грешат, но и разработчики типовых юзают во весь рост
238 Олеша Попович
 
07.09.21
18:58
(237) Им некогда делать как правильно, им пилить нада. Вон в УТ 11 для программного заполнения зависимых цен в документе "Установка цен номенклатуры" нужно в ОМ расчета цен одним из параметров форму передавать. А откуда у меня форма, если я документ программно создаю? Вы вот тут Геню ругаете, а у вендора такие же Гени работают.
239 piter3
 
07.09.21
19:01
(238) Странно,но ахксаптовцы и некторые саперы ноют так же.Правда,не всегда на форумах.Одни вебщики впереди планеты всей)
240 Maniac
 
07.09.21
23:22
(236) какой нафиг файл.? опять попридумал за меня и сам себе какую то хрень несешь)
причем тут файл.
Я тебе говорю про то что на клиенте монут быть какие то таблицы, с которомы работает юзер. что то делает, обрабатывает и так далее.
241 Maniac
 
07.09.21
23:24
Вот даже простой пример. Все знают что в ТЧ на форме есть отбор только по фиксированной структуре. по списку никаких отборов делать нельзя вообще.
Чтобы по ТЧ еще какой то смочь отфильтровать надо изворачиваться на сервере.
Или вот условный оформления. они не работают на клиенте. исключительно на сервере, нужно ннать все данные на сервер
242 H A D G E H O G s
 
07.09.21
23:37
Дайте людям удочку и они наловят рыб.
Дайте людям сервер и они его завызывают.
Дайте Осипову форум и он его засрет.
243 Конструктор1С
 
08.09.21
10:55
(242) когда бизнес-логика отделена от интерфейса, нет смысла завызовывать сервер, всё и так будет происходить на сервере
244 Mort
 
08.09.21
12:22
А моё имхо MVC это устаревший способ делать надеждные приложения с херовым интерфейсом. Вот у нас продуманная бизнес-логика, а вот соответствующий этой логике убогий интерфейс.
245 Mort
 
08.09.21
12:26
Ну и натягивать сову разделения между интерфейсом и логикой на глобус разделения клиент-сервер тоже нет никакой надобности.
246 acanta
 
08.09.21
12:27
А чем рдп то не устроил?
247 Конструктор1С
 
08.09.21
12:43
(244) вопрос не в красоте интерфейса, а в стоимости доработки и сопровождения. Обрати внимание на мобильные приложения, они написаны по MVVM или MVC, но интерфейс у многих из них намного лучше и понятнее, чем у типичных1сных приложений. MVC и иже с ними нисколько не вредят качеству интерфейса.
Когда идёт архитектурное деление на условные слои, код становится более гибким, доработка и сопровождение более дешевыми. Если всё скидано в единую кучу-малу (типичная для 1с картина), то этот винигрет сложнее понимать, сложнее дорабатывать и так далее (соответственно цена владения растёт)
248 Конструктор1С
 
08.09.21
12:49
(245) отделение бизнес-логики от интерфейса это такой фундаментальный и давно известный принцип, что в тру-программировании аж родились отдельные профессии - фронтендеры и бэкендеры. Плохо что 1сники об этом не знают
249 ДенисЧ
 
08.09.21
12:51
О. Веб-программирование уже стало тру....
250 ДенисЧ
 
08.09.21
12:51
(244) МВЦ и плохие интерфейсы друг другом связаны чуть менее, чем никак.
251 Конструктор1С
 
08.09.21
12:54
(249) в вебе Г1С-стайл ударил больнее всего. К тому же деление на фронт и бэк не только в вебе, в энтерпрайзе также юзается всю дорогу
252 Конструктор1С
 
08.09.21
12:58
+ в мобильной разработке MVVM, MVC, MVP, MVI тоже юзаются всю дорогу
253 H A D G E H O G s
 
08.09.21
13:12
(243)

&НаКлиенте
Процедура ВидАктаПриИзменении(Элемент)
    Элементы.СтраницаТовары.Видимость=Объект.ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения");
    Элементы.ДвижениеМарок.Видимость=Объект.ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения");
КонецПроцедуры

Ты, конечно, тут сделаешь контекстный серверный, да?
254 lodger
 
08.09.21
13:19
&НаКлиенте
Процедура ВидАктаПриИзменении(Элемент)
Флаг = ВидАктаРавноАктРасхождения(Объект.ВидАкта);
    Элементы.СтраницаТовары.Видимость=Флаг;
    Элементы.ДвижениеМарок.Видимость=Флаг;
другие параметры = Флаг;
КонецПроцедуры

&НаСервере
Процедура НастроитьФормуПоДаннымОбъекта()
Флаг = ВидАктаРавноАктРасхождения(Объект.ВидАкта);
    Элементы.СтраницаТовары.Видимость=Флаг;
    Элементы.ДвижениеМарок.Видимость=Флаг;
другие параметры = Флаг;
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ВидАктаРавноАктРасхождения(ВидАкта)
возврат ВидАкта=ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения");
КонецФункции
255 lodger
 
08.09.21
13:20
+(254) хотя, лучше видимостью на клиенте не управлять. и вообще не управлять этим после создания и передачи формы на клиента.
256 lodger
 
08.09.21
13:21
+(255) вот доступностью вроде можно.
257 H A D G E H O G s
 
08.09.21
13:25
(255) (256) Ну смысл понятен, надеюсь?

&НаКлиенте
Процедура АСФВвестиАктРасхожденияТТН(Команда)
    Если ЭтаФорма.Модифицированность Тогда
        ЭтаФорма.Записать(Неопределено);
    КонецЕсли;
    
    АСФОбменСУТМКлиент.ВвестиАктКТТНЕГАИС(Объект.Ссылка,ПредопределенноеЗначение("Перечисление.АСФВидыАктовКТТН.АктРасхождения"));
КонецПроцедуры
258 Конструктор1С
 
08.09.21
13:26
(253) ты не понял смысл отделения бизнес-логики от интерфейса. Настройка видимости, доступности, состава полей на форме и вот это всё - работа с интерфейсом
259 H A D G E H O G s
 
08.09.21
13:26
(258) Ну вот я настраиваю видимость, на клиенте, отдельно от бизнес-логики.
260 H A D G E H O G s
 
08.09.21
13:27
(258) Давай, отдели бизнес-логику от интерфейса.
261 Конструктор1С
 
08.09.21
13:27
(259) молодец, держи в курсе
262 Конструктор1С
 
08.09.21
13:28
(260) у тебя там нет бизнес-логики, у тебя просто настройка интерфейса
263 H A D G E H O G s
 
08.09.21
13:29
(262) Которую я настраиваю на клиенте. И не могу обойтись без значений перечисления. Что не так?
264 Конструктор1С
 
08.09.21
13:37
(263) давай так. В твоём документе можно делать всё программно?

НовыйДокумент = Документы.ТвойДокумент.СоздатьДокумент();
НовыйДокумент.Заполнить();
НовыйДокумент.Вжух1();
НовыйДокумент.Вжух2();
НовыйДокумент.Вжух3();
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);

если нельзя, если для части действий нужно занырнуть в форму и подёргать кнопки/поля/таблички, то у тебя интерфейс слипся с бизнес-логикой
265 lodger
 
08.09.21
13:40
возьмите дядю из поста (264) и отнести в отдел разработки ЗУП в головном офисе 1с.
266 Ыцшесрук
 
08.09.21
13:42
(265) Не только ЗУП. В УТ та же шняга с расчётами скидок.
267 Конструктор1С
 
08.09.21
13:44
(265) чур меня...
268 H A D G E H O G s
 
08.09.21
14:08
(264) Я просто напомню, что все начало с поста (192), в которой необходимость ссылок на клиенте обозвали уродливой надобностью.

Я прекрасно знаю, когда интерфейс сливается с бизнес-логикой.
269 Конструктор1С
 
08.09.21
14:14
(268) ладно, каюсь, не внимательно прочитал. Но и ссылки на клиенте могут служить для разных целей. Если для настройки интерфейса, или чтобы показать пользователю, то это нормально. Но если условный Г1С делает на клиенте расчет себестоимости, которую потом складывает в ТЧ документа, то за такое нужно бить по рукам
270 Гений 1С
 
гуру
08.09.21
14:47
(269) я так не делаю, если че.
271 lodger
 
08.09.21
14:48
(270) а в (0) ты что делать собрался?
272 Гений 1С
 
гуру
08.09.21
14:54
(241) есть хитрый хак - пробегаешь по ТЧ, проставляешь галку отбора и отбираешь по этой галке. лично так делал
273 MyNick
 
08.09.21
15:53
(272) Какую еще галку? ОтборСтрок работает по фиксированной структуре.
274 Гений 1С
 
гуру
08.09.21
16:10
(273) ну например тебе нужно отобрать контрагентов иванов, петров, сидоров.

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

Все, можно отбирать по ЭтоМойКонтрагент = истина. йо?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн