gifts2017

Улучшенная обработка УОПО ("Универсальная обработка подбора объектов") для 1С:Предприятие 7.7

Опубликовал Юрий Осипов (yuraos) в раздел Обработки - Обработка справочников

Исправлена работа в модальном режиме обработки УОПО, распространяемой фирмой 1С на дисках ИТС. СДЕЛАНА ФУНКЦИЯ ПЕЧАТИ (УНИВЕРСАЛЬНЫЙ РАСПЕЧАТНИК СПИСКОВ ОБЪЕКТОВ). Расширен список типов объектов, которые могут отбираться в таблицу выбора. Добавлен новый режим подбора. Предусмотрена установка своего заголовка формы обработки вместо стандартного. Также в диалог добавлена надпись с количеством отобранных в обработке объектов.

 

Описание практической проблемы:

У функции ОткрытьПодбор(,,,), активно используемой в обработке УОПО для выбора значений объектов,  замечено два недостатка:

1.       С ее помощью нельзя открыть для подбора внешнюю обработку. Приходится открывать форму внешней обработки модально. Если установлена ВК FormEx.dll, можно также имитировать режим подбора в немодальном режиме, вызывая с помощью объекта «Сервис» процедуру  ОбработкаПодбора(,,,) в контексте формы, открывшей обработку. Но это требует дополнительных действий при написании кода и уменьшает универсальность обработки.

2.       Если использовать функцию ОткрытьПодбор(,,,) для выбора значений в форме открытой модально, то форма подбора открывается немодально «под» вызвавшей его модальной формой(рис.1) и оказывается заблокированной для выбора.

С учетом сказанного стандартная УОПО оказывается неудобна при открытии в модальном режиме для редактирования списков.  Кнопки подбора объектов фактически не работают. Остается только кнопка «Отобрать объекты» без установленных фильтров (фильтры тоже заполняются с помощью функции ОткрытьПодбор(,,,)).

Однако на практике модальный режим может потребоваться, если для редактирования списка нужно открыть УОПО, хранящуюся во внешнем файле. Также модальный режим может быть удобен, если сразу после изменения списка, где-нибудь в форме требуется обновить его текстовое представление.

 

Описание исправлений и улучшения в предлагаемой версии УОПО:

1)       Для исправления работы обработки в модальном режиме, сначала проверяется режим открытия формы. Если форма открыта немодально - для выбора объектов по-старому используется функция ОткрытьПодбор(,,,). Если форма открыта в модальном режиме, то для этой цели используется другая функция - ВвестиЗначение(,,,), которая гарантированно открывает модальный диалог выбора.

2)       Расширен список типов значений, полноценно поддерживаемых при заполнении таблицы выбора объектов. Теперь кроме справочников, документов, операций и счетов можно использовать следующие типы 1С:

a.      Перечисления;

b.      Календари (системное перечисление);

c.       Виды расчетов (системное перечисление);

d.      Виды субконто (системное перечисление);

e.      Планы бухг. счетов (системное перечисление);

 

3)     Для тех объектов, которые нельзя открыть функцией ОткрытьФорму(,,) (Перечисления, ВидыРасчетов, Календари и т.п.), предусмотрено при клике в таблице отобранных объектов открытие списка выбора в диалоге с активизацией в нем текущего объекта (Рис.5). Стандартная обработка в этом случае просто ничего не делае, так как функция ОткрытьФорму(,,) игнорирует такие объекты без ошибок времени исполненияCool.

 

4)      Реализована функция печати списка объектов с выводом колонок показываемых реквизитов (Рис.2). Можно распечатать как все строки в списке, так и только отмеченные.  Таким образом обработку можно использовать как универсальный распечатник простых списков объектов (без группировки и агрегирования).

 

5.      Добавлен новый режим подбора, когда обработка не заполняет объектами из таблицы выбора список, переданный через параметр формы, а возвращает  копию самой таблицы выбора без колонок с пиктограммами. Для этого в параметре формы нужно установить значение с идентификатором «ПодборUChoice» не равным нулю (см. примеры ниже).

 

Значение параметра «ПодборUChoice» > 0 используется для подбора в немодальном режиме. Таблица выбора возвращается методом Форма.ВыполнитьВыбор(Значение) как выбранное в подборе значение  (пример 2).

 

Значение параметра «ПодборUChoice» < 0 используется для подбора в модальном режиме. Таблица выбора возвращается через параметр формы в значении с идентификатором «гТабВыборка» (примеры 1 и 2).

 

6.       Предусмотрена установка своего заголовка формы обработки вместо стандартного. Для этого нужно передать требуемый заголовок через параметр формы в значении с идентификатором «Заголовок» (см. примеры ниже). Кроме этого в форму добавлена надпись, выводящая количество выбранных в обработке объектов (Рис.2 и рис.3).

 

Требования:

Особенно никаких требований не нужно, разве что наличие действующей подписки ИТС.

Желательно иметь загруженную компоненту FormEx.dll (dorex.ru). Тогда при открытии можно выбирать тип и вид объекта в красивом диалоге в виде дерева (Рис.4).

Компоненту можно скачать с сайта разработчиков  http://www.dorex.pro/ , взять в файле поставки обработки "Изменение времени документа" в каталоге ..\FormEx1CPP\.

 

Примеры использования:

 

1)      Изменение списка объектов во внешней обработке УОПО, открытой модально:

 

ИмяОбработкиВнеш =КаталогИБ()+"ExtForms\ ПодборUChoice.ert";

Параметр =тзПараметров. Параметр;

Тип =тзПараметров. Тип;

Вид =тзПараметров. Вид;

сзПараметр = тзПараметров.Значение;

Если ТипЗначенияСтр(сзПараметр)<>"СписокЗначений" Тогда

          сзПараметр = СоздатьОбъект("СписокЗначений");

          тзПараметров.Значение= сзПараметр;

КонецЕсли;

Парам = СоздатьОбъект("СписокЗначений");

Парам.Установить("ИмяВызвавшейФормы","");  

Парам.Установить("Тип",Тип); 

Парам.Установить("Вид",Вид);

Парам.Установить("БезГрупп",0);

Парам.Установить("Объекты",сзПараметр);

Парам.Установить("Заголовок","Редактирование списка параметра '#"+СокрЛП(Параметр)+"':");

 

ОткрытьФормуМодально("Обработка",Парам, ИмяОбработкиВнеш);

 

ЗначениеПредс=СписокЗначений_в_Строку(сзПараметр,,20);

тзПараметров.ЗначениеПредс=ЗначениеПредс;

 

2)      Подбор таблицы со ссылками на  объекты в УОПО:

 

// Перем Тип;     // переменные модуля формы, куда перед подбором объектов

// Перем  Вид;   // записываются их тип и вид при выборе в диалоге

 

ИмяОбработкиВстр = " ПодборUChoice";

ИмяОбработкиВнеш =КаталогИБ()+"ExtForms\ ПодборUChoice.ert";

ЕстьРедакторСписков=0;

Если Метаданные.Обработка("ПодборUChoice").Выбран()=1 Тогда

          ЕстьРедакторСписков=1;  // подбор таблицы объектов в немодальном режиме

Иначе Если ФС.СуществуетФайл(ИмяОбработкиВнеш)=1 Тогда

          ЕстьРедакторСписков=2;  // подбор таблицы объектов в модальном режиме

КонецЕсли;

Если ЕстьРедакторСписков=0 Тогда

          Возврат;

КонецЕсли;

Парам =СоздатьОбъект("СписокЗначений");

Парам.Установить("Тип", Тип);

Парам.Установить("Вид", Вид);

Парам.Установить("Заголовок","Выбор объектов для очистки:");

Если ЕстьРедакторСписков=1 Тогда

          // подбор таблицы объектов в немодальном режиме

          Парам.Установить("ПодборUChoice",+1);

          ОткрытьПодбор ("Обработка. "+ ИмяОбработкиВстр, Парам);

ИначеЕсли ЕстьРедакторСписков=2 Тогда

          // подбор таблицы объектов в модальном режиме

            Парам.Установить("ПодборUChoice",-1);

          ОткрытьФормуМодально("Обработка#", Парам, ИмяОбработкиВнеш);

          СтатусОК=-1;

          Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда

                   СтатусОК=Цел(Парам.Получить("СтатусОК"));

          КонецЕсли;

          Если СтатусОК<=0 Тогда

                    Возврат;

          КонецЕсли;

          Значение = Парам.Получить("гТабВыборка");

          ОбработкаПодбора(Значение,Неопределено);

КонецЕсли;

 

Благодарности:

Выражаю огромную благодарность всем разработчикам фирмы 1С за их нелегкий труд.

 

Скачать файлы

Наименование Файл Версия Размер
ПодборUChoice.rar 169
.rar 46,43Kb
26.11.11
169
.rar 46,43Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр Лыткин (TrinitronOTV) 11.11.11 07:47
спасибо за труд, хорошая обработка
2. Александр Рытов (Арчибальд) 11.11.11 12:07
Ну, что ж. Весьма внятно. И наверное, полезно.
3. Евгений Левченко (MYRZILKA123) 14.11.11 11:59
4. Анна Белова (Demedra) 16.11.11 11:58
5. Юрий Осипов (yuraos) 16.11.11 18:58
Доброго всем времени суток!!!
Огромное спасибо за высокую оценку моих скромных стараний!
Нежданно-негаданно оказался "центре внимания".

Всем заинтересованным сообщаю, что выложена последняя версия обработки.
По ходу дела добавил кое каких бантиков, например:
1) выбор типа и вида объектов в красивом удобном диалоге в виде дерева:
Шоткат №4 в статье (требуется formex.dll)
2) заголовок при печати о типе объектов в списке
и т.п. ...
и убрал кое-какие баги,например:
1 если в переданном редактирования ссписке списке оказались пустые значения
(такая ситуация возможна, если список предварительно был сохранен функцией ЗначениеВФайл(,,)
в одной конфигурации и восстановлен функией ЗначениеИзФайла(,,) в другой не идентичной)
то 1С-ка в зависимости от типа объекта может вам собщить что-то вроде:
err Если Эл.ЭтоГруппа() = 1 Тогда
{C:\!DVLP-77\BASES\ПОДБОРUCHOICE.ERT(236)}: Значение не представляет агрегатный объект (ЭтоГруппа)

После чего ей (1С-ке) станет дурно ... и она решит не открывать обработку ;))).
2) при клике в списке выбранных объектов, если у них не предусмотрено формы (перечисление и т.п.), ничего не происходило.
теперь заполняется список меню объектов соответствущего типа и выставляется на показ в диалоге с установкой текущей строки в списке меню на текущем объекте (Скриншот №5 в статье).
6. cleose (Лена_Лена) 17.11.11 12:00
7. Юрий Осипов (yuraos) 19.11.11 00:29
Загружена очередная версия обработки:
1) поправил некоторые несуразности при редактировании фильтров по значениям реквизитов
для видов сравнений "в интервале", "больше равно", "меньше равно".
2) в предыдущих версиях могли "слететь" пиктограммы в таблицах диалога.
поэтому таблицам назначенны новые картинки. поправленны значения пиктограм.
назначенны свои пиктограммы для бухгалтерских счетов.
8. Семен Андреев (TREYDER) 22.11.11 07:15
Большое спасибо! Наконец то печать есть.
9. vkr (vkr) 22.11.11 07:35
(0) За печать - отдельное СПАСИБО !!!
З.Ы. А пишется, все-таки, шоРткат (от англ. "shortcut"), но - скриншОт (от англ. "screenshot")
Samigor; yuraos; +2 Ответить
10. Юрий Осипов (yuraos) 22.11.11 21:01
vkr пишет:

(0) За печать - отдельное СПАСИБО !!!
З.Ы. А пишется, все-таки, шо Р ткат (от англ. "sho r tcut"), но - скриншОт (от англ. "screenshot")

Спасибо за замечание. Щас поправим!!! ;))) на "скриншот"
11. Юрий Осипов (yuraos) 26.11.11 18:47
Доброго времени суток!
Перезагружен файл поставки.
Устранен незначительный баг:

Если у объекта есть атрибуты с идентификаторами,
совпадающими с именами служебных колонок "Пометка", "Статус" и "Объект",
то при изменении видимости дополнительных колонок
в таблице выбранных объектов возможны ошибки времени исполнения.

Проблема решена исключением этих реквизитов из списка дополнительных колонок.
12. Сергей (Che) Коцюра (CheBurator) 03.12.11 05:41
Интересно, сделал автор возможность фильтрации объектов не только по значениям реквизита но и непосредственно по выбору самих объектов - весьма удобно в большом количестве случаев...
13. Юрий Осипов (yuraos) 06.12.11 17:50
CheBurator пишет:

Интересно, сделал автор возможность фильтрации объектов не только по значениям реквизита но и непосредственно по выбору самих объектов - весьма удобно в большом количестве случаев...

Дык...вроде специально не делал
;))))))))))
наверное исходная УОПО так умеет.
14. Денис (KrakoZyabl) 08.12.11 13:27
Ух ты, ого, большой труд и как следствие отличный результат!!!!!! Спасибо ++++.
15. Петр Ситкин (nvhost) 29.11.14 11:29
Может Ребят я чего то не понимаю но где выбор списка действий с найденными объектами?выбрал я объекты, договора котрагентов, хочу всем поставить глубину кредита 7 дней и немогу с помощью этой обработки!ПРишлось искать на диске ИТС стандартную и пользовать!Что не так делаю?
16. Юрий Осипов (yuraos) 30.11.14 10:14
(15) nvhost,
Дело в том, что сама по себе обработка УОПО никаких действий над объектами не выполняет.

Она просто формирует список (таблицу) ссылок на объекты,
которую затем может вернуть в качестве значения подбора
или передать этот список объектов для дальнейшей действий обработке-плагину.
17. Юрий Осипов (yuraos) 30.11.14 10:26
(16)
Список обработок-плагинов "Выполняемое действие" в форме
заполняется по содержимому файла UCPlugIn.txt.

Если обработка УОПО внешняя - этот файл ищется в каталоге с файлом обработки.
Если обработка УОПА встроенная - этот файл ищется в стандартном каталоге внешних обработок: КаталогИБ() + "ExtForms\"

В том же каталоге должны лежать файлы самих обработок-плагинов.
18. Юрий Осипов (yuraos) 30.11.14 10:31
(17)
На диске ИТС для УОПО имеются следующие стандартные обработки-плагины:
******
Универсальные
"UCSetAtt.ert" , "Установка реквизитов"
"UCDelete.ert" , "Пометить на удаление"

Для справочников
"UCRefRen.ert" , "Перенумерация кодов", "Справочник"

Для документов
"UCDocRen.ert" , "Изменение номеров документов", "Документ"

Дополнительно
"UCExampl.ert" , "Пример написания новой обработки"
*****
PS
Если лень искать их на диске ИТС,
то можете взять их из архива во вложении к этому посту/
;)))))
Прикрепленные файлы:
UChoiceTest.rar
19. Юрий Осипов (yuraos) 30.11.14 10:32
(18)
в этом же архиве и сам файл UCPlugIn.txt, который также имеется на диске ИТС
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа