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

30.09.17

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

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

Пропишем код

Все!

См. также

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

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

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

10000 руб.

02.09.2020    129742    700    390    

752

Как посмотреть итоговый запрос в отчете СКД

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

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

15.05.2024    2953    implecs_team    4    

34

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

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

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

11.04.2024    2619    andrey_sag    10    

32

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    6300    KawaNoNeko    23    

26

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2291    2    Yashazz    0    

32

Запрос 1С copilot

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

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    7115    40    mkalimulin    32    

53

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    2015    vandalsvq    7    

29

Консоль запросов УФ 8.3.2.24.12 (мод от Dr.Zombi)

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Запросы Россия Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц. Главное скорость отладки запроса и данных, а красота вторична.

1 стартмани

07.12.2023    3483    52    DrZombi    54    

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


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

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

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


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

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


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

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

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