Имя: Пароль:
1C
1С v8
Недоступна кнопка "Показать все"
0 Обизян
 
14.07.25
12:26
Доброго дня. 1С 8.3.27 УФ.
На форме есть ТЧ, в которой колонка «Документ», я сделал так, чтобы при нажатии на нее в списке подставлялись нужные документы из запроса, но хотелось бы, чтобы можно было провалиться в журнал и выбрать любой документ, но почему-то кнопка недоступна, при нажатии ничего не происходит.
Вот процедуры, которые использую.

&НаКлиенте
Процедура ТаблицаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)

	СтандартнаяОбработка = ложь;
	НоменклатураОтбора = ЭтаФорма.Элементы.Таблица.ТекущиеДанные.Номенклатура;
	Документы = ВернутьСписокДокументовПоНоменклатуре(НоменклатураОтбора);
	ДанныеВыбора = ДокументыПроценка;
КонецПроцедуры  

&НаКлиенте
Процедура ТаблицаОбработкаВыбора(Элемент, ВыбранноеЗначение, ДополнительныеДанные, ВыборДобавлением, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ЭтаФорма.Элементы.ТаблицаExcel.ТекущиеДанные.Документ = ВыбранноеЗначение;
	Shell= Новый COMОбъект("Wscript.Shell");
	Shell.SendKeys("{ENTER}");  
	
КонецПроцедуры


на форме колонки стоит режим выбора из списка, быстрый выбор - да, кнопка выбора - да, кнопка создания -нет
1 craxx
 
14.07.25
11:36
(0)Это зачем??
Shell= Новый COMОбъект("Wscript.Shell");
    Shell.SendKeys("{ENTER}");  
2 Обизян
 
14.07.25
11:38
(1) без этого не срабатывает, если закоментить, то все равно не дает открыть список документов. по сути я обе процедуры коментил, возможно упускаю где-то настройку на форме какую
3 craxx
 
14.07.25
11:41
(2) а каким образом он должен выбрать эти документы? где вызов формы выбора какой бы то ни было?
4 Обизян
 
14.07.25
11:43
а, понял СтандартнаяОбработка = ложь у меня же
5 craxx
 
14.07.25
11:43
(4) да даже если Истина будет, это мало что поменяет. Где вызов формы выбора документов?
6 Fish
 
гуру
14.07.25
11:44
(0) Код сгенерирован при помощи ИИ? Или ты сам такое придумал?
7 Обизян
 
14.07.25
11:45
(6) Сам, а что не так с ним?
8 Fish
 
гуру
14.07.25
11:45
(7) Ответь на (3) и (5). Всё не так.
9 Обизян
 
14.07.25
11:50
(5) Ну если ничего не менять, он же автоматом вызывает форму выбора, думал что и в таком случае раз кнопка Показать все висит, будет отрабатывать
10 Обизян
 
14.07.25
11:48
Вообще задача изначально в том, чтобы вывести документы с нужным отбором, теперь просто просят таки дать возможность выбора в том числе
11 Обизян
 
14.07.25
11:49
(8) Буду признателен, если подскажешь как правильно сделать
12 Fish
 
гуру
14.07.25
11:56
(11) Сформулируй внятно задачу. А то у тебя какая-то каша из "вывести документы с нужным отбором", " дать возможность выбора ".

Ты пытаешься реализовать выбор в поле ТЧ с неким отбором?
Так на том же ИС примеров полно.
13 Обизян
 
14.07.25
11:58
(12) да, в поле ТЧ при выборе необходимо показать только те документы, которые в которых есть нужная номенклатура в нужном количестве, но и так же дать возможность выбрать любой документ
14 Fish
 
гуру
14.07.25
11:59
(13) Искал поиском в яндексе? На ИС и не только полно примеров того, что тебе нужно. Примеров прямо с кодом.
15 Обизян
 
14.07.25
12:59
(14) может хреново сформулировал запрос, но что-то не могу внятного-понятного найти
16 Fish
 
гуру
14.07.25
12:01
+(14) Вот пример с ИТСа:
https://its.1c.ru/db/metod8dev/content/3557/hdoc
17 Обизян
 
14.07.25
12:02
Проблема еще в том, что у документа нет формы выбора, только форма списка
18 Обизян
 
14.07.25
12:03
и когда форма открывается, по клику он просто открывает документ, а не закрывает форму
19 Обизян
 
14.07.25
12:04
может в самой обработке сделать форму динамического списка
20 Fish
 
гуру
14.07.25
12:04
(17) И в чём тут проблема? Если нет формы выбора, то она будет сгенерирована платформой.
21 maxab72
 
14.07.25
12:05
(17) открывай форму списка в режиме выбора. не запрещено.
22 Fish
 
гуру
14.07.25
12:05
(19) Мне кажется, ты бредишь.
23 Обизян
 
14.07.25
12:06
(21) ставлю режим выбора, все равно просто открывает документ
24 maxab72
 
14.07.25
12:06
(22) интересно, а автор читал что-нибудь типа Хрусталевой?
25 Обизян
 
14.07.25
12:07
вот так делаю

Процедура ТаблицаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    

    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

    ОткрытьФорму("Документ.Реализация.ФормаСписка",ПараметрыФормы,
            ЭтаФорма, , , , ОбработкаВыбора);    
    
КонецПроцедуры
26 maxab72
 
14.07.25
12:11
(25) а что тут ПриЗакрытииФормыВыбора
27 Обизян
 
14.07.25
12:14
(26)
&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Результат, параметры) Экспорт  
    р = Результат;
КонецПроцедуры

дело в том, что форма при клике просто открывает документ, т.е. работает не как форма выбора, а как простая форма списка, если через крестик закрываю ее, то попадаю в процедуру ПриЗакрытииФормыВыбора, где результат пустой
28 Fish
 
гуру
14.07.25
12:18
(25) Ты хоть погугли:

"Нужно заметить, что у таблицы управляемой формы имеется свойство РежимВыбора. Изменение этого свойства в конфигураторе, в палитре свойств, позволяет превратить форму списка в форму выбора, и наоборот.

Однако попытка изменить это свойство из встроенного языка в режиме 1С:Предприятие (см. пример ниже) ни к чему не приведет. Если была получена форма списка, будет открыта форма списка. И наоборот."
https://its.1c.ru/db/metod8dev/content/3575/hdoc
29 Обизян
 
14.07.25
12:21
(28) дык я же и говорю, что нет формы выбора, как лучше тогда реализовать выбор?
30 Fish
 
гуру
14.07.25
12:22
(29) См. (20)
31 Fish
 
гуру
14.07.25
12:22
+(30) Или сделай уже форму выбора. Приложи усилие.
32 Обизян
 
14.07.25
12:24
(31) да тут заморочки по поводу изменения конфы, но пофиг, так и сделаю
Спасибо за помощь
33 Fish
 
гуру
14.07.25
12:29
(32) Можно и без создания. Но тогда команду отключения фильтра на форме выбора придётся создавать программно.
Создать форму будет намного проще.
34 craxx
 
14.07.25
12:34
(29) в саму форму списка при вызове ОткрытьФорму() можно передать параметры, что она используется в качестве формы выбора, дальше при событии Выбор, вызываешь ОповеститьОВыборе() ну и т.п. обрабатываешь, а там можешь ее закрыть программно, можешь не закрывать, выбор сработает
35 maxab72
 
14.07.25
12:34
(26) пример https://infostart.ru/1c/articles/549160/ работает.
36 Fish
 
гуру
14.07.25
12:44
(35) Да, но сама 1С рекомендует таки разные формы:
"С точки зрения методологии работы с платформой в управляемых формах рекомендуется в качестве формы выбора и формы списка использовать разные формы.
...
Изменение внешнего вида управляемой формы в режиме исполнения влечет за собой обращение к серверу и кроме этого может приводить к отключению кэширования такой формы, что отрицательно сказывается на производительности."
https://its.1c.ru/db/metod8dev/content/3575/hdoc
37 maxab72
 
14.07.25
12:47
(36) ага, если в типовой у какого-то документа или справочника нет формы выбора, это означает, что его и так открывают раз в пятилетку на еврейскую масленицу. и потеря кэширование это минимальная из возможных проблем.
38 Fish
 
гуру
14.07.25
12:54
(37) Если нет формы выбора, то она будет сгенерирована автоматически. Но это не значит, что нужно указывать формой выбора форму списка.
39 Обизян
 
14.07.25
13:00
хм, передаю номера документов для отбора в форму выбора, все круто, только их и выводит, но отменить отбор на форме не получается(
40 maxab72
 
14.07.25
13:01
(38) иногда надо, например если в таблице есть рассчитываемая колонка с интересными значениями. В автосгенерированной такой колонки не будет.
41 Обизян
 
14.07.25
13:28
вот так работает:
        ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Форма.Список.КомпоновщикНастроек.Настройки.Отбор, "Номер",
        СтрСтрукт.Значение, ВидСравненияКомпоновкиДанных.Равно, ,Истина,
        РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ, Новый УникальныйИдентификатор);

но таким образом я могу сделать отбор только по одному номеру документа, не пойму как сделать так, чтобы он мне несколько документов показывал , если это вообще возможно
42 maxab72
 
14.07.25
13:30
ВидСравненияКомпоновкиДанных.Равно поменяй на ВидСравненияКомпоновкиДанных.ВСписке
43 Обизян
 
14.07.25
13:32
(42) Лучший!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс