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

30.09.17

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

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

Пропишем код

Все!

См. также

SALE! %

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    164801    914    402    

889

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

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

18.10.2024    10794    sergey279    18    

65

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

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

11.10.2024    5899    XilDen    36    

81

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

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

16.08.2024    8546    user1840182    5    

28

Математика и алгоритмы Запросы Программист Платформа 1С v8.3 Запросы Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2596    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    9629    implecs_team    6    

48

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3528    andrey_sag    10    

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


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

В любом случае, хорошая познавательная статья по механике форм выбора. Даже если и не без греха - побольше бы статей, и поменьше бы скептических критиков.
Darkoder; klaus38; allga383; maxopik2; Dmitri93; wiseowl; +6 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 16 01.10.17 07:35 Сейчас в теме
Лично для меня...познавательно, но один вопрос: если в типовой конфе в документе "Поступление полуфабрикатов" появится форма выбора, то достаточно будет просто переименовать нашу добавленную форму выбора?
2. AlexHelmer 1840 01.10.17 11:10 Сейчас в теме
Переименовать? А для чего? Немного не понял вопроса
5. TrinitronOTV 16 02.10.17 12:19 Сейчас в теме
(2) В обновлении фирма 1С добавила в этот документ свою форму выбора, тогда что будет при обновлении?
6. AlexHelmer 1840 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 8256 04.10.17 09:38 Сейчас в теме
(3)
Связи параметров выбора при список-основной реквизит автоматом наложат отбор.


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

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


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

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