Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2025, 11:29

Условие в ТЗ

Автор SkyNetYar, 04 дек 2015, 10:44

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

SkyNetYar

Добрый день! УТ 11.1.10 (8.3.7)
Обработка.На форме ТЗ(Колонки) с колонкой (ИмяРеквизита),заполняется пользователем из Метаданных справочника номенклатура конфигурации.
Необходимо перед выполнением обработки проверить эту ТЗ на присутствие в них определенных метаданных,если их нет то прервать обработку и сообщить пользователю.
В процедуре на клиенте перед выполнением

Если Колонки.ИмяРеквизита.ТУТ НЕЗНАЮ ЧТО = Пустая() Тогда
    Предупреждение(НСтр("ru = 'Не выбран товар!';"),60);
    Возврат;
КонецЕсли;

Подскажите пожалуйста..

Vladimir_Sh

SkyNetYar, метаданные это описание объекта конфигурации. Может все же Вы хотите проверять на заполненность значения?
Если действительно нужна проверка на метаданные, то в СП почитайте про метод Найти() для колонок ТЗ.
Если я Вам помог, нажми - Спасибо!

SkyNetYar

ПриСозданииНаСервере()
мРеквизиты = Новый Массив;
мРеквизиты.Добавить("Наименование");
Для Каждого Реквизит из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
мРеквизиты.Добавить(Реквизит.Синоним);
КонецЦикла;

И мне бы проверить внес ли в ТЗ пользователь "Наименование" или нет

Пробую так
ЭлементСписка = Колонки.ИмяРеквизита.Найти("Наименование");
    Если ЭлементСписка <> Неопределено Тогда
Сообщить("Нет наименования");
    КонецЕсли;

Пишет поле объекта ИмяРеквизита не найдено..

Vladimir_Sh

SkyNetYar, Вы добавляете реквизит формы и ищите тогда тоже его. Тот же метод Найти() но уже для элементов формы. Попробуйте что-то наподобие Элементы.Найти("Наименование")
Если я Вам помог, нажми - Спасибо!

SkyNetYar

Нет что то не выходит и я запутался весь. :(
Вот на скрине видно всю структуру моей обработки, но как мне найти и проверить в этом реквизите формы или в ТЗ.Колонки мое "Наименование" ???
Добавлено: 04 дек 2015, 12:42


Сделал Вызов процедуры на сервере Проверка()
ТЗ = РеквизитФормыВЗначение("Колонки");
Если ТЗ.Найти("Наименование") = Неопределено Тогда
Сообщить("НЕТ");
Возврат;
КонецЕсли;

Работает,но Процедура не прерывается,выводит сообщение и продолжает работать, как остановить?

cska-fanat-kz

колонка ИмяРеквизита готов поспорить типа Строка.
вам надо проверить, есть ли в какой-то строке значение "Наименование".
ну так
    НайденнаяСтрока = ТЧ.Найти("Наименование","ИмяРеквизита");
    Если НайденнаяСтрока = Неопределено ТОгда // не нашли...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

SkyNetYar

{Форма.Форма.Форма(134)}: Метод объекта не обнаружен (Найти)
   НайденнаяСтрока = Колонки.Найти("Наименование","ИмяРеквизита");

Да,строка.

мРеквизиты = Новый Массив;
мРеквизиты.Добавить("Наименование");
Для Каждого Реквизит из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
мРеквизиты.Добавить(Реквизит.Синоним);
КонецЦикла;
Элементы.КолонкиИмяРеквизита.СписокВыбора.ЗагрузитьЗначения(мРеквизиты);
Элементы.КолонкиИмяРеквизита.РежимВыбораИзСписка = Истина;
Элементы.КолонкиИмяРеквизита.КнопкаВыбора = Истина;
Если Колонки.Количество() < 1 Тогда
СтрокаТЗ = Колонки.Добавить();
СтрокаТЗ.ИмяРеквизита = "Наименование";

КонецЕсли;

Добавлено: 04 дек 2015, 14:18


Делаю так
&НаСервере
Процедура Проверка()
КолонкиФ=Колонки.Выгрузить();
НайденнаяСтрока = КолонкиФ.Найти("Наименование","ИмяРеквизита");
    Если НайденнаяСтрока = Неопределено Тогда // не нашли...
Сообщить("НЕТ");
Возврат;
КонецЕсли;
КонецПроцедуры

Все как бы срабатывает,но процедура не прерывается,продолжает выполнятся,как остановить?

Теги:

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

Рейтинг@Mail.ru

Поиск