По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Andy19951005, добрый день!
Если процедура ОбработкаПроверкиЗаполненияНаСервере - предопределенная, то проверьте ее имя.
В форме модуля документа кликните по кнопке выпадающего списка поля "Процедуры и функции". Предопределенные процедуры расположены в конце списка
и начинаются с "<".
Если это процедура, которую добавили сами, проверьте наличие ее вызова и корректность параметров
Если процедура ОбработкаПроверкиЗаполненияНаСервере - предопределенная, то проверьте ее имя.
В форме модуля документа кликните по кнопке выпадающего списка поля "Процедуры и функции". Предопределенные процедуры расположены в конце списка
и начинаются с "<".
Если это процедура, которую добавили сами, проверьте наличие ее вызова и корректность параметров
Написал дальше...
Выдает ошибку
{Документ.ТА_ЗаявкаНаТур.Форма.ФормаДокумента.Форма(2543)}: Ошибка при вызове метода контекста (Удалить)
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
по причине:
Несоответствие типов (параметр номер '1')
Несоответствие типов (параметр номер '1')
Ругается на строку
Почему?
ЭтоУслуга = ПроверяемыеРеквизиты.Найти("ЭтоУслуга");
ПакетныйТур = ПроверяемыеРеквизиты.Найти("ПакетныйТур");
сообщить(ЭтоУслуга);
Если ЗначениеЗаполнено(ЭтоУслуга) Тогда
иначе
Если Не ЗначениеЗаполнено(ПакетныйТур) Тогда
// Если он не заполнен, сообщим об этом пользователю
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан ПакетныйТур!";
Сообщение.Поле = "ПакетныйТур";
Сообщение.Сообщить();
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ПоказатьВыдает ошибку
{Документ.ТА_ЗаявкаНаТур.Форма.ФормаДокумента.Форма(2543)}: Ошибка при вызове метода контекста (Удалить)
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
по причине:
Несоответствие типов (параметр номер '1')
Несоответствие типов (параметр номер '1')
Ругается на строку
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
Почему?
Задачка:
Реквизит "ЭтоУслуга" - тип булево.
Нужно если "ЭтоУслуга" = истина
тогда не проверять заполненость поля "ПакетныйТур"
Если я закоментирую
То выдает ошибку:
{Документ.ТА_ЗаявкаНаТур.Форма.ФормаДокумента.Форма(2534,28)}: Переменная не определена (ЭтоУслуга)
Если Не ЗначениеЗаполнено(<<?>>ЭтоУслуга) Тогда (Проверка: Сервер)
Почему?
Реквизит "ЭтоУслуга" - тип булево.
Нужно если "ЭтоУслуга" = истина
тогда не проверять заполненость поля "ПакетныйТур"
Если я закоментирую
//ЭтоУслуга = ПроверяемыеРеквизиты.Найти("ЭтоУслуга");
То выдает ошибку:
{Документ.ТА_ЗаявкаНаТур.Форма.ФормаДокумента.Форма(2534,28)}: Переменная не определена (ЭтоУслуга)
Если Не ЗначениеЗаполнено(<<?>>ЭтоУслуга) Тогда (Проверка: Сервер)
Почему?
ПакетныйТур = ПроверяемыеРеквизиты.Найти("ПакетныйТур");
///
ПакетныйТур - ссылка на объект, если Найти() отработало положительно
///
.........
.........
Если Не ЗначениеЗаполнено(ПакетныйТур) Тогда
///
ПакетныйТур = неопределено, значит объекта - нет
///
.........
.........
.........
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
ПоказатьЕсли объекта - нет, то будет ругаться на попытку удаления
"ЭтоУслуга" - это реквизит документа - тип "булево" (новый - я добавил).
В процедуре 1С его не видит!
Почему?
Если написать
тогда видит, но тип неопределено.
Как с этим быть?
В процедуре 1С его не видит!
Почему?
Если написать
ЭтоУслуга = ПроверяемыеРеквизиты.Найти("ЭтоУслуга");
тогда видит, но тип неопределено.
Как с этим быть?
"ЭтоУслуга" - это флаг на форме документа
который должен регулировать необходимость проверки заполнения "ПакетныйТур"
который должен регулировать необходимость проверки заполнения "ПакетныйТур"
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ЭтоУслуга = ПроверяемыеРеквизиты.Найти("ЭтоУслуга");
ПакетныйТур = ПроверяемыеРеквизиты.Найти("ПакетныйТур");
Если Не ЗначениеЗаполнено(ЭтоУслуга) Тогда
Если Не ЗначениеЗаполнено(ПакетныйТур) Тогда
// Если он не заполнен, сообщим об этом пользователю
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан ПакетныйТур!";
Сообщение.Поле = "ПакетныйТур";
Сообщение.Сообщить();
Отказ = Истина;
иначе
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ПакетныйТур"));
КонецЕсли;
иначе
Отказ = Ложь;
КонецЕсли;
КонецПроцедуры
Показать
Если пользователь, поставил этот флаг "ЭтоУслуга",
то 1С не должен требовать обязательное заполнение
поля "ПакетныйТур".
а почему просто не решить через видимость объектов "Выбрать пакетный тур", "Пакетный тур" после установки галочки в "ЭтоУслуга" ?
то 1С не должен требовать обязательное заполнение
поля "ПакетныйТур".
а почему просто не решить через видимость объектов "Выбрать пакетный тур", "Пакетный тур" после установки галочки в "ЭтоУслуга" ?
В принципе подойдет.
Подскажите, пожалуйста, как?
Пишу
Как видимость или доступность управлять?
Подскажите, пожалуйста, как?
Пишу
&НаСервере
Процедура ЭтоУслугаПриИзмененииНаСервере()
Если ЭтоУслуга Тогда
объект.ПакетныйТур
КонецЕсли;
КонецПроцедуры
Как видимость или доступность управлять?
Прошу извинить, забыла...
Доступность - аналогично видимости
&НаКлиенте
Процедура ЭтоУслугаПриИзменении()
Если ЭтоУслуга Тогда
Элемент.ПакетныйТур.Видимость = Ложь;
Иначе
Элемент.ПакетныйТур.Видимость = Истина;
КонецЕсли
КонецЕсли;
ПоказатьДоступность - аналогично видимости
Разобрался.
Сделал первое и второе.
Код:
Сделал первое и второе.
Код:
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ПакетныйТур = ПроверяемыеРеквизиты.Найти("ПакетныйТур");
Если объект.ЭтоУслуга = ложь Тогда
Если ПакетныйТур = Неопределено Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан ПакетныйТур!";
Сообщение.Поле = "ПакетныйТур";
Сообщение.Сообщить();
Отказ = Истина;
иначе
ПроверяемыеРеквизиты.Удалить(ПакетныйТур);
КонецЕсли;
иначе
Отказ = Ложь;
КонецЕсли;
КонецПроцедуры
Показать
Добрый день!
Я думаю тоже самое, но более красивее:
Я думаю тоже самое, но более красивее:
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ПакетныйТур = ПроверяемыеРеквизиты.Найти("ПакетныйТур");
Отказ = НЕ объект.ЭтоУслуга;
Если Отказ = ложь Тогда
Если Объект.ПакетныйТур = Неопределено Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан ПакетныйТур!";
Сообщение.Поле = "Объект.ПакетныйТур";
Сообщение.УстановитьДанные(Объект.Ссылка);
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры //ОбработкаПроверкиЗаполненияНаСервере
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот