Можно ли передать в параметр тип документа?
Запрос.УстановитьПараметр("Регистратор", Тип("Документ.ПриходнаяНакладная"));
не работает.
В итоге сделал так:
Запрос.УстановитьПараметр("Регистратор", Тип("Документ.ПриходнаяНакладная"));
не работает.
В итоге сделал так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.";
Если ТипЗнч(Накладная) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда
Запрос.Текст = Запрос.Текст + "ПриходнаяНакладная";
Иначе
Запрос.Текст = Запрос.Текст + "РасходнаяНакладная";
КонецЕсли;
ПоказатьПо теме из базы знаний
- Выгрузка документа в XML произвольной структуры (+пример для выгрузки в ECOD)
- Как печатать свой отчет СКД прямо из формы типового документа, не изменяя конфигурации? Подробная инструкция на примере
- Бухгалтерия 3.0 Как печатать свой отчет СКД прямо из формы типового документа, не изменяя конфигурации? Внешняя печатная форма на основе системы компоновки данных.
- Как отправить по почте НЕтиповой документ, используя стандартные средства БП 3.0
- Клиент API ГИС МТ (ИС МП) "Честный знак". Чтение данных и отправка документов. Работа на стороне сервера.
Найденные решения
(1) тип данных 1С и тип данных sql это совсем разные типы. Какой тип собираетесь передавать через параметр?
Приведенный код вполне корректный для данной ситуации. Но лучше не дописывать текст запроса в условии Если, а в текст запроса использовать подстановочное слово, для дальнейшей замены:
Приведенный код вполне корректный для данной ситуации. Но лучше не дописывать текст запроса в условии Если, а в текст запроса использовать подстановочное слово, для дальнейшей замены:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.%1;";
Если ТипЗнч(Накладная) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда
Запрос.Текст = СтрШаблон(Запрос.Текст, "ПриходнаяНакладная");
Иначе
Запрос.Текст = СтрШаблон(Запрос.Текст, "РасходнаяНакладная");
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) тип данных 1С и тип данных sql это совсем разные типы. Какой тип собираетесь передавать через параметр?
Приведенный код вполне корректный для данной ситуации. Но лучше не дописывать текст запроса в условии Если, а в текст запроса использовать подстановочное слово, для дальнейшей замены:
Приведенный код вполне корректный для данной ситуации. Но лучше не дописывать текст запроса в условии Если, а в текст запроса использовать подстановочное слово, для дальнейшей замены:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.%1;";
Если ТипЗнч(Накладная) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда
Запрос.Текст = СтрШаблон(Запрос.Текст, "ПриходнаяНакладная");
Иначе
Запрос.Текст = СтрШаблон(Запрос.Текст, "РасходнаяНакладная");
КонецЕсли;
Показать
(6)Мона через временную таблицу
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Выбрать ТипЗначения(&Накладная) как Тип поместить Типы;
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| ТипЗначения(ОстаткиНоменклатуры.Регистратор) в ( Выбрать тип из типы)";
Запрос.УстановитьПараметр("Накладная",Накладная;
Показать
(6) Спасибо, замечательное решение.
(1) Зачем так заморачиваться?
Тип, как и объект известны, пропиши все в запросе, простым текстом, раз и до следующей правки.
(1) Зачем так заморачиваться?
Тип, как и объект известны, пропиши все в запросе, простым текстом, раз и до следующей правки.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| &ВариантЗапроса = 1 и ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.ПриходнаяНакладная
| или &ВариантЗапроса = 2 и ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.РасходнаяНакладная";
Показать
(6)
добрый день. так конструктор слетает, лучше
Документ.%1
,
добрый день. так конструктор слетает, лучше
"ВЫБРАТЬ
| ТаблицаСправочника.Наименование КАК Наименование,
| ТаблицаСправочника.Код КАК Код
|ИЗ
| &ТаблицаСправочника КАК ТаблицаСправочника";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса , "&ТаблицаСправочника", "Справочник." + ИмяСправочника);
Так получится?
Нужно в конце формирования запроса поставить точку останова и посмотреть текст запроса.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатуры.Период КАК Период,
| ОстаткиНоменклатуры.Регистратор КАК Регистратор,
| ОстаткиНоменклатуры.ВидДвижения КАК ВидДвижения,
| ОстаткиНоменклатуры.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатуры.Количество КАК Количество,
| ОстаткиНоменклатуры.МоментВремени КАК МоментВремени
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ ";
Если ТипЗнч(Накладная) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда
Запрос.Текст = Запрос.Текст + "ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.ПриходнаяНакладная";
Иначе
Запрос.Текст = Запрос.Текст + "ОстаткиНоменклатуры.Регистратор ССЫЛКА Документ.РасходнаяНакладная";
КонецЕсли;
ПоказатьНужно в конце формирования запроса поставить точку останова и посмотреть текст запроса.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот