|   |   | 
| 
 | Заполнение общей формы на сервере | ☑ | ||
|---|---|---|---|---|
| 0
    
        СемёнКим 27.08.21✎ 14:07 | 
        Всем привет.
 Как получить форму на сервере и заполнить ее реквизиты, затем открыть, это все программно. Уже каша в голове по этой теме. На клиенте делал так: Ф=ПолучитьФорму("ОбщаяФорма.<форма>"); Ф.Реквизит_1 = Значение_1; ... Ф.Реквизит_n = Значение_n; Ф.Открыть(); Или как вернуть с функции на сервере результат запроса в процедуру на клиенте? | |||
| 1
    
        ДенисЧ 27.08.21✎ 14:11 | 
        "Как получить форму на сервере"
 Очень просто. Никак. | |||
| 2
    
        eTmy 27.08.21✎ 14:12 | 
        (0) как ты себе представляешь существование формы на сервере?)     | |||
| 3
    
        VladZ 27.08.21✎ 14:14 | 
        (0) Зачем?     | |||
| 4
    
        VladZ 27.08.21✎ 14:15 | 
        Передай параметры. При открытии формы проверяй.     | |||
| 5
    
        СемёнКим 27.08.21✎ 14:34 | 
        Решил через возврат массива с сервера делать и остальное так же как и на клиенте.     | |||
| 6
    
        VladZ 27.08.21✎ 14:35 | 
        (5) Может тогда уж  лучше структуру?     | |||
| 7
    
        Мультук гуру 27.08.21✎ 14:37 | 
        (0) >>Или как вернуть с функции на сервере результат запроса в процедуру на клиенте?
 Зачем все это на клиенте? Чтобы нажать на кнопку и снова отдать на сервер? Дык, засунь это во временное хранилище, на клиент отдай адрес. | |||
| 8
    
        СемёнКим 27.08.21✎ 14:45 | 
        (6) разве не будет одно и то же? или все же через структуру быстрее будет?     | |||
| 9
    
        Chameleon1980 27.08.21✎ 14:49 | 
        через структуру ключи будут     | |||
| 10
    
        СемёнКим 27.08.21✎ 14:50 | 
        (7) В общем эта (общая) форма открывается при событии выбор по области табличного документа на форме документа. Через текущую область получаю значение по которому на сервере через запрос получаю остальные данные и после их загоняю в общую форму, чтоб клиент мог видеть что он там написал и изменить, если что. Так и получается, беру данные с сервера что то меняю и отправляю обратно на сервер.
 А временное хранилище мне не нравится, нет над ним контроля и он точно ограниченный, насколько ограниченный не знаю | |||
| 11
    
        СемёнКим 27.08.21✎ 14:52 | 
        (9) массивДанные = Новый Массив();
 Пока Выборка.Следующий() Цикл СтруктураДанных = Новый Структура("<поля выборки через запятую>"); ЗаполнитьЗначенияСвойств(СтруктураДанных,РезультатЗапроса); массивДанные.Добавить(СтруктураДанных); КонецЦикла; так делаю. | |||
| 12
    
        Мультук гуру 27.08.21✎ 16:13 | 
        (10) 
 >>А временное хранилище мне не нравится, нет над ним контроля и он точно ограниченный, насколько ограниченный не знаю Я его не знаю, я его не умею, я его боюсь. P.S. То что ты делаешь, делается через стандартные функции БСП тз = запрос.выполнить().Выгрузить(); массивДанные = ОбщегоНазначения.ТаблицаЗначенийВМассив(тз); P.P.S. А передавать значения в общую форму, чтобы она сама получала данные и сама себя заполняла? | |||
| 13
    
        СемёнКим 28.08.21✎ 09:57 | 
        (12) Спасибо за ответ.
 тз = запрос.выполнить().Выгрузить(); массивДанные = ОбщегоНазначения.ТаблицаЗначенийВМассив(тз); >>Я его не знаю, я его не умею, я его боюсь. Да, именно так) Пока не знаком с временным хранилищем. Нужно приличное время выделить для изучения этого блока. А сейчас времени почти нет, клиент торопит, вот и приходится писать "говнокод" так как я умею. >>А передавать значения в общую форму, чтобы она сама получала данные и сама себя заполняла? Например, добавить реквизит на общ форму с типом динамический список, запросом вытащить необходимые поля по ключевым(период записи и измерения для регистра сведений) значениям и заполнить общ форму? Или есть более оптимальный способ? | |||
| 14
    
        acht 28.08.21✎ 10:00 | 
        (13) > времени почти нет, клиент торопит, вот и приходится писать "говнокод"
 Кстати, а как ты относишься, например, к обилию багов в Cyberpank 2077? | |||
| 15
    
        ДедМорроз 28.08.21✎ 17:14 | 
        Во-первых,на сервере ничего открыть нельзя, формы открываются только на клиенте,но как ни странно,готовятся они на сервере.
 Поэтому,если у вас данные,которые на сервере,нужно показать в форме,то их нужно передать в ее процедуру ПриСозданииНаСервере. Самый простой способ - поместить их во временное хранилище,а его адрес передать в параметрах формы. Если же данные получаются из базы,то ПриСозданииНаСервере самое место их получить. Конечно,может быть ситуация,когда данные на клиенте,и на сервере их нет. Тогда,стандартный механизм не подходит,но в процедуре ПриОткрытии новой формы можно обратиться к владельцу и вызвать его экспортную процедуру,которая позволит передать параметры,причем,в отличие от серверных вызовов,сериализация не требуется,можно передавать даже Com-объекты. Опять же,форма,открывшая другую форму получает ее контекст как результат функции открытия и точно также может вызвать экспортную процедуру или функцию. Но,такой механизм саиа 1с не одобряет и не использует. | |||
| 16
    
        СемёнКим 28.08.21✎ 18:44 | 
        (15) Спасибо, учту на будущее.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |