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