|
8.2 Как обратиться к наименованию выбранного товара? | ☑ | ||
---|---|---|---|---|
0
ssstop
06.01.12
✎
13:07
|
Доброго времени суток, подскажите пожалуйста,
в приходной накладной нужно описать условие, которое зависит от наименования выбранного товара из справочника Номенклатура, как к нему обратиться? |
|||
1
andrewks
06.01.12
✎
13:09
|
Уважаемое Наименование справочника Номенклатура, разрешите к Вам обратиться!
|
|||
2
Kreont
06.01.12
✎
13:09
|
Товары.Наименование
Номенкладутра.Наименование Как то так, нету баз под рукой ) |
|||
3
H A D G E H O G s
06.01.12
✎
13:15
|
<<в приходной накладной нужно описать условие, которое зависит от наименования выбранного товара из справочника>>
Анальные кары за такое обычно следуют. |
|||
4
Бубр
06.01.12
✎
13:16
|
(3) )))))
|
|||
5
Иешуа
06.01.12
✎
13:21
|
Флаг в справочник добавь и по этому флагу анализируй чего тебе там надо.
Анализировать наименование... анальная кара это меньшее что могут сделать за такое |
|||
6
Kreont
06.01.12
✎
13:22
|
100% уж лучше тогда код сверять, а его запретить всем изменять
|
|||
7
ssstop
06.01.12
✎
13:23
|
на 8.1 и так ясно, на 8.2 выдает ошибку отображения типов: отсутствует отображение для типа "ПолеФормы"
|
|||
8
andrewks
06.01.12
✎
13:24
|
лучше не анализировать ни код, ни наименование.
либо РС, либо реквизит, либо подч.спр, ну любой механизм, чтобы его контролировал и менял ЮЗЕР, а не программист. |
|||
9
marvak
06.01.12
✎
13:24
|
(0)
СтрокаТЧ = ЭтотОбъект.Товары[0]; НаименованиеДляАнальнойКары = СтрокаТЧ.Номенклатура.Наименование; |
|||
10
ssstop
06.01.12
✎
13:26
|
это для конфы с нуля, пример с номенклатурой приводится для наглядности
|
|||
11
marvak
06.01.12
✎
13:28
|
делай обработчик поля табличной части Номенклатура ПриИзменении() и там проверяй
|
|||
12
marvak
06.01.12
✎
13:29
|
(11) ну в смысле поля ввода табличного поля, соответствующего табличной части документа
|
|||
13
andrewks
06.01.12
✎
13:31
|
(0) автор, озвучь задачу
|
|||
14
ssstop
06.01.12
✎
13:44
|
(13)нужно чтобы при выборе элемента "Ferrum" в колонке табличной части ХимЭлемент, в колонке HTM подставлялось значение 10
&наСервере Процедура РассчитатьHTM (СтрокаТЧ) Если СтрокаТЧ.ХимЭлемент.Наименование = "Ferrum" Тогда СтрокаТЧ.HTM = 10 КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ТаблицаХимЭлементПриИзменении (СтрокаТЧ) РассчитатьHTM (СтрокаТЧ) КонецПРоцедуры при таком варианте выдает ошибку отображения типов: отсутствует отображение для типа "ПолеФормы"? |
|||
15
H A D G E H O G s
06.01.12
✎
13:48
|
УТ11?
|
|||
16
ssstop
06.01.12
✎
13:54
|
(15) см (10) пример с ут приводился в надежде быстрее получить ответ на вопрос, но аншлаговцев тут оказалось больше чем программистов
|
|||
17
H A D G E H O G s
06.01.12
✎
13:56
|
(16) Просто в УТ есть рассово верная функция ОМ ОбщегоНазначения
|
|||
18
H A D G E H O G s
06.01.12
✎
13:56
|
// Функция ПолучитьЗначениеРеквизита возвращает значение
// реквизита, прочитанного из информационной базы по ссылке на объект. // // Если доступа к реквизиту нет, возникнет исключение прав доступа. // Если необходимо зачитать реквизит независимо от прав текущего пользователя, // то следует использовать предварительный переход в привилегированный режим. // // Параметры: // Ссылка - ссылка на объект, - элемент справочника, документ, ... // ИмяРеквизита - Строка, например, "Код". // // Возвращаемое значение: // Произвольный - зависит от типа значения прочитанного реквизита. // Функция ПолучитьЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт |
|||
19
H A D G E H O G s
06.01.12
✎
13:57
|
Вот ее можно реализовать в самописке.
|
|||
20
H A D G E H O G s
06.01.12
✎
13:58
|
Либо вот я для себя сделал для цепочки реквизитов.
Функция ПолучитьВложенноеЗначениеРеквизита(ТекущаяСсылка, МассивВложенныхРеквизитов, УровеньВложенности, ЕстьТабличныеЧасти=Ложь,Результат) ИмяРеквизита=МассивВложенныхРеквизитов[УровеньВложенности-1]; МетаданныеСсылки=ТекущаяСсылка.Метаданные(); ЭтоТоЧтоНужно=Ложь; ИмяБазовогоТипа=ОбщегоНазначения.ВидОбъектаПоСсылке(ТекущаяСсылка); ЭтоРеквизитШапки=МетаданныеСсылки.Реквизиты.Найти(ИмяРеквизита) <> Неопределено; Если Не ЭтоРеквизитШапки Тогда Для Каждого СтандартныйРеквизит Из МетаданныеСсылки.СтандартныеРеквизиты Цикл Если ВРЕГ(СтандартныйРеквизит.Имя)=ИмяРеквизита Тогда ЭтоРеквизитШапки=Истина; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ЭтоРеквизитШапки=Истина Тогда ЭтоРеквизит=Истина; Источник=ИмяБазовогоТипа+"."+МетаданныеСсылки.Имя; ЭтоТоЧтоНужно=МассивВложенныхРеквизитов.Количество()=УровеньВложенности; ИначеЕсли ЕстьТабличныеЧасти=Истина И МетаданныеСсылки.ТабличныеЧасти.Найти(ИмяРеквизита)<>Неопределено Тогда ИмяТЧ=ИмяРеквизита; ЭтоРеквизит=Ложь; ИмяРеквизита=МассивВложенныхРеквизитов[УровеньВложенности]; Если МетаданныеСсылки.ТабличныеЧасти[ИмяТЧ].Реквизиты.Найти(ИмяРеквизита)=Неопределено Тогда Возврат Ложь; КонецЕсли; Источник=ИмяБазовогоТипа+"."+МетаданныеСсылки.Имя+"."+ИмяТЧ; ЭтоТоЧтоНужно=МассивВложенныхРеквизитов.Количество()=УровеньВложенности+1; Иначе Возврат Ложь; КонецЕсли; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Источник."+ИмяРеквизита+" КАК Реквизит |ИЗ | "+Источник+" КАК Источник |ГДЕ | Источник.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",ТекущаяСсылка); Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если ЭтоТоЧтоНужно=Истина Тогда Результат.Добавить(Выборка.Реквизит); Иначе Если ОбщегоНазначения.ЭтоСсылка(Выборка.Реквизит) Тогда Если ПолучитьВложенноеЗначениеРеквизита(Выборка.Реквизит, МассивВложенныхРеквизитов, УровеньВложенности+1, ЕстьТабличныеЧасти,Результат)<>Истина Тогда Возврат Ложь; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции Функция ПолучитьЗначенияЦепочкиРеквизита(Ссылка, Знач ИмяРеквизита, ЕстьТабличныеЧасти=Ложь) Экспорт Если Не ЗначениеЗаполнено(ИмяРеквизита) Тогда Возврат Неопределено; КонецЕсли; ИмяРеквизита=ВРЕГ(ИмяРеквизита); ИмяРеквизита=СтрЗаменить(ИмяРеквизита,"ССЫЛКА.",""); МассивВложенныхРеквизитов=СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяРеквизита,"."); УровеньВложенности=1; Результат = Новый Массив; Если ПолучитьВложенноеЗначениеРеквизита(Ссылка, МассивВложенныхРеквизитов, УровеньВложенности, ЕстьТабличныеЧасти,Результат)=Истина Тогда Возврат Результат; Иначе Возврат Неопределено; КонецЕсли; КонецФункции |
|||
21
marvak
06.01.12
✎
13:58
|
ТаблицаХимЭлементПриИзменении (СтрокаТЧ) это обработчик чего?
ту видимо управляемые формы? попробуй вместо РассчитатьHTM (СтрокаТЧ) передалать вызов на СтрокаТЧ.НТМ = РассчитатьHTM(СтрокаТЧ.ХимЭлемент); ну и причесать саму РассчитатьHTM() |
|||
22
andrewks
06.01.12
✎
14:00
|
(14) используй Элементы.Товары.ТекущиеДанные
ЗЫ привет тебе от Петросяна |
|||
23
H A D G E H O G s
06.01.12
✎
14:00
|
(22) Ему просто перетащить код (17) из типовой нужно.
|
|||
24
andrewks
06.01.12
✎
14:24
|
(23) да, честно говоря, из-за такой фигни даже не хочется в типовую лезть. тут делов-то на 2 мин
&НаСервереБезКонтекста Функция ПолучитьНаименованиеТовара(Товар) Возврат Товар.Наименование; КонецФункции &НаКлиенте Процедура ТоварыТоварПриИзменении(Элемент) ТекСтр=Элементы.Товары.ТекущиеДанные; Если ПолучитьНаименованиеТовара(ТекСтр.Товар)="Ferrum" Тогда ТекСтр.HTM=10; КонецЕсли; КонецПроцедуры |
|||
25
andrewks
06.01.12
✎
14:24
|
только всё равно неправильно это
|
|||
26
ssstop
12.01.12
✎
12:05
|
(25) но работает, спасибо. подскажите еще, как вставить на форму документа табличную часть и переключатель?
|
|||
27
V_V_V
12.01.12
✎
12:17
|
(26) Перетащи на форму из реквизитов
Про переключатели недавно обсуждали, поиск не работает? v8: Куда делись переключатели в УФ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |