|
Заполнить ТЧ в управляемых формах | ☑ | ||
---|---|---|---|---|
0
gerthog
13.01.15
✎
15:56
|
Нужно при изменении одного реквизита ТЧ заполнить другой, делаю так:
&НаКлиенте Процедура ИсследованияНоменклатураПриИзменении(Элемент) СтрокаТЧ = Элементы.Исследования.ТекущиеДанные; СтрокаТЧ.лис_Биоматериал = ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура); КонецПроцедуры Ошибок нет, но и не заполняется нифига |
|||
1
Timon1405
13.01.15
✎
15:58
|
||||
2
gerthog
13.01.15
✎
16:02
|
(1) Петросян что ли?
|
|||
3
Garykom
гуру
13.01.15
✎
16:07
|
(2) Вот почему люди считают что можно без изучения теории, прохождения практики и сдачи экзамена пилотировать авиалайнер?
Просто задав вопрос на форуме пилотов? |
|||
4
gerthog
13.01.15
✎
16:10
|
Я с УФ больше года не работал, да и когда работал и то чуток. Помню раньше я это делал, ща просто туплю чёто
|
|||
5
Garykom
гуру
13.01.15
✎
16:12
|
(4) угу после операции коррекции пола ))
|
|||
6
olegves
13.01.15
✎
16:20
|
(0) код для ИсследованияНоменклатураИзмененить покажи
|
|||
7
Euguln
13.01.15
✎
16:22
|
(0) сразу в глаза бросается:
СтрокаТЧ = Элементы.Исследования.ТекущиеДанные; СтрокаТЧ.лис_Биоматериал = ИсследованияНоменклатураИзмененить(СтрокаТЧ.Номенклатура); (6) + 1, как вариант типы не совпадают |
|||
8
gerthog
13.01.15
✎
16:25
|
(6) Он работает
&НаСервере Функция ИсследованияНоменклатураИзмененить(Элемент) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Лис_Биоматериал.Ссылка |ИЗ | Справочник.Лис_Биоматериал КАК Лис_Биоматериал |ГДЕ | Лис_Биоматериал.Владелец = &Элемент"; Запрос.УстановитьПараметр("Элемент", Элемент); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда Возврат ВыборкаДетальныеЗаписи.Ссылка; КонецЕсли; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецФункции И типы совпадают |
|||
9
vicof
13.01.15
✎
16:27
|
"Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда Возврат ВыборкаДетальныеЗаписи.Ссылка; КонецЕсли; КонецЦикла;" А если записей нет или больше одной? Что за балбес писал это? |
|||
10
olegves
13.01.15
✎
16:36
|
(8) это зачем?
Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда |
|||
11
gerthog
13.01.15
✎
16:39
|
(10) Их может быть больше одного, если больше одного тогда надо оставить как есть. Если ни одного или больше одного, то делать ничего не надо. Почему балбес то?
|
|||
12
Euguln
13.01.15
✎
16:41
|
(11) Отладчиком проходил?
|
|||
13
gerthog
13.01.15
✎
16:51
|
(12) Отладчиком проходил, функция всё вернула, типы совпадают всё проходит на ура, только ничего не меняется
|
|||
14
polosov
13.01.15
✎
16:54
|
(13)
ТаблицаФормы (FormTable) ТекущиеДанные (CurrentData) Использование: Только чтение. Описание: Тип: ДанныеФормыСтруктура; ДанныеФормыЭлементКоллекции; ДанныеФормыЭлементДерева. Представляет доступ к текущим данным (данным текущей строки). Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). |
|||
15
gerthog
13.01.15
✎
16:57
|
(14) Ах вот оно чё, а как тогда надо?)
|
|||
16
polosov
13.01.15
✎
16:58
|
(15) Хотя наверно должно писать в дочерний объект
|
|||
17
Euguln
13.01.15
✎
16:59
|
(14) Не в этом дело, свойства можно менять.
|
|||
18
polosov
13.01.15
✎
17:02
|
(16) У меня есть подобное присваивание. Все нормально отрабатывает. Только в ПередОкончаниемРедактирования
|
|||
19
gerthog
13.01.15
✎
17:15
|
(18) Можешь код показать?
|
|||
20
Krolik Bezobraznik
13.01.15
✎
17:27
|
Как мне кажется ТЧ следует заполнять наСервере.
|
|||
21
Garykom
гуру
13.01.15
✎
17:29
|
(20) +1 )) в случае УФ, но не надо было говорить об этом ТС может все таки прочитал(ла) бы книжку
|
|||
22
polosov
13.01.15
✎
18:01
|
(19)
&НаКлиенте Процедура ЗаготовкиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) Если НЕ ОтменаРедактирования Тогда Элемент.ТекущиеДанные.СерийныйНомерОтливки = ЭтаФорма.Элементы.Отливки.ТекущиеДанные.СерийныйНомерОтливки; СформироватьСерийныйНомерЗаготовки(ЭтаФорма.Элементы.Заготовки.ТекущиеДанные) КонецЕсли; КонецПроцедуры |
|||
23
gerthog
14.01.15
✎
08:12
|
(20) Будет ошибка: "Текущие данные таблицы недоступны на сервере"
|
|||
24
Рэйв
14.01.15
✎
08:18
|
(20)Это если программно заполнять объект из базу.
А в случае с ТС все боступно через Объект.ТабЧасть |
|||
25
Рэйв
14.01.15
✎
08:21
|
(23)Чцдес не бывает.
Варианты: 1.Типы все таки не совпадают 2.Возвращается пустая ссылка 3. Возвращается ссылка с пустым наименованием. |
|||
26
gerthog
14.01.15
✎
08:26
|
(25) Отладчик говорит значение есть, тип: СправочникСсылка.Лис_Биоматериал, а реквизит ТЧ имеет тип: СправочникСсылка.Лис_Биоматериал
|
|||
27
Рэйв
14.01.15
✎
08:29
|
(26)А что говорит отладчик на:
ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура).ПустаяСсылка() ? |
|||
28
gerthog
14.01.15
✎
08:31
|
(27) Говорит: Метод объекта не обнаружен
|
|||
29
Рэйв
14.01.15
✎
08:32
|
(28)Офигенно:-)
ну тогда скажи что говорит на : ТипЗнч(ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура)) ? |
|||
30
lxndr
14.01.15
✎
08:33
|
(27) *Пустая()
|
|||
31
Рэйв
14.01.15
✎
08:34
|
(30)блин...точно.
|
|||
32
Рэйв
14.01.15
✎
08:34
|
(28) Попробуй с учетом (30)
Я с методом менеджера спутал:-) |
|||
33
polosov
14.01.15
✎
08:35
|
(29) А ты не хочешь свой код поправить на такое?
СтрокаТЧ = Элементы.Исследования.ТекущиеДанные; Заменить на СтрокаТЧ = Элемент.ТекущиеДанные; |
|||
34
lxndr
14.01.15
✎
08:35
|
Вот это:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда Возврат ВыборкаДетальныеЗаписи.Ссылка; КонецЕсли; КонецЦикла; Замени на это: Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда ВыборкаДетальныеЗаписи.Следующий(); Возврат ВыборкаДетальныеЗаписи.Ссылка; Иначе Возврат Неопределено; КонецЕсли; |
|||
35
polosov
14.01.15
✎
08:35
|
(33) это к (28)
|
|||
36
Рэйв
14.01.15
✎
08:36
|
(33)Буду я еще милисекунды высчитывать от использования второй точки.. Результат важен
|
|||
37
Рэйв
14.01.15
✎
08:38
|
(33)однохренственно же:-)
Но я тоже предпочитаю все таки явно обращаться через Элементы.Так более читаемо. |
|||
38
DrZombi
гуру
14.01.15
✎
08:40
|
(28) тебе в (9) намекали, что у тебя Гуано Код.
Зачем ты присвистываешь Цикл? |
|||
39
DrZombi
гуру
14.01.15
✎
08:40
|
(0) Отладчик включи, и почитай книжку по (1) :)
|
|||
40
gerthog
14.01.15
✎
08:47
|
(29) отладчик на это: "ТипЗнч(ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура))", говорит: значение = Биоматериал, Тип= Тип
|
|||
41
Рэйв
14.01.15
✎
08:48
|
(40)На пустую проверь все таки с учетом (30)
|
|||
42
gerthog
14.01.15
✎
08:48
|
(38) В (9) чувак ляпнул не подумав. Хрен с ним, с циклом, пусть хотяб с циклом заработает
|
|||
43
gerthog
14.01.15
✎
08:49
|
(41) ТипЗнч(ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура)) это возвращает Ложь
|
|||
44
gerthog
14.01.15
✎
08:49
|
(41) ИсследованияНоменклатураИзмененить(Элементы.Исследования.ТекущиеДанные.Номенклатура).Пустая() - это возвращает Ложь
|
|||
45
gerthog
14.01.15
✎
08:49
|
А (43) не то скопипастил
|
|||
46
Krolik Bezobraznik
14.01.15
✎
08:51
|
Но судя по всему код у ТС вполне работоспособный.
Вот пример когда у меня в ОтгрузкеТовара &НаКлиенте Процедура ТоварыНоменклатураПриИзменении(Элемент) ТекущиеДанные = Элементы.Товары.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда Если ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда НовыйКод = СокрЛП(ПолучитьЗначениеРеквизита(ТекущиеДанные.Номенклатура, "Код")); Если ТекущиеДанные.НоменклатураКод <> НовыйКод Тогда ТекущиеДанные.НоменклатураКод = НовыйКод; КонецЕсли; Иначе ТекущиеДанные.НоменклатураКод = ""; КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьЗначениеРеквизита(Элемент, Реквизит = "") Возврат Элемент[Реквизит] КонецФункции |
|||
47
Krolik Bezobraznik
14.01.15
✎
08:52
|
(46) + вполне себе работает.
ТС у тебя действительно или Типы не совпадают или значение пустое возвращает. |
|||
48
gerthog
14.01.15
✎
08:52
|
(34) Думаешь если заменю это решит проблему?
|
|||
49
gerthog
14.01.15
✎
08:55
|
Тут столько умников которые мне книжки советуют, а получается, что и сами их не читали
|
|||
50
Krolik Bezobraznik
14.01.15
✎
08:57
|
ТС ты бы в функции ИсследованияНоменклатураИзмененить добавил код возврата "неопределено" после цикла. Так было бы яснее что тебе возвращает твоя функция, раз отладчик не помогает.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; Возврат Неопределено; |
|||
51
gerthog
14.01.15
✎
08:59
|
(50) Сделал я так, и естесно не помогло, возвращает ссылку, нужную ссылку
|
|||
52
polosov
14.01.15
✎
09:02
|
Проверил код ТС.
Все работает. &НаКлиенте Процедура ТабличнаяЧасть1ПриИзменении(Элемент) // Вставить содержимое обработчика. ТекСтр = Элементы.ТабличнаяЧасть1.ТекущиеДанные; ТекСтр.Реквизит1 = ПолучитьЭлементСпр(); КонецПроцедуры &НаСервере Функция ПолучитьЭлементСпр() Возврат Справочники.Материалы.НайтиПоНаименованию("Лом 11А"); КонецФункции // ПолучитьЭлементСпр() |
|||
53
gerthog
14.01.15
✎
09:03
|
(52) Спасибо, тогда буду искать причины не в коде
|
|||
54
Krolik Bezobraznik
14.01.15
✎
09:08
|
ТС ты нам потом расскажи, в чем дело было. Уж больно загадочно. =))
|
|||
55
gerthog
14.01.15
✎
09:16
|
В реквизите ТЧ в связях параметра выбора, режим изменения связанного значения установил на "Не изменять" и заработало :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |