Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос выгрузки цен          
korish Подменю пользователя
сообщение 06.01.12, 11:37
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день! Прошу помощи так как зашел уже в тупик. Есть такой запрос
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    МассивВалют=Новый Массив;
    МассивВалют.Добавить(Справочники.Валюты.НайтиПоКоду(980));
    МассивВалют.Добавить(Справочники.Валюты.НайтиПоКоду(840));
    Запрос.УстановитьПараметр("МассивВалют",МассивВалют);
    Запрос.УстановитьПараметр("Категория",Справочники.КатегорииЦен.НайтиПоНаименованию("Районная"));
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                          |    Номенклатура.Ссылка,
                          |    ОстаткиТоваровСрезПоследних.Остаток,
                          |    ВложенныйЗапрос.Цена
                          |ИЗ
                          |    Справочник.Номенклатура КАК Номенклатура
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних
                          |        ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар
                          |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |            ЦеныСрезПоследних.Товар КАК Товар,
                          |            МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена
                          |        
                          |        ИЗ              
                          |            РегистрСведений.Цены.СрезПоследних(
                          |                    &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория
                          |                        
                          |                        ) КАК ЦеныСрезПоследних
                          |        
                          |        СГРУППИРОВАТЬ ПО
                          |            ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос
                          |        ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар
                          |ГДЕ
                          |    Номенклатура.ЭтоГруппа = ЛОЖЬ";

Получаю цены указанные в массиве (Доллар и Гривна), но никак не могу перевести доллар в гривну, что бы все цены были в одной валюте. Есть регистр сведений "Курс Валют" - Изм: Валюта, Рес: Курс, Кратность. Не знаю как его использовать в данном случаи

Цену получаю в цикле

rsProd.Fields("price").Value =  ?(Выборка.Цена = null,0,Выборка.Цена);

awp Подменю пользователя
сообщение 06.01.12, 11:45
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0

