|
Элемент в ТЧ управляемой формы | ☑ | ||
---|---|---|---|---|
0
Gill
17.06.14
✎
11:58
|
Всем привет! УПП 8.2. Есть док на управляемой форме.Необходимо при выборе реквизита (тип ссылка на документ) табличной части автоматически заполнять другие реквизиты этой же ТЧ. Пишу следующее,не заполняет:
&НаСервере Функция ПолучитьДанныеПоПутевомуЛисту(Ссылка) ТекНаряд = Элементы.Товары.ТекущиеДанные; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза.ЕдиницаХраненияОстатков КАК ЕдИзм, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Водитель, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Грузоотправитель, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Приемщик, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.ПеревезеноТн КАК ПереданоГрузаПриемщику |ИЗ | Документ.ИнтекоПутевойЛистАвтотранспорта.ТЧРаботаТехники КАК ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники |ГДЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",ТекНаряд.Наряд); Выборка = Запрос.Выполнить().Выбрать(); СтруктураВозврата = Новый Структура("НаименованиеГруза, Водитель, Грузоотправитель"); Если Выборка.Следующий() Тогда ЗаполнитьЗначенияСвойств(СтруктураВозврата, Выборка); КонецЕсли; Возврат Новый ФиксированнаяСтруктура(СтруктураВозврата); КонецФункции &НаКлиенте Процедура ТоварыНарядПриИзменении(Элемент) // Вставить содержимое обработчика. НарядПЛ = Элемент; Если НЕ ПустаяСтрока(НарядПЛ) И ТипЗнч(НарядПЛ) = Тип("ДокументСсылка.ИнтекоПутевойЛистАвтотранспорта") Тогда СтруктураВозврата = ПолучитьДанныеПоПутевомуЛисту(НарядПЛ); ЗаполнитьЗначенияСвойств(Объект.ТМЦ, СтруктураВозврата); КонецЕсли; КонецПроцедуры |
|||
1
Gill
17.06.14
✎
12:27
|
up
|
|||
2
Жан Пердежон
17.06.14
✎
12:33
|
>> Ссылка.Ссылка = &Ссылка
а почему не Ссылка.Ссылка.Ссылка = &Ссылка ?) >> ЗаполнитьЗначенияСвойств(Объект.ТМЦ, СтруктураВозврата); вот тут ошибка |
|||
3
Gill
17.06.14
✎
12:39
|
(2) ошибка в чем?
|
|||
4
hhhh
17.06.14
✎
12:43
|
(3) никогда не пиши Ссылка.Ссылка - это замедляет программу в десятки раз.
|
|||
5
hhhh
17.06.14
✎
12:47
|
(3) Объект.ТМЦ - это такое поле, ссылка на ТМЦ. Туда нельзя запихнуть целую структуру, она там не поместится.
|
|||
6
Gill
17.06.14
✎
12:50
|
(5) Объект.ТМЦ - это название ТЧ. А Элементы.Товары название "таблицы" на форме.
|
|||
7
hhhh
17.06.14
✎
12:53
|
(6) тогда вы должны в строки ТМЦ писать, а не в ТМЦ. Цикл для каждой строки ТЧ.
|
|||
8
Timon1405
17.06.14
✎
12:57
|
ЗаполнитьЗначенияСвойств(Элементы.Товары.ТекущиеДанные, СтруктураВозврата);
|
|||
9
Gill
17.06.14
✎
14:39
|
Что-то не догоняю я.(8) не работает, (7) как?!
|
|||
10
Gill
17.06.14
✎
15:13
|
up
|
|||
11
hhhh
17.06.14
✎
15:17
|
(10) что не работает в (8)? Если Водитель, то правильно не работает, в запросе нет этого поля
|
|||
12
Gill
17.06.14
✎
15:19
|
(11) ничего не заполняет
|
|||
13
Timon1405
17.06.14
✎
15:20
|
Имена колонок ТЧ в студию
|
|||
14
Gill
17.06.14
✎
15:53
|
Я видимо тупень,но не работает.Вот весь код
&НаСервере Функция ПолучитьДанныеПоПутевомуЛисту(Ссылка) // ТекНаряд = Элементы.Товары.ТекущиеДанные; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза КАК ТоварыНаименованиеГруза, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза.ЕдиницаХраненияОстатков КАК ТоварыЕдИзм, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Водитель КАК ТоварыВодитель, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Грузоотправитель КАК ТоварыГрузоотправитель, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Приемщик КАК ТоварыПриемщик, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.ПеревезеноТн КАК ТоварыПереданоГрузаПриемщику |ИЗ | Документ.ИнтекоПутевойЛистАвтотранспорта.ТЧРаботаТехники КАК ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники |ГДЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",ТекНаряд.ТоварыНаряд); Выборка = Запрос.Выполнить().Выбрать(); СтруктураВозврата = Новый Структура("ТоварыНаименованиеГруза,ТоварыЕдИзм,ТоварыВодитель, ТоварыГрузоотправитель,ТоварыПриемщик,ТоварыПереданоГрузаПриемщику"); Если Выборка.Следующий() Тогда ЗаполнитьЗначенияСвойств(СтруктураВозврата, Выборка); КонецЕсли; Возврат Новый ФиксированнаяСтруктура(СтруктураВозврата); // // КонецФункции &НаКлиенте Процедура ТоварыНарядПриИзменении(Элемент) // Вставить содержимое обработчика. НарядПЛ = Элемент; Если НЕ ПустаяСтрока(НарядПЛ) И ТипЗнч(НарядПЛ) = Тип("ДокументСсылка.ИнтекоПутевойЛистАвтотранспорта") Тогда СтруктураВозврата = ПолучитьДанныеПоПутевомуЛисту(НарядПЛ); ЗаполнитьЗначенияСвойств(Элементы.Товары.ТекущиеДанные, СтруктураВозврата); КонецЕсли; КонецПроцедуры |
|||
15
singlych
17.06.14
✎
16:02
|
(14)
ТипЗнч(НарядПЛ) = Тип("ДокументСсылка.ИнтекоПутевойЛистАвтотранспорта") всегда ложь. Зачем в НарядПЛ пихать Элемент? |
|||
16
Gill
17.06.14
✎
16:25
|
(13) имена колонок ТЧ вроде бы исправил
|
|||
17
Gill
17.06.14
✎
17:27
|
up
|
|||
18
Gill
18.06.14
✎
09:10
|
Вопрос остается актуальным.Что скажите?!
|
|||
19
Timon1405
18.06.14
✎
09:40
|
Скажем, что пора уже стряхнуть пыль с отладчика, и посмотреть 1) заходит ли вообще программа в ваше Если 2) типы присваиваемых объектов 3) выкинуть ЗаполнитьЗначенияСвойств и присвоить вручную
|
|||
20
Рэйв
18.06.14
✎
09:46
|
(14) Вообщето
ТипЗнч(НарядПЛ )=Тип("ПолеФормы") так как у тебя НарядПЛ = Элемент |
|||
21
Рэйв
18.06.14
✎
09:47
|
так что условие у тебя супер конечно:-)
Неудивительно что в него не заходит |
|||
22
Gill
18.06.14
✎
09:49
|
(19) выяснил,что в Если не заходит.А вместо ЗаполнитьЗначенияСвойств что нужно указать в качестве источника для заполнения?
|
|||
23
Gill
18.06.14
✎
09:50
|
(20) ну я пытаюсь указать в качестве условия из запроса текущий элемент для получения данных
|
|||
24
Рэйв
18.06.14
✎
09:50
|
(22) заполни вручную, чего паришься?
Дался тебе этот ЗаполнитьЗначенияСвойств |
|||
25
Рэйв
18.06.14
✎
09:51
|
(23)
ТД=Элементы.ИмяТабЧасти.ТекущиеДанные. Можешь попробовать передать его первым параметров как приемник |
|||
26
Рэйв
18.06.14
✎
09:52
|
может заработает если правда поля структур имеют одинаковые имена:-)
|
|||
27
Gill
18.06.14
✎
10:06
|
(24) вручную, что писать в качестве источника(выборки) после Для каждого (?) Из (?) Цикл
|
|||
28
Рэйв
18.06.14
✎
10:10
|
(27) Сначала сам возвращаешь структуру с ответом, а потом не знаешь что с ней делать:-)
//-- ТД=Элементы.ИмяТабЧасти.ТекущиеДанные; Для Каждого Эл Из СтруктураВозврата Цикл ТД[Эл.Ключ]=Эл.Значение; КонецЦикла; //------------ Но если действительно имена совпадают то можно ии так ЗаполнитьЗначенияСвойств(ТД,СтруктураВозврата); |
|||
29
Рэйв
18.06.14
✎
10:13
|
+ и кстати зачем тебе именно фиксирвоанная структура?
Обычная вполне нормально передается с сервера на клиент. |
|||
30
Gill
18.06.14
✎
10:26
|
(28) &НаКлиенте
Процедура ТоварыНарядПриИзменении(Элемент) // Вставить содержимое обработчика. НарядПЛ = Элементы.Товары.ТекущиеДанные; //Если НЕ ПустаяСтрока(НарядПЛ) И ТипЗнч(НарядПЛ) = Тип("ДокументСсылка.ИнтекоПутевойЛистАвтотранспорта") Тогда СтруктураВозврата = ПолучитьДанныеПоПутевомуЛисту(НарядПЛ); ЗаполнитьЗначенияСвойств(НарядПЛ, СтруктураВозврата); //КонецЕсли КонецПроцедуры Ошибка Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции' |
|||
31
hhhh
18.06.14
✎
10:30
|
но действительно есть колонка "ТоварыВодитель"? в табличной части? Что-то гоните похоже. Колонка назывется "Водитель"?
|
|||
32
Рэйв
18.06.14
✎
10:31
|
(30)Ну да. Ты строку таб части хочешь на сервер отправить.Не ест он такое:-)
создай свою струтуру- ответ на клиенте, заполни данными строки и отправляй ее . В нее же напишишь данные которые надо получить, вернешь на клиент и заполнишь строку. |
|||
33
singlych
18.06.14
✎
10:57
|
ппц вы долгие.
ТС, ты передаешь на сервер какой-то хлам, и при этом никак его там не используешь. Сделай уже на клиенте НарядПЛ = Элементы.Товары.ТекущиеДанные.ТоварыНаряд, а на сервере Запрос.УстановитьПараметр("Ссылка", Ссылка); Ну и лишние строки убери. |
|||
34
Gill
18.06.14
✎
11:15
|
Функция ПолучитьДанныеПоПутевомуЛисту(Ссылка)
// ТекНаряд = Элементы.Товары.ТекущиеДанные; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза КАК ТоварыНаименованиеГруза, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.НаименованиеГруза.ЕдиницаХраненияОстатков КАК ТоварыЕдИзм, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Водитель КАК ТоварыСотрудник, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Грузоотправитель КАК ТоварыГрузоотправитель, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Приемщик КАК ТоварыПриемщик, | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.ПеревезеноТн КАК ТоварыПереданоГрузаПриемщику |ИЗ | Документ.ИнтекоПутевойЛистАвтотранспорта.ТЧРаботаТехники КАК ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники |ГДЕ | ИнтекоПутевойЛистАвтотранспортаТЧРаботаТехники.Ссылка.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Выборка = Запрос.Выполнить().Выбрать(); СтруктураВозврата = Новый Структура("ТоварыНаименованиеГруза,ТоварыЕдИзм,ТоварыСотрудник, ТоварыГрузоотправитель,ТоварыПриемщик,ТоварыПереданоГрузаПриемщику"); Если Выборка.Следующий() Тогда //ЗаполнитьЗначенияСвойств(СтруктураВозврата, Выборка); ЗаполнитьЗначенияСвойств(СтруктураВозврата, Выборка); КонецЕсли; Возврат Новый ФиксированнаяСтруктура(СтруктураВозврата); // // КонецФункции &НаКлиенте Процедура ТоварыНарядПриИзменении(Элемент) // Вставить содержимое обработчика. НарядПЛ = Элементы.Товары.ТекущиеДанные.ТоварыНаряд; //Если НЕ ПустаяСтрока(НарядПЛ) И ТипЗнч(НарядПЛ) = Тип("ДокументСсылка.ИнтекоПутевойЛистАвтотранспорта") Тогда СтруктураВозврата = ПолучитьДанныеПоПутевомуЛисту(НарядПЛ); ЗаполнитьЗначенияСвойств(Элементы.Товары.ТекущиеДанные, СтруктураВозврата); //КонецЕсли КонецПроцедуры {Документ.ИнтекоПутевойЛистТракториста.Форма.ФормаДокументаУправляемая.Форма(3600)}: Поле объекта не обнаружено (ТоварыНаряд) НарядПЛ = Элементы.Товары.ТекущиеДанные.ТоварыНаряд; |
|||
35
Gill
18.06.14
✎
11:16
|
(33) Поле объекта не обнаружено (ТоварыНаряд)
|
|||
36
Gill
18.06.14
✎
11:31
|
(33) что за лишние строки?
|
|||
37
Gill
18.06.14
✎
11:53
|
(32)не совсем понял про свою структуру,можно поконкретнее
|
|||
38
Рэйв
18.06.14
✎
11:55
|
(34) Делаешь структуру с полями одноименными колонкам строки.
Заполняешь данными строки, отправляешь на сервер, получаешь то что тебе нужно, вставляешь в структуру, отправляешь обратно на клиет. На клиенте на основании структуры заполняешь ТД. |
|||
39
Рэйв
18.06.14
✎
11:55
|
(38) к (37)
|
|||
40
Gill
18.06.14
✎
12:04
|
(38) 1. "Делаешь структуру с полями одноименными колонкам строки" СтруктураДанных = Новый Структура("ТоварыНаименованиеГруза,ТоварыЕдИзм,ТоварыСотрудник,ТоварыГрузоотправитель,ТоварыПриемщик,ТоварыПереданоГрузаПриемщику") ТАК?
2.отправляешь на сервер - не понимаю 3. получаешь то что тебе нужно - и это соответственно тоже |
|||
41
Рэйв
18.06.14
✎
12:14
|
(40)Как тебя в адинесники угораздило то?:-) проще уж показать, чем объяснить.
//- ТД=Элементы.Товары.ТекущиеДанные; струкДанные=Новый Структура("<имена РЕКВИЗИТОВ таб части через ','>"); ЗаполнитьЗначениеСвойств(струкДанные,ТД); СтруктураВозврата = ПолучитьДанныеПоПутевомуЛисту(струкДанные); //.....В ПолучитьДанныеПоПутевомуЛисту() выполняешь запрос и заполняешь что надо в переданной струкДанные...... ЗаполнитьЗначениеСвойств(ТД,струкДанные); //-------------- надеюсь с запросом и заполнением структуры сам разберешься |
|||
42
Рэйв
18.06.14
✎
12:15
|
*последняя строка вместо
ЗаполнитьЗначениеСвойств(ТД,струкДанные); пиши ЗаполнитьЗначениеСвойств(ТД,СтруктураВозврата ); А то еще пару часов гадать будешь:-) |
|||
43
Gill
18.06.14
✎
15:21
|
(41) а что же все-таки в качестве параметра запроса указывать?
|
|||
44
Gill
18.06.14
✎
15:28
|
как в условии запроса сослаться на конкретный(выбранный)элемент ТЧ Товары?
|
|||
45
Gill
18.06.14
✎
16:05
|
^
|
|||
46
Gill
18.06.14
✎
16:08
|
При выполнении запроса на сервере ТекущиеДанные - не доступно, при указании в качестве параметра "Ссылка" - Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.Что в итоге указывать-то?
|
|||
47
Gill
18.06.14
✎
17:11
|
Всё-таки кто-нибудь может ответить:
"Как обратится к реквизиту табличной части управляемой формы и передать это значение в качестве значения в параметр запроса?" |
|||
48
Gill
19.06.14
✎
09:09
|
^
|
|||
49
Gill
19.06.14
✎
09:19
|
Я всё еще верю, что вы мне сможете помочь...Меня интересует вопрос в (47)?
|
|||
50
Fish
19.06.14
✎
09:20
|
(47) У формы нет табличной части.
|
|||
51
РенеДекарт
24.06.14
✎
16:25
|
(47)>>Как обратится к реквизиту табличной части управляемой формы
ответ: никак. В УФ (да и, по большому счету, в ОФ 1С тоже) нельзя обратится к данным Формы, не находясь в данный момент в контексте это формы. Чтобы получить данные - нужно обращаться к ТЧ объекта (или в регистр, если объект делает движения по какому-либо регистру). И делается это НаСервере. Получив данные - через Параметр запроса передают их в запрос (он тоже НаСервере). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |