Имя: Пароль:
1C
1С v8
Как получить "Объект" на клиенте?
,
0 SkillUp
 
14.01.20
12:47
Пошагово:
1). Получаю массив сылок, где надо изменить кассы.
2). Из Типовой есть обработчик (На клиенте):

&НаКлиенте
Процедура КассаПриИзменении(Элемент)
    
    СтруктурыРеквизитов = РеквизитыКассыИКассыККМ(Объект.Касса, Объект.КассаККМ);
    СтруктураРеквизитовКассы = СтруктурыРеквизитов.РеквизитыКассы;
    
    // запрещено изменение валюты взаиморасчетов относительно валюты документа оплаты (кроме упр. организации)
    Если СтруктураРеквизитовКассы.Валюта <> Объект.Валюта Тогда
        
        Отказ = Ложь;
        ФинансыКлиент.ОчиститьСтроки(Объект, Отказ,,,СтруктураРеквизитовКассы.Организация);
        
        Если Отказ Тогда
            Объект.Касса = ТекущаяКасса;
            Возврат;
        КонецЕсли;
        
    КонецЕсли;    
    
    Если Не ФинансыКлиент.НеобходимПересчетВВалюту(Объект, Объект.Валюта, СтруктураРеквизитовКассы.Валюта) Тогда
        
        
        КассаПриИзмененииСервер(СтруктурыРеквизитов, Ложь);
        ФинансыКлиент.ОчиститьСуммуИВалютуВзаиморасчетовРасшифровкиПлатежа(Объект);
        
    ИначеЕсли ФинансыКлиент.РазрешенПересчетВВалюту(СтруктураРеквизитовКассы.Валюта) Тогда
        
        ТекущаяВалюта = Объект.Валюта;
        КассаПриИзмененииСервер(СтруктурыРеквизитов, Истина);
        ФинансыКлиент.ОчиститьСуммуИВалютуВзаиморасчетовРасшифровкиПлатежа(Объект);
        ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ТекущаяВалюта, Объект.Валюта);
        
    Иначе
        
        Объект.Касса = ТекущаяКасса;
        КассаПриИзмененииСервер(СтруктурыРеквизитов, Ложь);
        
    КонецЕсли;
    
    СброситьУстановленныйНомерОрдера();
    
КонецПроцедуры

Вот, если взять из этой процедуры, процедуру - "ФинансыКлиент.ОчиститьСтроки(Объект, Отказ,,,СтруктураРеквизитовКассы.Организация);" Она клиентская! И как мне обработать, если на клиенте я не могу получить объект?

// Процедура при необходимости очищает строки в табличной части "Расшифровка платежа".
//
// Параметры:
//    Объект - ДанныеФормыСтруктура - Текущий документ
//
1 Жан Пердежон
 
14.01.20
12:53
Написано же, что Объект- это ДанныеФормыСтруктура, проблема то в чем?
2 vicof
 
14.01.20
12:56
(1) Судя по всему, объект не хочет изменяться на клиенте
3 SkillUp
 
14.01.20
12:57
(1) Как получить по ссылке (из внешнней обработке), Объект?  Может не понимаю, объясните?

Ссылка.ПолучитьОбъект(); На клиенете не прокатит. Тогда как?! Эти "ДанныеФормыСтруктура" получить по ссылке?
4 pechkin
 
14.01.20
12:59
вместо объекта можно структуру подсунуть
5 SkillUp
 
14.01.20
13:01
(4) Хоть что-то...
6 vicof
 
14.01.20
13:02
(3) "Тогда как?!" На сервере
7 SkillUp
 
14.01.20
13:04
(6) Как на сервере я вызову процедуру, ФинансыКлиент.ОчиститьСтроки(Объект, Отказ,,,СтруктураРеквизитовКассы.Организация); - она клиентская!
8 SkillUp
 
14.01.20
13:04
(4)

Функция ПолучитьСтруктуру(знач Объект) Экспорт
    Структура = Новый Структура(); /// реквизиты    
    Для каждого Реквизит из Объект.Метаданные().Реквизиты Цикл
        Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
    КонецЦикла; /// таблицы    
    Для каждого ТабличнаяЧасть из Объект.Метаданные().ТабличныеЧасти Цикл
        Структура.Вставить(ТабличнаяЧасть.Имя, Объект[ТабличнаяЧасть.Имя].Выгрузить());
    КонецЦикла;
    
    Возврат Структура;
КонецФункции

Так?!
9 vicof
 
14.01.20
13:05
(7) Напиши свою. С блэкджеком и куртизанками.
10 pechkin
 
14.01.20
13:05
(7) скажи спасибо разработчиком что они не знают паттерна MVC
11 SkillUp
 
14.01.20
13:06
(10) Даже и не знаю...
12 Жан Пердежон
 
14.01.20
13:07
(7) с сервера клиентскую не вызвать (неожиданно, да?)
(10) ты, судя по всему, тоже
13 pechkin
 
14.01.20
13:10
(12) Хорошо что хоть ты знаешь
14 SkillUp
 
14.01.20
13:10
(12) "с сервера клиентскую не вызвать (неожиданно, да?)"  Не понял, это к чему?!