Добрый день! Прошу помощи так как зашел уже в тупик. Есть такой запрос
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); МассивВалют=Новый Массив; МассивВалют.Добавить(Справочники.Валюты.НайтиПоКоду(980)); МассивВалют.Добавить(Справочники.Валюты.НайтиПоКоду(840)); Запрос.УстановитьПараметр("МассивВалют",МассивВалют); Запрос.УстановитьПараметр("Категория",Справочники.КатегорииЦен.НайтиПоНаименованию("Районная")); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Номенклатура.Ссылка, | ОстаткиТоваровСрезПоследних.Остаток, | ВложенныйЗапрос.Цена |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних | ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныСрезПоследних.Товар КАК Товар, | МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена | | ИЗ | РегистрСведений.Цены.СрезПоследних( | &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория | | ) КАК ЦеныСрезПоследних | | СГРУППИРОВАТЬ ПО | ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос | ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар |ГДЕ | Номенклатура.ЭтоГруппа = ЛОЖЬ";
Получаю цены указанные в массиве (Доллар и Гривна), но никак не могу перевести доллар в гривну, что бы все цены были в одной валюте. Есть регистр сведений "Курс Валют" - Изм: Валюта, Рес: Курс, Кратность. Не знаю как его использовать в данном случаи
Почти ветеран
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0
Цитата(korish @ 06.01.12, 11:37)
(ВЫБРАТЬ | ЦеныСрезПоследних.Товар КАК Товар, | МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена | | ИЗ | РегистрСведений.Цены.СрезПоследних( | &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория | | ) КАК ЦеныСрезПоследних
Данный запрос вернет 1 строку для товара с максимальной ценой - тоесть ГРН.
Зачем переводить? - судя по Вашему запросу у Вас в ЦеныСрезПоследних в 2-х валютах. Если нет то запрос нужно строить так В запросе с МАКСИМУМ - заменить регистр на КУРСЫВАЛЮТ, а регистр РегистрСведений.Цены.СрезПоследних соединить левым соединением
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Из регистра цен выбрать валюту и по ней левым соединением добавить регистр курсов валют. И по курсу переводите все записи (включая гривну, т.к. у неё курс будет должен быть = 1) и получите гривну
Цитата
Данный запрос вернет 1 строку для товара с максимальной ценой - тоесть ГРН.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Цитата
это все я понимаю, но так как только начал разбираться в 1С я не знаю как это реализовать((
Та ну. Т.е. сообразить как написать приведенный в первом посте запрос вы сделали, а добавить то что мы говорим, то "не знаю как"? Как-то не складно получается...
awp, по-моему вы чересчур усложнили ситуацию ЗЫ. awp, не хорошо удалять посты и менять их в корне!
Проблема в том что немного запроса написал старый программист, который ушел в не здравом уме и у него ничего не допросишься, тот запрос я дописывал изначально в нем было намного меньше строк. Дописать получилось, а вот курс это одна единственная загвоздка
Почти ветеран
Группа: Местный
Сообщений: 522
Спасибо сказали: 70 раз
Рейтинг: 0
Цитата(Vofka @ 06.01.12, 11:47)
Из регистра цен выбрать валюту и по ней левым соединением добавить регистр курсов валют. И по курсу переводите все записи (включая гривну, т.к. у неё курс будет должен быть = 1) и получите гривну
А если цена только в доларах?
Цитата(Vofka @ 06.01.12, 11:52)
awp, не хорошо удалять посты и менять их в корне!
Повелся на вложеный запрос - и не увидел что вверху только остатки. Недавно делал для движений. типа так:
|ВЫБРАТЬ | ВложенныйЗапрос.Организация, | ""Прибыль от продажи"", | ""Валовая прибыль с НДС"", | """", | СУММА((ВложенныйЗапрос.СтоимостьСНДС - ВложенныйЗапрос.СебестоимостьСНДС) * КурсыВалют.Курс), | """", | СУММА((ВложенныйЗапрос.СтоимостьСНДС - ВложенныйЗапрос.СебестоимостьСНДС) * КурсыВалют.Курс) |ИЗ | (ВЫБРАТЬ | ПродажиОбороты.Проект КАК Проект, | ПродажиОбороты.Подразделение КАК Подразделение, | ПродажиОбороты.Контрагент КАК Покупатель, | ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя, | ПродажиОбороты.Номенклатура КАК Номенклатура, | ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, | ПродажиОбороты.Организация КАК Организация, | ПродажиОбороты.Регистратор КАК Регистратор, | НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ) КАК Период, | ПродажиОбороты.КоличествоОборот КАК Количество, | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов, | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц, | ПродажиОбороты.СтоимостьОборот КАК Стоимость, | ПродажиОбороты.НДСОборот КАК СтоимостьНДС, | ПродажиОбороты.СтоимостьОборот + ПродажиОбороты.НДСОборот КАК СтоимостьСНДС, | ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) КАК Себестоимость, | ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.НДСОборот, 0) КАК СебестоимостьНДС, | ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот + ТаблицаРегистраПродажиСебестоимость.НДСОборот, 0) КАК СебестоимостьСНДС | ИЗ | РегистрНакопления.Продажи.Обороты(, , Регистратор, {(Организация).* КАК Организация, (Проект).* КАК Проект, (Подразделение).* КАК Подразделение, (Контрагент).* КАК Покупатель, | (ДоговорКонтрагента).* КАК ДоговорПокупателя, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ЗаказПокупателя).* КАК ЗаказПокупателя}) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПродажиСебестоимость.Номенклатура КАК Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя, | ВЫБОР | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО | ТОГДА ПродажиСебестоимость.ДокументДвижения | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ КАК Регистратор, | СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот, | СУММА(ПродажиСебестоимость.НДС) КАК НДСОборот | ИЗ | РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость | | СГРУППИРОВАТЬ ПО | ПродажиСебестоимость.Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя, | ВЫБОР | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО | ТОГДА ПродажиСебестоимость.ДокументДвижения | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость | ПО (ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура) | И (ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры) | И (ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя) | И (ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор)) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПродажиОбороты.Период КАК Период, | МАКСИМУМ(КурсыВалют.Период) КАК Период1 | ИЗ | РегистрСведений.КурсыВалют КАК КурсыВалют | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты | ПО КурсыВалют.Период <= ПродажиОбороты.Период | ГДЕ | КурсыВалют.Валюта = &Валюта | | СГРУППИРОВАТЬ ПО | ПродажиОбороты.Период) КАК ВложенныйЗапрос1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют | ПО ВложенныйЗапрос1.Период1 = КурсыВалют.Период | ПО ВложенныйЗапрос.Период = ВложенныйЗапрос1.Период |ГДЕ | ВложенныйЗапрос.Период МЕЖДУ &ДатаНач И &ДатаКон | И КурсыВалют.Валюта = &Валюта | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Организация
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Цитата
Проблема в том что немного запроса написал старый программист
А мне кажется, что старый программист написал таки "много".
Цитата
это все я понимаю
Так вот, если понимаете о чем речь - так пробуйте и говорите, что у вас получается/не получается, мы подскажем. Или проще напрячь кого-то? Готового кода не дождетесь (от меня, по крайней мере)
А мне кажется, что старый программист написал таки "много".
Лучше перекреститься
Цитата
Так вот, если понимаете о чем речь - так пробуйте и говорите, что у вас получается/не получается, мы подскажем. Или проще напрячь кого-то? Готового кода не дождетесь (от меня, по крайней мере)
Пробовал делать вот так
ВЫБРАТЬ РАЗЛИЧНЫЕ | Номенклатура.Ссылка, | ОстаткиТоваровСрезПоследних.Остаток, | КурсыВалютСрезПоследних.Курс * Цена КАК ЦенаГрив, | КурсыВалютСрезПоследних.Валюта, // внимание!!! | ВложенныйЗапрос.Цена |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних | ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних | ПО Цена.Валюта = КурсыВалютСрезПоследних.Валюта // внимание!!! | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныСрезПоследних.Товар КАК Товар, | МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена | | ИЗ | РегистрСведений.Цены.СрезПоследних( | &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория | | ) КАК ЦеныСрезПоследних | | СГРУППИРОВАТЬ ПО | ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос | ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар |ГДЕ | Номенклатура.ЭтоГруппа = ЛОЖЬ
в итоге ничего не получилось
Причина редактирования: Не надо использовать ББ теги в коде! И ознакомьтесь с правилами (особенно где сказано про цитирование)!. Вофка.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Навскидку как-то так (ВНИМАНИЕ!!! Это псевдокод!)
|ВЫБРАТЬ РАЗЛИЧНЫЕ | Номенклатура.Ссылка, | ОстаткиТоваровСрезПоследних.Остаток, | ЦеныСрезПоследних.Курс * Цена КАК ЦенаГрив, | ВложенныйЗапрос.Цена |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваров.СрезПоследних КАК ОстаткиТоваровСрезПоследних | ПО Номенклатура.Ссылка = ОстаткиТоваровСрезПоследних.Товар | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныСрезПоследних.Товар КАК Товар, | МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена, | МАКСИМУМ(КурсыВалютСрезПоследних.Курс) КАК Курс | ИЗ | РегистрСведений.Цены.СрезПоследних( | &Дата, Валюта В(&МассивВалют) И КатегорияЦены = &Категория | | ) КАК ЦеныСрезПоследних | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних | ПО ЦеныСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта | | СГРУППИРОВАТЬ ПО | ЦеныСрезПоследних.Товар) КАК ВложенныйЗапрос | | ПО Номенклатура.Ссылка = ВложенныйЗапрос.Товар |ГДЕ | Номенклатура.ЭтоГруппа = ЛОЖЬ
И вставляйте код нормально (в отформатировнном виде), а то хрен разберешь так сходу.
Я все таки не пойму. Почему Вы берете МАКСИМУМ цены, а не соединение и пересчет по курсу? На том простом основании, что сегодня курс 8:1, а если завтра станет 1:8?
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Цитата
Почему Вы берете МАКСИМУМ цены, а не соединение и пересчет по курсу? На том простом основании, что сегодня курс 8:1, а если завтра станет 1:8?
Т.к. берется срез последних, то мне кажется, что не имеет значения что взять (максимум, минимум или среднее). Наверное надо получить стоимостную оценку товаров на какую-то дату. Я честно говоря вооще не понимаю нафига там делается группировка, ведь одинаковых товаров там всеравно не будет.
так рассказываю вкратце, получилось у меня конвертировать, но конвертирует все цены....суть всего вопроса....как выбрать только цены у которых валюта "Доллар" и конвертировать их в "Гривну"?
НУ и умножить на коэфициент и разделить на делитель
Цитата(Vofka @ 09.01.12, 13:12)
Т.к. берется срез последних, то мне кажется, что не имеет значения что взять (максимум, минимум или среднее). Наверное надо получить стоимостную оценку товаров на какую-то дату. Я честно говоря вооще не понимаю нафига там делается группировка, ведь одинаковых товаров там всеравно не будет.
Группировка, я так понимаю, сгруппирует несколько цен в разных валютах и выберет максимальную.
Сообщение отредактировал alex040269 - 09.01.12, 14:00
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!