Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 15:39

Проблема с передачей параметров между формами

Автор ToryFree, 01 июл 2020, 00:24

0 Пользователей и 1 гость просматривают эту тему.

ToryFree

Есть форма обработки Форма1, в ней кнопка, по которой открывается Форма2 той же обработки.
В форме Форма2 есть поле ее реквизита - динамического списка СписокТоваров, а в нем произвольный запрос
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ГДЕ
ВидНоменклатуры = &НашВидТовара

Ну и, конечно, НЕ ЭтоГруппа и НЕ ПометкаУдаления.

Пока условия ВидНоменклатуры = &НашВидТовара не было, замечательно выводилось все подряд.
После его появления при переходе в форму Форма2 появилось сообщение из произвольного запроса в динамическом списке СписокТоваров "Не задано значение параметра НашВидТовара".

Цепочка моих действий такая.

Чтобы передать НашВидТовара в запрос, в вызывающей форме обработки Форма1 он - реквизит  с типом СправочникСсылка.ВидыНоменклатуры.
В процедуре на сервере ПриСозданииНаСервере:
ВидыТоваров = Справочники.ВидыНоменклатуры;
НашВидТовара = ВидыТоваров.НайтиПоНаименованию("НужныйВидТовара");

   
Кнопка на форме запускает процедуру на клиенте СоздатьНашДокумент, в которой:
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НашВидТовара", НашВидТовара);   
Режим = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
ОткрытьФорму("Обработка.НашаОбработка.Форма.Форма2",
ПараметрыФормы, ЭтотОбъект,,,,, Режим);


В форме 2 имеем:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("НашВидТовара") Тогда
НашВидТовара = Параметры.НашВидТовара;
СписокТоваров.Параметры.УстановитьЗначениеПараметра("НашВидТовара", НашВидТовара);
КонецЕсли;
...


Как сделать, чтобы значение параметра НашВидТовара было видно в Форма2? Почему отладчик не попадает в процедуру ПриСозданииНаСервере в Форма2?
Я делала по образцу, в 8.3 новичок. Может быть, что-то не так с термином Параметры? У обработки такого вроде нет, а других формах он использовался. Прошу прощения за нубство, начинать после долгого перерыва непросто).


   

LexaK

по поводу установки Параметра в Дин.Список
многое зависит от платформы и версии совместимости
до 8,3,10
ВашДинСписок.Параметры;
если выше
ВашДинСписок..КомпоновщикНастроек.Настройки.ПараметрыДанных;

Цитироватьнф форме2 не видно НашВидТовара
а вы сам реквизит на форме разметили?

а при передаче он реальное значение имеет?
если помогло нажмите: Спасибо!

ToryFree

Цитата: LexaK от 01 июл 2020, 12:10
по поводу установки Параметра в Дин.Список
многое зависит от платформы и версии совместимости
до 8,3,10
ВашДинСписок.Параметры;
если выше
ВашДинСписок..КомпоновщикНастроек.Настройки.ПараметрыДанных;

Цитироватьнф форме2 не видно НашВидТовара
а вы сам реквизит на форме разметили?

а при передаче он реальное значение имеет?

Я писала - "Чтобы передать НашВидТовара в запрос, в вызывающей форме обработки Форма1 он - реквизит  с типом СправочникСсылка.ВидыНоменклатуры". В вызываемой форме я его реквизитом не делала, просто пытаюсь в процедуре ПриСозданииНаСервере передать его значение в запрос.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("НашВидТовара") Тогда
        НашВидТовара = Параметры.НашВидТовара;
        СписокТоваров.Параметры.УстановитьЗначениеПараметра("НашВидТовара", НашВидТовара);   
    КонецЕсли;
...

При передаче в вызывающей форме Форма1 НашВидТовара значение имеет, проверено в Отладчике после
ПараметрыФормы.Вставить("НашВидТовара", НашВидТовара);
Платформа 8.3.16.1148 (Розница 2.3), но в том-то и дело, что в форме РМК вызывается много форм с передачей параметров, и везде стоит конструкция с Параметрами, как у меня, я же сравнивала.
Но попробую заменить Параметры для передачи параметров в динамический список на КомпоновщикНастроек.Настройки.ПараметрыДанных;
Странно, что конструкции старого вида работают на новой платформе в других вызываемых формах.
И совершенно непонятно, почему я вообще в вызываемой форме Форма2 не попадаю в отладчике в процедуру ПриСозданииНаСервере. Я даже для проверки без отладчика вставила туда Сообщить("Тут"); - безрезультатно.
Добавлено: 01 июл 2020, 14:52


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

LexaK

такой впечатление, по вашему описанию, что вы правите одну форму, а 1с открывает совсем другую,
и точка останова не срабатывает, и сообщение не идет ...
если помогло нажмите: Спасибо!

ToryFree

Вечером будет доступ к базе, все проверю. И - спасибо большое, что откликаетесь и помогаете!!!)))
Очень сложно осваивать контент после шестилетнего перерыва). Информация в Инете очень разрозненная). Поэтому такая помощь, как ваша - просто неоценима!!!)... Спасибо вам огромное!!!)

А реально задача такая: В Рознице есть обработка для работы в режиме рабочего места кассира (РМК), а в ней одна из форм позволяет выполнять ряд операций и вызывать командами по кнопкам другие формы.
Моя задача - по кнопке из этой формы обратиться к другой, в которой будет динамический список товаров конкретного вида, после отбора из которого будет формироваться программно документ Сборка, где эти товары будут комплектующими, причем до его формирования должна быть возможность корректировать список отобранных товаров, заполнять их количество и т.д.
Вот на этапе передачи значения параметра в запрос этого дин.списка я и торможу. Без этого ограничения форма открывается нормально и список заполняется - но всем, что есть в спр.Номенклатура.

LexaK

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

ToryFree

Дело в том, что в документ у продавца доступа нет). Документ должен создаваться программно, после того, как продавец соберет все, что нужно, в форме. Дело в том, что весь этот алгоритм был продуман там, где работала раньше моя знакомая). И к нему все привыкли). Мне передали все скриншоты, надо опять создать то же, что и было).

Возвращаясь к теме)... Обнаружила, что параметры запроса как-то обрабатываются в куче общих модулей. Пока не поняла, как,тему не продолжаю.

А то, как делается подбор в Сборке, я посмотрю, конечно).

ef0din

А в другие серверные процедуры отладка попадает? Если нет - может серверная отладка отключена просто? Так-то, в первую очередь, конечно, по отладке глянуть бы: что и как происходит там.

АлександрВладимирович

Еще может быть, что процедуру ПриСозданииНаСервере в Форма2 просто скопировали в модуль, а не создали как событие формы.

ToryFree

В общем, ситуация такая. Есть обработка. В ней несколько форм. Из формы 1 в форму 2 передается значение параметра, которое в форме 2 учитывается в динамическом списке с произвольным запросом. Все работает как часы. Но когда из формы 2 в форму 3 пытаюсь так же точно передать значение другого параметра для другого динамического списка с произвольным запросом с другим отбором - вообще не попадаю в процедуру ПриСозданииНаСервере, и, соответственно, значение нужное не получаю. Если же делаю в форме 3 динамический список без этого отбора и без произвольного запроса, то он выдает все, что может. А надо бы, чтобы выдавал только то, что нужно).
Что делать?)

Добавлено: 03 июл 2020, 21:32


Цитата: АлександрВладимирович от 02 июл 2020, 16:02
Еще может быть, что процедуру ПриСозданииНаСервере в Форма2 просто скопировали в модуль, а не создали как событие формы.
Вот это уже интересно, и моих небольших пока знаний в 8.3 явно не хватает).
А куда ее присобачить в таком случае?)
Думаю, дело именно в этом).
Добавлено: 03 июл 2020, 22:25


Цитата: АлександрВладимирович от 02 июл 2020, 16:02
Еще может быть, что процедуру ПриСозданииНаСервере в Форма2 просто скопировали в модуль, а не создали как событие формы.

Все!!!))) Что значит, новичок)))... Ларчик открылся)! Спасибо вам огромное!)

И всем, кто помогал и обратил внимание, и потратил время - спасибо большущее!!!))) Успехов и отличного настроения вам, ребята!!!)))

Похожие темы (5)

Рейтинг@Mail.ru

Поиск