Имя: Пароль:
1C
1С v8
Управляемое приложение &НаКлиенте
0 Ar-Bus
 
30.04.13
00:27
Привет всем! Уважаемые, только начинаю работать с управляемым приложением... Сразу куча вопросов...
Как &НаКлиенте получить реквизит номенклатуры???

Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
   
   Если (ТекущаяСтрока <> Неопределено) И (ЗначениеЗаполнено(ТекущаяСтрока.Номенклатура.ФайлКартинки)) Тогда
       КартинкаРМК = НавигационнаяСсылкаКартинки(ТекущаяСтрока.Номенклатура.ФайлКартинки, УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
КонецПроцедуры

В толстом клиенте все работает, а вот в тонком... Необходимо получить реквизит справочника Номенклатура.ФайлКартинки

Как этого добиться на клиенте??? Подскажите, пожалуйста!
1 Asmody
 
30.04.13
00:28
на клиенте – никак. на клиенте объекты недоступны. вызывай серверную процедуру, там получай что нужно и возвращай на клиент (если это необходимо)
2 Ar-Bus
 
30.04.13
00:32
(1) а как вызвать серверную процедуру? Необходимо экспортную процедуру сделать на сервере, и затем к ней обращаться из клиента?
3 Asmody
 
30.04.13
00:35
(2) можно прямо в модуле формы объявить процедуру с директивой &НаСервере
4 Ar-Bus
 
30.04.13
00:36
Помогите, пожалуйста, кодом... Не пойму, как надо написать. Ну вот есть у меня на клиенте "ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;"
Как это можно использовать на сервере?
5 Asmody
 
30.04.13
00:37
вот тут человек мучается v8: Вызов процедуры в управляемых формах
там есть пример почти правильного кода
6 Ar-Bus
 
30.04.13
00:39
(4) все равно не пойму. Блин, поздно уже, мозг не работает. Может напишите фрагмент кода применительно к моей проблеме?
7 Ar-Bus
 
30.04.13
00:45
И вообще, вопрос... Есть база, файловый вариант(локальная сеть), стоит ли вообще мучаться в данный поздний час с тонким клиентом?
8 alexei366
 
30.04.13
00:48
(7) Не знаю, я вообще всегда пишу для тонкого, а то у меня некоторые на сервере базы висят, а к ним доступ делаем не только в локалке но и через веб.
9 alexei366
 
30.04.13
00:49
(8) Как понимаю толстый вообще остался от старых версий 1С
10 Ar-Bus
 
30.04.13
00:51
(8) Просто надо завтра с утра(т.е. уже сегодня) базу отдавать... Локальная сеть, база лежит на одном компе, где РМК, +2ноута по локалке подключаются к этой базе(файловый вариант). Тонкий клиент там вообще использоваться может?
11 Ar-Bus
 
30.04.13
00:53
(4) Написал вот так:
Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
   КартинкаРМК=ПолучитьСсылкуНаКартинкуНаСервере(ТекущаяСтрока);
   
КонецПроцедуры

&НаСервере
Функция ПолучитьСсылкуНаКартинкуНаСервере(ТекущаяСтрока)
   Если (ТекущаяСтрока <> Неопределено) И (ЗначениеЗаполнено(ТекущаяСтрока.Номенклатура.ФайлКартинки)) Тогда
       КартинкаРМК = НавигационнаяСсылкаКартинки(ТекущаяСтрока.Номенклатура.ФайлКартинки, УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
   Возврат КартинкаРМК;
КонецФункции

ОШИБКА:


Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
12 alexei366
 
30.04.13
00:55
&НаСервереБезКонтекста
Функция ПолучитьСвойствоСтруктуры(Структура,Свойство)
Возврат Структура.Свойство;
КонецФункции

и юзаешь на клиенте
(ЗначениеЗаполнено(ПолучитьСвойствоСтруктуры(Номенклатура,"ФайлКартинки"))
13 Ar-Bus
 
30.04.13
00:59
(12) и юзаешь на клиенте
(ЗначениеЗаполнено(ПолучитьСвойствоСтруктуры(Номенклатура,"ФайлКартинки"))

клиент не понимает выражение "Номенклатура", как написать-то?
14 alexei366
 
30.04.13
01:02
(13) Б л я    чуть опечатался,
ТекущаяСтрока.Номенклатура, чо непонтного
15 alexei366
 
30.04.13
01:05
Переделай ещё эту

&НаСервереБезКонтекста
Функция ПолучитьСвойствоСтруктуры(Структура,Свойство)
Возврат Структура[Свойство];
КонецФункции
16 Ar-Bus
 
30.04.13
01:09
ОШИБКА:

{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3482)}: Значение не является значением объектного типа (Номенклатура)
   КартинкаРМК=ПолучитьСвойствоСтруктуры(ТекущаяСтрока.Номенклатура,"ФайлКартинки",УникальныйИдентификатор);
17 alexei366
 
30.04.13
01:10
КартинкаРМК=ПолучитьСвойствоСтруктуры(ПолучитьСвойствоСтруктуры(ТекущаяСтрока.Номенклатура,"ФайлКартинки"),УникальныйИдентификатор);
18 Ar-Bus
 
30.04.13
01:19
так должно быть?

&НаКлиенте
Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
   КартинкаРМК=ПолучитьСвойствоСтруктуры(ПолучитьСвойствоСтруктуры(ТекущаяСтрока.Номенклатура,"ФайлКартинки"),УникальныйИдентификатор);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСвойствоСтруктуры(Структура,Свойство)
   Если (Структура <> Неопределено) И (ЗначениеЗаполнено(Структура.ФайлКартинки)) Тогда
       КартинкаРМК = НавигационнаяСсылкаКартинки(Структура.ФайлКартинки, УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
   Возврат Структура[Свойство];
КонецФункции
19 Ar-Bus
 
30.04.13
01:21
люди, помогите!!!
20 alexei366
 
30.04.13
01:24
&НаКлиенте
Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
   
   Если (ТекущаяСтрока <> Неопределено) И (ЗначениеЗаполнено(ПолучитьСвойствоСтруктуры(ТекущаяСтрока.Номенклатура,"ФайлКартинки"))) Тогда
       КартинкаРМК = НавигационнаяСсылкаКартинки(ПолучитьСвойствоСтруктуры(ТекущаяСтрока.Номенклатура,"ФайлКартинки"), УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСвойствоСтруктуры(Структура,Свойство)
   Возврат Структура[Свойство];
КонецФункции



ИЛИ так (но могу здесь чонить напутать)



&НаКлиенте
Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока;
   
   ОбновитьКартинку_С(ТекущаяСтрока);
КонецПроцедуры



&НаСервере
Процедура ОбновитьКартинку_С(ТекущаяСтрока)

   Строка = Товары[ТекущаяСтрока];
   
       Если (ТекущаяСтрока <> Неопределено) И (ЗначениеЗаполнено(Строка.Номенклатура.ФайлКартинки)) Тогда
             КартинкаРМК = НавигационнаяСсылкаКартинки(Строка.Номенклатура.ФайлКартинки, УникальныйИдентификатор);
       Иначе
           КартинкаРМК="";
       КонецЕсли;    

КонецПроцедуры
21 alexei366
 
30.04.13
01:25
Все с меня хватит, я так больше не могу и иду спать
22 Ar-Bus
 
30.04.13
01:40
(21) твоих текстов не дождался сначала и сделал так:

Процедура ОбновитьКартинку()
   ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
   Если ТекущаяСтрока<>Неопределено Тогда
       КартинкаРМК=ПолучитьСсылкуНаКартинкуНаСервере(ТекущаяСтрока.Номенклатура,УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьСсылкуНаКартинкуНаСервере(Номенклатура,УникальныйИдентификатор)
   Если ЗначениеЗаполнено(Номенклатура.ФайлКартинки) Тогда
       КартинкаРМК = НавигационнаяСсылкаКартинки(Номенклатура.ФайлКартинки, УникальныйИдентификатор);
   Иначе
       КартинкаРМК="";
   КонецЕсли;
   Возврат КартинкаРМК;
КонецФункции

работает...