|
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) эээ, в смысле?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |