Условие в запросе

1. Вожак 09.01.14 15:47 Сейчас в теме
ВЫБОР
| КОГДА ТаблицаДокумента.Ссылка = ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг)
| И ТаблицаДокумента.Ссылка.ФлажокКоличество = ЛОЖЬ
| ТОГДА ТаблицаДокумента.Количество
| ИНАЧЕ ТаблицаДокумента.Количество2
| КОНЕЦ КАК Количество,
вот кусок кода, хочу сделать условие, что если текущий документ в запросе в ТаблицаДокумента.Ссылка есть РТИУ тогда выполняется код ниже
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Вожак 09.01.14 15:48 Сейчас в теме
И еще нужно так: Если РТИУ, то берется код:
ТаблицаДокумента.Ссылка.ФлажокКоличество = ЛОЖЬ
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2

Если не РТИУ то берется просто Количество
3. Вожак 09.01.14 15:51 Сейчас в теме
проблема еще в том что ТаблицаДокумента - это временная таблица, которая в конструкторе запроса ручками и заполняется(
4. vanleo 09.01.14 15:53 Сейчас в теме
ВЫБОР
| КОГДА ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг


"Оператор ССЫЛКА позволяет проверить, является ли значение выражения, указанного справа от него, ссылкой на таблицу, указанную слева. Если да – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ"
Mechanik21; +1 Ответить
5. Вожак 09.01.14 15:56 Сейчас в теме
как полностью тогда прописать условие?
ВЫБОР
КОГДА ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
И ТаблицаДокумента.Ссылка.ФлажокКоличество = ЛОЖЬ
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2
ВЫБОР
ТаблицаДокумента.Количество
КОНЕЦ
КОНЕЦ
6. Вожак 09.01.14 15:57 Сейчас в теме
хочу, что если ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг эта строка истина, то есть текущий документ - РТИУ, то происходит это:
ТаблицаДокумента.Ссылка.ФлажокКоличество = ЛОЖЬ
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2
ВЫБОР
ТаблицаДокумента.Количество
КОНЕЦ
Если же ТаблицаДокумента.ссылка не РТИУ тогда просто
ТаблицаДокумента.Количество
7. Вожак 09.01.14 15:59 Сейчас в теме
{ВнешняяОбработка.ВПФ_Счет_Фактура.МодульОбъекта(344)}: Ошибка при вызове метода контекста (ВыполнитьПакет)
Результат = Запрос.ВыполнитьПакет();
по причине:
{(170, 33)}: Несовместимые типы "ССЫЛКА"
КОГДА ТаблицаДокумента.Ссылка <<?>>ССЫЛКА Документ.РеализацияТоваровУслуг
8. mymyka 09.01.14 16:02 Сейчас в теме
(7)Типизируйте временную таблицу, которую в запрос передаете
10. Вожак 09.01.14 16:03 Сейчас в теме
(8) mymyka, тип ей поставил документ ссылка
9. Вожак 09.01.14 16:03 Сейчас в теме
тпиа того, но все же не так:(
ВЫБОР
КОГДА ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
КОГДА ТаблицаДокумента.Ссылка.ФлажокКоличество = ЛОЖЬ
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2
ИНАЧЕ ТаблицаДокумента.Количество
КОНЕЦ
11. Вожак 09.01.14 16:06 Сейчас в теме
и когда я тип ставлю, нажимаю ОК, потом в констуркторе запроса тоже ОК, и когда обратно захожу в него, тип слетает у этой таблицы(
17. mymyka 09.01.14 16:14 Сейчас в теме
(11)Типизируйте не временную таблицу в запросе, а то, что вы в нее помещаете, т.е. ТЗ.
12. vanleo 09.01.14 16:06 Сейчас в теме
Если используете врем таблицу, то логичнее вставить в нее ФлажокКоличество, что не было лишнего разыменования.

ВЫБОР
КОГДА ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
ТОГДА ВЫБОР
КОГДА НЕ ТаблицаДокумента.ФлажокКоличество
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2
КОНЕЦ
ИНАЧЕ ТаблицаДокумента.Количество
КОНЕЦ
13. Вожак 09.01.14 16:07 Сейчас в теме
все равно про несовместные типы ругается(
14. Вожак 09.01.14 16:11 Сейчас в теме
Задаю Ссылке тип - ДокументСсылка, пока ок не нажму все хорошо, нажимаю ок - закрывается конструктор запроса, потом открываю его опять, и нет уже типа данных у этой ссылки
15. vanleo 09.01.14 16:12 Сейчас в теме
Поделитесь dt или обработкой, посмотрим
19. Вожак 09.01.14 16:17 Сейчас в теме
(15) vanleo, напишите мыло, дтшник отправлю
16. Вожак 09.01.14 16:13 Сейчас в теме
вот обработка БП 30
Прикрепленные файлы:
ВПФ_СчетФактура.epf
18. Вожак 09.01.14 16:16 Сейчас в теме
вот функция:
Функция ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)

НомераТаблиц.Вставить("ТаблицаДокумента", НомераТаблиц.Количество());


ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.НомерТабЧасти КАК НомерТабЧасти,
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ТаблицаДокумента.Товар = ""СуммоваяРазница""
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТаблицаДокумента.Товар
| КОНЕЦ КАК Товар,
| ТаблицаДокумента.ТоварНаименование КАК ТоварНаименование,
| ТаблицаДокумента.СтранаПроисхождения КАК СтранаПроисхождения,
| ВЫБОР
| КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
| ТОГДА ""--""
| ИНАЧЕ ЕСТЬNULL(СтраныМира.Наименование, """")
| КОНЕЦ КАК ПредставлениеСтраны,
| ВЫБОР
| КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
| ТОГДА ""--""
| ИНАЧЕ ЕСТЬNULL(СтраныМира.Код, """")
| КОНЕЦ КАК СтранаПроисхожденияКод,
| ТаблицаДокумента.НомерГТД КАК НомерГТД,
| ВЫБОР
| КОГДА ТаблицаДокумента.СтранаПроисхождения = ЗНАЧЕНИЕ(Справочник.СтраныМира.РОССИЯ)
| ТОГДА ""--""
| ИНАЧЕ ТаблицаДокумента.ПредставлениеГТД
| КОНЕЦ КАК ПредставлениеГТД,
| ЕСТЬNULL(КлассификаторЕдиницИзмерения.Наименование, """") КАК ЕдиницаИзмеренияНаименование,
| ВЫБОР
| КОГДА ТаблицаДокумента.СуммаВключаетНДС
| ТОГДА ВЫБОР
| КОГДА ТаблицаДокумента.Количество = 0
| ТОГДА 0
| ИНАЧЕ ВЫРАЗИТЬ((ТаблицаДокумента.Сумма - ТаблицаДокумента.СуммаНДС) / ТаблицаДокумента.Количество КАК ЧИСЛО(15, 2))
| КОНЕЦ
| ИНАЧЕ ТаблицаДокумента.Цена
| КОНЕЦ КАК Цена,
| ВЫБОР
| КОГДА ТаблицаДокумента.СуммаВключаетНДС
| ТОГДА ТаблицаДокумента.Сумма
| ИНАЧЕ ТаблицаДокумента.Сумма + ТаблицаДокумента.СуммаНДС
| КОНЕЦ КАК Всего,
| ВЫБОР
| КОГДА ТаблицаДокумента.Товар = ""СуммоваяРазница""
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ТаблицаДокумента.СуммаВключаетНДС
| ТОГДА ТаблицаДокумента.Сумма - ТаблицаДокумента.СуммаНДС
| ИНАЧЕ ТаблицаДокумента.Сумма
| КОНЕЦ
| КОНЕЦ КАК СуммаБезНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| &ТекстБезАкциза КАК Акциз,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.ЭтоКомиссия,
| ТаблицаДокумента.ВсегоРуб,
| ТаблицаДокумента.НДСРуб,
| ТаблицаДокумента.СуммаБезНДСРуб,
| ВЫБОР
| КОГДА ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА ВЫБОР
| КОГДА НЕ ТаблицаДокумента.Ссылка.ФлажокКоличество
| ТОГДА ТаблицаДокумента.Количество
| ИНАЧЕ ТаблицаДокумента.Количество2
| КОНЕЦ
| ИНАЧЕ ТаблицаДокумента.Количество
| КОНЕЦ КАК Количество,
| ТаблицаДокумента.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| ТаблицаДокумента КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныМира
| ПО (СтраныМира.Ссылка = ТаблицаДокумента.СтранаПроисхождения)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторЕдиницИзмерения КАК КлассификаторЕдиницИзмерения
| ПО (КлассификаторЕдиницИзмерения.Ссылка = ТаблицаДокумента.ЕдиницаИзмерения)
|
|УПОРЯДОЧИТЬ ПО
| НомерТабЧасти,
| НомерСтроки";

Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();

КонецФункции





Тут нигде особо типов не задашь ведь
25. mymyka 09.01.14 16:27 Сейчас в теме
(18)Что именно должен вернуть запрос состоящий из левого соединение и пустой таблицы?
(24)В этом запросе временные таблицы не создаются с нуля, а выбираются из данных БД, они уже протипизированы.
27. Вожак 09.01.14 16:29 Сейчас в теме
(25) mymyka, вот, и если я буду делать ТаблицаДокумента.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг, он будет ругаться, что поля разных типов
20. vanleo 09.01.14 16:20 Сейчас в теме
28. Вожак 09.01.14 16:39 Сейчас в теме
21. vanleo 09.01.14 16:21 Сейчас в теме
mymyka прав, надо смотреть, что за ТЗ передаете и какие в ней типы прописаны
23. Вожак 09.01.14 16:23 Сейчас в теме
(21) vanleo, берется все из модуля менеджера Реализации ТОваров и услуг, даже когда я формирую по Акту об оказании услуг счет фактуру
22. Вожак 09.01.14 16:21 Сейчас в теме
24. Вожак 09.01.14 16:27 Сейчас в теме
Функция ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц) Экспорт

НомераТаблиц.Вставить("Реквизиты", НомераТаблиц.Количество());
НомераТаблиц.Вставить("ВТ_РублевыеСуммыДокументовВВалюте", НомераТаблиц.Количество());
НомераТаблиц.Вставить("ВременнаяТаблицаДокумента", НомераТаблиц.Количество());

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

Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();

КонецФункции


вот отсюда берется для формирования по Акту об оказании услуг, тоже тип задавать особо не выйдет
26. Вожак 09.01.14 16:29 Сейчас в теме
что еще добавить в него?
зы. блин ненавижу управляемые приложениея, зачем для печати так все усложнять было
29. mymyka 09.01.14 16:41 Сейчас в теме
(26)Временные таблицы и управляемое приложение никак не связаны.
(27)И правильно, у вас ТаблицаДокумента.Ссылка не имеет в своем составе типа Документ.РеализацияТоваровУслуг. Она вообще никаких типов не имеет.
30. Вожак 09.01.14 16:45 Сейчас в теме
32. mymyka 09.01.14 16:49 Сейчас в теме
(30)Для начала определиться с задачей. Откуда вы хотите взять исходные данные и зачем вообще временные таблицы? Сравните 1 и 2 запрос. В первом создается только описание ВТ, а во втором данные выбираются из документов и помещаются в ВТ. Это принципиальная разница.
31. Вожак 09.01.14 16:47 Сейчас в теме
Такой еще вопрос, у меня есть 2 ТЧ товары и услуги, в товарах есть количество и количество 2, в услугах только количество, как прописать условие на соответствующюю ТЧ?
ВЫБОР
КОГДА НЕ ТаблицаДокумента.Ссылка.ФлажокКоличество
ТОГДА ТаблицаДокумента.Количество
ИНАЧЕ ТаблицаДокумента.Количество2
КОНЕЦ

вот в таком случае из ТЧ товары и услуги будет браться количество2, а нужно, чтобы из товары табличной части в зависимости от условия брались данные, а количествов ТЧ услуги всегда бралось из колонки количество
33. jigourt 31 09.01.14 16:51 Сейчас в теме
может конечно глупость скажу или недоглядел, но откуда в Вашем запросе данные возьмутся?
34. Вожак 09.01.14 16:51 Сейчас в теме
Задача такая:
1. При формировании специально по РТИУ чтобы из колонки услуги всегда бралась графа количество, а из колонки товары, в зависимости от наличия галочки, количество или количество 2
35. vanleo 09.01.14 16:52 Сейчас в теме
Нужно объединить 2 ТЧ во временной таблице и завести служебное поле "ТоварУслуга" например. Для ТЧ товаров во врем таблице указать ТоварУслуга = "Товар", а для ТЧ услуг Товаруслуга = "Услуга". А после весить условия в зависимости от значения поля ТоварУслуга
36. Вожак 09.01.14 16:52 Сейчас в теме
эту задачу решил, возвращаемся к условию для различных документов
38. mymyka 09.01.14 17:17 Сейчас в теме
(36)
ВЫБРАТЬ
	РеализацияТоваровУслуг.Ссылка,
	РеализацияТоваровУслуг.Организация,
	NULL КАК Контрагент
ПОМЕСТИТЬ ВТРТиУ
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ПоступлениеТоваровУслуг.Ссылка,
	NULL,
	ПоступлениеТоваровУслуг.Контрагент
ИЗ
	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
;

 X 
ВЫБРАТЬ
	ВЫБОР
		КОГДА ВТРТиУ.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
			ТОГДА ВТРТиУ.Организация
		ИНАЧЕ ВТРТиУ.Контрагент
	КОНЕЦ КАК ПолеПоУсловиюВидДокумента
ИЗ
	ВТРТиУ КАК ВТРТиУ
Показать

курить запрос до просветления.
37. jigourt 31 09.01.14 17:12 Сейчас в теме
39. asved.ru 36 09.01.14 18:53 Сейчас в теме
Запросы ваши не читал. Но осуждаю. С точки зрения производительности соединение (естественно, если оно обусловлено логикой запроса) и проверка на NULL гораздо веселее проверки ССЫЛКА.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот