|
Опять Ут и УФ, помогите разобраться | ☑ | ||
---|---|---|---|---|
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"); СсылкаНаЭтотОбъект = Новый Структура("Ключ",Объект.Ссылка); ОткрытьФорму("Документ.РасходнаяНакладная.Форма.ФормаСкидки",СсылкаНаЭтотОбъект,,,,,ВыборЗавершение("ВыборЗавершение", Объект));//ФормаЗапросаСкидки.ОткрытьМодально(); КонецПроцедуры #КонецОбласти |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |