Запрос
Здравствуйте! Подскажите пожалуйста как реализовать передачу данных в другой документ пропуская отмеченные строчки как на рисунке. Там где брак, не должно попасть в реализацию. Вот код нынешнего запроса. Но он все передает. И брак тоже.
&НаСервере
Функция РеализацияТоваровИУслугНаСервере(МассивДокументов)
// Вставить содержимое обработчика.
СписокСообщений = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст = " ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Коэффициент,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Сумма как Сумма,
| ВложенныйЗапрос.ЦенаДоставки,
| ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,
| ВложенныйЗапрос.Водители КАК Водители,
| ВложенныйЗапрос.Цена КАК Цена
|ИЗ
| (ВЫБРАТЬ
| ДоставкаТовары.Номенклатура КАК Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент КАК Коэффициент,
| СУММА(ДоставкаТовары.Количество) КАК Количество,
| СУММА(ДоставкаТовары.Сумма) КАК Сумма,
| ДоставкаТовары.Водители КАК Водители,
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Цена КАК Цена
| ИЗ
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
| И НЕ ДоставкаТовары.Номенклатура.Услуга
|
| СГРУППИРОВАТЬ ПО
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент,
| ДоставкаТовары.Водители,
| ДоставкаТовары.Цена,
| ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
|ИТОГИ ПО
| Водители";
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Результат = Запрос.Выполнить();
ВыборкаДокументов = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокументов.Следующий() Цикл
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Док.Дата = ТекущаяДата();
Док.Контрагент = ВыборкаДокументов.Водители;
Док.Комментарий = "Сформирован по доставкам " + Док.Дата;
Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация2");
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док, глЗначениеПеременной("глТекущийПользователь"), Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка");
ВыборкаТоваров = ВыборкаДокументов.Выбрать();
Пока ВыборкаТоваров.Следующий() Цикл
НоваяСтрока = Док.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТоваров);
// Выполнить общие действия для всех документов при изменении номенклатуры.
ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НоваяСтрока, Док);
НоваяСтрока.ЕдиницаИзмерения = ВыборкаТоваров.Номенклатура.ЕдиницаХраненияОстатков;
НоваяСтрока.Коэффициент = НоваяСтрока.ЕдиницаИзмерения.Коэффициент;
НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
КонецЦикла;
Если Док.Товары.Количество() > 0 Тогда
Док.Записать(РежимЗаписиДокумента.Запись);
СписокСообщений.Добавить("Создан документ: " + Док.Ссылка);
КонецЕсли;
КонецЦикла;
Возврат СписокСообщений;
КонецФункции
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Модель запроса
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Экспертный взгляд на оптимизацию производительности на примере исправления и декомпозиции запроса
- Модель запроса SQL
Найденные решения
Решил данную проблему.
Запрос.Текст = " ВЫБРАТЬ
| ВложенныйЗапрос.Водители,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Коэффициент,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.ЦенаДоставки,
| ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Брак КАК Брак
|ИЗ
| (ВЫБРАТЬ
| ДоставкаТовары.Водители как Водители,
| ДоставкаТовары.Номенклатура КАК Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент КАК Коэффициент,
| СУММА(ДоставкаТовары.Количество) КАК Количество,
| СУММА(ДоставкаТовары.Сумма) КАК Сумма,
| ДоставкаТовары.ЦенаДоставки Как ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД КАК ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Цена КАК Цена,
| ДоставкаТовары.Брак КАК Брак
| ИЗ
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И Брак = &Брак
| СГРУППИРОВАТЬ ПО
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент,
| ДоставкаТовары.Водители,
| ДоставкаТовары.Цена,
| ДоставкаТовары.Брак,
| ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
|ИТОГИ ПО
| Водители";
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("Брак",Ложь);
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Пока ВыборкаТоваров.Следующий() Цикл
Если ВыборкаТоваров.Брак = Истина Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Док.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТоваров);
// Выполнить общие действия для всех документов при изменении номенклатуры.
ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НоваяСтрока, Док);
НоваяСтрока.ЕдиницаИзмерения = ВыборкаТоваров.Номенклатура.ЕдиницаХраненияОстатков;
НоваяСтрока.Коэффициент = НоваяСтрока.ЕдиницаИзмерения.Коэффициент;
НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
КонецЦикла;
ПоказатьМожет быть так.
(4) как будет выгладить данное условие? я писал так:
Не помогло
ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| И ДоставкаТовары.Брак = Истина
| И НЕ ДоставкаТовары.Номенклатура.Услуга
Не помогло
Что то такое у вас должно быть в запросе:
Запрос.Текст = " ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Коэффициент,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Сумма как Сумма,
| ВложенныйЗапрос.ЦенаДоставки,
| ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,
| ВложенныйЗапрос.Водители КАК Водители,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Брак КАК Брак
|ИЗ
| (ВЫБРАТЬ
| ДоставкаТовары.Номенклатура КАК Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент КАК Коэффициент,
| СУММА(ДоставкаТовары.Количество) КАК Количество,
| СУММА(ДоставкаТовары.Сумма) КАК Сумма,
| ДоставкаТовары.Водители КАК Водители,
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Цена КАК Цена,
| ДоставкаТовары.Брак КАК Брак
| ИЗ
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
| И НЕ ДоставкаТовары.Номенклатура.Услуга
|
| СГРУППИРОВАТЬ ПО
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент,
| ДоставкаТовары.Водители,
| ДоставкаТовары.Цена,
| ДоставкаТовары.Брак,
| ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.Брак = Ложь
|ИТОГИ ПО
| Водители";
Показать
(15) Отладьте для начала запрос, а потом уже создавайте документы. В параметр &МассивДокументов передайте массив с одним документом Реализации, где есть строки с браком и без. Выгрузите результат запроса в таблицу значений - Запрос.Выполнить().Выгрузить() и посмотрите запрос отработал так как вам нужно или нет. А потом уже создавайте документы
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
| И НЕ ДоставкаТовары.Номенклатура.Услуга
| И НЕ ДоставкаТовары.Брак
ПоказатьИЛИ в зависимости где у вас находится Этот Брак...
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
| И НЕ ДоставкаТовары.Номенклатура.Услуга
| И НЕ ДоставкаТовары.Ссылка.Брак
Показать
Решил данную проблему.
Запрос.Текст = " ВЫБРАТЬ
| ВложенныйЗапрос.Водители,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Коэффициент,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.ЦенаДоставки,
| ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Брак КАК Брак
|ИЗ
| (ВЫБРАТЬ
| ДоставкаТовары.Водители как Водители,
| ДоставкаТовары.Номенклатура КАК Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент КАК Коэффициент,
| СУММА(ДоставкаТовары.Количество) КАК Количество,
| СУММА(ДоставкаТовары.Сумма) КАК Сумма,
| ДоставкаТовары.ЦенаДоставки Как ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД КАК ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Цена КАК Цена,
| ДоставкаТовары.Брак КАК Брак
| ИЗ
| Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
| ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
| И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
| ГДЕ
| ДоставкаТовары.Ссылка В(&МассивДокументов)
| И Брак = &Брак
| СГРУППИРОВАТЬ ПО
| ДоставкаТовары.ЦенаДоставки,
| ДоставкаТовары.ЦенаДоставкиЗаМКАД,
| ДоставкаТовары.Номенклатура,
| ДоставкаТовары.ЕдиницаИзмерения,
| ДоставкаТовары.Коэффициент,
| ДоставкаТовары.Водители,
| ДоставкаТовары.Цена,
| ДоставкаТовары.Брак,
| ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
|ИТОГИ ПО
| Водители";
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("Брак",Ложь);
Показать
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)