Имя: Пароль:
1C
1С v8
Помогите сделать запрос
0 Aleksandr_
Nikonov
 
07.08.15
09:20
Доброго дня! В документе "Заказ Клиента" в 1с 8 (Управление торговлей)
Необходимо получить цену по виду "Закупочная"
помогите написать запрос получения цены
Для чего это нужно?...
дело в том что клиент (заказчик) хочет что бы в документе рассчитывалась сумма прибыли как по строкам так и по документу
для этого мне необходимо получить цену закупки (себестоимость товара)
помогите я в запросов почти не знаю.
1 elCust
 
07.08.15
09:22
Как то не логично получается:
>> дело в том что клиент (заказчик) хочет
>> помогите я в запросов почти не знаю.

Если не знаешь, зачем клиенты?
2 zak555
 
07.08.15
09:23
так тебе не цена нужна, а себестоимость
3 sFAQer
 
07.08.15
09:25
(0) Тебе бы не запросы, а мат часть сначало покурить. а вообще открой отчёт валовая прибыль и смотри как собирается
4 sFAQer
 
07.08.15
09:26
+ к (3) а ещё УТ 11.1 научилась считать маржу прям в заказах, посмотри как там сделано
5 zak555
 
07.08.15
09:26
ты лучше сделай обработку ТЧ заполнения цены продажи от себестоимости
6 sFAQer
 
07.08.15
09:27
(5) это где так мощно ценовую политику ведут?
7 sash-ml
 
07.08.15
09:28
это ж заказ, по какой себестоимости он пойдет в реализацию неизвестно, так что прибыль в любом случае будет приблизительная.
8 Aleksandr_
Nikonov
 
07.08.15
09:36
Хорошо вот я запрос нарисовал подскажите в чем ошибка? просто он не работает (не выбирает значений(( )

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        |ГДЕ
        |    ЦеныНоменклатурыСрезПоследних.Период = &Дат
        |    И ЦеныНоменклатурыСрезПоследних.Валюта.Ссылка = &Валюта
        |    И ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = &Тов
        |    И ЦеныНоменклатурыСрезПоследних.ВидЦены.Ссылка = &Вид
        |    И ЦеныНоменклатурыСрезПоследних.Характеристика.Ссылка = &Характ";

    Запрос.УстановитьПараметр("Валюта", Валюта.Ссылка);
    Запрос.УстановитьПараметр("Вид", Вид.Ссылка);
    Запрос.УстановитьПараметр("Дат", Дат);
    Запрос.УстановитьПараметр("Тов", Тов.Ссылка);
    Запрос.УстановитьПараметр("Характ", Характ.Ссылка);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ЦенаЗак = ВыборкаДетальныеЗаписи.цена;
    КонецЦикла;
9 Aleksandr_
Nikonov
 
07.08.15
09:37
+(7) я делаю так как попросили им так нужно а не мне )
10 VikingKosmo
 
07.08.15
09:39
(8) ошибка в запросе... И вообще, позовите специалиста!!!
11 Aleksandr_
Nikonov
 
07.08.15
09:40
(10) вас попросили помочь! я сам себе специалист!
12 Aleksandr_
Nikonov
 
07.08.15
09:41
+(10) то что ошибка в запросе это и без того понятно где?
13 Sanek_GAL
 
07.08.15
09:43
(12)    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        |ГДЕ
        |    ЦеныНоменклатурыСрезПоследних.Период = &Дат

вот здесь, тут надо как минимум:
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дат) КАК ЦеныНоменклатурыСрезПоследних
, а из ГДЕ убирать
14 Sanek_GAL
 
07.08.15
09:43
+(13) ты запрос в цикле по ТЧ этот гоняешь?
15 Aleksandr_
Nikonov
 
07.08.15
09:45
(13) спасибо буду пробовать!
16 Aleksandr_
Nikonov
 
07.08.15
09:46
(14) нет в функции подбора товара
17 Metman
 
07.08.15
09:47
(13) там все надо в параметры ВТ пихать.
18 Sanek_GAL
 
07.08.15
09:48
(17) Это да, но не работает именно из-за даты
19 Metman
 
07.08.15
09:48
(10) Скачай консоль запросов. Посмотри лекции от Чистова по запросам.
20 Metman
 
07.08.15
09:50
(10) -> (11)
21 vicof
 
07.08.15
09:51
(8) А зачем везде .Ссылка пихать?
22 Aleksandr_
Nikonov
 
07.08.15
09:52
(21) а что без ссылка будет работать?
23 Sanek_GAL
 
07.08.15
09:53
(22) Ну если ты передаешь туда ссылки, то будет... Ты же не объекты передаешь?
24 Metman
 
07.08.15
09:53
(22) ты не поверишь...
25 Aleksandr_
Nikonov
 
07.08.15
09:55
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дат) КАК ЦеныНоменклатурыСрезПоследних
        //|ГДЕ
        //|    ЦеныНоменклатурыСрезПоследних.Период = &Дат
        //|    И ЦеныНоменклатурыСрезПоследних.Валюта.Ссылка = &Валюта
        |    И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Тов
        |    И ЦеныНоменклатурыСрезПоследних.ВидЦены = &Вид
        |    И ЦеныНоменклатурыСрезПоследних.Характеристика = &Характ";

    //Запрос.УстановитьПараметр("Валюта", Валюта.Ссылка);
    Запрос.УстановитьПараметр("Вид", Вид);
    Запрос.УстановитьПараметр("Дат", Дат);
    Запрос.УстановитьПараметр("Тов", Тов);
    Запрос.УстановитьПараметр("Характ", Характ);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ЦенаЗак = ВыборкаДетальныеЗаписи.цена;
    КонецЦикла;

ошибку выдает ((

{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(1174)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(5, 2)}: Синтаксическая ошибка "И"
<<?>>И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Тов
26 Metman
 
07.08.15
09:57
расскоментируй ГДЕ и убери первое И
27 Sanek_GAL
 
07.08.15
09:57
(25) Жестоко...
Перед ГДЕ комментарий убери, и здесь "И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Тов"  И убери
28 Aleksandr_
Nikonov
 
07.08.15
09:59
уже сделал (((( в (13) не правильно понял ))))))
29 Мимохожий Однако
 
07.08.15
10:01
ОФФ: Опять лисапеды...
30 Aleksandr_
Nikonov
 
07.08.15
10:03
все запрос работает (но меня (7) заинтриговал) почему я получу не ту себестоимость (цену закупки?) (они ее называют себестоимостью )))
31 Aleksandr_
Nikonov
 
07.08.15
10:04
+(30) я же получаю по виду и на дату что не так может быть?
32 Aleksandr_
Nikonov
 
07.08.15
10:10
?
33 Sanek_GAL
 
07.08.15
10:14
(31) Уже писали - открой отчет Валовая прибыль, там есть Себестоимость - смотри как получается.
34 Мимохожий Однако
 
07.08.15
10:16
Писатель
35 Aleksandr_
Nikonov
 
07.08.15
10:22
(33) там себестоимость вообще пустая (
36 VikingKosmo
 
07.08.15
10:26
(35) а ничего, что ее еще посчитать нужно?
37 Aleksandr_
Nikonov
 
07.08.15
10:32
)
38 Kvant1C
 
07.08.15
10:41
(36) необязательно. Если у него закупочная цена близка к себестоимости, то вполне себе можно посчитать приблизительную прибыль, как стоимость в продажных ценах минус стоимость в закупочных. При этом чем ближе закупочная цена к себестоимости, тем точней будет результат. Можно вообще замутить отдельный тип цен - себестоимость и закинуть в него нужные цифры и соответственно использовать его вместо закупочных цен при расчете прибыли, но все равно это будет приблизительная прибыль.
39 Aleksandr_
Nikonov
 
07.08.15
10:49
(38) у них закупочния = себестоимость )
40 Metman
 
07.08.15
10:52
(39) Будь готов к вопросам, типа "Где деньги, Зин?". Когда по их подсчетам они миллионеры, а в реале еле-еле концы с концами сводят. Как в анекдоте про вируальную реальность.
41 Aleksandr_
Nikonov
 
07.08.15
10:56
(40) дело в том что у них уже есть программа 1с 7 в ней реализовано именно так подсчет прибыли вот я и делаю так как там у них реализовано если есть предложения предлагайте ситуация такая менеджер должен всегда видеть в документе прибыль и процент рентабельности как данное реализовать?
постоянно создавать документы (распределение расходов на себестоимость товаров и Расчет себестоимости?)
42 Aleksandr_
Nikonov
 
07.08.15
10:58
вот вырезка кода получения прибыли и расчета процента рентабельности из 1с 7 (их конфиги)

//_____________________________________________________________________________
Функция ИтоговаяСтрока()
    ИтСтр = "Итого по заявке на сумму: " + СокрЛ(Формат(Итог("СуммаН"),"Ч20 ,")) +"  Рентабельность: " + СокрЛ(Формат(Итог("СуммаПрибыли"),"Ч20 ,"))+    " Процент рентабельности: " + СокрЛ(Формат(?(Итог("Продажная")=0,0,(Итог("СуммаПрибыли")/Итог("Продажная")*100)),"Ч10.5"));
    Возврат ИтСтр;
КонецФункции //СтрокаИтого
//_________________________



Процедура  Пересчет()
    Если (Форма.ТекущаяКолонка() = "КоличествоТовара") или (Форма.ТекущаяКолонка() = "Уценка") Тогда
        КоличествоТовараЯщ=КоличествоТовара/НаименованиеТовара.КолвоВТаре;
        СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
        Если епта=1 Тогда
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        Иначе
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        КонецЕсли;
        Если СуммаН<>0 Тогда
            ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
        КонецЕсли;
        Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
        Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
    ИначеЕсли (Форма.ТекущаяКолонка() = "КоличествоТовараЯщ") Тогда
        КоличествоТовара=КоличествоТовараЯщ*НаименованиеТовара.КолвоВТаре;
        СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
        Если епта=1 Тогда
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        Иначе
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        КонецЕсли;
        Если СуммаН<>0 Тогда
            ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
        КонецЕсли;
        Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
        Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
    ИначеЕсли (Форма.ТекущаяКолонка() = "Скидка") Тогда
        Если (Скидка<>0) и (Наценка<>0) Тогда
            Наценка=0;
        КонецЕсли;
        ЦенаТовара=Окр(НаименованиеТовара.Цена-НаименованиеТовара.Цена*Скидка/100+НаименованиеТовара.Цена*Наценка/100);
        СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
        Если епта=1 Тогда
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        Иначе
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        КонецЕсли;
        Если СуммаН<>0 Тогда
            ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
        КонецЕсли;
        Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
        Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
        РентаПер=Окр(СуммаПрибыли/Продажная*100,2);
        Если ПустоеЗначение(НаименованиеТовара.ГруппаНаценок)=0 Тогда
            Если РентаПер<НаименованиеТовара.ГруппаНаценок.Наценка Тогда
                Предупреждение("Данная цена<минимальной рентабельности по товару:"+НаименованиеТовара.ГруппаНаценок.Наценка);
                ЦенаТовара=Окр(НаименованиеТовара.Цена);
                Скидка=0;
                СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
                Если епта=1 Тогда
                    СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
                Иначе
                    СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
                КонецЕсли;
                Если СуммаН<>0 Тогда
                    ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
                КонецЕсли;
                Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
                Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
            КонецЕсли;
        Иначе
            Если ЦенаТовара<НаименованиеТовара.Себестоимость Тогда
                Предупреждение("Данная цена<себестоимости по товару:"+НаименованиеТовара.Себестоимость);
                ЦенаТовара=Окр(НаименованиеТовара.Цена);
                Скидка=0;
                СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
                Если епта=1 Тогда
                    СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
                Иначе
                    СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
                КонецЕсли;
                Если СуммаН<>0 Тогда
                    ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
                КонецЕсли;
                Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
                Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли (Форма.ТекущаяКолонка() = "Наценка") Тогда
        Если (Скидка<>0) и (Наценка<>0) Тогда
            Скидка=0;
        КонецЕсли;    
        ЦенаТовара=Окр(НаименованиеТовара.Цена-НаименованиеТовара.Цена*Скидка/100+НаименованиеТовара.Цена*Наценка/100);
        Если НаименованиеТовара.Предел<>0 Тогда
            ПерНаценка=Окр((ЦенаТовара-?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость))/?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)*100,2);
            Если НаименованиеТовара.Предел<ПерНаценка Тогда
                Сообщить("Предельная наценка по товару: "+НаименованиеТовара.Предел);
                Наценка=НаименованиеТовара.Предел-Окр((НаименованиеТовара.Цена-?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость))/?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)*100,2);
            КонецЕсли;
        КонецЕсли;
        
        ЦенаТовара=Окр(НаименованиеТовара.Цена-НаименованиеТовара.Цена*Скидка/100+НаименованиеТовара.Цена*Наценка/100);
        СуммаН = Окр(КоличествоТовара*ЦенаТовара,0,1);
        Если епта=1 Тогда
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        Иначе
            СуммаПрибыли=СуммаН-КоличествоТовара*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость)-Уценка*?(НаименованиеТовара.ЦенаИзготовителя1<>0,НаименованиеТовара.ЦенаИзготовителя1,НаименованиеТовара.Себестоимость);  
        КонецЕсли;
        Если СуммаН<>0 Тогда
            ПроцентНац=СуммаПрибыли/(СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100))*100;
        КонецЕсли;
        Продажная=СуммаН*(1+НаименованиеТовара.СтавкаНДС.Ставка/100);
        Рента=Окр((Итог("СуммаПрибыли")/Итог("Продажная")*100),2);
    КонецЕсли;  
КонецПроцедуры
43 Aleksandr_
Nikonov
 
07.08.15
11:00
Епта это типа статус документа (принято или нет) дело в том что они в нем формируют так же дополнительный товар на отгрузку и если принято ответственном лицом тогда епта = 1 если не принято тогда епта = 0 ))))))
44 VikingKosmo
 
07.08.15
11:03
Если у тебя уж УТ 11 и речь идет о документе ЗаказКлиента открой для себя контекстный отчет Оценка рентабельности продажи
45 VikingKosmo
 
07.08.15
11:03
(44) но для него все равно нужен проведенный документ Расчет себестоимости
46 Aleksandr_
Nikonov
 
07.08.15
11:07
(44) у меня УТ 3.0.15.4
47 VikingKosmo
 
07.08.15
11:08
(46) не слышал про такое ни разу...
48 Aleksandr_
Nikonov
 
07.08.15
11:08
Для РБ
49 Aleksandr_
Nikonov
 
07.08.15
11:09
Управление торговлей для Беларуси, редакция 3.0
50 Aleksandr_
Nikonov
 
07.08.15
11:10
отчета такого нет(
51 VikingKosmo
 
07.08.15
11:10
(48) ну если это переделка УТ 11, то в документе Заказ клиента, по идее должен быть отчет, о котором я говорил. Хотя и не факт конечно
52 VikingKosmo
 
07.08.15
11:10
(50) печально
53 Aleksandr_
Nikonov
 
07.08.15
11:11
в документе тоже нет (
54 Aleksandr_
Nikonov
 
07.08.15
11:11
это наверное да это переделка но она типовая покупалась у фирмы 1с ))))))
55 VikingKosmo
 
07.08.15
11:12
(54) ну передай пламенный привет фирме 1С. В УТ 11 есть отчет, который показывает, то что ты там пытаешься сделать
56 Aleksandr_
Nikonov
 
07.08.15
11:12
есть только отчет анализ цен и все )
57 Aleksandr_
Nikonov
 
07.08.15
11:13
(55) можешь слить его отдельной обработкой?
58 Aleksandr_
Nikonov
 
07.08.15
11:13
или же весь документ?
59 Metman
 
07.08.15
11:13
УФ или обычные?
60 Aleksandr_
Nikonov
 
07.08.15
11:14
УФ
61 Aleksandr_
Nikonov
 
07.08.15
11:14
62 Aleksandr_
Nikonov
 
07.08.15
11:16
нашел отчет называется валовая прибыль по заказам
ну хоро да это бы подошло но  как тогда работать?
63 VikingKosmo
 
07.08.15
11:16
(62) исходя из методических рекомендаций фирмы 1С?
64 Aleksandr_
Nikonov
 
07.08.15
11:17
распишите схемму формирования документов какие документы нужно делать и как часто что бы получать верные цифры в данный отчет
65 VikingKosmo
 
07.08.15
11:18
(64) обратись с таким вопросом в фирму 1С. Тут тебя ни кто, особенно бесплатно, учить работать в типовых конфигурациях 1С не будет
66 Aleksandr_
Nikonov
 
07.08.15
11:19
) ну и за то спасибо!
2 + 2 = 3.9999999999999999999999999999999...