Имя: Пароль:
1C
1С v8
Расширение не работает в тонком клиенте
0 lirt82
 
23.09.22
07:53
Сделал расширение, при работе в толстом клиенте работает, а при работе в тонком клиенте(все пользователи работают через тонкий клиент) расширение ругается на поле объекта (ЮрФизЛицо) не обнаружено.
код
&НаКлиенте
Процедура Расш1_ТоварыПриИзмененииПосле(Элемент)
    
    //запретим услуги при реализации цемента для юр.лиц
    Если Строка(Объект.Контрагент.ЮрФизЛицо) = "Юридическое лицо" Тогда
        Для Каждого С Из Объект.Товары Цикл
*****************************************************
как исправить?
1 Мимохожий Однако
 
23.09.22
07:54
В каком модуле разместил код?
2 lirt82
 
23.09.22
07:56
(1)ФормыДокумента в процедуру ТоварыПриИзмененииПосле(Элемент)
3 rphosts
 
23.09.22
07:57
(0) а с чего ты взял что этот код вообще в тонком клиенте будет работать? Тебе в расширении влом сходить на сервер без контекста за значением реквизита ".ЮрФизЛицо"?
4 Мимохожий Однако
 
23.09.22
07:58
Попробуй получить ЮрФизЛицо через отдельную функцию &НаСервере
Например,
Функция ПолучитьФизЛицо(Контрагент)
КонтрагентОбъект=Контрагент.ПолучитьОбъект();
Возврат КонтрагентОбъект.юрФизЛицо;
5 lirt82
 
23.09.22
07:59
Задача изначально поставлена так, в документ Реализации пользователи вносят товары и услуги, таб часть одна, необходимо сделать контроль при выборе определенной группы из справочника Номенклатура не допускать чтоб к ней (в таб часть) были добавлены услуги
6 SleepyHead
 
гуру
23.09.22
07:59
(0) Такой код не работал бы и не в расширении на клиенте.
7 Мимохожий Однако
 
23.09.22
07:59
...или сделать серверную функцию ЭтоЮрЛицо(Контрагент) для подстановки в условие
8 Мимохожий Однако
 
23.09.22
08:00
(5) Представленный код не имеет прямого отношения к задаче, а только к способу реализации оной
9 lirt82
 
23.09.22
08:01
(3) (7) там и другие реквизиты дока потребуется подтянуть, ниже вся процедура

&НаКлиенте
Процедура Расш1_ТоварыПриИзмененииПосле(Элемент)
    
    //запретим услуги при реализации цемента для юр.лиц
    Если Строка(Объект.Контрагент.ЮрФизЛицо) = "Юридическое лицо" Тогда
        Для Каждого С Из Объект.Товары Цикл
            Если СокрЛП(С.Номенклатура.Родитель.Код) = "Н_000000957" Тогда //группа цемент
                Если Строка(С.Номенклатура.ВидНоменклатуры) = "Услуга" Тогда
                    Сообщение = Новый СообщениеПользователю;
                    Сообщение.Текст = "Для юр.лица услуги должны быть выписанный отдельным документом!";
                    Сообщение.Сообщить();
                    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
                    Объект.Товары.Удалить(ТекущаяСтрока);
                КонецЕсли;                
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
10 Мимохожий Однако
 
23.09.22
08:03
На клиенте ты не увидишь объекта. В этом принципиальная ошибка.
11 lirt82
 
23.09.22
08:04
(10) т.е. с Клиента зайти на Сервер получить функцией нужные данные и вернуться на Клиент?
12 Мимохожий Однако
 
23.09.22
08:04
(11) Да. То, что видишь в отладчике не то, что видит тонкий клиент при выполнении
13 lirt82
 
23.09.22
08:20
(12) благодорю за подскасзку, все получилось.....больше кода в итоге) но это не обычное приложение
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший