Имя: Пароль:
1C
1С v8
v8: Нужно организовать добавление услуги в чек
0 dantedev
 
29.11.13
16:37
Есть справочник Номенклатура в котором находятся услуги и регистр сведений в котором хранятся цены на услугу, а так же срок исполнения услуги. Нужно создать чек в котором при добавлении услуги автоматически добавлялись данные из регистра сведений в поля стоимость и срок исполнения.
В задании сказано сделать это следующим образом:

1. В модуле формы написать клиентскую процедуру вида:
&НаКлиенте
Процедура ТабличнаяЧасть1УслугаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
//вызов серверной процедуры, но вначале подготовим данные
Стоимость = 0
Срок = 0
ПолучитьДанныеУслуги(СтрокаТабличнойЧасти.Услуга, Стоимость, Срок)
СтрокаТабличнойЧасти.Стоимость = Стоимость;
СтрокаТабличнойЧасти.Срок = Срок;
КонецПроцедуры

Если данные в регистре сведений, а не справочнике, то в процедуру надо еще передать дату Объект.Дата.

2. Создать процедуру в модуле на сервере.

Процедура ПолучитьДанныеУслуги(Элемент, Стоимость, Срок) Экспорт
создать новый объект для поиска по справочнику, используя Элемент
найти запись, вызвав метод НайтиПоНаименованию()
извлечь из записи значения полей стоимость и срок и присвоить их переменным Стоимость и Срок
КонецПроцедуры

Если данные в регистре сведений, то использовать метод ПолучитьПоследнее().


До этого сделал это задание использованием общих модулей с дальнейшим вызовом их в модуле формы документа и все работало.
Сейчас другим способом сделать и вообще никак не могу сообразить что к чему.
Помоги плиз. Если можно скиньте текст модуля формы.
1 DmitriyDI
 
29.11.13
16:46
Спр = Справочники.Услуги.НайтиПоНаименованию(ЭтотОбъект.Наименование);
Отбор = Новый Структура;
Отбор.Вставить("Услуга",Спр);
Регистр = РегистрыСведений.АдресныйКлассификатор.ПолучитьПоследнее(ЭтотОбъект.Дата,Отбор);

Так получишь последнюю запись
2 DmitriyDI
 
29.11.13
16:47
Только вместо АдресныйКлассификатор впиши там твой регистр
3 DmitriyDI
 
29.11.13
16:48
Но лучше запросом делать
4 dantedev
 
29.11.13
17:36
запросом это через запрос = новый запрос и в нем выбрать регистр сведений и присвоить стоимость и срок?
5 Господин ПЖ
 
29.11.13
17:39
>найти запись, вызвав метод НайтиПоНаименованию()

автора "теста" по спине оглоблей...
6 KRV
 
29.11.13
17:56
Студенты пошли на работу и начали учиться?
7 dantedev
 
29.11.13
18:09
ну студенты да, но не на работу, а просто для себя. А задание с тренингов у друга взял)
8 dantedev
 
29.11.13
18:15
раньше было сделано вот как
&НаКлиенте
Процедура ПрейскурантУслугНаименованиеУслугиПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.ПрейскурантУслуг.ТекущиеДанные;
    СтрокаТабличнойЧасти.Стоимость = АктуальнаяСтоимость.Стоимость(
    Объект.Дата, СтрокаТабличнойЧасти.НаименованиеУслуги);
    СтрокаТабличнойЧасти.СрокИсполнения = АктуальныйСрокИсполнения.
        СрокиИсполнения(Объект.Дата, СтрокаТабличнойЧасти.НаименованиеУслуги);
    КонецПроцедуры

где АктуальнаяСтоимость.Стоимость и АктуальныйСрокИсполнения.
        СрокиИсполнения были 2 общих модуля и все прекрасно выводило, но сказали что это не оптимальный вариант и нужно вот так оптимизировать