|   |   | 
| 
 | Заполнение полей табличной части при выборе справочника | ☑ | ||
|---|---|---|---|---|
| 0
    
        Dersus 13.04.20✎ 11:21 | 
        Здравствуйте, прошу помочь с решение вопроса.
 У меня есть табличная часть "ПереченоУслугИТоваров", в ней 3 строки 1. "УслугаИлиТовар", которая имеет тип ссылка и ссылается на справочник "Услуги" (в нем есть ещё 1 реквизит - стоимость) 2 и 3 - это стоимость и кол-во имеют тип число. Так вот, как мне после выбора нужно мне услуги в 1 строке, сразу поставить и стоимость? Я знаю, что это нужно делать при помощи события "ПриИзменении", но вот что писать хз, подскажите. | |||
| 1
    
        mikecool 13.04.20✎ 11:53 | 
        табличная часть с 3 строками? что за изврат в решении?     | |||
| 2
    
        Ёпрст гуру 13.04.20✎ 11:58 | ||||
| 3
    
        Dersus 13.04.20✎ 12:12 | 
        (2) Мне бы на код глянуть)     | |||
| 4
    
        Ёпрст гуру 13.04.20✎ 12:12 | 
        (3) открыть любую типовую и посмотреть     | |||
| 5
    
        vi11ra 13.04.20✎ 12:50 | 
        А стоимость услуги у тебя где записана, в справочнике номенклатуры?     | |||
| 6
    
        Dersus 13.04.20✎ 12:57 | 
        (5) Справочник "Услуги" реквизиты - "наименование", "стоимость".     | |||
| 7
    
        GGDots 13.04.20✎ 12:57 | 
        Ну совсем грубо и примерно - на первый раз сойдет:
 (0) 3 колонки. Номенклатура, Стоимость, Количество &НаКлиенте Процедура ТоварыНоменклатураПриИзменении(Элемент) Контейнер = Элементы.Номенклатура.ТекущиеДанные; Если Контейнер <> Неопределено Тогда Контейнер .Стоимость= ПолучитьСТоиомость(Контейнер .Номенклатура); КонецЕсли; КонецПроцедуры Функция ПолучитьСТоиомость(п_Номенклатура) //либо нормальный алгоритм из регистров //либо Возврат п_Номенклатура.Стоимость; КонецФункции | |||
| 8
    
        GGDots 13.04.20✎ 12:58 | 
        (4) +++     | |||
| 9
    
        GGDots 13.04.20✎ 12:59 | 
        НЕ "Элементы.Номенклатура.ТекущиеДанные;", Элементы.ТабличнаяЧасть.ТекущиеДанные     | |||
| 10
    
        vi11ra 13.04.20✎ 13:46 | 
        &НаКлиенте
 Процедура ТоварыНоменклатураПриИзменении(Элемент) ТекДан = Элементы.Товары.ТекущиеДанные; //".Товары." это название табличной части формы которую ты создал. ТекДан.Цена = ПолучитьЦенуНоменклатуры(ТекДан.Номенклатура); КонецПроцедуры &НаСервере Функция ПолучитьЦенуНоменклатуры(Номенклатура); Возврат Номенклатура.Цена; КонецФункции Вот так должно хорошо работать :) | |||
| 11
    
        vi11ra 13.04.20✎ 14:17 | 
        (0) ответ выше написал, попробуй так. Напиши если получится или не получится.     | |||
| 12
    
        dezss 14.04.20✎ 10:47 | 
        (10) 9 строк кода. И уже говнокод. Это просто дар)))     | |||
| 13
    
        Dersus 14.04.20✎ 16:39 | 
        (10) Не работает     | |||
| 14
    
        Dersus 14.04.20✎ 16:47 | 
        (7) Получилось, спасибо.     | |||
| 15
    
        vi11ra 16.04.20✎ 14:40 | 
        (12) Спасибо, 2 часа занятий на ютубе не прошли даром. Могу говнокодить. Буду рад эталонному примеру с пояснениями.     | |||
| 16
    
        dezss 16.04.20✎ 17:02 | 
        (15) Ну тут я вижу всего 2 ляпа
 1. И самый критичный &НаСервере Функция ПолучитьЦенуНоменклатуры(Номенклатура); Тебе не нужны никакие данные формы или объекта, а ты делаешь контекстный серверный. Это приводит к тому, что все данные формы пакуются и едут на сервер, а потом так же обратно. Это лучше исправить на такой код: &НаСервереБезКонтекста Функция ПолучитьЦенуНоменклатуры(Номенклатура); 2. Не самое критичное, но тоже не лучший вариант. Такое обращение "Номенклатура.Цена" к полю "Цена" не самой лучший способ вытащить данные. В БСП есть ОбщегоНазначения.ЗначениеРеквизитаОбъекта. Если нет БСП, то просто вытащить запросом (собственно, в БСП запрос и формируется). Не всегда такое решение подходит, но чаще всего оно эффективней. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |