|
v8: Помогите связать таблицы | ☑ | ||
---|---|---|---|---|
0
titan1993
28.05.13
✎
12:19
|
Уже не первая просьба помощи, !Умоляю!, подскажите что не так?
создал документ с двумя ТЧ, первая ТЧ называется Услуги, а вторая Документы. Пытаюсь установить между ними связь через запрос по полю "Владелец" не пойму как реализовать механизм выбора. написал код: Функция ОбновитьТаблицу(ЭтаФорма) МассивДанных = Новый Массив; Для каждого СтрокаТЧ Из ЭтаФорма.Объект.Документы Цикл МассивДанных.Добавить(СтрокаТЧ.Наименование); КонецЦикла; КонецФункции // () &НаСервереБезКонтекста Процедура стораз(МассивДанных) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугиДокументы.Ссылка, | ОказаниеУслугиДокументы.НомерСтроки, | ОказаниеУслугиДокументы.Наименование, | ОказаниеУслугиУслуги.Ссылка КАК Ссылка1, | ОказаниеУслугиУслуги.НомерСтроки КАК НомерСтроки1, | ОказаниеУслугиУслуги.НаименованиеУслуги, | ОказаниеУслугиУслуги.Количество, | ОказаниеУслугиУслуги.Цена, | ОказаниеУслугиУслуги.Сумма |ИЗ | Документ.ОказаниеУслуги.Услуги КАК ОказаниеУслугиУслуги | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОказаниеУслуги.Документы КАК ОказаниеУслугиДокументы | ПО ОказаниеУслугиУслуги.НаименованиеУслуги = ОказаниеУслугиДокументы.Наименование.Владелец |ГДЕ | ОказаниеУслугиДокументы.Наименование В(&Ссылки)"; Запрос.УстановитьПараметр("Ссылки", МассивДанных); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда результат = Выборка.ОказаниеУслугиДокументы КонецЕсли; Сообщить(результат); //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // // Вставить обработку выборки ВыборкаДетальныеЗаписи //КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры &НаКлиенте Процедура ВсеДоговоры(Команда) ОбновитьТаблицу(ЭтаФорма); КонецПроцедуры ошибка: {Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(145)}: Ошибка при вызове метода контекста (ОбновитьТаблицу) ОбновитьТаблицу(ЭтаФорма); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'УправляемаяФорма' |
|||
1
shuhard
28.05.13
✎
12:20
|
(0)[Уже не первая просьба помощи]
лимит исчерпан, зайдите на следующей неделе |
|||
2
Mitriy
28.05.13
✎
12:21
|
ну не знает сервер, что такое форма... и ругается открытым текстом...
|
|||
3
чувак
28.05.13
✎
12:22
|
ух ты, дважди шайтан.
Это же юпилейная 666666 ая ветка! |
|||
4
EvgenOrvin
28.05.13
✎
12:24
|
Вот уж точно... скрин.
|
|||
5
titan1993
28.05.13
✎
12:25
|
ну подскажите что не так? я уже 3 дня голову ломаю:(
|
|||
6
rull9ss
28.05.13
✎
12:25
|
(5)
код ошибки прочитай. написано же все |
|||
7
evorle145
28.05.13
✎
12:25
|
(2), "ОбновитьТаблицу" выполняется не на сервере
|
|||
8
rull9ss
28.05.13
✎
12:26
|
ты с клиента пытаешься передать форму на сервер - вот на это он и ругается. передавай на сервер сразу табличные части(или что там тебе еще надо)
|
|||
9
titan1993
28.05.13
✎
12:26
|
&НаКлиентеНаСервереБезКонтекста?
|
|||
10
titan1993
28.05.13
✎
12:28
|
(8) прости, это как? Подскажите, 200 руб. на тлф положу, не знаю я буду просто бесконечно рад, если у меня получится связать эти две ТЧ
|
|||
11
sapphire
28.05.13
✎
12:28
|
Запрос.Текст =
"ВЫБРАТЬ | ОказаниеУслугиДокументы.Ссылка, | ОказаниеУслугиДокументы.НомерСтроки, | ОказаниеУслугиДокументы.Наименование, | ОказаниеУслугиУслуги.Ссылка КАК Ссылка1, | ОказаниеУслугиУслуги.НомерСтроки КАК НомерСтроки1, | ОказаниеУслугиУслуги.НаименованиеУслуги, | ОказаниеУслугиУслуги.Количество, | ОказаниеУслугиУслуги.Цена, | ОказаниеУслугиУслуги.Сумма |ИЗ | Документ.ОказаниеУслуги.Услуги КАК ОказаниеУслугиУслуги | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОказаниеУслуги.Документы КАК ОказаниеУслугиДокументы | ПО ОказаниеУслугиУслуги.Ссылка = ОказаниеУслугиДокументы.Ссылка |ГДЕ | ОказаниеУслугиДокументы.Ссылка В(&Ссылки)"; |
|||
12
rull9ss
28.05.13
✎
12:28
|
&НаКлиенте
Процедура ВсеДоговоры(Команда) ОбновитьТаблицу(ЭтаФорма.Объект.Документы); КонецПроцедуры Функция ОбновитьТаблицу(ТаблЧасть) МассивДанных = Новый Массив; Для каждого СтрокаТЧ Из ТаблЧасть Цикл МассивДанных.Добавить(СтрокаТЧ.Наименование); КонецЦикла; КонецФункции |
|||
13
titan1993
28.05.13
✎
12:29
|
Вот это я понимаю, пошла помощь:) (12) сейчас попробую
|
|||
14
Mitriy
28.05.13
✎
12:30
|
да не надо вообще ничего передавать в параметрах, даже на сервер лезть не надо, все делай на клиенте в контексте формы...
|
|||
15
Mitriy
28.05.13
✎
12:30
|
в смысле, массив формируй, а потом уже массив кидай на сервер...
|
|||
16
rull9ss
28.05.13
✎
12:31
|
за 200 рублей книгу Радченко себе купи лучше
|
|||
17
titan1993
28.05.13
✎
12:32
|
(12) {Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(145)}: Ошибка при установке значения атрибута контекста (Документы)
ОбновитьТаблицу(ЭтаФорма.Объект.Документы); по причине: Нельзя изменять поле, содержащее объект данных формы |
|||
18
sapphire
28.05.13
✎
12:33
|
(17) Зачем?!
|
|||
19
titan1993
28.05.13
✎
12:33
|
я понимаю, что я ничего не понимаю :(, но сейчас все серьезно, если я не сделаю то чего от меня просят, тогда мне кирдык:'(
|
|||
20
titan1993
28.05.13
✎
12:34
|
(18) Что, зачем?
|
|||
21
evorle145
28.05.13
✎
12:34
|
(17), так пиши
Процедура ВсеДоговоры(Команда) Данные = ЭтаФорма.Объект.Документы; ОбновитьТаблицу(Данные); КонецПроцедуры |
|||
22
Mitriy
28.05.13
✎
12:35
|
млять...
&НаКлиенте Процедура ВсеДоговоры(Команда) МассивДанных = Новый Массив; Для каждого СтрокаТЧ Из ТаблЧасть Цикл МассивДанных.Добавить(СтрокаТЧ.Наименование); КонецЦикла; КонецПроцедуры |
|||
23
Mitriy
28.05.13
✎
12:35
|
Вместо ТаблЧасть, подставь Объект.Документы...
|
|||
24
sapphire
28.05.13
✎
12:38
|
Если на форме отображается таблица Объект.Документы, то она сама обновится, если перечитать данные формы или изменения вводились интерактивно
|
|||
25
titan1993
28.05.13
✎
12:41
|
мне кажется мой косяк тут?
Запрос.УстановитьПараметр("Ссылки", МассивДанных); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда результат = Выборка.ОказаниеУслугиДокументы КонецЕсли; Сообщить(результат); |
|||
26
titan1993
28.05.13
✎
12:45
|
Люди добрые! Спасите :'(
|
|||
27
sapphire
28.05.13
✎
12:45
|
(25) Отладчиком не умеешь пользоваться?
|
|||
28
sapphire
28.05.13
✎
12:47
|
(26) с двумя ТЧ, первая ТЧ называется Услуги, а вторая Документы
Опиши структуру метаданных табличных частей и внятно, что именно ты хочешь, что бы тебе подсказали. |
|||
29
titan1993
28.05.13
✎
12:52
|
Функция ОбновитьТаблицу(ТаблЧасть)
ТаблЧасть = Объект.Документы; МассивДанных = Новый Массив; Для каждого СтрокаТЧ Из ТаблЧасть Цикл МассивДанных.Добавить(СтрокаТЧ.Наименование); КонецЦикла; Сообщить(МассивДанных) КонецФункции // () &НаКлиенте Процедура ВсеДоговоры(Команда) ТаблЧасть = Объект.Документы; ОбновитьТаблицу(ТаблЧасть); КонецПроцедуры теперь сообщается массив, вопрос в том, как его заполнить данными :( |
|||
30
sapphire
28.05.13
✎
12:55
|
(29) У тебя структура больная.
|
|||
31
titan1993
28.05.13
✎
12:57
|
СпрСвойства подчинен СпрУслуги. Документ с двумя табличными частями. Надо чтобы когда я добавлял элемент в ТЧ Услуги, в ТЧ Свойства добавлялись автоматически все свойства этого справочника. т.е. в ТЧ1 я выбираю ложка, а в ТЧ2 отобразилось красный зеленый синий
|
|||
32
titan1993
28.05.13
✎
12:57
|
У меня все больное(
|
|||
33
sapphire
28.05.13
✎
13:03
|
(31)
в ТЧ1 я выбираю ложка,а в ТЧ2 отобразилось красный зеленый синий Если речь об отображении... То, ИМХО, ТЧ2 должна отображать список СпрСвойства, а отбор по владельцу через ТЧ1 текущие данные поле с сылкой на услуги, или, использовать для ТЧ2 отбор строк при изменении позиционирования в ТЧ1 |
|||
34
titan1993
28.05.13
✎
13:11
|
(33) я попытался это сделать сперва с помощь. кнопки, для отладки. Но у меня проблема с выборкой, немогу понять как заполнить данные из выборки в массив, а потом из массива в ТЧ
|
|||
35
sapphire
28.05.13
✎
13:13
|
(34) Как раз проблема в подходе...
|
|||
36
sapphire
28.05.13
✎
13:15
|
(34) ИМХО, стОит добавить реквизит формы с типом ТаблицаЗначений, коей добавить 2 колонки - Услуга,Свойство
При изменении услуг заполнять этот реквизит, а при изменении позиционирования в ТЧ1 играться с отбором строк в элементе формы, указывающем на реквизит. |
|||
37
titan1993
28.05.13
✎
13:19
|
(36) понял, спасибо
|
|||
38
Звездочёт
29.05.13
✎
17:33
|
(0) страшная тема... см. код в адресной строке :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |