Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Июн 2021, 15:56
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Не работает двойное условие  (Прочитано 3744 раз)

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

Оффлайн Explorer

  • *
  • Регистрация: 2011-01-17
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 7.7
С бодрым утром.
В форме документа нужно установить обязательность заполнения даты, в зависимости от значения поля ЗаявкаТ. Сделал так в модуле формы:

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Объект.ЗаявкаТ <> Истина и Объект.ДатаО = Неопределено Тогда
Сообщить ("Не заполнено поле Дата окончания тендера", СтатусСообщения.Важное);
ПараметрыЗаписи.Вставить("Ответ","Нет");
Возврат;
КонецЕсли;
КонецПроцедуры

Все равно разрешает записывать с пустой датой. Ошибок не выдает. Сообщить не делает. Как будто проверки вообще нет.

Подскажите?




Оффлайн sertak

  • ****
  • Регистрация: 2013-01-16
  • Сообщений: 346
  • РЕПУТАЦИЯ: 94
  • КПД: 27%
    • Skype: vitaly_sertakov
И Не ЗначениеЗаполнено(Объект. Дата0)

Оффлайн Explorer

  • *
  • Регистрация: 2011-01-17
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 7.7
И Не ЗначениеЗаполнено(Объект. Дата0)
Спасибо!
Теперь хоть ошибку выдает, что поле объекта не обнаружено, но все равно проводит и записывает.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • *****
  • Регистрация: 2010-11-06
  • Сообщений: 5748
  • РЕПУТАЦИЯ: 1105
  • КПД: 19%
  • Красная армия всех сильней!
    • Skype: cska-fanat-kz81
  • Профессия: Разработчик 1С
канонически...
надо установить у реквизита Дата0 проверку в "Выдавать ошибку"
и в ОбработкеПроверкиЗаполнения() в модуле объекта проверять реквизит ЗаявкаТ и при соответствующем условии исключать реквизит Дата0 из списка проверяемых.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Explorer

  • *
  • Регистрация: 2011-01-17
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 7.7
канонически...
надо установить у реквизита Дата0 проверку в "Выдавать ошибку"
и в ОбработкеПроверкиЗаполнения() в модуле объекта проверять реквизит ЗаявкаТ и при соответствующем условии исключать реквизит Дата0 из списка проверяемых.

ОбработкаПроверкиЗаполненияНаСервере ?
Добавлено: 29 Ноя 2016, 07:52

канонически...
надо установить у реквизита Дата0 проверку в "Выдавать ошибку"
и в ОбработкеПроверкиЗаполнения() в модуле объекта проверять реквизит ЗаявкаТ и при соответствующем условии исключать реквизит Дата0 из списка проверяемых.

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

При выполнении пишет

{Документ.Документ1.Форма.ФормаДокумента.Форма(77)}: Ошибка при вызове метода контекста (Удалить)
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Дата0"));
по причине:
Несоответствие типов (параметр номер '1')

Последний раз редактировалось: Explorer; 29 Ноя 2016, 07:52. Причина: Объединение сообщений

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • *****
  • Регистрация: 2010-11-06
  • Сообщений: 5748
  • РЕПУТАЦИЯ: 1105
  • КПД: 19%
  • Красная армия всех сильней!
    • Skype: cska-fanat-kz81
  • Профессия: Разработчик 1С
ОбработкаПроверкиЗаполненияНаСервере() - это на форме
по идее можно и так, но обычно в модуле объекта.

значит по идее в проверяемых реквизитах не находит,
отлаживай, смотри что внутри ПроверяемыеРеквизиты...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Explorer

  • *
  • Регистрация: 2011-01-17
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 7.7
ОбработкаПроверкиЗаполненияНаСервере() - это на форме
по идее можно и так, но обычно в модуле объекта.

значит по идее в проверяемых реквизитах не находит,
отлаживай, смотри что внутри ПроверяемыеРеквизиты...

Уже прямо написал

ПроверяемыеРеквизиты.Удалить("ДатаО");

Добавил

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

Сообщает 01.01.0001 0:00:00 и

