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

30.09.17

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

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

Пропишем код

Все!

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121599    670    389    

711

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

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

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

13.02.2024    5740    KawaNoNeko    23    

23

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

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

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

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

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

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

5 стартмани

15.01.2024    6279    30    mkalimulin    25    

49

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

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

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

14.12.2023    1740    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

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

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5384    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16164    skovpin_sa    14    

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


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

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


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

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


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