Цитата(korish @ 06.01.12, 11:37) *
(ВЫБРАТЬ
                          |            ЦеныСрезПоследних.Товар КАК Товар,
                          |            МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена
                          |        
                          |        ИЗ              
                          |            РегистрСведений.Цены.СрезПоследних(
                          |                    &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория
                          |                        
                          |                        ) КАК ЦеныСрезПоследних


Данный запрос вернет 1 строку для товара с максимальной ценой - тоесть ГРН.

Зачем переводить? - судя по Вашему запросу у Вас в ЦеныСрезПоследних в 2-х валютах. Если нет то запрос нужно строить так
В запросе с МАКСИМУМ - заменить регистр на КУРСЫВАЛЮТ, а регистр РегистрСведений.Цены.СрезПоследних соединить левым соединением


Signature
Бухгалтер - это не профессия! Это диагноз!

Vofka Подменю пользователя
сообщение 06.01.12, 11:47
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Из регистра цен выбрать валюту и по ней левым соединением добавить регистр курсов валют. И по курсу переводите все записи (включая гривну, т.к. у неё курс будет должен быть = 1) и получите гривну

Цитата
Данный запрос вернет 1 строку для товара с максимальной ценой - тоесть ГРН.

А если цена только в доларах? wink.gif

korish Подменю пользователя
сообщение 06.01.12, 11:48
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

это все я понимаю, но так как только начал разбираться в 1С я не знаю как это реализовать((

awp Подменю пользователя
сообщение 06.01.12, 11:50
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0

Хотя Вам нужны остатки - это вообще делается просто соединением а курс на дату отчета берите

Сообщение отредактировал awp - 06.01.12, 11:52


Signature
Бухгалтер - это не профессия! Это диагноз!

Vofka Подменю пользователя
сообщение 06.01.12, 11:52
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата
это все я понимаю, но так как только начал разбираться в 1С я не знаю как это реализовать((

Та ну. Т.е. сообразить как написать приведенный в первом посте запрос вы сделали, а добавить то что мы говорим, то "не знаю как"? Как-то не складно получается...

awp, по-моему вы чересчур усложнили ситуацию smile.gif
ЗЫ. awp, не хорошо удалять посты и менять их в корне! 17000000.gif

korish Подменю пользователя
сообщение 06.01.12, 11:53
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Проблема в том что немного запроса написал старый программист, который ушел в не здравом уме и у него ничего не допросишься, тот запрос я дописывал изначально в нем было намного меньше строк. Дописать получилось, а вот курс это одна единственная загвоздка

awp Подменю пользователя
сообщение 06.01.12, 11:56
Сообщение #8

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0

Цитата(Vofka @ 06.01.12, 11:47) *
Из регистра цен выбрать валюту и по ней левым соединением добавить регистр курсов валют. И по курсу переводите все записи (включая гривну, т.к. у неё курс будет должен быть = 1) и получите гривну


А если цена только в доларах? wink.gif


16000000.gif

Цитата(Vofka @ 06.01.12, 11:52) *
awp, не хорошо удалять посты и менять их в корне! 17000000.gif


Повелся на вложеный запрос - и не увидел что вверху только остатки. Недавно делал для движений.
типа так:

Развернуть текст запроса

 |ВЫБРАТЬ
                          |    ВложенныйЗапрос.Организация,
                          |    ""Прибыль от продажи"",
                          |    ""Валовая прибыль с НДС"",
                          |    """",
                          |    СУММА((ВложенныйЗапрос.СтоимостьСНДС - ВложенныйЗапрос.СебестоимостьСНДС) * КурсыВалют.Курс),
                          |    """",
                          |    СУММА((ВложенныйЗапрос.СтоимостьСНДС - ВложенныйЗапрос.СебестоимостьСНДС) * КурсыВалют.Курс)
                          |ИЗ
                          |    (ВЫБРАТЬ
                          |        ПродажиОбороты.Проект КАК Проект,
                          |        ПродажиОбороты.Подразделение КАК Подразделение,
                          |        ПродажиОбороты.Контрагент КАК Покупатель,
                          |        ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя,
                          |        ПродажиОбороты.Номенклатура КАК Номенклатура,
                          |        ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                          |        ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
                          |        ПродажиОбороты.Организация КАК Организация,
                          |        ПродажиОбороты.Регистратор КАК Регистратор,
                          |        НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ) КАК Период,
                          |        ПродажиОбороты.КоличествоОборот КАК Количество,
                          |        ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов,
                          |        ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц,
                          |        ПродажиОбороты.СтоимостьОборот КАК Стоимость,
                          |        ПродажиОбороты.НДСОборот КАК СтоимостьНДС,
                          |        ПродажиОбороты.СтоимостьОборот + ПродажиОбороты.НДСОборот КАК СтоимостьСНДС,
                          |        ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) КАК Себестоимость,
                          |        ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.НДСОборот, 0) КАК СебестоимостьНДС,
                          |        ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот + ТаблицаРегистраПродажиСебестоимость.НДСОборот, 0) КАК СебестоимостьСНДС
                          |    ИЗ
                          |        РегистрНакопления.Продажи.Обороты(, , Регистратор, {(Организация).* КАК Организация, (Проект).* КАК Проект, (Подразделение).* КАК Подразделение, (Контрагент).* КАК Покупатель,
                          |                            (ДоговорКонтрагента).* КАК ДоговорПокупателя, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ЗаказПокупателя).* КАК ЗаказПокупателя}) КАК ПродажиОбороты
                          |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |                ПродажиСебестоимость.Номенклатура КАК Номенклатура,
                          |                ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                          |                ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя,
                          |                ВЫБОР
                          |                    КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
                          |                        ТОГДА ПродажиСебестоимость.ДокументДвижения
                          |                    ИНАЧЕ ПродажиСебестоимость.Регистратор
                          |                КОНЕЦ КАК Регистратор,
                          |                СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот,
                          |                СУММА(ПродажиСебестоимость.НДС) КАК НДСОборот
                          |            ИЗ
                          |                РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
                          |            
                          |            СГРУППИРОВАТЬ ПО
                          |                ПродажиСебестоимость.Номенклатура,
                          |                ПродажиСебестоимость.ХарактеристикаНоменклатуры,
                          |                ПродажиСебестоимость.ЗаказПокупателя,
                          |                ВЫБОР
                          |                    КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
                          |                        ТОГДА ПродажиСебестоимость.ДокументДвижения
                          |                    ИНАЧЕ ПродажиСебестоимость.Регистратор
                          |                КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость
                          |            ПО (ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура)
                          |                И (ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры)
                          |                И (ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя)
                          |                И (ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор)) КАК ВложенныйЗапрос
                          |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |            ПродажиОбороты.Период КАК Период,
                          |            МАКСИМУМ(КурсыВалют.Период) КАК Период1
                          |        ИЗ
                          |            РегистрСведений.КурсыВалют КАК КурсыВалют
                          |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты
                          |                ПО КурсыВалют.Период <= ПродажиОбороты.Период
                          |        ГДЕ
                          |            КурсыВалют.Валюта = &Валюта
                          |        
                          |        СГРУППИРОВАТЬ ПО
                          |            ПродажиОбороты.Период) КАК ВложенныйЗапрос1
                          |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
                          |            ПО ВложенныйЗапрос1.Период1 = КурсыВалют.Период
                          |        ПО ВложенныйЗапрос.Период = ВложенныйЗапрос1.Период
                          |ГДЕ
                          |    ВложенныйЗапрос.Период МЕЖДУ &ДатаНач И &ДатаКон
                          |    И КурсыВалют.Валюта = &Валюта
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ВложенныйЗапрос.Организация


Signature
Бухгалтер - это не профессия! Это диагноз!

Vofka Подменю пользователя
сообщение 06.01.12, 11:58
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата
Проблема в том что немного запроса написал старый программист

А мне кажется, что старый программист написал таки "много".

Цитата
это все я понимаю

Так вот, если понимаете о чем речь - так пробуйте и говорите, что у вас получается/не получается, мы подскажем. Или проще напрячь кого-то? Готового кода не дождетесь (от меня, по крайней мере) bk.gif

Спасибо сказали: awp,

korish Подменю пользователя
сообщение 06.01.12, 12:08
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата
А мне кажется, что старый программист написал таки "много".

Лучше перекреститься
Цитата
Так вот, если понимаете о чем речь - так пробуйте и говорите, что у вас получается/не получается, мы подскажем. Или проще напрячь кого-то? Готового кода не дождетесь (от меня, по крайней мере)

Пробовал делать вот так
ВЫБРАТЬ РАЗЛИЧНЫЕ
                          |    Номенклатура.Ссылка,
                          |    ОстаткиТоваровСрезПоследних.Остаток,
                              | КурсыВалютСрезПоследних.Курс * Цена КАК ЦенаГрив,
                              | КурсыВалютСрезПоследних.Валюта,  // внимание!!!
                  |    ВложенныйЗапрос.Цена
                          |ИЗ
                          |    Справочник.Номенклатура КАК Номенклатура
                          |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних
                          |        ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар
                             |         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних
                              |          ПО Цена.Валюта = КурсыВалютСрезПоследних.Валюта // внимание!!!
                          |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |            ЦеныСрезПоследних.Товар КАК Товар,
                          |            МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена
                          |        
                          |        ИЗ              
                          |            РегистрСведений.Цены.СрезПоследних(
                          |                    &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория
                          |                        
                          |                        ) КАК ЦеныСрезПоследних
                          |        
                          |        СГРУППИРОВАТЬ ПО
                          |            ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос
                          |        ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар
                          |ГДЕ
                          |    Номенклатура.ЭтоГруппа = ЛОЖЬ


в итоге ничего не получилось
Причина редактирования: Не надо использовать ББ теги в коде! И ознакомьтесь с правилами (особенно где сказано про цитирование)!. Вофка.

Vofka Подменю пользователя
сообщение 06.01.12, 12:23
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

faceoff.gif

Навскидку как-то так (ВНИМАНИЕ!!! Это псевдокод!)

|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    Номенклатура.Ссылка,
|    ОстаткиТоваровСрезПоследних.Остаток,
|    ЦеныСрезПоследних.Курс * Цена КАК ЦенаГрив,
|    ВложенныйЗапрос.Цена
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних
|        ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            ЦеныСрезПоследних.Товар КАК Товар,
|            МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена,
|            МАКСИМУМ(КурсыВалютСрезПоследних.Курс) КАК Курс
|        ИЗ              
|            РегистрСведений.Цены.СрезПоследних(
|                    &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория
|                        
|                        ) КАК ЦеныСрезПоследних
|                        
|            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних
|                ПО ЦеныСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта
|        
|        СГРУППИРОВАТЬ ПО
|            ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос
|            
|        ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар
|ГДЕ
|    Номенклатура.ЭтоГруппа = ЛОЖЬ


И вставляйте код нормально (в отформатировнном виде), а то хрен разберешь так сходу.

alex040269 Подменю пользователя
сообщение 08.01.12, 14:48
Сообщение #12

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Я все таки не пойму. Почему Вы берете МАКСИМУМ цены, а не соединение и пересчет по курсу? На том простом основании, что сегодня курс 8:1, а если завтра станет 1:8?


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Vofka Подменю пользователя
сообщение 09.01.12, 13:12
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата
Почему Вы берете МАКСИМУМ цены, а не соединение и пересчет по курсу? На том простом основании, что сегодня курс 8:1, а если завтра станет 1:8?

Т.к. берется срез последних, то мне кажется, что не имеет значения что взять (максимум, минимум или среднее). Наверное надо получить стоимостную оценку товаров на какую-то дату. Я честно говоря вооще не понимаю нафига там делается группировка, ведь одинаковых товаров там всеравно не будет.

korish Подменю пользователя
сообщение 09.01.12, 13:19
Сообщение #14

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

так рассказываю вкратце, получилось у меня конвертировать, но конвертирует все цены....суть всего вопроса....как выбрать только цены у которых валюта "Доллар" и конвертировать их в "Гривну"?

alex040269 Подменю пользователя
сообщение 09.01.12, 13:59
Сообщение #15

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

|ГДЕ
|    ЦеныСрезПоследних.Валюта = &Валюта";
Запрос.УстановитьПараметр("Валюта",Справочники.НайтиПоКоду())


НУ и умножить на коэфициент и разделить на делитель

Цитата(Vofka @ 09.01.12, 13:12) *
Т.к. берется срез последних, то мне кажется, что не имеет значения что взять (максимум, минимум или среднее). Наверное надо получить стоимостную оценку товаров на какую-то дату. Я честно говоря вооще не понимаю нафига там делается группировка, ведь одинаковых товаров там всеравно не будет.


Группировка, я так понимаю, сгруппирует несколько цен в разных валютах и выберет максимальную.

Сообщение отредактировал alex040269 - 09.01.12, 14:00


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 0:47
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!