Имя: Пароль:
1C
1С v8
Подбор групп товаров в ТЗ внешней обработки
0 MWWRuza
 
гуру
27.07.22
17:39
Добрый день!
Подскажите "застарелому семерошнику", можно ли в форму некой внешней обработки, организовать подбор из справочника групп? Без изменения самой конфы(типовая базовая) - ?
Подскажите, лучше с примером, если такое вообще возможно..
Скриншот задачи:
https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-454.jpg
Нет, я понимаю, как это можно сделать, создав или изменив открываемую форму справочника. Но, менять конфу нельзя...
1 Галахад
 
гуру
27.07.22
17:48
А что не получается?
2 Михаил Козлов
 
27.07.22
17:51
Наверное, группу не удается выбрать.
3 Михаил Козлов
 
27.07.22
17:52
Можно попробовать в типовой обработке Групповое изменение справочников и документов подглядеть, как выбирается группа в условиях отбора.
4 Мультук
 
гуру
27.07.22
18:32
5 Мультук
 
гуру
27.07.22
18:34
(0)

Продолжение статьи

https://infostart.ru/1c/articles/1233756/

Была другая очень красивая статья. но, увы, не могу её найти.
6 MWWRuza
 
гуру
27.07.22
18:49
Спасибо, изучаю... Наворочено очень... Думал, как-то проще можно реализовать.
7 Мультук
 
гуру
27.07.22
20:08
(0)

Что тут сложного ?
Вот пример.

В обработке есть некая таблица значений "Проекты", в ней колонка "Проект".
Необходимо добавить кнопку "Подбор"

1) Добавляем кнопку -- пишем код при её нажатии "КоманднаяПанель2ДействиеПодборПроекта"
2) В таблице значений ловим событие "ОбработкаВыбора", кликаем в в свойствах, создается обрабочик, пишем код
3) Занимаемся отладкой.


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

Процедура ПроектыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    НоваяСтрока = Проекты.Добавить();
    НоваяСтрока.Проект = ВыбранноеЗначение;

КонецПроцедуры
8 MWWRuza
 
гуру
27.07.22
21:51
Хм... Может и не сложно, но мне пока не понятно...
В Ваших "Проектах" есть: Справочник.Проекты.ФормаВыбораГруппы.
У меня, в Номенклатуре ее нет, только: "ПомощникНового, ФормаВыбора, ФормаГруппы, ФормаЗначенийРеквизитов, ФормаСписка, ФормаСпискаДублирующиеПозиции, ФормаЭлемента"...
Формы выбора групп нет. Скорее всего, в этой форме что-то прописано для выбора групп, не даром же она так называется.
И вот тут: ОткрытьФорму("Справочник.Проекты.ФормаВыбораГруппы", ПараметрыФормы, ЭлементыФормы.Проекты); ЭлементыФормы.Проекты - это что? Элементы какой формы? Открываемой?

PS Извиняюсь, может вопросы глупые, и для Вас это просто и очевидно, но, мне после 7.7, не понятно :-(
9 MWWRuza
 
гуру
27.07.22
22:26
В принципе, вот это:
&НаКлиенте
Процедура ПодборГрупп(Команда)
    пОтбор = Новый Структура("ЭтоГруппа", Истина);
    ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, Отбор, ВыборГруппИЭлементов", Ложь, пОтбор, ИспользованиеГруппИЭлементов.Группы);

    ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы);    // Что вместо этого писать, не понятно: ЭлементыФормы.Проекты
// Вставить содержимое обработчика.
КонецПроцедуры

Открывает форму выбора номенклатурв, в которой только группы:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/i-455.jpg

А дальше что делать? Кнопка "Выбрать" ничего не делает...
2) В таблице значений ловим событие "ОбработкаВыбора", кликаем в в свойствах, создается обрабочик, пишем код - Нет у меня такого события... Может потому, что у меня не ТЗ а СписокЗначений?
10 Мультук
 
гуру
27.07.22
22:32
(9)

Но у формы в которой кнопка и список значений, такой обработчик есть

>> кликаем в в свойствах, создается обрабочик

В этом обработчике ставим точку останова и  смотрим, что там падает в переменные
11 MWWRuza
 
гуру
27.07.22
22:46
Обработчик есть...
И процедура ему назначена:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/i-456.jpg

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

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

только почему-то туда программа не попадает, точка останова стоит внутри этой процедуры, и ничего не происходит ни при нажатии кнопки "Выбрать" в открывшейся форме справочника, ни при двойном клике на группе...
12 MWWRuza
 
гуру
27.07.22
22:52
Список я поменял на ТЗ, если это имеет значение...
13 arsik
 
гуру
27.07.22
23:03
(11) Тебе ОбработкаВыбора нужна не у списка, а у формы.
14 MWWRuza
 
гуру
27.07.22
23:18
Сделал у формы. Все равно не отрабатывает...
А разъве это событие возникает не у той формы, которая открывается и в которой выбор осуществляется? В моем случае - форма выбора справочнмика номенклатура?
Как-то не очень понимаю, почему это событие должно в моей форме обработки вызываться...
15 MWWRuza
 
гуру
27.07.22
23:29
В принципе, все работает и так, без этих процедур и кнопки, просто открывается весь список номенклатуры, но подбираются группы. При попытке выбрать элемент, не дает, с предупреждением "Выберите группу а не элемент". Для моей "прикладной задачи", этого более чем достаточно, ну, отображаются элементы, фиг сними, главное выбираются только группы... Просто хотел разобраться, как это сделать правильно.
16 MWWRuza
 
гуру
28.07.22
08:21
(2) Наверное, группу не удается выбрать.

Нет,не так. Группы выбираются, с этим нет проблем. Я наверное плохо описал свою "хотелку".
Я хотел, что-бы по нажатию "зелененькой кнопочти с плюсиком", открывалась форма справочника "Номенклатура", в которой отображались бы только группы, без элементов. И их можно быфло-бы выбирать в ТЗ своей формы внешней обработки.
И все это без вмешательства в саму конфу, только дописками во внешней обработке.
Процедурой из (9) получилось открывать форму выбота справочника так, как мне хотелось - отображаются только группы. Правда, не по стандартному "плюсику", а по отдельной кнопке. Но, тут они действительно не выбираются.

Остановился на варианте, без единой строчки кода, только правильной "расстановкой галочек" и выборе свойств, когда в выборе открывается весь справочник, и элементы и группы, но дает выбирать только группы. Устраивает полностью.
Но, так и не понял, можно ли реализовать первоначальную "хотелку" без вмешательства в типовую "ФормуВыбора" справочника, и без добавления "ФормыВыбораГрупп", с соответствующими отборами, только из внешней обработки.
17 MWWRuza
 
гуру
28.07.22
08:32
(9) кликаем в в свойствах, создается обрабочик, пишем код - Нет у меня такого события...
Тут я опять "накосячил" с описанием - событие в списке есть, "но его нет", в смысле оно не вызывается, нет самого события в процессе мсполнения, хотя оно описано :-)
18 6awkup_true
 
28.07.22
08:52
Если вкратце, то чтобы выбранное значение попало в "ОбработкаВыбора" формы, то при открытии формы выбора владельцем формы надо указывать текущую.

вот код модуля

&НаКлиенте
Процедура ПодборВСписок(Команда)
    
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("МножественныйВыбор", Ложь);
    ПараметрыОткрытия.Вставить("Отбор", Новый Структура("ЭтоГруппа", Истина));
    ПараметрыОткрытия.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Группы);
    ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", Ложь);
    
    ОткрытьФорму("Справочник._ДемоНоменклатура.ФормаВыбора", ПараметрыОткрытия, ЭтаФорма);
    
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    
    Если ИсточникВыбора.ИмяФормы = "Справочник._ДемоНоменклатура.Форма.ФормаВыбора" тогда
        Если Список.НайтиПоЗначению(ВыбранноеЗначение) = Неопределено тогда
            Список.Добавить(ВыбранноеЗначение);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры


если нужно наглядно посмотреть, то https://disk.yandex.ru/d/yhbX-OuVfHiwlA