Не сопоставляет типы в запросе
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВозвратСырьяОтПереработчика.Ссылка КАК Ссылка,
| ДвиженияСерийТоваров.Получатель КАК Склад,
| ВозвратСырьяОтПереработчика.Подразделение КАК Подразделение,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Назначение КАК Назначение,
| ДвиженияСерийТоваров.Серия КАК Серия,
| ДвиженияСерийТоваров.Количество КАК Количество,
| ВозвратСырьяОтПереработчика.Дата КАК ДокументДата,
| ВозвратСырьяОтПереработчика.Организация КАК Организация
|ПОМЕСТИТЬ ВТВозвратыОтПереработчикаДетальныеЗаписи
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратСырьяОтПереработчика КАК ВозвратСырьяОтПереработчика
| ПО ДвиженияСерийТоваров.Документ = ВозвратСырьяОтПереработчика.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| И ВЫБОР
| КОГДА НЕ &ДокументВозврата ЕСТЬ NULL
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ВозвратСырьяОтПереработчика
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПоступлениеТоваровОтХранителя.Ссылка,
| ДвиженияСерийТоваров.Получатель,
| ПоступлениеТоваровОтХранителя.Подразделение,
| ДвиженияСерийТоваров.Номенклатура,
| ДвиженияСерийТоваров.Назначение,
| ДвиженияСерийТоваров.Серия,
| ДвиженияСерийТоваров.Количество,
| ПоступлениеТоваровОтХранителя.Дата,
| ПоступлениеТоваровОтХранителя.Организация
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровОтХранителя КАК ПоступлениеТоваровОтХранителя
| ПО ДвиженияСерийТоваров.Документ = ПоступлениеТоваровОтХранителя.Ссылка
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| И ВЫБОР
| КОГДА НЕ &ДокументВозврата ЕСТЬ NULL
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ПоступлениеТоваровОтХранителя
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
ПоказатьДобрый день! Параметр &ДокументВозврата может принимать 3 значения:
Неопределено
Документ.ПоступлениеТоваровОтХранителя
Документ.ВозвратСырьяОтПереработчика
И данное условие не отрабатывает
ВЫБОР
| КОГДА НЕ &ДокументВозврата ЕСТЬ NULL
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ВозвратСырьяОтПереработчика
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
ПоказатьПытался передавать параметр так
Если ПеремещениеОтборДокументВозврата <> Неопределено Тогда
Запрос.УстановитьПараметр("ДокументВозврата" , ПеремещениеОтборДокументВозврата);
Иначе
Запрос.УстановитьПараметр("ДокументВозврата" , NULL);
КонецЕсли;
ВЫБОР
| КОГДА &ДокументВозврата <> НЕОПРЕДЕЛЕНО
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ПоступлениеТоваровОтХранителя
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
ПоказатьТоже не отрабатывает. Он нехочет сопоставлять типы НЕОПРЕДЕЛЕНО или NULL с ссылкой Документ.ПоступлениеТоваровОтХранителя
Найденные решения
Решил сделать по другому,если кому интересно.
Параметры
И Запрос:
Если ПеремещениеОтборДокументВозврата <> Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ОТБОРПОДОКУМЕНТУВОЗВРАТА", "
| И ДвиженияСерийТоваров.Документ = &ДокументВозврата ");
Запрос.УстановитьПараметр("ДокументВозврата", ПеремещениеОтборДокументВозврата);
КонецЕсли;
И Запрос:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВозвратСырьяОтПереработчика.Ссылка КАК Ссылка,
| ДвиженияСерийТоваров.Получатель КАК Склад,
| ВозвратСырьяОтПереработчика.Подразделение КАК Подразделение,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Назначение КАК Назначение,
| ДвиженияСерийТоваров.Серия КАК Серия,
| ДвиженияСерийТоваров.Количество КАК Количество,
| ВозвратСырьяОтПереработчика.Дата КАК ДокументДата,
| ВозвратСырьяОтПереработчика.Организация КАК Организация
|ПОМЕСТИТЬ ВТВозвратыОтПереработчикаДетальныеЗаписи
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратСырьяОтПереработчика КАК ВозвратСырьяОтПереработчика
| ПО ДвиженияСерийТоваров.Документ = ВозвратСырьяОтПереработчика.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| // ОТБОРПОДОКУМЕНТУВОЗВРАТА
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПоступлениеТоваровОтХранителя.Ссылка,
| ДвиженияСерийТоваров.Получатель,
| ПоступлениеТоваровОтХранителя.Подразделение,
| ДвиженияСерийТоваров.Номенклатура,
| ДвиженияСерийТоваров.Назначение,
| ДвиженияСерийТоваров.Серия,
| ДвиженияСерийТоваров.Количество,
| ПоступлениеТоваровОтХранителя.Дата,
| ПоступлениеТоваровОтХранителя.Организация
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровОтХранителя КАК ПоступлениеТоваровОтХранителя
| ПО ДвиженияСерийТоваров.Документ = ПоступлениеТоваровОтХранителя.Ссылка
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| // ОТБОРПОДОКУМЕНТУВОЗВРАТА
|;
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) вместо вот таких отборов:
использовать 2 параметра:
и передавать 2 параметра:
ВЫБОР
| КОГДА &ДокументВозврата <> НЕОПРЕДЕЛЕНО
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ПоступлениеТоваровОтХранителя
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| КОГДА &ДокументВозврата <> НЕОПРЕДЕЛЕНО
| ТОГДА ВЫБОР
| КОГДА &ДокументВозврата ССЫЛКА Документ.ПоступлениеТоваровОтХранителя
| ТОГДА ДвиженияСерийТоваров.Документ = &ДокументВозврата
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
использовать 2 параметра:
И (&БезОграничений ИЛИ ДвиженияСерийТоваров.Документ = &ДокументВозврата)
и передавать 2 параметра:
Если ПеремещениеОтборДокументВозврата = Неопределено Тогда
Запрос.УстановитьПараметр("БезОграничений", Истина);
Запрос.УстановитьПараметр("ДокументВозврата", Документы.ВозвратСырьяОтПереработчика.ПустаяСсылка());
Иначе
Запрос.УстановитьПараметр("БезОграничений", Ложь);
Запрос.УстановитьПараметр("ДокументВозврата", ПеремещениеОтборДокументВозврата);
КонецЕсли;
(19)Я учел скобки. Все поставил. Просто если &БезОграничений=истина,то он начинается отрабатывать алгоритм ДвиженияСерийТоваров.Документ=Документы.ВозвратСырьяОтПереработчика.ПустаяСсылка(). Я понимаю,что там стоит ИЛИ,но при срабатывании &БезОграничений он отрабатывает и этот алгоритм ДвиженияСерийТоваров.Документ=Документы.ВозвратСырьяОтПереработчика.ПустаяСсылка()
Отработал алгоритм через СтрИзменить. Причем очень даже грамотно... Проверил производительность,стало меньше.
Я тоже удивлен,что алгоритм не отработал... но так уж повелось...
Отработал алгоритм через СтрИзменить. Причем очень даже грамотно... Проверил производительность,стало меньше.
Я тоже удивлен,что алгоритм не отработал... но так уж повелось...
это вот убирай, не нужно
.
Если нужно условие на пустое значение, то проще всего так
Потому что пустые значения у 1с бывают разные.
в остальном может быть ошибка только в параметре или данные не соответствуют запросу.
КОГДА НЕ &ДокументВозврата ЕСТЬ NULL
Если нужно условие на пустое значение, то проще всего так
Запрос.УстановитьПарамет("ДокументПустой", НЕ ЗначениеЗаполнено(Документ));
Потому что пустые значения у 1с бывают разные.
в остальном может быть ошибка только в параметре или данные не соответствуют запросу.
Решил сделать по другому,если кому интересно.
Параметры
И Запрос:
Если ПеремещениеОтборДокументВозврата <> Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ОТБОРПОДОКУМЕНТУВОЗВРАТА", "
| И ДвиженияСерийТоваров.Документ = &ДокументВозврата ");
Запрос.УстановитьПараметр("ДокументВозврата", ПеремещениеОтборДокументВозврата);
КонецЕсли;
И Запрос:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВозвратСырьяОтПереработчика.Ссылка КАК Ссылка,
| ДвиженияСерийТоваров.Получатель КАК Склад,
| ВозвратСырьяОтПереработчика.Подразделение КАК Подразделение,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Назначение КАК Назначение,
| ДвиженияСерийТоваров.Серия КАК Серия,
| ДвиженияСерийТоваров.Количество КАК Количество,
| ВозвратСырьяОтПереработчика.Дата КАК ДокументДата,
| ВозвратСырьяОтПереработчика.Организация КАК Организация
|ПОМЕСТИТЬ ВТВозвратыОтПереработчикаДетальныеЗаписи
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратСырьяОтПереработчика КАК ВозвратСырьяОтПереработчика
| ПО ДвиженияСерийТоваров.Документ = ВозвратСырьяОтПереработчика.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| // ОТБОРПОДОКУМЕНТУВОЗВРАТА
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПоступлениеТоваровОтХранителя.Ссылка,
| ДвиженияСерийТоваров.Получатель,
| ПоступлениеТоваровОтХранителя.Подразделение,
| ДвиженияСерийТоваров.Номенклатура,
| ДвиженияСерийТоваров.Назначение,
| ДвиженияСерийТоваров.Серия,
| ДвиженияСерийТоваров.Количество,
| ПоступлениеТоваровОтХранителя.Дата,
| ПоступлениеТоваровОтХранителя.Организация
|ИЗ
| РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыНаИспытаниях_НоменклатураСерия КАК ВТТоварыНаИспытаниях_НоменклатураСерия
| ПО ДвиженияСерийТоваров.Номенклатура = ВТТоварыНаИспытаниях_НоменклатураСерия.Номенклатура
| И ДвиженияСерийТоваров.Серия = ВТТоварыНаИспытаниях_НоменклатураСерия.Серия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровОтХранителя КАК ПоступлениеТоваровОтХранителя
| ПО ДвиженияСерийТоваров.Документ = ПоступлениеТоваровОтХранителя.Ссылка
|ГДЕ
| ДвиженияСерийТоваров.СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента)
| И ВЫБОР
| КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ДвиженияСерийТоваров.Получатель В ИЕРАРХИИ (&Склад)
| КОНЕЦ
| // ОТБОРПОДОКУМЕНТУВОЗВРАТА
|;
Показать
Вакансии
Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день