Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Продажи.Номенклатура,
|Продажи.Валюта,
|Продажи.Регистратор КАК Регистратор1,
|Продажи.Стоимость
|ИЗ
|РегистрНакопления.Продажи КАК Продажи
Как в запросе можно (и можно ли) сразу сделать перерасчет из например из гривни в другую валюту?
Можно. В запросе допустимы конструкции типа А*Б/В.
Вопрос как. В 1С8 я не силен пока... Так что даже представления не имею
Поэтому пожалуйста объясните как для чайников Или где посмотреть можно реализацию.
Я так понимаю мне надо сначала получить Курс и кратность а потом ???
Можно как-то так
Запрос = Новый Запрос;
ТекстЗапроса = "
|ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсВалюты
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
|ГДЕ
| КурсыВалютСрезПоследних.Валюта = &Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Количество,
| Продажи.Стоимость / КурсВалюты.Курс * КурсВалюты.Кратность КАК СтоимостьВалюта
|ИЗ
| РегистрНакопления.Продажи КАК Продажи,
| КурсВалюты КАК КурсВалюты
|";
Запрос.УстановитьПараметр("Валюта", );// указываем валюту в которой нужно получить стоимость
Запрос = Новый Запрос;
ТекстЗапроса = "
|ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсВалюты
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
|ГДЕ
| КурсыВалютСрезПоследних.Валюта = &Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Количество,
| Продажи.Стоимость / КурсВалюты.Курс * КурсВалюты.Кратность КАК СтоимостьВалюта
|ИЗ
| РегистрНакопления.Продажи КАК Продажи,
| КурсВалюты КАК КурсВалюты
|";
Запрос.УстановитьПараметр("Валюта", );// указываем валюту в которой нужно получить стоимость
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| СведенияОРаботе.ФизЛицо КАК ФизЛицо,
| Удержания.ВидУдержания КАК ВидУдержания,
| Удержания.Валюта КАК Валюта,
| Удержания.СтатьяЗатрат КАК СтатьяЗатрат,
| Удержания.Сумма КАК Сумма
|ИЗ
| РегистрСведений.СведенияОРаботе КАК СведенияОРаботе
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Удержания КАК Удержания
| ПО СведенияОРаботе.ФизЛицо = Удержания.ФизЛицо
|ГДЕ
| СведенияОРаботе.ДатаПриема <= &ДатаДок
| И СведенияОРаботе.Организация = &Организация
|
|СГРУППИРОВАТЬ ПО
| СведенияОРаботе.ФизЛицо,
| Удержания.ВидУдержания,
| Удержания.Валюта,
| Удержания.СтатьяЗатрат,
| Удержания.Сумма";
Запрос.УстановитьПараметр("ДатаДок",Дата);
Запрос.УстановитьПараметр("Организация",Организация);
СотрудникиОрганизации = Запрос.Выполнить().Выбрать();
Пока СотрудникиОрганизации.Следующий() Цикл
Если НЕ ПустаяСтрока(СотрудникиОрганизации.ВидУдержания) Тогда
НоваяСтрока = Удержания.Добавить();
НоваяСтрока.ФизЛицо = СотрудникиОрганизации.ФизЛицо;
"ВЫБРАТЬ
| СведенияОРаботе.ФизЛицо КАК ФизЛицо,
| Удержания.ВидУдержания КАК ВидУдержания,
| Удержания.Валюта КАК Валюта,
| Удержания.СтатьяЗатрат КАК СтатьяЗатрат,
| Удержания.Сумма КАК Сумма
|ИЗ
| РегистрСведений.СведенияОРаботе КАК СведенияОРаботе
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Удержания КАК Удержания
| ПО СведенияОРаботе.ФизЛицо = Удержания.ФизЛицо
|ГДЕ
| СведенияОРаботе.ДатаПриема <= &ДатаДок
| И СведенияОРаботе.Организация = &Организация
| И (НЕ ВидУдержания = "")
|
|СГРУППИРОВАТЬ ПО
| СведенияОРаботе.ФизЛицо,
| Удержания.ВидУдержания,
| Удержания.Валюта,
| Удержания.СтатьяЗатрат,
| Удержания.Сумма";
не выдает ошибку
И (НЕ ВидУдержания = <<?>>")
СотрудникиОрганизации = Запрос.Выполнить().Выбрать();
по причине:
{(14, 25)}: Строка, не закрывающаяся кавычкой
И (НЕ ВидУдержания = <<?>>")
"а Удержания.ВидУдержания что там строка? "
это справочник
сделал так
| И (НЕ ВидУдержания = &Пустой)
...
Запрос.УстановитьПараметр("Пустой",Справочники.ВидыНачисленийУдержаний.ПустаяСсылка());
Вроде работает.
Но что то кажется что все равно как то через одно место ...
ЗЫ За мысль спасибо.
Курим IS NULL
там 2 кавычки
у меня работает.
хм..
а ваще ув. Fynjy дело говорит.
"ВЫБРАТЬ
| СведенияОРаботе.ФизЛицо КАК ФизЛицо,
| Удержания.ВидУдержания КАК ВидУдержания,
| Удержания.Валюта КАК Валюта,
| Удержания.СтатьяЗатрат КАК СтатьяЗатрат,
| Удержания.Сумма КАК Сумма
|ИЗ
| РегистрСведений.СведенияОРаботе КАК СведенияОРаботе
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Удержания КАК Удержания
| ПО СведенияОРаботе.ФизЛицо = Удержания.ФизЛицо
|ГДЕ
| СведенияОРаботе.ДатаПриема <= &ДатаДок
| И СведенияОРаботе.Организация = &Организация
| И (НЕ ВидУдержания ЕСТЬ NULL)
|
|СГРУППИРОВАТЬ ПО
| СведенияОРаботе.ФизЛицо,
| Удержания.ВидУдержания,
| Удержания.Валюта,
| Удержания.СтатьяЗатрат,
| Удержания.Сумма";
все правельно он делает....направлени показал...вперед
+для себя более узнаешь.
Да это работает
| И (НЕ ВидУдержания ЕСТЬ NULL)
Достаточно прочитать последовательно 5 книг и будет тебе счастье ... Букварь по админству, радченко, курсы от 1с (4 шт), огромный букварь по 8, сложные отчеты - и бушь в шоколаде ...
PS: странно и почему ни кто не кричит, когда преходит с турбо си на вижуал студию, как тяжелая система ...
PS: а что бы не выдумывать велосипед - еще книжку по учету в твоей типовой конфигурации ...
И шо прочитав пару книг асом по 8-ке стану? Опыт! Вот что главное.
Собственно все что написали я читал. Но там примеры детские и не всегда подходят в практике. Например Есть NULL я так и не нашел вчера.
Плачут, плачут. Тока на других своих форумах... Хотя если сравнивать получение опыта в семерке в свое время то все проходит побыстрее, но все равно не достаточно.
По поводу "великов" то изобретениями не занимаюсь. Но когда клиенту хочетца то почему и нет? Надо вот им вести учет "конвертов" в отдельной базе. По типу екселя. Ну и мне дополнительный опыт не помешает.
Или вот еще пример из жизни расчет зарплаты на основании данных о реализации товаров и услуг. Считают вот менеджерам зарплату таким образом. Так что в типовых решениях не всегда есть то что надо. Спасаю разве что "кусками кода" Например для того что бы не писать движения регистров конструктором...
Так что я не плачу. А тихонечко скрипя зубами грызу платформу 81 ))))
Опыт = применение знаний
Опыт <> метод научного тыка ...
PS: в типовых есть все просто кое какие нюансы можно упрощать ...
PSS: такая зп реализована кури схемы мотивации ...
а теперь вопрос по делу.
есть простой запрос. нужно выбрать документы "ВозвратТоваровОтПокупателяТовары" у которых не заполено "Себестоиостть" или "ДокументПартии", т.к. реквизит "ДокументПартии" имеет состовной тип (т.е. несолько видов документов)
вопрос как?
"ВЫБРАТЬ
| ВозвратТоваровОтПокупателяТовары.Ссылка КАК Документ,
| ВозвратТоваровОтПокупателяТовары.Ссылка.Дата,
| ВозвратТоваровОтПокупателяТовары.Ссылка.Организация
|ИЗ
| Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
|ГДЕ
| ВозвратТоваровОтПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
| И ВозвратТоваровОтПокупателяТовары.Ссылка.Проведен = ИСТИНА
| И ВозвратТоваровОтПокупателяТовары.Себестоимость = 0
| И ВозвратТоваровОтПокупателяТовары.ДокументПартии = NULL"; //тут не понятно что писать....так есно не канает....и все что перепробывал...НЕКАНАЕТ
= null не правильно
есть null правильно - но то же не всегда корректно ...
я так понял это не совсем ответ на мой вопрос...тип рекомендация для использования null
з.ы. пропробовал Ваше предложение...неа..тож самое
В форме можно проверить так:
ЭлементыФормы.Контрагент.ОтметкаНезаполненного = истина (или ложь, смотря по ситуации)
Как это проверить в запросе - хз.
А при проведении реквизит ДокументПартии делает где-то движения? Если да, то по соответствующему регистру может быть запрос делать?
|ГДЕ
| ВЫБОР
| КОГДА (НЕ ДокументТовары.ДокументОприходования В (&ПустыеДокументыОприходования))
| ТОГДА ДокументТовары.ДокументОприходования = ПартииТоваровНаСкладахОстатки.ДокументОприходования
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0
|
|УПОРЯДОЧИТЬ ПО
| Дата
|АВТОУПОРЯДОЧИВАНИЕ";
ПустыеДокументыОприходования = Новый СписокЗначений;
ПустыеДокументыОприходования.Добавить(Документы.КомплектацияНоменклатуры.ПустаяС
сылка());
ПустыеДокументыОприходования.Добавить(Документы.ВозвратТоваровОтПокупателя.Пуста
яСсылка());
ПустыеДокументыОприходования.Добавить(Документы.ОприходованиеТоваров.ПустаяСсылк
а());
ПустыеДокументыОприходования.Добавить(Документы.ПоступлениеТоваровУслуг.ПустаяСс
ылка());
ПустыеДокументыОприходования.Добавить(Документы.АвансовыйОтчет.ПустаяСсылка());
ПустыеДокументыОприходования.Добавить(Неопределено);
Запрос.УстановитьПараметр("ПустыеДокументыОприходования", ПустыеДокументыОприходования);
все равно как то некрасиво.....если добалять еще виды документов ,справочников то можно и забыть
но мысль понятна.
спс.
По поводу нулл ... Блин читайте хоть иногда книжки умные ...
"Любая операция сравнения с NULL (даже операция «NULL = NULL»), даёт в результате значение «неизвестность» (UNKNOWN). Окончательный результат при этом зависит от полного логического выражения в соответствии с таблицей истинности логических операций. Если сравнение с NULL есть вся логическая операция целиком (а не её часть), то результат её аналогичен FALSE (выражение вида IF <что-то> = NULL THEN <действие1> ELSE <действие2> END IF всегда будет приводить к выполнению действия2)." - какие еще вопросы могут быть?
По сему: что то = null - бред ...
Для проверки Неопределенно/пустого существует IS NULL
Можно об этом прочитать на ИТС ...
При этом в поле запроса помещать типы агрегатные и булево очень большая ошибка ... Я написал, грубо потом стер со второго раза вроде по лучше ...
спасибо друзяка, просветил неучей.
"При этом в поле запроса помещать типы агрегатные и булево очень большая ошибка"
не совсем уловил ....
| И ВозвратТоваровОтПокупателяТовары.Себестоимость = 0
| И ВозвратТоваровОтПокупателяТовары.ДокументПартии = ИСТИНА
тип это зло? вчем именно зло?
Fynjy, своим "is null" ты человека больше в прострацию ввел, чем разъяснил. Проще было Истину ему указать.
----------
А в стандартных языках "is null" проверяется как:
if (переменная) { }
это наверное проще, чем в языке программирования "1С".
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua