Имя: Пароль:
1C
1C 7.7
v7: Найти по реквизиту
,
0 BLP
 
20.11.11
19:43
Есть документ с большой табличной частью...
В таблицу вводятся, например, Товар с одним из реквизитов "А".
Нужно...
При вводе очередного Товара, чтобы таблица проверялась на наличие других товаров (хотя бы еще одного) с таким же реквизитом "А"... И чтобы при этом выдавалось сообщение или что-то подобное...
Как вывести сообщение и т.д. это не проблема, я не могу понять как сделать саму проверку на наличие искомого...
Подскажите, плиз.
Спасибо. ))
1 zak555
 
20.11.11
19:44
Абажар1
Абажар2
и т.д. ?
2 Rie
 
20.11.11
19:47
(0) Циклом по табличной части пробегись.
Или если работаешь с 1С++ - поддерживай копию табличной части в ИндексированнаяТаблица.
3 BLP
 
20.11.11
19:54
Нееееее, с 1с+++ не работаю.  ))
ЧТо-то я намудрил в своем вопросе...
Чуть перефразирую...
Например, есть документ с табличной частью в 300 наименований...
Добавляю новую строку, как сделать чтобы сообщалось, если вдруг уже есть строка с вводимым новым элементом. ))
4 Rie
 
20.11.11
19:55
(3) Циклом бежишь по табличной части и смотришь - а нет ли уже строки с таким элементов.
5 Mikeware
 
модератор
20.11.11
19:57
+(4) Или выгрузить - найти....
6 BLP
 
20.11.11
19:58
Типа...

Процедура ПриВводеСТроки()

блаблабла.....

Пока ПолучитьСТроку() Цикл
.....
КонецЦикла

КонецПроцедуры

Так?

А цикл через СоздатьОбъект?
7 Lexxxxx
 
20.11.11
19:59
см. ПриНачалеВыбораЗначения()
8 Lexxxxx
 
20.11.11
20:00
(6)Так у него еще выбранного значения не будет.
9 Lexxxxx
 
20.11.11
20:02
А еще лучше ОбработкаВыбораЗначения()
10 Rie
 
20.11.11
20:05
(6) ПриВводеСтроки - рано.
ПриОкончанииРедактирования, а если реквизит - агрегатного типа, то ОбработкаВыбораЗначения.
11 BLP
 
20.11.11
20:20
Неееее... ниче не получается.... уже совсем запутался... ночувствую, что вокруг да около, но все никак...
12 Lexxxxx
 
20.11.11
20:28
(11) На что там никак?!


ОбработкаВыбораЗначения
Предопределенная процедура обработки выбора значения.

Синтаксис:

ОбработкаВыбораЗначения(<Вы6Знач>, <ИдентЭлемДиалога>, <ФлагСтандОбр>)

Англоязычный синоним:

ProcessPermanentChoice

Параметры:

<ВыбЗнач>
Выбранный элемент справочника, документ или иной объект, передаваемый для обработ­ки.

<ИдентЭлемДиалога>
Идентификатор элемента диалога, которым инициализирован выбор значения.

<ФлагСтандОбр>
Флаг, установка которого в теле процедуры в 0 (ноль) приведет к отмене стандартного при­своения значения.


Описание:

Вызов предопределенной процедуры ОбработкаВыбораЗначения произ­водится в системе 1С:Предприятие неявно, после выбора значения в форм6 выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с кнопкой выбора). В момент выбора система автоматически подставляет фактическое значение параметра <Вы6Знач>.

Формальный параметр <ВыбЗнач> используется в теле процедуры для приема и обработки передаваемого системой выбранного значения.

Данная предопределенная процедура может располагаться только в про­граммном модуле формы.

Пример:

Процедура ОбработкаВыбораЗначения(Знач, Идент, Флаг)

  ...

КонецПроцедуры
13 BLP
 
21.11.11
01:17
Так ниче и не получилось... (((
14 BLP
 
21.11.11
01:50
Ну, короче, сделал... с горем пополам... совсем не так, как предлагали выше... как-то из Москвы в Париж через Китай... аж самому страшно...
Вроде бы эффект достигнут....
15 Balabass
 
21.11.11
03:46
Можно в тз писать параллельно с добавлением в тч, и искать в тз по наименованию.
16 Escander
 
21.11.11
05:36
(14) можно прямо тупо:
повесить на столбец в котором ключевое поле вызов процедуры ну пусть КонтрольДублей()

Процедура КонтрольДублей()
   ЗапНомерСтроки=НомерСтроки;
       Ключь=Поле1;
        фф_стр=ЗапНомерСтроки;
       ВыбратьСтроки();      
       Пока ПолучитьСтроку()=1 Цикл
           Если НомерСтроки<>ЗапНомерСтроки Тогда      
               Если (Поле1=КЛЮЧь) Тогда  
                    фф_стр=НомерСтроки;
               КонецЕсли;    
           КонецЕсли;    
       КонецЦикла;    
       
        Если фф_стр<>ЗапНомерСтроки Тогда
        Дубль=1;
       Если фф_стр>ЗапНомерСтроки Тогда
           фф_стр=фф_стр-1;
       КонецЕсли;
            ПолучитьСтрокуПоНомеру(ЗапНомерСтроки);
      Предупреждение("В этом документе уже есть строка с таким ключом (строка № "+СокрЛП(Строка(фф_Стр))+").");
                  //ну и ещё чего сделать можно, например удалить эту строку
        КонецЕсли;    
       ПолучитьСтрокуПоНомеру(фф_стр);
КонецПроцедуры
17 zak555
 
21.11.11
10:01
дубли ненужны в ТЧ ?
18 shegy
 
21.11.11
13:32
А чем реально не нравится метод ВыгрузитьТаблЧасть(ТЗ), а далее
Если ТЗ.НайтиЗначение(ВыбЗна,СтрТЗ,"Номенлатура")= 1 Тогда
Сообщить("Данный товар уже есть в документе строка " + СтрТЗ + ""). Все это сделать в процедуре ОбработкаВыбораЗначения()
19 aka AMIGO
 
21.11.11
13:35
(18) так слишком просто..
20 shegy
 
21.11.11
13:41
(19) эээ, в смысле?