Все равно
Несоответствие типов (параметр номер '1')

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • *****
  • Регистрация: 2010-11-06
  • Сообщений: 5748
  • РЕПУТАЦИЯ: 1105
  • КПД: 19%
  • Красная армия всех сильней!
    • Skype: cska-fanat-kz81
  • Профессия: Разработчик 1С
да правильно пишет!

ПроверяемыеРеквизиты.Удалить("ДатаО")

ПроверяемыеРеквизиты - это массив, его метод Удалить() требует параметр типа ЧИСЛО - индекс удаляемого элемента.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Explorer

  • *
  • Регистрация: 2011-01-17
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 7.7
да правильно пишет!

ПроверяемыеРеквизиты.Удалить("ДатаО")

ПроверяемыеРеквизиты - это массив, его метод Удалить() требует параметр типа ЧИСЛО - индекс удаляемого элемента.

И как быть?
Добавлено: 30 Ноя 2016, 07:29

Сделал вот так:

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Если Объект.ЗаявкаТ <> Истина И Не ЗначениеЗаполнено(Объект.ДатаО) Тогда
        Сообщить ("Не заполнено поле Дата окончания тендера", СтатусСообщения.Важное);
Отказ = Истина;
        Возврат;
КонецЕсли;
КонецПроцедуры

Работает.
Добавлено: 30 Ноя 2016, 07:32

Ставлю далее следующее условие не работает:

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Если Объект.ЗаявкаТ <> Истина И Не ЗначениеЗаполнено(Объект.ДатаО) Тогда
        Сообщить ("Не заполнено поле Дата окончания тендера", СтатусСообщения.Важное);
Отказ = Истина;
        Возврат;
КонецЕсли;
Если Объект.Результат = "Отказ" И Не ЗначениеЗаполнено(Объект.ПричинаО) Тогда
        Сообщить ("Не заполнено поле Причина отказа", СтатусСообщения.Важное);
Отказ = Истина;
        Возврат;
КонецЕсли;
КонецПроцедуры

Если написать
Сообщить (Объект.Результат)
, то слово "Отказ" выводит.
Добавлено: 30 Ноя 2016, 08:43

Возможно дело в Объект.Результат = "Отказ"  ?
реквизит Результат выбирается из справочника Результат. Значение "Отказ" там есть, может синтаксис?
Добавлено: 30 Ноя 2016, 11:49

Всё заработало! Всем спасибо!
Дело было в синтаксисе. Необходимо было использовать Строка(Объект.Результат) = "Отказ"

Последний раз редактировалось: Explorer; 30 Ноя 2016, 11:49. Причина: Объединение сообщений

Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
Объект.Результат

какого типа?
пробуй
Если Строка(Объект.Результат) = "Отказ" И Не ЗначениеЗаполнено(Объект.ПричинаО) Тогда
Добавлено: 30 Ноя 2016, 18:02

или Объект.Результат может быть с пробелами.
Спасибо за Сказать спасибо


 

РИБ: не работает автоматический обмен

Автор rusromaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 22817
Последний ответ 10 Апр 2012, 14:31
от rusroma
ФиксацияСлева в веб-клиенте не работает

Автор Серёга ГордеевРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 270
Последний ответ 30 Сен 2019, 11:41
от Серёга Гордеев
Почему моя программа работает о-о-очень долго???

Автор РексарычРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1217
Последний ответ 20 Мая 2016, 15:52
от Rasty
Неправильно работает отбор по дате в методе ПолучитьЗаголовки интеренет почты (MS Exchange)

Автор MaximBРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 1336
Последний ответ 20 Фев 2017, 09:45
от MaximB
Не работает запрос

Автор John_ConnorРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 2291
Последний ответ 13 Янв 2014, 09:12
от andryscha92

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
LexaK
68 Сообщений
antoneus antoneus
33 Сообщений
Ивашка
27 Сообщений
neek666
26 Сообщений
KATERINA 861
19 Сообщений
SSC
15 Сообщений
Алексей_1985_06
15 Сообщений
alexandr_ll
14 Сообщений
BuhRust
8 Сообщений

* Кто онлайн

  • Точка Гостей: 608
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск