8.х Регистр сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем auricomwxl, 10 фев 2010.

  1. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Привет!

    Нужно написать программку для документа ОказаниеУслуг(Реквезиты:Наименование, Цена), чтобы
    при выборе Номенклатуры автоматически определялась Цена.
    Цена содержиться в Регистре сведений - Цена(Измерения:Номенклатура, Ресурсы:Цена).
    Цена должна быть актуальной, т.е. по последней дате.
    :unsure:

    Или как упростить?? Сложно разобраться в параметрах(((

    Код:
     
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)	
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;	
    СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,Элемент.Значение);		
    РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);  
    КонецПроцедуры
    
    Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры)Экспорт  
    Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);    
    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
    Возврат ЗначенияРесурсов.Цена;	
    КонецФункции
    
    
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    делай запрос левое соединение .. и не забудить тип цет..

    или сюда добавь тип цен
    Код:
    Запрос=новый Запрос;
    Запрос.Текст="
    |ВЫБРАТЬ
    |	спрНоменклатура.Ссылка,
    |	ЦеныНоменклатурыСрезПоследних.Цена
    |ИЗ
    |	Справочник.Номенклатура КАК спрНоменклатура
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    |		ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = спрНоменклатура.Ссылка)
    |ГДЕ
    |	ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
    |	И спрНоменклатура.Ссылка = &Ссылка
    |";
    запрос.УстановитьПараметр("Ссылка","Smartem прибор для воды");
    запрос.УстановитьПараметр("ТипЦен","Основная цена");
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
    КонецЦикла;
    
    
  3. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    а зачем всё так усложнять?????
    у ячейки таб части "Номенклатура" есть процедура ПриИзменении(). в ней пишете:
    СтрокаТабличнойЧасти.Цена=РегистрСведений.ЦеныНоменклатуры.СрезПоследних(Дата,Отбор);
    параметры метода СрезПоследних смотри в синтаксис-помощнике
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    я просто предложил второй способ.. а для его я указал.. что пускай добавить в Отбор все что надо
  5. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    у меня что-то не получается! ошибку не выдает и не отображается актуальная цена при выборе номенклатуры!
    В модуле формы:
    Код:
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
    Отбор = Новый Структура("Номенклатура",РегистрыСведений.Номенклатура); 
    СтрокаТабличнойЧасти.Цена=РегистрыСведений.Цены.СрезПоследних(Дата,Отбор);
    КонецПроцедуры
    
    
    
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    а от куда это у вас? РегистрыСведений.Номенклатура
    в процедуре этого нет....

    Если запрос в консоле сделать он вообще цены покажет?
  7. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
    Отбор = Новый Структура("Номенклатура",Элемент); 
    СтрокаТабличнойЧасти.Цена=РегистрыСведений.Цены.СрезПоследних(Дата,Отбор);
    КонецПроцедуры
    
    
    
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Элемент.Значение
  9. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    ну да, ты прав :unsure:
  10. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    В общем модуле:
    Код:
    Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры)Экспорт 
    Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);   
    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
    Возврат ЗначенияРесурсов.Цена;    
    КонецФункции
    
    
    В модуле формы:
    Код:
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
    СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Дата,Элемент.Значение);        
    РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);  
    КонецПроцедуры
    
    
    И ВСЕ РАБОТАЕТ!!!

    А ЕСЛИ ТАКОЙ КОД, ТОЛЬКО В МОДУЛЕ ФОРМЫ:
    Код:
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
    Отбор = Новый Структура("Номенклатура",Элемент.Значение); 
    СтрокаТабличнойЧасти.Цена=РегистрыСведений.Цены.ПолучитьПоследнее(Дата,Отбор);
    // или  СрезПоследних(Дата,Отбор); 
    КонецПроцедуры
    
    
    ПОМОГИТЕ!! я уже не знаю что делать!! вроде все элементарно, но не работает!! где ошибка ???
  11. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Код:
    Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
    Отбор = Новый Структура("Номенклатура",Элемент.Значение); 
    СтрокаТабличнойЧасти.Цена=РегистрыСведений.Цены.ПолучитьПоследнее(Дата,Отбор).Цена;
    КонецПроцедуры
    
    

Поделиться этой страницей