Z1 писал(а) 07. Сентября 2010 :: 08:16:AgenTSiD писал(а) 07. Сентября 2010 :: 07:27:У меня 1С7.7 Типовая конфигурация "Торговля+Склад" ред 9.2 (dbf)
Реквизиты:
1- НомерПоКаталогу (Строк)
2- Диаметр1 (Строк)
3- Диаметр2 (Строк)
4- Давление (Строк)
5- Длина1 (Строк)
6- Длина2 (Строк)
Поиск от отбора ничем для меня не отличается.
Спасибо!
непонятно почему Числовые реквизиты Диаметр, Длина ты хранишь в строках. ПО моему это ошибка в логике.
решение без 1сpp :
на форме 6 твоих реквизитов ( а не 64 )
по заполненым реквизитам отбираешь подходящие элементы и помещаешь их в списокзначений.
отображаешь только элементы из списказначений с помощью
ИспользоватьСписокЭлементов(ТвойСписок);
решение с 1сpp :
на форме 6 твоих реквизитов ( а не 64 )
справочник отображаем с помощью ТП или ПоставщикДанных (
и уже именно они по заданым тобой фильтрам отбирают подходящие значения )
Храню в строк типе потому что это было необходимо для реализации предыдущего метода отбора.
Процедура Отбор()
Если (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
Предупреждение("Не задан ни один критерий отбора");
//-=A=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("НомерПоКаталогу",oA);
//-=B=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=0) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("Диаметр1",oB);
//-=С=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=0) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("Диаметр2",oC);
//-=D=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("Давление",oD);
//-=E=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("Длина1",oD);
//-=F=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
УстановитьОтбор("Длина2",oF);
//-=AB=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=0) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
оAB=СокрЛП(oA)+СокрЛП(oB);
УстановитьОтбор("AB",оAB);
//-=AС=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=0) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
оAС=СокрЛП(oA)+СокрЛП(oC);
УстановитьОтбор("AС",оAС);
//-=AD=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
оAD=СокрЛП(oA)+СокрЛП(oD);
УстановитьОтбор("AD",оAD);
//-=AE=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=0)и (ПустоеЗначение(oF)=1) Тогда
оAE=СокрЛП(oA)+СокрЛП(oE);
УстановитьОтбор("AD",оAE);
//-=AF=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=1) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=0) Тогда
оAF=СокрЛП(oA)+СокрЛП(oF);
УстановитьОтбор("AF",оAF);
//-=BС=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=0) и (ПустоеЗначение(oC)=0) и (ПустоеЗначение(oD)=1)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
оBС=СокрЛП(oB)+СокрЛП(oC);
УстановитьОтбор("BС",оBС);
//-=BD=-
ИначеЕсли (ПустоеЗначение(oA)=1) и (ПустоеЗначение(oB)=0) и (ПустоеЗначение(oC)=1) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=1)и (ПустоеЗначение(oF)=1) Тогда
оBD=СокрЛП(oB)+СокрЛП(oD);
УстановитьОтбор("BD",оBD);
........
//-=ABCDEF=-
ИначеЕсли (ПустоеЗначение(oA)=0) и (ПустоеЗначение(oB)=0) и (ПустоеЗначение(oC)=0) и (ПустоеЗначение(oD)=0)и (ПустоеЗначение(oE)=0)и (ПустоеЗначение(oF)=0) Тогда
оABCDEF=СокрЛП(oA)+СокрЛП(oB)+СокрЛП(oC)+СокрЛП(oD)+СокрЛП(oE)+СокрЛП(oF);
УстановитьОтбор("ABCDEF",оABCDEF);
КонецЕсли;
ABCDEF- записывалось при создании нового Товара, а также при изменении текущего.
На форме небыло 64 реквизита. бало как вы предлагаете 6.