Имя: Пароль:
1C
1С v8
Цена должна подставляться автоматически в документ из справочника
0 stels54
 
23.12.13
03:30
Доброго времени суток! Прошу помощи. Пытаюсь выполнить задание для приема на стажировку. Текст той части, где возникла проблема:

"Создать документ Расходная накладная с реквизитом Клиент. Реквизиты табличной части: товар (справочник "Товары" в нем указана цена), цена, кол-во, сумма.
При выборе товара цена автоматически подставляется из справочника, при изменении количества и цены пересчитывается сумма"

Проблема с автоматической подстановкой цены товара. Если я правильно понимаю:
1. Создаем обработчик ТоварПриИзменении в форме документа
2. &НаСервере создаем запрос, получаем цену товара
3. Подставляем цену в документ.

Подскажите код обработчика. Заранее спасибо! С остальными заданиями проблем не было а с этим не выходит никак:((
1 Klesk666
 
23.12.13
03:42
Как ты справился с остальными заданиями? О_о
2 Luhtas
 
23.12.13
04:27
(0) Откопал что-то такое когда-то делал:
&НаКлиенте
Процедура НоменклатураНаименованиеПриИзменении(Элемент)
    Стр=Элементы.Номенклатура.ТекущиеДанные;
    Стр.ЕдИзмерения=ОбщегоНазначения.ПолучитьЕдИзмерения(Стр.Наименование);
    Стр.Цена=ОбщегоНазначения.ПолучитьЦенуНоменклатурыКонтрагента(Объект.Дата, Объект.Поставщик, Стр.Наименование);
    РассчитатьСуммыТЧНоменклатура();
КонецПроцедуры

Функция ПолучитьЦенуНоменклатуры(Дата, ТипЦены, Номенклатура) Экспорт//Возвращает цену номенклатуры по заданному типу цены
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЦеныНоменклатурыСрезПоследних.Цена
                 |ИЗ
                 |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                 |            &Дата,
                 |            ТипЦены = &ТипЦены
                 |                И Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних";
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("ТипЦены", ТипЦены);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Цена=Выборка.Цена;
    КонецЦикла;
    Возврат ?(Цена=Неопределено, 0, Цена);
КонецФункции
3 Wobland
 
23.12.13
04:28
(2) а прикольно было, наверное, поставщиком тип цены называть
(0) а запокажи все задания
4 Luhtas
 
23.12.13
04:33
(3) Поставщик, это контрагент, по которому цену нужно уточнять. Поставщиков много было в те давние времена и цены разные у каждого.
5 Luhtas
 
23.12.13
04:34
+(4) А да, признаю, не та функция, вот какая нужна:
Функция ПолучитьЦенуНоменклатурыКонтрагента(Дата, Контрагент, Номенклатура) Экспорт //Возвращает цену номенклатуры контрагента
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
                 |ИЗ
                 |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                 |            &Дата,
                 |            Номенклатура = &Номенклатура
                 |                И Контрагент = &Контрагент) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних";
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Цена=Выборка.Цена;
    КонецЦикла;
    Возврат ?(Цена=Неопределено, 0, Цена);
КонецФункции
6 Wobland
 
23.12.13
04:37
(5) и она даже не поломается при отсутствии цены?
7 Luhtas
 
23.12.13
04:48
(6) Не, вроде ж "0" вернет.
8 razlagator
 
23.12.13
04:55
(7) в (0) цена в реквизите номенклатуры, а не в регистре
9 Luhtas
 
23.12.13
05:00
(8) Ну знаете, все что знал сказал. Дальше сам уже пусть...
10 Wobland
 
23.12.13
05:30
(7) что происходит при сравнении неинициализированной переменной с неопределеной? я не знаю, я не пробовал
11 Wobland
 
23.12.13
05:31
(8) если автор не соврал и сделал прочие задания, то это его не остановит
12 Klesk666
 
23.12.13
05:38
так написано - цена задана в справочнике, какой нах регистр сведений
13 Klesk666
 
23.12.13
05:40
&НаСервере
Функция ПолучитьЦену(Товар)
Возврат Товар.Цена
КонецФункции
14 Wobland
 
23.12.13
05:40
цены повышаются, их цены постоянно растут,
водка разбавляется водой безо всяких мер

автор задания явно не знаком с этим явлением
15 Wobland
 
23.12.13
05:41
(13) а если там отдельный справочник с периодом? ;)
16 Klesk666
 
23.12.13
05:42
1. Создаем обработчик ТоварПриИзменении в форме документа

Создаем обработчик КоличествоПриИзменении
17 Klesk666
 
23.12.13
05:44
(15) А если справочник с характеристиками?
18 Wobland
 
23.12.13
05:46
допустим, автор ушёл спать в 4 мск. вряд ли он появится здесь ранее 10 мск. у нас ещё куча времени для творчества
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн