Имя: Пароль:
1C
1С v8
УТ11. УФ. Функции клиента и сервера.
,
0 Кокос
 
11.01.12
13:21
&НаСервере
Функция ПолучитьЗначениеДополнительногоСвойстваОбъекта(ВидОбъекта,Объект,НаименованиеСвойства) Экспорт
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                  |    ДополнительныеРеквизитыОбъекта.Свойство,
                  |    ДополнительныеРеквизитыОбъекта.Значение
                  |ИЗ
                  |    "+ВидОбъекта+".ДополнительныеРеквизиты КАК ДополнительныеРеквизитыОбъекта
                  |ГДЕ
                  |    ДополнительныеРеквизитыОбъекта.Ссылка = &Объект
                  |    И ДополнительныеРеквизитыОбъекта.Свойство.Наименование = &ИмяДопСвойства";
   Запрос.УстановитьПараметр("ИмяДопСвойства",НаименованиеСвойства);
   Запрос.УстановитьПараметр("Объект",Объект);
   ТаблицаСвойств = Запрос.Выполнить().Выгрузить();
   Если ТаблицаСвойств.Количество() > 0 Тогда
       Возврат ТаблицаСвойств[0].Значение;
   Иначе
       Возврат Неопределено;
   КонецЕсли;

КонецФункции

&НаКлиенте
Функция ПолучитьЗначениеДополнительногоСвойстваОбъектаНаКлиенте(ВидОбъекта,Объект,НаименованиеСвойства) Экспорт
   Возврат ПолучитьЗначениеДополнительногоСвойстваОбъекта(ВидОбъекта,Объект,НаименованиеСвойства);
КонецФункции



.....
Кратность = МойМодуль.ПолучитьЗначениеДополнительногоСвойстваОбъектаНаКлиенте("Справочник.Номенклатура,Номенклатура,"Кратность");
.....

клиентская функция не видит серверной. Может кто подскажет? Серверную функцию пока что не отладил поэтому сильно не пинать :)) Пойду пока покопаю мануалы.
1 Азат
 
11.01.12
13:23
У моймодуль какие галки стоят?
2 Defender aka LINN
 
11.01.12
13:25
(0) А сразу вызвать серверную - слишком скучно, интрига пропадает?
3 Кокос
 
11.01.12
13:27
(1) все :)
4 Кокос
 
11.01.12
13:28
(2) сразу тоже не видит :)
5 Defender aka LINN
 
11.01.12
13:29
(3) И нахрена там все галки? Логически объяснить сможешь?
6 V_V_V
 
11.01.12
13:32
(0) А откуда взято, что не видит? :))
Точки останова включены?
Платформа файловая, серверная? Дебаг включен?
7 Defender aka LINN
 
11.01.12
13:34
(6) 3 выстрела, и все в молоко.
8 Кокос
 
11.01.12
13:37
(6) все включено. платформа файловая.
9 Кокос
 
11.01.12
13:38
(5) да был только сервер сначала. сейчас все переиграл. наверное буду делать МойМодульНаКлиенте. Но все равно это не поможетже?
10 Defender aka LINN
 
11.01.12
13:40
(9) Выкинь директивы накер. В ОМ они не используются.
11 Кокос
 
11.01.12
13:40
(10) понял. то бишь надо два модуля?
12 vmv
 
11.01.12
13:41
стандартная ошибка объявить общий модуль с директивами сервер и клиент и пытаться в нем же вызвать в его же серверной методе его же клиентскую процедуру.

мдя, при компиляции этого модуля при выполнении на клиенте и на сервере, что мы увидим и что нужно сделать?
13 Кокос
 
11.01.12
14:07
(12) ну вообще изначально была только серверная функция. я ее вызывал из клиентского ивента ПриОкончанииРедактированияСтроки. И там он ее не видел. и не видит. сейчас попробую два модуля сделать
14 Defender aka LINN
 
11.01.12
14:11
(13) А "вызов сервера" кто будет ставить в модуле?
15 Defender aka LINN
 
11.01.12
14:12
+(14) Ну и в данном случае клиентский модуль нах не нужен. Ты и так уже на клиенте, зачем промежуточный модуль вообще?
16 Кокос
 
11.01.12
14:14
(15) да я клиентский модуль уж написал на всякий случай. прямой вызов или клиентского события все равно не идет.
17 Кокос
 
11.01.12
14:14
(14) пойду смотреть как поставит "вызов сервера". Видимо не все я еще изучил в УФ за две недели :)
18 Кокос
 
11.01.12
15:59
вроде сделал. всплыла другая проблема. у меня вторая табличная часть Производство с расшифровкой  комплектующих связанный по ключусвязи. вобщем если там сменить длину ширину и количество то в таб части товары идет площадь. в отладке(//***) видно как значение меняется. а визуально никаких изменений не происходит. с чем это может быть связано?

&НаКлиенте
Процедура ПересчетСтрокиТовара(Элемент)
   ОбщаяПлощадь = 0;
   Для Каждого Строчка ИЗ Объект.Производство Цикл
       Если Строчка.КлючСтроки = Элементы.Товары.ТекущиеДанные.КлючСвязи Тогда
           ОбщаяПлощадь = ОбщаяПлощадь + СТрочка.Площадь;
       КонецЕсли;    
   КонецЦикла;
   Если Элементы.Товары.ТекущиеДанные.Количество <> ОбщаяПлощадь Тогда
       Элементы.Товары.ТекущиеДанные.Количество = ОбщаяПлощадь;//***
       ТоварыНоменклатураПриИзменении(Элемент);
       Элементы.Товары.Обновить();
   КонецЕсли ;    
   
КонецПроцедуры
19 Кокос
 
11.01.12
16:18
вот блин. там оказывается КоличествоУпаковок а не количество :)