|   |   | 
| 
 | Опять Ут и УФ, помогите разобраться | ☑ | ||
|---|---|---|---|---|
| 0
    
        Kigo_Kigo 09.02.18✎ 13:21 | 
        Ребят, честно я тока учусь этим УФ, не пинайте сильно, лузер в в 8.3-ке, но честно пытаюсь во всем разобраться, сам серт. спец по клюшкам, вот настало для меня время пинать снеговиков с УФ, смотрите такая задача, есть реквизит на форме таблица значений(та которая не хранимая в бд, хранить ее смысла нет), на клиенте вызываю процедуру на сервере,эта процедура обрашается в функцию общего модуля, она выплевывает мне ответом таблицу значений, мне этой таблицей надо заполнить таблицу значений на форме
 раньше работало вот так ИнформацияОтСервера = Окомпании.ПолучитьИнформациюОКомпании(Объект.КодСкидки); теперь он меня посылет по адресу Нельзя изменять поле, содержащее объект данных формы я понимаю что теперь так делать низяя, подскажите как надо? | |||
| 1
    
        Рэйв 09.02.18✎ 13:27 | 
        ЗначениеВРеквизитФормы() тебе в помощь.     | |||
| 2
    
        Рэйв 09.02.18✎ 13:28 | 
        только тз должна совпадать по именам и количеству полей     | |||
| 3
    
        AlexTim03 09.02.18✎ 13:28 | 
        ЗначениеВРеквизитФормы(ИнформацияОтСервера , "ИмяТаблицыНаФорме")     | |||
| 4
    
        AlexTim03 09.02.18✎ 13:30 | 
        Или обойти полученную таблицу и добавлять запись построчно:
 Для каждого Строка из ИнформацияОтСервера Цикл НоваяСтрока = ТвояТаблицаНаФорме.Добавить(); ////тут заполнение КонецЦикла | |||
| 5
    
        Kigo_Kigo 09.02.18✎ 14:02 | 
        Теперь вроде прогружается , но как теперь работать то с ней
 ИскомаяСтрокаБаллов = ИнформацияОтСервера.Найти("КоличествоИмеющихсяБаллов","Поле"); Метод не обнаружен Найти, на клиенте нельзя возится с ТЗ? | |||
| 6
    
        Kigo_Kigo 09.02.18✎ 14:05 | 
        Это трындец какой то задачу которую бы в клюшках и 8.2 написал бы за 10 минут, в УФ бьюсь уже 2-й день     | |||
| 7
    
        Kigo_Kigo 09.02.18✎ 14:28 | 
        Я понимаю вопрос ламера
 Ребят как теперь на "ты" обратится к этой таблице значений, и найти значения которые меня интересуют? | |||
| 8
    
        ildary 09.02.18✎ 14:31 | 
        (5) зачем на клиенте возиться с ТЗ, если она расположена на сервере, а на клиенте не она, а её отображение.     | |||
| 9
    
        drcrasher 09.02.18✎ 14:32 | 
        ТЗ - реквизит формы. на сервере заполняшь её данными (4) и там же всё дёргаешь.
 между клиентом и сервером ТЗ не ездит, на клиенте вообще нет таблицы значений | |||
| 10
    
        Kigo_Kigo 09.02.18✎ 14:32 | 
        (8) эта ТЗ болтается как реквизит формы     | |||
| 11
    
        Kigo_Kigo 09.02.18✎ 14:32 | 
        (9) Понял, сейчас попробую     | |||
| 12
    
        Rema Dan 09.02.18✎ 14:33 | 
        (5) ТЗ в форме представляет из себя ДанныеФормыКоллекция. Для неё нет найти, но есть НайтиСтроки()     | |||
| 13
    
        dezss 09.02.18✎ 14:49 | 
        (6) угу...но когда втянешься, понравится логичность и стройность УФ.
 (12) + 1...зачем нагружать сервер, если реквизит можно на клиенте изменять | |||
| 14
    
        xxTANATORxx 09.02.18✎ 14:50 | 
        (12)это из-за того что предполагается что твой код должен автоматом работать как и в тонком клиенте так и в веб клиенте, а это накладывает требования к разработке     | |||
| 15
    
        FIXXXL 09.02.18✎ 14:53 | 
        (13) (12) 
 ДанныеФормыКоллекция (FormDataCollection) НайтиСтроки (FindRows) Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). Вызов метода выполняет обращение к серверу. внимание на последнюю строку :) лучше все на сервере | |||
| 16
    
        Rema Dan 09.02.18✎ 15:01 | 
        (15) ТС не указал работает ли он в серверном или клиентском коде формы. Без использования РеквизитФормыВЗначение() его таблица всё равно будет ДанныеФормыКоллекция.     | |||
| 17
    
        dezss 09.02.18✎ 15:03 | 
        (15) интересно, а он делает контекстный вызов или нет...     | |||
| 18
    
        Kigo_Kigo 09.02.18✎ 15:05 | 
        (12) Занятненько
 Пример: ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Номенклатура", ТекТовар); НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора); то есть надо еще нагрузить структурой, полить в ответ массив, перебрать массив в поиске нужного значения? Ну офигеть логика, вместо простого найти или есть более гуманные способы? | |||
| 19
    
        drcrasher 09.02.18✎ 15:06 | 
        (17) контекстный конечно. без контекста просто не существуют формы на сервере     | |||
| 20
    
        Вафель 09.02.18✎ 15:06 | 
        Можно и так 
 ЭтаФорма.Таблица.Загрузить(Ответ); | |||
| 21
    
        drcrasher 09.02.18✎ 15:07 | 
        (18) а зачем перебирать? в структуру складываешь все параметры отбора "И" и получаешь 1 строку. не?
 если у тебя точно не повторяется номенклатура, то на сервере так тз.найти() можно | |||
| 22
    
        FIXXXL 09.02.18✎ 15:08 | 
        (16) ДанныеФормыКоллекция (FormDataCollection)
 Загрузить (Load) | |||
| 23
    
        Kigo_Kigo 09.02.18✎ 15:15 | 
        (21) Я по этому и храню до закрытия документа ТЗ как реквизит формы, потому что к ней еще надо обратится из других модулей     | |||
| 24
    
        drcrasher 09.02.18✎ 15:19 | 
        (23) что-то мне посказывает, что ты решаешь задачу изначально не верным способом     | |||
| 25
    
        Kigo_Kigo 09.02.18✎ 15:25 | 
        (24) Я пытаюсь перенести то что работало на прежних версиях, на новую, то что когда то дорабатывал на 8.2, а теперь вот это все :)
 параллельно пытаюсь разобраться, как это все фурычит по новому, я понимаю что здесь бы надо сделать через структуру, тем более что в тз 2 колонки, но с ТЗ тоже надо научиться работать | |||
| 26
    
        dezss 09.02.18✎ 15:26 | 
        (25) решать задачу с использованием ТЗ только по-тому, что "с ТЗ тоже надо научиться работать", как-то неправильно     | |||
| 27
    
        drcrasher 09.02.18✎ 15:30 | 
        (25) если две колонки и есть номенклатура, я бы смотрел в сторону соответствия. а тз - часто зло %)     | |||
| 28
    
        Kigo_Kigo 09.02.18✎ 15:30 | 
        (26) Потому что эта ТЗ в других блока фигурирует, я имел ввиду, что запрос на сервер в общем модуле можно было сделать и получить ответ в структуре, но ее тоже надо сохранить, что бы в процессе пользоваться из других модулей, а так же там некоторые дае читаются при проведении, точнее должны считываться, я еще до этого не добрался     | |||
| 29
    
        drcrasher 09.02.18✎ 15:31 | 
        (28) курить галку "повторного использования" у общих модулей     | |||
| 30
    
        Kigo_Kigo 09.02.18✎ 15:32 | 
        (27) Там вебзапрос, куда вываливаются данные о клиенте, скидке, баллах и так далее, это все я уже адаптировал,вот теперь пытаюсь это все форме распихать     | |||
| 31
    
        Kigo_Kigo 09.02.18✎ 15:38 | 
        И еще, что бы не плодить тем спрошу, раньше вот такой код работал
 ФормаЗапросаСкидки = ЭтотОбъект.ПолучитьФорму("ФормаСкидки"); ИнформацияОтСервера = ФормаЗапросаСкидки.ОткрытьМодально(); как теперь открыть допольнительную форму этого же документа? | |||
| 32
    
        dezss 09.02.18✎ 15:40 | 
        (31) ОткрытьФормуМодально     | |||
| 33
    
        Kigo_Kigo 09.02.18✎ 15:43 | 
        (32) {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(7867)}: Метод объекта не обнаружен (ПолучитьФорму)
 ФормаЗапросаСкидки = ЭтотОбъект.ПолучитьФорму("ФормаСкидки"); | |||
| 34
    
        dezss 09.02.18✎ 15:46 | 
        (33) я не писал получитьформу
 Глобальный контекст (Global context) ОткрытьФормуМодально (OpenFormModal) Вариант синтаксиса: По названию Синтаксис: ОткрытьФормуМодально(<ИмяФормы>, <Параметры>, <Владелец>, <НавигационнаяСсылка>) Параметры: <ИмяФормы> (обязательный) Тип: Строка. Имя формы. Образуется как полный путь к объекту метаданных Форма (например, "Справочник.Контрагенты.Форма.ФормаОбъекта") или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, "Справочник.Товары.ФормаВыбора"). Имена форм по умолчанию: ФормаОбъекта (ObjectForm) - форма объекта по умолчанию; ФормаГруппы (FolderForm) - форма группы по умолчанию; ФормаЗаписи (RecordForm) - форма записи регистра по умолчанию; ФормаСписка (ListForm) - форма списка по умолчанию; ФормаВыбора (ChoiceForm) - форма выбора по умолчанию; ФормаВыбораГруппы (FolderChoiceForm) - форма выбора группы по умолчанию; ФормаКонстант (ConstantsForm) - форма констант по умолчанию для обычного режима, установленная как форма констант для конфигурации; Форма (Form) - форма константы, отчета и обработки по умолчанию; ФормаНастроек (SettingsForm) - форма настроек отчета по умолчанию; ФормаЗагрузки (LoadForm) - форма загрузки настроек; ФормаСохранения (SaveForm) - форма сохранения настроек; ФормаВарианта (VariantForm) - форма редактирования варианта отчета; ФормаПоиска (SearchForm) - форма полнотекстового поиска в данных. <Параметры> (необязательный) Тип: Структура. Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры. П = Новый Структура("Ключ", Поставщик); Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П); Форма.Открыть(); <Владелец> (необязательный) Владелец формы - форма или элемент управления другой формы. <НавигационнаяСсылка> (необязательный) Тип: Строка, Неопределено. Если содержит значение, отличное от Неопределено, то это значение присваивается свойству НавигационнаяСсылка формы, полученной в результате вызова данного метода, и свойство АвтоНавигационнаяСсылка этой формы устанавливается в Ложь. Значение по умолчанию: Неопределено. | |||
| 35
    
        Вафель 09.02.18✎ 15:48 | 
        И не забывать что модально то теперь нельзя, нужно на оповещениях     | |||
| 36
    
        dezss 09.02.18✎ 15:49 | 
        (35) иногда можно)     | |||
| 37
    
        Вафель 09.02.18✎ 15:50 | 
        (36) вроде в послдених уже запретили, разве нет?     | |||
| 38
    
        dezss 09.02.18✎ 15:51 | 
        (37) ну это на типовых...что у ТС, я хз...     | |||
| 39
    
        Вафель 09.02.18✎ 15:52 | 
        (38) ну вроде он в теме указывет УТ     | |||
| 40
    
        dezss 09.02.18✎ 15:52 | 
        (39) и что...не факт, что она типовая...да и не известно, какая версия...     | |||
| 41
    
        Kigo_Kigo 09.02.18✎ 15:57 | 
        СсылкаНаЭтотОбъект  = Новый Структура("Ключ",ЭтотОбъект);
 ОткрытьФормуМодально("Документ.РеализацияТоваровУслуг.Форма.ФормаСкидки",,,СсылкаНаЭтотОбъект);//ФормаЗапросаСкидки.ОткрытьМодально(); Пишет, что использование модального режима запрещено, но все равно открывает модально, но новый документ, а мне надо дополнительную форму этого объекта | |||
| 42
    
        Вафель 09.02.18✎ 15:58 | 
        я же говорил )))     | |||
| 43
    
        drcrasher 09.02.18✎ 15:59 | 
        не надо открыть форму модально, надо открыть форму с блокировкой всего интерфеса     | |||
| 44
    
        drcrasher 09.02.18✎ 16:00 | 
        за "модально" и прочие выбратьзначение() зао "1с" разворачивает конфы в пять минут - это грубое нарушение в целом и "совместимо" в частности     | |||
| 45
    
        drcrasher 09.02.18✎ 16:02 | 
        (41) не этотОбъект, а этотОбъект.Ссылка.
 через структуру исключительно ссылку можно передать | |||
| 46
    
        Kigo_Kigo 09.02.18✎ 16:05 | 
        (43) РукаЛицо, во набуивертили, прастихоспади, а это как если не секрет? 
 (44) Там ситуация такая чтобы пользователь не мог вильнуть влево вправо, запрос с веб сервера скидки и балов, ввод списания баллов, отправить данные на вебсервер, закрытие проведение, ТолькоПросмотр (45) Ругается на Ссылку , этотОбъект.Ссылка. так я сразу написал, не пракаттило | |||
| 47
    
        Mankubus 09.02.18✎ 16:07 | 
        (46) объект.ссылка     | |||
| 48
    
        Kigo_Kigo 09.02.18✎ 16:10 | 
        (47) Открывает, все равно новый, попробую не модально     | |||
| 49
    
        drcrasher 09.02.18✎ 16:10 | 
        (46) ОткрытьФорму() и в последнем параметре РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс     | |||
| 50
    
        dezss 09.02.18✎ 16:11 | 
        (48) а ты точно в тот параметр структуру пихаешь?
 вроде ж параметры открытия 2-й параметр? | |||
| 51
    
        drcrasher 09.02.18✎ 16:13 | 
        (50 точно.  а не вроде     | |||
| 52
    
        dezss 09.02.18✎ 16:14 | 
        (51) Так он структуру в навигационную ссылку пихал? О_о
 а чего тогда не было ошибки о том, что параметры не те? | |||
| 53
    
        drcrasher 09.02.18✎ 16:16 | 
        (52) спасибо товарищам из 1с за это: всё, что имеет строковое представление (в данном случае "Структура") может быть записано в реквизит типа строка.     | |||
| 54
    
        Kigo_Kigo 09.02.18✎ 16:27 | 
        (49) (50) (51) (52) (53) (47) (49) (47) 
 Спасибо, взлетело, открывается с блокировкой интерфейса, без предупреждений | |||
| 55
    
        Kigo_Kigo 09.02.18✎ 16:49 | 
        Ога фигушки, код то продолжает выполняться, а мне надо чтобы он дождался закрытия формы, так что наверно без модально никак     | |||
| 56
    
        drcrasher 09.02.18✎ 16:51 | 
        (55) поздравляю, вы познакомились с асинхронными вызовами.
 курить открытьФорму() параметр ОписаниеОповещенияОЗакрытии и Новый ОписаниеОповещения. это не страшно, но по первости может быть неочевидно | |||
| 57
    
        drcrasher 09.02.18✎ 16:54 | 
        +(56) кратенько:
 1. открыть форму с указанием оповещения; 2. потыкать кнопочки и закрыть форму своей кнопкой Закрыть(ДанныеКоторыеНужноОбработать); 3. в обработчике оповещения (РезультатИзФормы, ДопПараметры) _экспорт_ если результатИзФормы не равно неопределно - чтото сделать с результатом из формы. | |||
| 58
    
        Sapiens_bru 09.02.18✎ 17:43 | 
        (56) "это не страшно, но по первости может быть неочевидно"
 Я тут на днях курил коллбэки в фрагменты на андроиде через интерфейсы. Вроде вкурил. После этого одинЭсные оповещения кажутся добрыми, милыми, будто базовыми понятиями. Воистину говорят - хочешь полюбить 1С УФ , ознакомься с разработкой клиент-серверных приложений каком-то "настоящем" языке и общемировом фреймворке. Сразу ясно становится почему и как оно движется и сколько сил/нервов сэкономила 1С своим программистам. | |||
| 59
    
        Kigo_Kigo 09.02.18✎ 17:47 | 
        (56) (57) Делал вот так, почему перед открытием она скачет по всем функциям и процедурам?
 И есстественно вываливается с ошибкой в попытке прочитать не прочитаемое, прочитаемое должно из формы прилететь Функция ВыборЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если РезультатЗакрытия = Неопределено Тогда Сообщить("Ничего не выбрано."); Иначе ВыполненоЗакрытеФормыБаллов(); КонецЕсли; КонецФункции &Наклиенте Процедура ОсновныеДействияФормыСкидкаUDS(Кнопка) //ФормаЗапросаСкидки = Объект.ПолучитьФорму("ФормаСкидкиUDS"); СсылкаНаЭтотОбъект = Новый Структура("Ключ",Объект.Ссылка); ОткрытьФорму("Документ.РасходнаяНакладная.Форма.ФормаСкидки",СсылкаНаЭтотОбъект,,,,,ВыборЗавершение("ВыборЗавершение", Объект));//ФормаЗапросаСкидки.ОткрытьМодально(); КонецПроцедуры #КонецОбласти | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |