Местонахождение в конфигурации
В качестве примера рассмотрим задачу формирования списка номенклатуры для отсылки по эл.почте отсканированных сертификатов по запросу клиента. Менеджер, получив запрос от клиента с перечнем номенклатуры (или клиент может озвучить свою хотелку вообще пространно, типа "нужны сертификаты на ножи и термосы") - запускает "рабочее место" по работе с документами качества для выполнения требуемой задачи (а не бежит к программеру с вопросом как получить такой перечень номенклатуры), смотрим скриншот:
начало работы по подбору номенклатуры
Работаем по кнопке
Код процедуры, предоставляющий доступ к неисчерпаемому богатству возможностей
Итак, менеджер жмакает нашу кнопочку - и получает в свое распоряжение мощный инструмент для ПРОИЗВОЛЬНОГО ПОДБОРА НУЖНОЙ ЕМУ НОМЕНКЛАТУРЫ:
Задание условий
Произведенный отбор номенклатуры
Полученный набор номенклатуры обработан особым образом для отображения
И будет прав. Ибо есть одна маленькая засада. А засада следующая: Обработка.ПодборОбъектов вызывается в немодальном режиме и куда она должна передать сформированный набор данных? Понятно куда - в родительскую форму... Но как и в какое место? Ведь после открытия Обработки.ПодборОбъектов родительская обработка (из которой произошел вызов) давно "убежала" по своему коду из того места, ГДЕ ОНА ВЫЗВАЛА Обработку.ПодборОбъектов... Настоящие разведчики засад не боятся и обходят их скрытными горными (получена альпийская подготовка!) тропами (например, такими: http://tomba.infostart.ru/IMAGES/FOTO02/sklon600.jpg ), а именно: используем возможности предопределенной процедуры ПриПовторномОткрытии(), так как при нажатии манеджером БКК, тьфу! кнопки Обработка.ПодборОбъектов выполняет такой код:
Если Найти(ИмяФормыДействия, ".ert") > 0 Тогда ОткрытьФорму("Отчет", СписВозврата, ИмяФормыДействия);т.е. производит открытие родительской формы с передачей списка объектов. А так как родительская форма не была закрыта при вызове Обработка.ПодборОбъектов (см.выше рисунок "Задание условий" //infostart.ru/articles/242/image.php?img=650 - видишь там, на заднем фоне, видна родительская формочка...?) - в родительской форме успешно отрабатывает процедура ПриПовторномОткрытии(), смотрим на ее код:
Получение списка объектов после хитрожо.. интересных действий менеджера
Все вышерасказзаное предназначено, вообщем-то для одного: показать еще раз (с другого ракурса) возможность избежать программистом "рутинных" действий по "коллекционированию" объектов (что особенно актуально для начинающих и середнячков-программистов, которые так и норовят где-нибудь косяччок забить...) и сосредоточиться на СОДЕРЖАТЕЛЬНОМ программировании "бизнес-процессов".
Попутное замечание: при использовании Обработка.ПодборОбъектов есть возможность возвращать данные в совершенно другую "родительскую" обработку (зависит от передаваемых в Обработку.ПодборОбъектов параметров), что позволяет без особых напрягов вязать достаточно содержательные цепочки обработок...
Всем хороши Обработка.ПодборОбъектов и Uchoice.ert, кроме одного: не позволяют отбирать объекты НЕПОСРЕДСТВЕННЫМ ВЫБОРОМ САМОГО ОБЪЕКТА, а предоставляют возможность осуществлять отбор лишь манипулируя условиями, налагаемыми на разнообразные реквизиты справочников/документов. Для особо продвинутых юзеров/менеджеров это трудности не составит, а вот тем, кто не шибко разбирается, что такое "реквизиты", "условия" и прочая "программистская мутотень", - на всякий случай хорошо было бы предоставить возможность "типового" подбора - т.е. позволить выбирать ОБЪЕКТ ЦЕЛИКОМ (как это делается в типовой ТиС в разных документах по кнопке "Подбор"). Почему это не сделано "штатно" ( //infostart.ru/file.php?0,file=40 ) - сие мне не ведомо, поэтому я в полном соответствии с заголовком данной статьи не парю себе мозги, а в два счета добавляю эту возможность.
Добавляем ОБЪЕКТ ЦЕЛИКОМ в перечень реквизитов справочника/документа:
Объект-справочник
Объект-документ
Уберем из перечня реквизитов для просмотра выборки
Пояснение к предыдущему коду
Подбор в простой штатной манере...
Очередная лекция - закончена.
В следующей статье мы попробуем решить более хитрую задачу: в возможность выбора элементов справочника по условиям, накладываемым на реквизиты справочника, добавить возможность выбора элементов справочника по условию принадлежности к некоему заранее неопределяемому составу документов... заумно...? Тогда скажем так: без лишнего "непроизводительного" программирования получить перечень элементов справочника, принадлежащих номенклатурному набору вполне конкретного клиента.. Зачем? А вот зачем: чтобы совать ему не весь прайс в 3000 позиций. а только тот перечень, который его интересует (тот, который он берет постоянно...)
Статья понравилась/пригодилась? Узнал что-то новое? Поощри автора - приплюсуй рейтинг или если хотите выразить свою благодарность другим способом - можете сделать взнос на рублевый кошелек WebMoney R292336385918 (через платежный терминал, например...)..
уффффффф... устал....