Имя: Пароль:
1C
 
Подскажите пожалуйста в чем ошибка, вроде передается только число...
0 Delrus
 
16.07.15
08:13
&НаКлиенте
Процедура УслугиУслугаПриИзменении(Элемент)
    Если НЕ Элемент.ТекстРедактирования = "" Тогда
        ПересчетТаблицыУслуг(Элементы.Услуги.ТекущиеДанные.НомерСтроки - 1);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПересчетТаблицыУслуг(Строка = Неопределено)
    Если НЕ Строка = Неопределено Тогда
        Строка = Объект.Услуги[Строка];
        Если ТипЗнч(Строка.Услуга) = Тип("СправочникСсылка.Услуги") тогда
            Если Строка.Коэффициент = 0 тогда
                Строка.Коэффициент = 1;
            КонецЕсли;
            Строка.Цена =  РегистрыСведений.ЦеныУслуг.ПолучитьПоследнее(Объект.Дата, Новый Структура("Услуга, Регион", Строка.Услуга, Объект.Склад.Регион)).Цена;
            Строка.Сумма = Строка.Цена * Строка.Коэффициент * Строка.Количество;
            РасчитатьСкидки(Строка, Строка.Скидка);              
        Иначе
            Строка.Цена =  РегистрыСведений.Цены.ПолучитьПоследнее(Объект.Дата, Новый Структура("Номенклатура, Регион, Тип", Строка.Услуга, Объект.Склад.Регион, Справочники.ТипыЦен.Розничная)).Цена;
            Строка.Коэффициент = 1;
            Строка.Сумма = Строка.Цена * Строка.Количество;
            РасчитатьСкидки(Строка, Строка.Скидка);      // Объект.Услуги[Элементы.Услуги.ТекущаяСтрока]
        КонецЕсли;
    Иначе    
        Для каждого СтрокаУслуга из Объект.Услуги цикл
            Если ТипЗнч(СтрокаУслуга.Услуга) = Тип("СправочникСсылка.Услуги") тогда
                Если СтрокаУслуга.Коэффициент = 0 тогда
                    СтрокаУслуга.Коэффициент = 1;
                КонецЕсли;
                СтрокаУслуга.Цена =  РегистрыСведений.ЦеныУслуг.ПолучитьПоследнее(Объект.Дата, Новый Структура("Услуга, Регион", СтрокаУслуга.Услуга, Объект.Склад.Регион)).Цена;
                СтрокаУслуга.Сумма = СтрокаУслуга.Цена * СтрокаУслуга.Коэффициент * СтрокаУслуга.Количество;
                РасчитатьСкидки(СтрокаУслуга, СтрокаУслуга.Скидка);              
            Иначе
                СтрокаУслуга.Цена =  РегистрыСведений.Цены.ПолучитьПоследнее(Объект.Дата, Новый Структура("Номенклатура, Регион, Тип", СтрокаУслуга.Услуга, Объект.Склад.Регион, Справочники.ТипыЦен.Розничная)).Цена;
                СтрокаУслуга.Коэффициент = 1;
                СтрокаУслуга.Сумма = СтрокаУслуга.Цена * СтрокаУслуга.Количество;
                РасчитатьСкидки(СтрокаУслуга, СтрокаУслуга.Скидка);      // Объект.Услуги[Элементы.Услуги.ТекущаяСтрока]
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры




{Документ.УслугиСервиса.Форма.ФормаДокументаУФ.Форма(162)}: Ошибка при вызове метода контекста (ПересчетТаблицыУслуг)
        ПересчетТаблицыУслуг(Элементы.Услуги.ТекущиеДанные.НомерСтроки - 1);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
1 Delrus
 
16.07.15
08:13
Причем он всю процедуру отрабатывает и ошибка вылетает при завершении...
2 asady
 
16.07.15
08:18
(0) попробуй объявить процедуру ПересчетТаблицыУслуг(Знач Индекс) экспорт
3 Delrus
 
16.07.15
08:22
(2) Спасибо огромное, сработало!!!!!!!
4 Feunoir
 
16.07.15
08:26
(3) А вот почему так происходит

Строка = Объект.Услуги[Строка];

При возврате оно пытается вернуть значение строки на клиента. А там уже хранится элемент коллекции. Оттого и ошибка. Поэтому либо Знач, как написали в (1), либо поменять имя внутренней переменной, чтобы она не совпадала с параметрами процедуры.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс