Имя: Пароль:
1C
1С v8
Исключить номенклатуру из выбора при вводе в табличной части
0 MAPATNK2
 
naïve
26.10.18
10:43
Всем доброго дня УПП 1.3.
У нас имеется номенклатура для обмена с сайтом, которая не должна фигурировать в документах. Методом отмены стандартной обработки и написания инструкции для фильтра при открытии списка выбора, я исключил необходимую номенклатуру из списка выбора в табличной части. Но некоторые пользователи начинают вводить в табличной части необходимый товар и получают запрещенную для использования номенклатуру в предложенных вариантах. Как в таком случае исключить номенклатуру? Где копать? Ужасно описал. Но прикрепляю картинку.
https://yadi.sk/i/rPvohgzJOgQZ3w
1 MAPATNK2
 
naïve
26.10.18
10:45
2 Остап Сулейманович
 
26.10.18
10:49
(0) Можно :
1. Не допускать выбора "неправильной" номенклатуры. У ТС не получилось.
2. Проверять выбранное значение уже после выбора и не пропускать в документ/обмен или куда там еще нужно.
3. Пропускать такие позиции уже непосредственно при обмене.
4. Любая произвольная комбинация всех троих предыдущих.
3 unregistered
 
26.10.18
10:54
У поля ввода есть событие АвтоПодбор. Копай туда.
АвтоПодбор(<Текст>, <ДанныеВыбора>, <ПараметрыПолученияДанных>, <Ожидание>, <СтандартнаяОбработка>)
Параметры:
<Текст> Тип: Строка.
Строка текста, введенная в поле ввода.
<ДанныеВыбора> Тип: СписокЗначений.
Содержит список значений, который будет использован при стандартной обработке события.
Список может содержать как конкретное значение, так и структуру, в которой может быть указана следующая информация (по именам ключей в структуре):
Значение (Value) - собственно значение;
ПометкаУдаления (DeletionMark) - пометка удаления;
Предупреждение (Warning) - текст предупреждения, которое будет показано при выборе элемента из списка значений.
Значение по умолчанию: Неопределено.
<ПараметрыПолученияДанных> Тип: Структура; Неопределено.
Содержит параметры поиска, которые будут переданы в метод ПолучитьДанныеВыбора.
Структура, в которой обязательно должны содержаться следующие ключи:
СтрокаПоиска (SearchString) - строка, используемая при поиске данных, Неопределено - осуществляется быстрый выбор;
Отбор (Filter) - отбор, используемый при поиске данных;
ВыборГруппИЭлементов (ChoiceFoldersAndItems) - указывается использование групп и элементов (только для иерархических данных); тип ИспользованиеГруппИЭлементов; параметр может отсутствовать;
СпособПоискаСтроки (StringSearchMode) - указывается способ поиска при вводе по строке; тип СпособПоискаСтрокиПриВводеПоСтроке; параметр может отсутствовать;
ПолнотекстовыйПоиск (FullTextSearch) - указывается необходимость использования полнотекстового поиска при вводе по строке; тип - ПолнотекстовыйПоискПриВводеПоСтроке; параметр может отсутствовать;
РежимПолученияДанныхВыбора (ChoiceDataGettingMode) - указывает режим запуска поиска. Тип РежимПолученияДанныхВыбораПриВводеПоСтроке; параметр может отсутствовать.
Неопределено - для мобильной платформы.
<Ожидание> Тип: Число.
Интервал в секундах после ввода текста, через который произошло событие. Если 0, то это означает, что событие было вызвано не по поводу ввода текста, а для формирования списка быстрого выбора.
<СтандартнаяОбработка> Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Параметр позволяет отменить стандартное заполнение системой ДанныеВыбора. При этом все действия (отображение списка, предупреждения) выполняются системой на основе возвращенного значения параметра <ДанныеВыбора> независимо от значения параметра <СтандартнаяОбработка>.
Значение по умолчанию: Истина.

Описание:
Возникает во время начала ожидания ввода текста (в процессе набора текста сделана пауза).
Также возникает при нажатии клавиши "Стрелка вниз" после ввода текста (или части текста).
Также возникает при активизации поля ввода, для которого выключен быстрый выбор, мышью. При этом значение параметров: <Текст> - пустая строка, <Ожидание> - число 0. Значение параметров в этом случае не зависит от текста в поле ввода.
При стандартной отработке события происходит поиск в порядке полей, определенном при конфигурировании в свойстве объекта метаданных "Ввод по строке".
Если найдено одно или более значений, то будет показан список с найденными значениями. Если значений найдено больше 50, то список показан не будет.
Примечание:
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
4 Повелитель
 
26.10.18
11:27
(0) мы ставим впереди префикс.
Для позиции, которые совсем не нужны "я_".
5 Повелитель
 
26.10.18
11:30
(4) я_подогреватель.
"я_", потому, что они если где-то в отчетах или еще где-то будут, то в конце.
6 MAPATNK2
 
naïve
26.10.18
12:01
(3) Тут получается, что мы сами будем прописывать алгоритм работы программы. А нам же необходимо используя стандартный алгоритм, исключить из вывода определенные строки с отдельным видом номенклатуры.
7 Остап Сулейманович
 
26.10.18
12:05
(6) "необходимо используя стандартный алгоритм"
В стандартном (э-э-э ???) алгоритме нет такой возможности. Придется самим. Печаль. Ну или не самим. Тогда за несколько денежок.
8 shadow_sw
 
26.10.18
12:06
если уж топорно - в табличную часть товары не подбираются услуги однако, вид товара = услуги
9 MAPATNK2
 
naïve
26.10.18
12:17
(8) Номенклатура будет с разными видмами нмоенклатуры и товары и услуги
10 MAPATNK2
 
naïve
26.10.18
12:18
(7) Я имею ввиду такой порядок действий. получив список значений от стандартной обработки, исключить из него номенклатурные позиции с видом номенклатуры - не используемые.
11 unregistered
 
26.10.18
12:18
(6) > мы сами будем прописывать алгоритм работы программы

А в (0), простите, что написано? Или не Вы это писали?
Каким, по-вашему, должен быть стандартный алгоритм программы, чтобы удовлетворить той ереси, которая описана в (0)?
За любые проектные решения (даже самые светлые и прекрасные) надо расплачиваться. У вас в организации кто-то принял решение вкорячить в справочник некие позиции, которых в справочнике быть не должно. А теперь вы интересуетесь как же так всех нае*ать, чтобы то, что вы вкорячили, нигде не вылезало.

PS Ни в коем разе не оспариваю корректность и правильность принятого решение по вкорячиванию в справочник неиспользуемой номенклатуры.
12 unregistered
 
26.10.18
12:19
(10) > исключить из него номенклатурные позиции с видом номенклатуры - не используемые.

А есть такой типовой вид номенклатуры?
13 MAPATNK2
 
naïve
26.10.18
12:19
(7) А в предложенном выше методе минус в том, что ты сам прописываешь алгоритм действия "Автоподбор"
https://its.1c.ru/db/metod8dev#content:2207:hdoc
14 MAPATNK2
 
naïve
26.10.18
12:19
(12) Типового нет. Создали.
15 MAPATNK2
 
naïve
26.10.18
12:22
(11) перечитайте (6) , никто не собирался сам прописывать алгоритм.
16 MAPATNK2
 
naïve
26.10.18
12:23
А вариант с использованием (3) хорош. Вот только получить бы уже отработанный стандартной обработкой список значений, чтобы просто внести в них изменение, исключил определенную номенклатуру.
17 Фрэнки
 
26.10.18
12:27
(16) а ведь самый очевидный способ - запретить свойство в этой колонке, которым как раз разрешается пользоваться автоподбором и все. Это на тот период времени, пока не будет доработана процедура на это событие
18 unregistered
 
26.10.18
12:28
(14) > Создали

Ну вот и ответ на ваш вопрос.
В типовой конфигурации обрабатывается автоподбор для полей номенклатуры. В табличной части Услуги обработка ставит отбор на вид номенклатуры "Услуги", в табличной части Товары - на вид номенклатуры не равно "Услуги".

Вы создали свой вид номенклатуры. Вот и обрабатывайте своими собственными алгоритмами. Откуда типовой механизм узнает о существовании НЕтиповых видов номенклатуры?
19 MAPATNK2
 
naïve
26.10.18
12:29
(17) Запрет на ввод текста хорошая идея, но будет столько блюватни от пользователей, что лучше нормально допилить алгоритм.
20 unregistered
 
26.10.18
12:31
(17) > ...запретить ... пользоваться автоподбором и все

СУПЕР! Правильно! Сделали что-то через *опу, а теперь надо и всех вокруг заставить работать через *опу! Для единообразия! Чтобы никто не подумал, что это у разработчиков руки не из плеч растут, а были уверены, что там вся контора такая.
21 MAPATNK2
 
naïve
26.10.18
12:31
(18) Доброго вечера друг. речиь идет о виде номенклатуры,а не о типе номенклатуры. Мы создали ВИИИИИИД НОМЕНКЛАТУРЫ , а тип - товары
22 MAPATNK2
 
naïve
26.10.18
12:32
(20) Делал через жопу не я. производство насоздавало много левой номенклатуры, которую захотели выгружать на сайт как совместимые запчасти с продаваемыми нами товарами
23 MAPATNK2
 
naïve
26.10.18
12:33
вопрос не в том, что нельзя так делать. А как исключить из автоподбора текста нмоенклатуру с опредеелнным видом)
24 unregistered
 
26.10.18
12:33
(6) > нам же необходимо используя стандартный алгоритм

Об этом надо было думать, когда вы создавали свой вид номенклатуры. Но видимо не посчитали нужным так сильно напрягаться...
25 unregistered
 
26.10.18
12:37
(21) > Доброго вечера друг
У нас не вечер, во-первых. А во-вторых, посмотрите на проблему ну хоть чуть-чуть пошире.

Как меняет суть проблемы то, что вы напридумывали не вид а тип (или наоборот)?
Вы создали некий объект (назовите хоть "вид", хоть "тип", хоть "свойство"), на основе которого должна работать некая логика отборов на формах выбора и подбора.
Внимание вопрос! Как типовая конфигурация должна догадаться о существовании этого нового объекта конфигурации и научиться им пользоваться?
26 unregistered
 
26.10.18
12:40
(22) > Делал через жопу не я

Я Вас и не обвиняю. Не надо принимать на свой счет!
Под местоимение "вы" я подразумевал команду разработчиков и методистов, которые это придумали. В том числе тех, которые работали, возможно, задолго до вас.
27 MAPATNK2
 
naïve
26.10.18
12:42
(25) Типовая конфигурация не должа догадываться о существовании данного вида номенклатуры. мне необходимо получить готовый список элементов из типовой конфигурации. пример: Я ввожу "Оснастка", автоподборТекста срабатывает, и передает список значений с этими данными. Я уже исключаю из него номенклатурные позиции с видом "не используемые. КОнец"
28 Фрэнки
 
26.10.18
12:59
между прочим, хотя в ERP в обработке Подбора Номенклатуры сделан фильтр по Виду, но если набирать текст при автоподборе, то все равно можно выбрать номенклатуру вообще любого вида, лишь бы текст был корректным.
29 MAPATNK2
 
naïve
26.10.18
13:02
(28) Заметил, что в УПП так же. Ну ладно, что ж поделать. Будем выводить ошибку при изменении номенклатуры.
30 Фрэнки
 
26.10.18
13:11
(29) мне сейчас кажется, что когда-то я даже очищал выбранную Номенклатуру, если она была "ошибочная" в обработке процедуры ПриИзменении. А еще согласовывал алгоритм поиска и ПриИзменении, если выбранная Номенклатура ошибочная - искал ее подобия из всех сил и выводил на выбор пользователя СписокЗначений, где были только разрешенные.

Т.е. сразу пользователь завершал свой выбор, а если его выбор оказывался некорректным, то ему выводился еще раз список на выбор, с уже корректными значениями.
31 catena
 
26.10.18
13:16
(3)Хм, прикольно. Если заполнить отбор в ПараметрыПолученияДанных, то действительно при подборе и при стрелке вниз выходит список, соответствующий отбору. Но стоит при недовведенном тексте щелкнуть мышой в произвольном месте формы пару раз, процедура не отрабатывает и выходит полный список. 8.3.10.2580
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс