Меняем стандартную форму выбора для реквизита формы на свою форму с запросом

30.09.17

Разработка - Запросы

Алгоритм действий для смены стандартной формы выбора для реквизита формы на свою форму со своей выборкой данных и возвратом нескольких параметров в вызывающую форму

На улице должливый день, а по заданию "партии" надо в Документе ВыпускГотовойПродукции в табличной части, для реквизита Партия выбрать документ ПоступлениеПолуфабриков. Реквизит Партия имеет тип Документ.ПоступлениеПолуфабрикатов, вроде бы выбор очевиден! Но надо выбрать не все документы, а так, что бы менеджер с ума не сошел от представленного разнообразия, а показать ему только те документы, которые имеют нужный Склад и Номенклатуру, да и вдобавок ненулевой остаток из Регистра накоплений Партии. Тряхнем стариной, приступим!

Добавим ФормуВыбора для документа ПоступлениеПолуфабрикатов

В свойствах списка поставим галочку Произвольный запрос

 

 

Вызовем конструктор запросов и заменим стандартный запрос, запросом к регистру партий, что бы узнать ненулевые остатки и зададим в нем несколько условий для отбора по Номенклатуре и Складу

В запросе появились два параметра. Склад и Номенклатура. Передачей их в запрос займемся чуть позже. Закрываем редактор запроса.

Форма, после редактирования запроса, обиделась и съежилась, Теперь нет табличной части. Остались лишь одинокие Дата и Номер,а все потому что у них пропал путь к данным.

Восстановим.

Как только поправили ПутьКДанным у Даты, форма обрадовалась и отобразила нам таблицу. Набросаем в таблицу нужных колонок, что бы пользователю было удобней выбирать.

Теперь вернемся к документу ВыпускГотовойПродукции, к реквизиту Партии и пропишем параметры (Склад и Номенклатура), которые должны передаться в ФормуВыбора документа ПоступлениеПолуфабрикатов. Мы же не хотим выплачивать больничные менеджеру.

Щелкаем на Партии и выбираем СвязиПараметорВыбора

Добавляем два параметра: Склад и Номенклатура

Для реквизита Партии, если у нас несколько форм выбора, укажем нашу форму выбора, как основную. Если ФормаВыбора одна ее можно не указывать

 

Осталось передать наши параметры в Список ФормыВыбора документа  ПоступленияПолуфабрикатов. В ФормеВыбора используем предопределенную процедуру ПриСозданииНаСервере

Пробуем как это работает

Жмем Показать все, что бы появилась наша ФормаВыбора

Теперь хотелось бы передать значение Остатка в вызывающую форму, что бы заполнить колонку Количество.

Задействуем события Списка ФормыВыбора документа ПоступлениеПолуфабрикатов, которые отвечают за выбор пользователем конкретного документа. Это предопределенные процедуры ВыборЗначения и ОбработкаВыбора.

 

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

 

Передадим наш остаток в виде структуры, через параметр.

В вызывающей форме, ВыпускГотовойПродукции назначим обработку ОбработкаОповещения

Пропишем код

Все!

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    184197    1024    403    

967

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

2 стартмани

06.02.2025    2174    17    XilDen    26    

36

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    5681    artemusII    11    

23

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    13090    sergey279    18    

65

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    8180    XilDen    36    

90

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3164    PROSTO-1C    0    

23

Запросы Программист Запросы Бесплатно (free)

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

16.08.2024    10765    user1840182    5    

29
Отзывы
10. Evil Beaver 8284 04.10.17 09:38 Сейчас в теме
(3)
Связи параметров выбора при список-основной реквизит автоматом наложат отбор.


Не совсем. Здесь сделано через Параметры дин. списка, а не через его Отбор. Поэтому параметры выбора автоматически не применятся к запросу списка.

В любом случае, хорошая познавательная статья по механике форм выбора. Даже если и не без греха - побольше бы статей, и поменьше бы скептических критиков.
Darkoder; klaus38; allga383; maxopik2; Dmitri93; wiseowl; +6 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 16 01.10.17 07:35 Сейчас в теме
Лично для меня...познавательно, но один вопрос: если в типовой конфе в документе "Поступление полуфабрикатов" появится форма выбора, то достаточно будет просто переименовать нашу добавленную форму выбора?
2. AlexHelmer 1941 01.10.17 11:10 Сейчас в теме
Переименовать? А для чего? Немного не понял вопроса
5. TrinitronOTV 16 02.10.17 12:19 Сейчас в теме
(2) В обновлении фирма 1С добавила в этот документ свою форму выбора, тогда что будет при обновлении?
6. AlexHelmer 1941 02.10.17 12:45 Сейчас в теме
(5) Это вопросы из другой серии.
9. TrinitronOTV 16 03.10.17 05:27 Сейчас в теме
11. vipetrov2 05.10.17 12:10 Сейчас в теме
(5) Есть основная форма выбора только одна. А просто форм выбора можно наделать сколько угодно и они не будут конфликтовать. В статье как раз описывается, как сделать свою форму выбора, не делая ее основной. Только в статье используется название "ФормаВыбора", но его лучше поменять, например, на "ФормаВыбораСОстатками".
12. TrinitronOTV 16 05.10.17 12:38 Сейчас в теме
(11) так я к этому и подводил, ИМХО и надо называть как-то нестандартно
24. dock 45 12.12.17 09:10 Сейчас в теме
(5) Используем расширения! и будет счастье (вселенское)!
3. nvv1970 01.10.17 11:48 Сейчас в теме
Жесть какая-то... Чую беспощадно заминусуют публикацию.

Если нужно сделать форму "только для реквизита", то не стоит ее указывать основной. И в принципе основная - она для выбора документа... Выбор специфический, док без партии уже не выберешь.
Запрос к остаткам в динамическом списке без параметров?
Зачем в принципе параметры?? "Компоновщик данных" в запросе... слыхали? Указываем параметры отбора в фигурных скобочках. А в вашем случае (автозаполнения) полей этого и не требуется.
Связи параметров выбора при список-основной реквизит автоматом наложат отбор. Не нужно ничего городить, никакого программного кода.
Да и с обработкой выбора ерунда какая-то... Выбор тоже работает без программного кода.
Ересь, не иначе...
kiros; RailMen; zqzq; d4rkmesa; AlexGroovy; Spacer; +6 Ответить
10. Evil Beaver 8284 04.10.17 09:38 Сейчас в теме
(3)
Связи параметров выбора при список-основной реквизит автоматом наложат отбор.


Не совсем. Здесь сделано через Параметры дин. списка, а не через его Отбор. Поэтому параметры выбора автоматически не применятся к запросу списка.

В любом случае, хорошая познавательная статья по механике форм выбора. Даже если и не без греха - побольше бы статей, и поменьше бы скептических критиков.
Darkoder; klaus38; allga383; maxopik2; Dmitri93; wiseowl; +6 Ответить
13. nvv1970 08.10.17 13:53 Сейчас в теме
(10)
Здесь сделано через Параметры дин. списка, а не через его Отбор. Поэтому параметры выбора автоматически не применятся к запросу списка.
Ну так ничего хорошего в этом нет. Скорее это можно считать неестественным методом фильтрации выборки для компоновщика. По крайней мере действий и кода становится больше.
15. Evil Beaver 8284 10.10.17 12:59 Сейчас в теме
(13) Тем не менее, мне кажется, что механика форм раскрыта в статье неплохо. А конкретная реализация, ну да, можно тут кое-чего покритиковать.
4. AlexHelmer 1941 01.10.17 12:44 Сейчас в теме
Все поняно, а как обратится к регистру партий? Это одно из условий отбора
7. A_Max 20 02.10.17 17:46 Сейчас в теме
СКД (в данном случае динамический список) сам достаточно умный чтобы наложенный отбор перенсти внутрь скобок виртуальной таблицы.
14. Evil Beaver 8284 10.10.17 12:57 Сейчас в теме
(7) я бы вот проверил данный факт sql профайлером. Теоретически да, а как в реале - не поручусь за это.
16. A_Max 20 10.10.17 17:31 Сейчас в теме
(14) Профайлер даже не нужен, гораздо удобней использовать "Консоль системы компоновки данных" с ИТС.
Хотя признаю я ошибся. Всё-таки нужно скд немного помочь добавив фигурные скобки в условия виртуальной таблицы:
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Валюта,
	ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦен)}) КАК ЦеныНоменклатурыСрезПоследних


Теперь если добавить отборы на тип цен и валюту получится вот такой запрос:
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(ЦеныНоменклатурыСрезПоследних.Валюта) КАК ВалютаПредставление,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК НоменклатураПредставление,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(ЦеныНоменклатурыСрезПоследних.ТипЦен) КАК ТипЦенПредставление
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &П2) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
	ЦеныНоменклатурыСрезПоследних.Валюта = &П
Показать
17. Evil Beaver 8284 11.10.17 10:22 Сейчас в теме
(16) Мы тут вроде как про ДинамическийСписок, а не про СКД. Понятно, что один базируется на другом, но все же. Я вот на 100% не уверен в том, что платформа подставит правильные отборы в параметры ДС. Скорее всего да, но, повторюсь, лучше проверить.
18. A_Max 20 11.10.17 16:26 Сейчас в теме
(17) Я уже давно проверил и использую эту возможность постоянно. Во многих формах динамические списки которые настраиваются прогграмно отборами и если-бы не такая "донастройка", то тормозило бы несусветно.
Есть конечно некоторые "особенности", но всё-таки это СКД.
Evil Beaver; +1 Ответить
8. AlexHelmer 1941 02.10.17 18:22 Сейчас в теме
Т.е. не надо передавать параметры к запросу к регистру партий?
19. kolya_tlt 90 06.12.17 09:55 Сейчас в теме
1. не понял зачем соединение в дин запросе. кажется все поля можно вытащить из остатков.
2. возможно автор хотел показать как можно переопределить форму выбора. но конечный продукт ужасен:
2.1 не понятно что будет если 2 строки будут в документе и какой остаток будет в форме выбора
2.2 отсутствует форма подбора, в ней было бы больше удобства для пользователя
20. Romarius 16 06.12.17 14:04 Сейчас в теме
(19)
1. не понял зачем соединение в дин запросе. кажется все поля можно вытащить из остатков.

Возможно без такого соединения не будет выбрана основная таблица динамического списка.
21. kolya_tlt 90 06.12.17 14:51 Сейчас в теме
(20)
не будет выбрана основная таблица динамичес

а зачем там основная таблица? вряд ли из этой формы будут партии создаваться.
22. LexSeIch 212 09.12.17 10:03 Сейчас в теме
Больше статей - хороших и разных. При разборе "полётов" в комментариях часто встречается полезная информация. В целом статья - полезная.
23. dock 45 12.12.17 09:09 Сейчас в теме
Статья хорошая (даже замечательная), но...
1) Название статьи совершенно не отражает суть.
"Меняем стандартную форму выбора..." правильнее бы было - "Создаем свою новую форму выбора..."
2) в статье не указано, с какой конфигурацией работаем!
Оставьте свое сообщение