Добрый день!
Проблема в следующем. Выгрузив Номенклатура.xml в дерево значений, заношу номенклатуру в справочник. Не все ВидыНоменклатуры совпадают с имеющимися в справочнике. Пока юзаю ФормуВыбора справочника ВидыНоменклатуры.
В процедуре (&НаСервере), после проверки Вида на соответствие
, вызываю функцию для окна Выбора и передаю в виде текста ВидНоменклатуры
Такой формат работает только в режиме толстого клиента (да, пока вываливается кучка окошек и не обрабатывается результат выбора, но это на следующем шаге).
Если указываю для функции (&На клиенте), то говорит, что переменная ФормаВыб не определенна, что понятно (на клиенте не заполнить переменную).
Если переношу эту строку в процедуру, а потом передаю в функцию полученную форму, то не могу указать в функции эту переменную.
Если в обычном режиме запускаю (не толстый), и без указания для функции НаКлиенте, то Интерактивные операции недоступны.
Уже мозги закипают, ткните пожалуйста, что не так?
Тест на 8.3.18 и УТ 11.4.12
Проблема в следующем. Выгрузив Номенклатура.xml в дерево значений, заношу номенклатуру в справочник. Не все ВидыНоменклатуры совпадают с имеющимися в справочнике. Пока юзаю ФормуВыбора справочника ВидыНоменклатуры.
В процедуре (&НаСервере), после проверки Вида на соответствие
Если НомЭ.ВидНоменклатуры = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
ВыборВидаНом(СтрокаНом.ВидНоменклатуры);
КонецЕсли;
, вызываю функцию для окна Выбора и передаю в виде текста ВидНоменклатуры
Функция ВыборВидаНом(Строка)
ФормаВыб = Справочники.ВидыНоменклатуры.ПолучитьФорму("ФормаВыбора");
ФормаВыб.Заголовок = "Выберите замену " + Строка;
ФормаВыб.Открыть();
КонецФункции
Такой формат работает только в режиме толстого клиента (да, пока вываливается кучка окошек и не обрабатывается результат выбора, но это на следующем шаге).
Если указываю для функции (&На клиенте), то говорит, что переменная ФормаВыб не определенна, что понятно (на клиенте не заполнить переменную).
Если переношу эту строку в процедуру, а потом передаю в функцию полученную форму, то не могу указать в функции эту переменную.
Если в обычном режиме запускаю (не толстый), и без указания для функции НаКлиенте, то Интерактивные операции недоступны.
Уже мозги закипают, ткните пожалуйста, что не так?
Тест на 8.3.18 и УТ 11.4.12
По теме из базы знаний
- Перенос справочников и документов из 1С 7.7 "Торговля и склад 9.2" в 1С 8.2 "Бухгалтерия предприятия 2.0".
- ЕГАИС. Одинаковые штрихкоды, но разные производители. Возможность выбора конкретной позиции. (1С Предприятие 8.3, УТ 11.2).
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Модуль "Ответственное хранение" в 1С:УТ 11.5, КА 2.5, ERP 2.5 для фулфилмента FBS / FBO
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Найденные решения
(5) Функция работы с диалогом "ВыборВидаНом" однозначно должна быть с диррективой "НаКлиенте". Т.к. Вы работаете с управляемыми формами, Вам теперь необходимо спроектировать свою обработку таким образом, чтобы диалоги с пользователем были на клиенте (в процедурах и функциях с диррективой "НаКлиенте"), а работа с объектами базы данных - на сервере. Инициатор вызова сервера всегда клиент.
В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
На клиенте форма выбора открывается так:
Третьим параметром здесь указывается форма-владелец открываемого диалога выбора вида номенклатуры. Не знаю, как именно Вы планируете в итоге построить взаимодействие с пользователем, но скорее всего Вам потребуется реализовать еще и обработчик выбора значения из формы. Это может быть обработчик "ОбработкаВыбора" как для формы, если указали "ЭтотОбъект" как в примере выше, так и например обработчик самого дерева значений, если скажем вместо "ЭтотОбъект" указать таблицу формы (Элементы.ИмяДереваЗначений).
ОткрытьФорму("Справочник.ВидыНоменклатуры.ФормаВыбора", , ЭтотОбъект);
Третьим параметром здесь указывается форма-владелец открываемого диалога выбора вида номенклатуры. Не знаю, как именно Вы планируете в итоге построить взаимодействие с пользователем, но скорее всего Вам потребуется реализовать еще и обработчик выбора значения из формы. Это может быть обработчик "ОбработкаВыбора" как для формы, если указали "ЭтотОбъект" как в примере выше, так и например обработчик самого дерева значений, если скажем вместо "ЭтотОбъект" указать таблицу формы (Элементы.ИмяДереваЗначений).
(2) Спасибо Вам за ответ, но не помогло решить проблему.
Да, подготовил форму для выбора (с выбором необходимого значения и флажком для последующих совпадений видов номенклатуры с найденным(чтоб не переспрашивал при таком же виде). Но она также не заработала, поэтому решил вызывать типовую форму (вдруг я в форме накосячил).
Насколько смог уяснить для себя, что вызов клиента с сервера невозможен. Поэтому если для функции указывать НаКлиенте, то ошибка вызова функции.
Немного уточню информацию по создаваемому коду. Пишу в созданной обработке, в модуле формы.
Изменять что либо в типовой конфигурации не хочу.
Пишу для себя, пытаюсь разобраться по ходу пьесы.
Да, подготовил форму для выбора (с выбором необходимого значения и флажком для последующих совпадений видов номенклатуры с найденным(чтоб не переспрашивал при таком же виде). Но она также не заработала, поэтому решил вызывать типовую форму (вдруг я в форме накосячил).
Насколько смог уяснить для себя, что вызов клиента с сервера невозможен. Поэтому если для функции указывать НаКлиенте, то ошибка вызова функции.
Немного уточню информацию по создаваемому коду. Пишу в созданной обработке, в модуле формы.
Изменять что либо в типовой конфигурации не хочу.
Пишу для себя, пытаюсь разобраться по ходу пьесы.
(3)
но не помогло решить проблему.
А какую именно проблему-то? Пока Вы только обозначили, что не знаете как открыть форму выбора. Я подсказал. Разве форма не открылась? Другой вопрос, что с ней дальше делать, но для этого нужно сформулировать следующую проблему. Я же ее не знаю.
вызов клиента с сервера невозможен. Поэтому если для функции указывать НаКлиенте, то ошибка вызова функции.
Да, с сервера вызов клиента не возможен.
(4)
(4)
Прошу прощения за косноязычность, но проблема в том, что при запуске обработки в режиме отладки (кроме толстого клиента) вываливаются ошибки, которые не дают возможности выбора ВидаНоменклатуры.
Указывал в старт-топике, что могу запустить в толстом клиенте, но при этом "куча окошек" - это как раз вываливаются окна выбора ВидаНоменклатуры для каждого ненайденного вида.
Если указываю для функции операнд НаКлиенте
то синтакс говорит
Если без операнда, то
(4)
А какую именно проблему-то?
Прошу прощения за косноязычность, но проблема в том, что при запуске обработки в режиме отладки (кроме толстого клиента) вываливаются ошибки, которые не дают возможности выбора ВидаНоменклатуры.
Указывал в старт-топике, что могу запустить в толстом клиенте, но при этом "куча окошек" - это как раз вываливаются окна выбора ВидаНоменклатуры для каждого ненайденного вида.
Разве форма не открылась?
Если указываю для функции операнд НаКлиенте
то синтакс говорит
Процедура или функция с указанным именем не определена (ВыборВидаНом)
<<?>>ВыборВидаНом(СтрокаНом.ВидНоменклатуры); (Проверка: Сервер)
<<?>>ВыборВидаНом(СтрокаНом.ВидНоменклатуры); (Проверка: Сервер)
Если без операнда, то
Процедура или функция с указанным именем не определена (ОткрытьФорму)
<<?>>ОткрытьФорму("Справочник.ВидыНоменклатуры.ФормаВыбора", , ЭтотОбъект); (Проверка: Сервер)
<<?>>ОткрытьФорму("Справочник.ВидыНоменклатуры.ФормаВыбора", , ЭтотОбъект); (Проверка: Сервер)
(5) Функция работы с диалогом "ВыборВидаНом" однозначно должна быть с диррективой "НаКлиенте". Т.к. Вы работаете с управляемыми формами, Вам теперь необходимо спроектировать свою обработку таким образом, чтобы диалоги с пользователем были на клиенте (в процедурах и функциях с диррективой "НаКлиенте"), а работа с объектами базы данных - на сервере. Инициатор вызова сервера всегда клиент.
В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
(6)
Чтобы не править весь код заново, проще всего строки, у которых неопределённы ВидыНоменклатуры, скидывать в реквизит формы. А потом по кнопке обходить данный реквизит с вызовом создания номенклатуры на сервере? Правильно ли Вас понял?
Спасибо большое за помощь!
Чтобы не править весь код заново, проще всего строки, у которых неопределённы ВидыНоменклатуры, скидывать в реквизит формы. А потом по кнопке обходить данный реквизит с вызовом создания номенклатуры на сервере? Правильно ли Вас понял?
Спасибо большое за помощь!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот