Как обратиться через форму документа к реквизиту справочника?
БП Корп 8.3.25.1374/3.0.163.26 работа на расширении.
Задача: Недопустить создание документа реализации по контрагентам физическим лицам с цифрами (номерами лицевых счетов) в ФИО.
Как обратиться к справочнику Контрагенты как физическому лицу?
1.
Пытался через запрос в модуле формы Документ РеализацияТоваровУслуг: ФормаДокументаТовары
&НаСервереБезКонтекста
Функция ПроверитьЗаполненностьНаСервере(Контрагент, ДоговорКонтрагента)
Ошибка: Переменная не определена (ФизическоеЛицо)
2.
Пытался проверить на наличие цифр без запроса:
Ошибка: Переменная не определена (Объект) Почему? Ведь, судя по форме (см. скриншот) путь прописан правильно.
Задача: Недопустить создание документа реализации по контрагентам физическим лицам с цифрами (номерами лицевых счетов) в ФИО.
Как обратиться к справочнику Контрагенты как физическому лицу?
1.
Пытался через запрос в модуле формы Документ РеализацияТоваровУслуг: ФормаДокументаТовары
&НаСервереБезКонтекста
Функция ПроверитьЗаполненностьНаСервере(Контрагент, ДоговорКонтрагента)
Запрос = Новый Запрос();
//Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЮридическоеФизическоеЛицо = &ФизическоеЛицо";
Запрос.Параметры.Вставить("ФизическоеЛицо",ФизическоеЛицо);
ВыборКонтрагента = Запрос.Выполнить().Выбрать();
ПоказатьОшибка: Переменная не определена (ФизическоеЛицо)
2.
Пытался проверить на наличие цифр без запроса:
Контрагент = Объект.Контрагент;
Если Контрагент.УникальныйИдентификатор() = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Контрагент.Наименование, Ложь, "0123456789");
Если Не РезультатПроверкиФЛ Тогда
Сообщить("В наименовании ФЛ недопустимые символы");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Ошибка: Переменная не определена (Объект) Почему? Ведь, судя по форме (см. скриншот) путь прописан правильно.
Прикрепленные файлы:
По теме из базы знаний
- Под капотом управляемых форм
- Программное управление обычными формами документов и справочников в УПП/КА
- 1С СППР, как инструмент по внедрению, разработке и сопровождению информационных систем
- Расширение конфигурации 1С «Выгрузка документов через com-соединение» (УФ)
- Программный интерфейс для доработки форм
Найденные решения
(38)
&НаСервере
Функция ПроверитьЗаполненностьНаСервере(Контрагент, ДоговорКонтрагента)
Отказ = Ложь;
Если Контрагент.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Контрагент.Наименование, Ложь, "0123456789");
Если Не РезультатПроверкиФЛ Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В наименовании ФЛ недопустимые символы";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Спасибо.
Почему в запросе не является тем самым контекстом?
Пробовал через отдельную процедуру, явно указав Документ. Но в этом случае вне контекста оказалось Перечисление
Есть универсальный способ задать контекст?
Почему в запросе
Контрагенты.ЮридическоеФизическоеЛицо = &ФизическоеЛицо
Пробовал через отдельную процедуру, явно указав Документ. Но в этом случае вне контекста оказалось Перечисление
&НаКлиенте
Процедура ДК1_КонтрагентНачалоВыбораПосле(Документ, Отказ)
Контрагент = Документ.Контрагент;
Если Контрагент.Наименование = Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда...
Есть универсальный способ задать контекст?
(14) Тут разговор чуть-чуть про другое. Не важно, какое там значение реквизиты формы. Разговор идёт о том, что при применении директивы &НаСервереБезКонтекста - процедура/функция не имеет никакого представления о форме, а тем более о переменных/реквизитах, которые на ней имеются. Но может принимать на вход простые типы.
(20) Как ему этот совет поможет сравнить ГУИД ссылки Справочника и ссылку Перечисления? Именно это он и пытается сделать в своем коде.
Тут хоть запредопределяйся, но сравнение не будет работать.
// А в другом месте он вообще пытается сравнить перечисление с наименованием, да еще и с ошибкой написанное (там даже до сравнения дело не дойдет, упадет на синтаксисе).
Тут хоть запредопределяйся, но сравнение не будет работать.
// А в другом месте он вообще пытается сравнить перечисление с наименованием, да еще и с ошибкой написанное (там даже до сравнения дело не дойдет, упадет на синтаксисе).
(22) Попытка обратиться непосредственно к перечислениям ни к чему не привела:
Как прописать обращение к перечислению ЮридическоеФизическоеЛицо реквизита справочника Контрагенты?
&НаКлиенте
Процедура ДК1_ПриОткрытииПосле(Отказ)
//Контрагенты = Объект.Контрагент;
//Контрагенты = Метаданные.Документы.РеализацияТоваровУслуг.Реквизиты.Контрагент;
//Контрагенты = Справочники.Контрагенты.ЭтоФизическоеЛицо(Контрагент);
//Контрагенты = Справочники.Контрагенты.
//Контрагенты = Метаданные.Документы.ЗакупкаТоваров.Реквизиты
//Контрагенты = ЭтотОбъект.
//Контрагенты = УправлениеСвойствами.ЗначениеСвойства(Контрагенты, "ЮридическоеФизическоеЛицо");
//Контрагенты = ПеречислениеСсылка.ЮридическоеФизическоеЛицо;
Контрагенты = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
Если Контрагенты = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Объект.Контрагент, Ложь, "-");
Если Не РезультатПроверкиФЛ Тогда
Сообщить("В наименовании ФЛ недопустимые символы");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ПоказатьКак прописать обращение к перечислению ЮридическоеФизическоеЛицо реквизита справочника Контрагенты?
Прикрепленные файлы:
(25) 1. Дружно идём учить доступность менеджеров метаданных в клиент-серверной модели. Проще говоря - смотрим СП.
2. Ты чего проверяешь-то? Те не хочешь обратиться, например, к реквизиту контрагента? Ну к тому самому, который содержит непосредственное значение перечисления? Не? Бред?
2. Ты чего проверяешь-то? Те не хочешь обратиться, например, к реквизиту контрагента? Ну к тому самому, который содержит непосредственное значение перечисления? Не? Бред?
(29) Оказалось, Метаданные недоступны &НаКлиенте.
&НаСервере доступны, но ПредопределенноеЗначение Переменная не определена
Как обратиться к перечислению справочника?
&НаСервере доступны, но ПредопределенноеЗначение Переменная не определена
КонтрагентыФЛ = Метаданные.Справочники.Контрагенты.Реквизиты.ЮридическоеФизическоеЛицо;
Если КонтрагентыФЛ = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
Как обратиться к перечислению справочника?
Прикрепленные файлы:
(31) Почитайте хотя бы Радченко, вопросов будет меньше.
Вы вообще не понимаете что делаете.
Радченко поможет понять основы.
https://its.1c.ru/db/pubdevguide83
Вы вообще не понимаете что делаете.
Радченко поможет понять основы.
(34) Спасибо, вы очень помогли. На Сервере изначально надо было обращаться через метаданные:
Однако далее, при проверке на наличие цифр в наименовании контрагента в документе РеализацияТоваровУслуг, обращение через метаданные не срабатывает:
КонтрагентыФЛ = Метаданные.Справочники.Контрагенты.Реквизиты.ЮридическоеФизическоеЛицо;
Если КонтрагентыФЛ = Метаданные.Перечисления.ЮридическоеФизическоеЛицо.ЗначенияПеречисления.ФизическоеЛицо Тогда
Однако далее, при проверке на наличие цифр в наименовании контрагента в документе РеализацияТоваровУслуг, обращение через метаданные не срабатывает:
РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Метаданные.Документы.РеализацияТоваровУслуг.Реквизиты.Контрагент.Имя, Ложь, "0123456789");
При попытке обратиться из документа РеализацияТоваровУслуг к перечислению &НаКлиенте через ПредопределенноеЗначение
Контрагента видит, а ПредопределенноеЗначение пишет: переменная не определена.
Возможно обратиться из документа в перечисление справочника?
Контрагент = Объект.Контрагент;
Если Контрагент = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
Контрагента видит, а ПредопределенноеЗначение пишет: переменная не определена.
Возможно обратиться из документа в перечисление справочника?
(38)
&НаСервере
Функция ПроверитьЗаполненностьНаСервере(Контрагент, ДоговорКонтрагента)
Отказ = Ложь;
Если Контрагент.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Контрагент.Наименование, Ложь, "0123456789");
Если Не РезультатПроверкиФЛ Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В наименовании ФЛ недопустимые символы";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот