Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:47

Поиск всех документов.

Автор Shaman_blr, 28 фев 2023, 13:03

0 Пользователей и 1 гость просматривают эту тему.

Shaman_blr

Всем привет. Подскажите пожалуйста как реализовать следующую задачу. Наверно запросом.
Есть управляемая форма в обработки, название "ТорговыйДом" . Туда юзер вносит Номенклатура, физлицо, количествоСтыков. Который записывается в документ -> Процесс.
Для каждой номенклатуры свое количествоСтыков, юзер вносит вручную.
Юзер заполнил строку Номенклатура "Шина, Физлицо "Пупкин", количествоСтыков "2".
Помогите написать запрос проверки Призаписи()
Когда юзер все заполнил и нажал записать, чтобы была проверка количествоСтыков из других документов "Процесс" с такой же номенклатурой (Чтобы проверял минимум за месяц документы) если в каждом документе количествоСтыков было "2" с такой же номенклатурой то ВсеОК. А если где то была "3" то предупреждение.

super386

Набросок запроса:

ВЫБРАТЬ
  Товары.Номенклатура КАК Номенклатура,
  Товары.Количество КАК Количество
ПОМЕСТИТЬ
  ВТ_ТекТовары
ИЗ
  Документ.Процесс.Товары КАК Товары
ГДЕ
  Товары.Ссылка = &ТекДокумент
;

ВЫБРАТЬ
  Товары.Номенклатура КАК Номенклатура
ИЗ
  ВТ_ТекТовары КАК ТекТовары
ЛЕВОЕ СОЕДИНЕНИЕ
  Документ.Процесс.Товары КАК Товары
ПО
  ТекТовары.Номенклатура = Товары.Номенклатура
  И ТекТовары.Количество <> Товары.Количество
ГДЕ
  Товары.Ссылка <> &ТекДокумент
  И Товары.Ссылка.Проведен

Запрос следует доработать под условие, что в одном документе несколько строк с одной номенклатурой.
Если на большой базе запрос будет работать медленно, то его следует оптимизировать.

Shaman_blr

super386, это вообще не то <_<

super386

Shaman_blr, запрос проверяет количество в других документах, добавьте обёртку к запросу

Afinogen

я так понимаю  тут речь в том что  запрос вызывается в процедуре "приЗаписи2 когда еще нет ссылки на документ
в таком случае
во первых  я бы делал в обработчике "ПередЗаписью"

Запрос = Новый Запрос;
Запрос.МенеджерВременныхтаблиц;

таб = Товары.выгрузить();
Таб.Свернуть("Номенклатура","Количество");
МассивНоменклатура = Таб.ВыгрузитьКолонку("Номенклатура");
Запрос.УстановитьПараметр("ВтТовары", Таб);
Запрос.УстановитьПараметр("МассивНоменклатура",МассивНоменклатура);

Запрос.Текст = "ВЫБРАТЬ
| ВтТовары.Номенклатура,
| ВТТовары.Количество
|ПОМЕСТИТЬ
| ВТТовары
|ИЗ
| &ВтТовары
|;
|///////////////////////////////////////////
|ВЫБРАТЬ
| ТоварыДокПроверка.Ссылка КАК ДокПроверка,
| ТоварыДокПроверка.Номенклатура,
| СУММА(ТоварыДокПроверка.Количество) КАК Количество
|ПОМЕСТИТЬ
| ВТТоварыПроверка
|ИЗ
| Документ.Процесс.Товары КАК ТоварыДокПроверка
|ГДЕ
| ТоварыДокПроверка.Ссылка.Проведен
| И ТоварыДокПроверка.Ссылка МЕЖДУ &ДатаОт И &ДатаПо
| И ТоварыДокПроверка.Номенклатура В (&МассивНоменклатура)
|СГРУППИРОВАТЬ ПО
| ДокПроверка,
| Номенклатура
|;
|///////////////////////////////////////////
|ВЫБРАТЬ
| ВТТовары.Номенклатура,
| ВТТовары.Количество,
| ВТТоварыПроверка.ДокПроверка КАК ДокПроверка,
| ВТТоварыПроверка.Количество КАК КоличествоПроверка
|ИЗ
| ВтТовары КАК ВТТовары
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТоварыПроверка КАК ВТТоварыПроверка
|ПО
| ВтТовары.Номенклатура = ВТТоварыПроверка.Номенклатура";



 

Afinogen

в третьем пакете у вас для каждой номенклатуры будет ее количество указанной в обрабатываемом документе плюс все документы с и количеством
хотите бегайте по результату циклом хотите условие расширьте в третьем пакете

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск