![]() |
![]() |
![]() |
|
Использование регистра и справочника | ☑ | ||
---|---|---|---|---|
0
Cherryy
21.05.16
✎
12:13
|
Здравствуйте, форумчане) В 1с новичок, поэтому вопрос может показаться глупым( Выручайте. Имеется Регистр сведений Цены на номенклатуру, Справочник Номенклатура..и имеется справочник Изделие, в котором я в табличной части указываю перечень номенклатуры из которого производят изделие. Проблема вот в чем: при выборе номенклатуры из регистра сведения должна указываться автоматически цена..в документах знаю как делать, а вот в справочниках нет( Помогите, пожалуйста(
|
|||
1
_Дайвер_
21.05.16
✎
12:16
|
(0) Код покажи как ты цену получаешь ...
|
|||
2
GROOVY
21.05.16
✎
12:17
|
Никакой разницы между документом и справочником тут нет. Тут просто работа с формой.
|
|||
3
_Дайвер_
21.05.16
✎
12:19
|
(0) Запрос на получение цены будет отличаться малость, и все
|
|||
4
Cherryy
21.05.16
✎
12:20
|
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент) // Получить текущую строку табличной части. СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; // Установить цену. СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура); // Пересчитать сумму строки КонецПроцедуры Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт // Создать вспомогательный объект "Отбор". Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры); // Получить актуальные значения ресурсов регистра. ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор); Возврат ЗначенияРесурсов.Цена; КонецФункции так я получаю на документы |
|||
5
_Дайвер_
21.05.16
✎
12:27
|
в форме в ТЧ выбираешь реквизит НОменклатура , назначаешь ей процедуру при изменении, пишешь там:
Процедура НоменклатураПриИзменении (Элемент) Элемент.Цена = ПолучитьЦену(); КонецПроцедуры; Функция ПолучитьЦену() //Здесь запрос пишешь КонецФункции; |
|||
6
_Дайвер_
21.05.16
✎
12:30
|
(0) Вот пример
&НаСервере Функция ПолучитьЦену(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &Период, | Номенклатура = &Номенклатура | И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних" ; Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("ВидЦены", Объект.Соглашение.ВидЦен); Цена = 0; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Цена; КонецЕсли; Возврат Цена; КонецФункции |
|||
7
Cherryy
21.05.16
✎
12:44
|
Функцию также на форме писать? Просто те я в общих модулях писал.
Пишет: {Справочник.Изделия.Форма.ФормаЭлемента.Форма(3,16)}: Процедура или функция с указанным именем не определена (ПолучитьЦену) Элемент.Цена = <<?>>ПолучитьЦену(); (Проверка: Тонкий клиент) |
|||
8
_Дайвер_
21.05.16
✎
13:06
|
(7) Да на форме, директиву компиляции поставь &НаСервере
|
|||
9
Cherryy
21.05.16
✎
13:41
|
подскажите, где я туплю
&НаКлиенте Процедура ИспользуемыеМатериалыНоменклатураПриИзменении(Элемент) Элемент.Цена = ПолучитьЦену(); КонецПроцедуры &НаСервере Функция ПолучитьЦену(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних( | &Период, | Номенклатура = &Номенклатура | ) КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Цена = 0; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Цена; КонецЕсли; Возврат Цена; КонецФункции |
|||
10
ДенисЧ
21.05.16
✎
13:43
|
Элемент.Цена = ПолучитьЦену();
Функция ПолучитьЦену(Номенклатура) мне кажется, что это разные функции |
|||
11
Фрэнки
21.05.16
✎
14:15
|
(9)
Процедура ИспользуемыеМатериалыНоменклатураПриИзменении(Элемент) Элемент.Цена = ПолучитьЦену(); КонецПроцедуры Тут же не хватает параметра в вызове функции - внимательно посмотри |
|||
12
Cherryy
21.05.16
✎
14:59
|
А так?
Процедура ИспользуемыеМатериалыНоменклатураПриИзменении(Элемент) ТекущиеДанные = Элементы.ИспользуемыеМатериалы.ТекущиеДанные; ТекущиеДанные.Цена = ПолучитьЦену(ТекущиеДанные.Номенклатура); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |