|
Исключение в подборе уже использованных записей в документе | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
11.08.22
✎
09:03
|
В документе, используется подбор. Задача в том что бы этом подборе не выводились записи, уже выбранные в существующих документах.
Как правильно сделать исключение этих записей из подбора? |
|||
1
6awkup_true
11.08.22
✎
09:06
|
редактированием запроса дин списка
|
|||
2
6awkup_true
11.08.22
✎
09:11
|
помещаешь в вт всю номенклатуру, участвующую в проведенных документов. цепляешь вт к справочнику номенклатуры левым соединением. в условиях запроса пишешь условие ВТ_НоменклатураДокументов.Номенклатура есть null
|
|||
3
6awkup_true
11.08.22
✎
09:18
|
либо собираешь номенклатуру перед открытием формы выбора и при начале выбора пишешь следующее
НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных; ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = МассивСсылокНаИсключаемуюНоменклатуру; ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки); ПараметрыФормы.Вставить("РежимВыбора",Истина); ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ОткрытьФорму(... |
|||
4
NIGHTHUNTER
11.08.22
✎
09:30
|
(1) Вообще в обработку подбора, данные выбираются таким запросом.
Запрос.Текст ="ВЫБРАТЬ | Остатки.ЗаказКлиента КАК ЗаказКлиента, | Остатки.ЗаказНаПроизводство КАК ЗаказНаПроизводство, | Остатки.ЭтапПроизводства КАК ЭтапПроизводства, | Остатки.Номенклатура КАК Номенклатура, | Остатки.Характеристика КАК Характеристика, | Остатки.КоличествоПоЗаявкеМенеджераОстаток КАК Количество, | Остатки.ХХХ_УИД КАК ХХХ_УИД, | ЛОЖЬ КАК СтрокаВыбрана |ПОМЕСТИТЬ ВТ_Остатки |ИЗ | РегистрНакопления.ХХХ_ЗаказыПоставщикамПоЭтапамПроизводства.Остатки(&Дата1, ) КАК Остатки |ГДЕ | Остатки.КоличествоПоЗаявкеМенеджераОстаток > 0 | @заказ@ @ЭтапПроизводства@ @ЗаказНаПроизводство@ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Остатки.ЗаказКлиента КАК ЗаказКлиента, | ВТ_Остатки.ЗаказНаПроизводство КАК ЗаказНаПроизводство, | ВТ_Остатки.ЭтапПроизводства КАК ЭтапПроизводства, | ВТ_Остатки.Номенклатура КАК Номенклатура, | ВТ_Остатки.Характеристика КАК Характеристика, | ВТ_Остатки.Количество КАК Количество, | ВТ_Остатки.ХХХ_УИД КАК ХХХ_УИД, | ВТ_Остатки.СтрокаВыбрана КАК СтрокаВыбрана, | а.ХХХ_СформировалПотребность КАК ХХХ_СформировалПотребность, | а.ХХХ_ОтветственныйНаУчастке КАК ХХХ_ОтветственныйНаУчастке, | а.ХХХ_НомерДобавления КАК ХХХ_НомерДобавления, | а.ХХХ_НарядЗадание КАК ХХХ_НарядЗадание, | а.ПрименениеМатериала КАК ПрименениеМатериала, | а.ХХХ_КлассБезопасности КАК ХХХ_КлассБезопасности |ИЗ | ВТ_Остатки КАК ВТ_Остатки | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭтапПроизводства2_2.ОбеспечениеМатериаламиИРаботами КАК а | ПО ВТ_Остатки.ЭтапПроизводства = а.Ссылка | И ВТ_Остатки.Номенклатура = а.Номенклатура | И ВТ_Остатки.Характеристика = а.Характеристика | И ВТ_Остатки.ХХХ_УИД = а.ХХХ_УИД |ГДЕ Истина @СформировалПотребность@ @ОтветственныйНаУчастке@ @НомерДобавления@ | @НомерНарядЗадания@"; (3) как его правильно доработать, что бы исключить из него записи что уже учавствуют в документах? |
|||
5
yopQua
11.08.22
✎
09:35
|
Ванга : ТС 0-1
|
|||
6
NIGHTHUNTER
11.08.22
✎
09:39
|
Записи видимо нужно исключать из первого пакетного запроса.
Подбираются они в документ ЗаявкаМенеджера. Как будет правильно сделать? |
|||
7
yopQua
11.08.22
✎
09:40
|
а что это за собачки, там.. в текстах запроса? это так параметры сейчас задаются?
видимо Регистр Не в (Выбрать Из Документ) |
|||
8
Kassern
11.08.22
✎
09:42
|
(7) вангую, сабачками куски текста запроса выделяются, чтобы потом производить замену текста. Получается динамические условия в запросе.
|
|||
9
NIGHTHUNTER
11.08.22
✎
09:42
|
(3) Видите тут несколько иначе.
В подбор записи помещаются строкой, - Объект.СписокСтрок.Загрузить(ВыборкаДетальныеЗаписи); Как правильно исключить записи подбора, уже внесенные в документы ЗаказМенеджера, из первого пакетного запроса (4) . |
|||
10
NIGHTHUNTER
11.08.22
✎
09:43
|
(8) Я думал собачками и смайликами выделялись, так как делал это маньяк.
|
|||
11
yopQua
11.08.22
✎
09:43
|
(8) Ну мб мб
|
|||
12
NIGHTHUNTER
11.08.22
✎
09:44
|
(8) Там потом такие условия
Запрос.УстановитьПараметр("Дата1", КонецДня(ТекущаяДата())); Если ЗначениеЗаполнено(Этаформа.ЗаказКлиента) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@заказ@"," и Остатки.ЗаказКлиента=&ЗаказКлиента"); Запрос.УстановитьПараметр("ЗаказКлиента", Этаформа.ЗаказКлиента); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@заказ@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.НомерНарядЗадания) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@НомерНарядЗадания@"," и а.ХХХ_НарядЗадание.Номер ПОДОБНО &НомерНарядЗадания"); Запрос.УстановитьПараметр("НомерНарядЗадания", "%" + Этаформа.НомерНарядЗадания + "%"); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@НомерНарядЗадания@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.ЭтапПроизводства) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ЭтапПроизводства@"," и Остатки.ЭтапПроизводства=&ЭтапПроизводства"); Запрос.УстановитьПараметр("ЭтапПроизводства", Этаформа.ЭтапПроизводства); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ЭтапПроизводства@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.ЗаказНаПроизводство) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ЗаказНаПроизводство@"," и Остатки.ЗаказНаПроизводство=&ЗаказНаПроизводство"); Запрос.УстановитьПараметр("ЗаказНаПроизводство", Этаформа.ЗаказНаПроизводство); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ЗаказНаПроизводство@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.ОтветственныйНаУчастке) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ОтветственныйНаУчастке@"," и а.ХХХ_ОтветственныйНаУчастке=&ОтветственныйНаУчастке"); Запрос.УстановитьПараметр("ОтветственныйНаУчастке", Этаформа.ОтветственныйНаУчастке); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@ОтветственныйНаУчастке@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.СформировалПотребность) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@СформировалПотребность@"," и а.ХХХ_СформировалПотребность=&СформировалПотребность"); Запрос.УстановитьПараметр("СформировалПотребность", Этаформа.СформировалПотребность); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@СформировалПотребность@",""); КонецЕсли; Если ЗначениеЗаполнено(Этаформа.НомерДобавления) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст,"@НомерДобавления@"," и а.ХХХ_НомерДобавления=&НомерДобавления"); Запрос.УстановитьПараметр("НомерДобавления", Этаформа.НомерДобавления); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст,"@НомерДобавления@",""); КонецЕсли; но сабачки и смайлики, тут не уместны!!!! |
|||
13
NIGHTHUNTER
11.08.22
✎
09:46
|
Подскажите пожалуйста, как исключить из запроса (4), записи, уже введенные в документы ЗаказМенеджера .
|
|||
14
NIGHTHUNTER
11.08.22
✎
10:01
|
поделитесь технологией?????
|
|||
15
NIGHTHUNTER
11.08.22
✎
10:01
|
Вот такой текст запроса, я извлек, перед (9)
ВЫБРАТЬ Остатки.ЗаказКлиента КАК ЗаказКлиента, Остатки.ЗаказНаПроизводство КАК ЗаказНаПроизводство, Остатки.ЭтапПроизводства КАК ЭтапПроизводства, Остатки.Номенклатура КАК Номенклатура, Остатки.Характеристика КАК Характеристика, Остатки.КоличествоПоЗаявкеМенеджераОстаток КАК Количество, Остатки.ХХХ_УИД КАК ХХХ_УИД, ЛОЖЬ КАК СтрокаВыбрана ПОМЕСТИТЬ ВТ_Остатки ИЗ РегистрНакопления.ХХХ_ЗаказыПоставщикамПоЭтапамПроизводства.Остатки(&Дата1, ) КАК Остатки ГДЕ Остатки.КоличествоПоЗаявкеМенеджераОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Остатки.ЗаказКлиента КАК ЗаказКлиента, ВТ_Остатки.ЗаказНаПроизводство КАК ЗаказНаПроизводство, ВТ_Остатки.ЭтапПроизводства КАК ЭтапПроизводства, ВТ_Остатки.Номенклатура КАК Номенклатура, ВТ_Остатки.Характеристика КАК Характеристика, ВТ_Остатки.Количество КАК Количество, ВТ_Остатки.ХХХ_УИД КАК ХХХ_УИД, ВТ_Остатки.СтрокаВыбрана КАК СтрокаВыбрана, а.ХХХ_СформировалПотребность КАК ХХХ_СформировалПотребность, а.ХХХ_ОтветственныйНаУчастке КАК ХХХ_ОтветственныйНаУчастке, а.ХХХ_НомерДобавления КАК ХХХ_НомерДобавления, а.ХХХ_НарядЗадание КАК ХХХ_НарядЗадание, а.ПрименениеМатериала КАК ПрименениеМатериала, а.ХХХ_КлассБезопасности КАК ХХХ_КлассБезопасности ИЗ ВТ_Остатки КАК ВТ_Остатки ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭтапПроизводства2_2.ОбеспечениеМатериаламиИРаботами КАК а ПО ВТ_Остатки.ЭтапПроизводства = а.Ссылка И ВТ_Остатки.Номенклатура = а.Номенклатура И ВТ_Остатки.Характеристика = а.Характеристика И ВТ_Остатки.ХХХ_УИД = а.ХХХ_УИД ГДЕ Истина |
|||
16
Kassern
11.08.22
✎
10:22
|
(14) да без проблем. Технология очень простая. Для того, чтобы в запросе из одной таблицы исключить записи имеющие строки в другой таблице, необходимо связать по ключевым полям данные таблицы и как вариант, сделать условие на нулл.
|
|||
17
yopQua
11.08.22
✎
10:27
|
я же написал уже технологию
а текст сами напишите |
|||
18
NIGHTHUNTER
11.08.22
✎
11:03
|
(16) (17) Ясно. Пока сменилась сама постановка. Что то не так в бизнесс процессе, а именно в данных.
|
|||
19
vicof
11.08.22
✎
13:05
|
(18) Скорей что-то не так в мозгах
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |