1с как программно убрать проверку заполнения реквизита

9 / 9 / 0

Регистрация: 01.06.2015

Сообщений: 45

1

Снять проверку заполнения программно

01.03.2018, 17:40. Показов 33652. Ответов 4


Возникли проблемы.
Имеется форма документа с двумя реквизитами, в одном указывается тип лица (тип ссылка перечисление) и второй платеж (тип ссылка справочник). У поля платеж стоит проверка заполнения- выдавать ошибку. Как сделать что если у поля тип лица стоит значение «физическое лицо» то в поле платеж проверка заполнения становилась — не проверять? т.е необходимо снять проверку заполнения в зависимости от значения другого поля.
Не получается с кодом. Помогите пожалуйста.



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

01.03.2018, 23:11

2

AleXadr999, какая конфигурация?
Чаще всего проверка заполнения реализована не в свойствах реквизита, а как раз в коде.
Посмотрите процедуры ОбработкаПроверкиЗаполнения(), ПередЗаписью(), например.



0



9 / 9 / 0

Регистрация: 01.06.2015

Сообщений: 45

02.03.2018, 06:22

 [ТС]

3

Цитата
Сообщение от GreenkA
Посмотреть сообщение

AleXadr999, какая конфигурация?
Чаще всего проверка заполнения реализована не в свойствах реквизита, а как раз в коде.
Посмотрите процедуры ОбработкаПроверкиЗаполнения(), ПередЗаписью(), например.

1С:Предприятие 8.3 (8.3.10.2667) Лицензия
Да я знаю что такие процедуры есть , только как кодом это отобразить.В том то и дело никак не выходит.Через условное оформление пробовал. Не работает, хотя подчеркивает строку.
Вот и прошу помочь с кодом.



0



Dethmontt

Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

02.03.2018, 14:15

4

Лучший ответ Сообщение было отмечено AleXadr999 как решение

Решение

1C
1
2
3
4
5
6
7
8
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
   Если ТипЛица = ФизическоеЛицо Тогда
        н = ПроверяемыеРеквизиты.Найти("Платеж"); 
        Если н <> неопределено Тогда
             ПроверяемыеРеквизиты.Удалить(н);
        КонецЕсли;
   КонецЕсли;
КонецПроцедуры



2



9 / 9 / 0

Регистрация: 01.06.2015

Сообщений: 45

02.03.2018, 14:53

 [ТС]

5

Большое спасибо.
Все заработало.Выручили очень)))



0



  Маркет42 - Место для твоих разработок  

Программная отмена проверки заполнения реквизита

Я
   букашка

25.06.13 — 15:33

Здравствуйте!

Есть на форме реквизит, у которого установлено значение «Проверка заполнения» -> «Выдать ошибку»

Как программно изменить эту настройку, чтобы можно было скрыть объект и он не ругался на незаполненное поле.

Простой вопрос, но у меня мало времени, чтобы самой разбираться… Вот и прошу вашей помощи.

  

Партнерская программа EFSOL Oblako

   Mitriy

1 — 25.06.13 — 15:35

в обработчике модуля объекта удалить реквизит из ПроверяемыеРеквизиты…

   Mitriy

2 — 25.06.13 — 15:35

в УниверсальныеПодборИОбработкаОбъектов

   Mitriy

3 — 25.06.13 — 15:36

тьфу ты, не то скопипастил… ОбработкаПроверкиЗаполнения

   Mitriy

4 — 25.06.13 — 15:38

или в модуле формы ОбработкаПроверкиЗаполненияНаСервере, если выдать ошибку выбрано у реквизита формы…

   букашка

5 — 25.06.13 — 15:40

мне не нужно его совсем удалять, мне нужно скрыть от пользователя этот реквизит, а если понадобиться снова дать доступ и проверку заполнения вернуть

   Mitriy

6 — 25.06.13 — 15:44

(5) в обработке проверки заполнения анализируй, надо проверять или не надо, и действуй соответствующе…

  

букашка

7 — 25.06.13 — 16:12

спасибо, разобралась!!!

TurboConf — расширение возможностей Конфигуратора 1С

Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта. Для этого нужно воспользоваться свойством ПроверкаЗаполнения, которое есть у реквизитов объектов конфигурации.

Если установить это свойство в значение «Выдавать ошибку», поле Поставщик в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.

Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:

  • Одно событие — ОбработкаПроверкиЗаполненияНаСервере — можно обработать в модуле формы.
  • Другое событие — ОбработкаПроверкиЗаполнения — можно обработать в модуле прикладного объекта.

У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:

Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.

Напротив, событие объекта ОбработкаПроверкиЗаполнения предназначено для для того, чтобы проверить реквизиты основного реквизита формы.

Обработчики обеих событий имеют параметр ПроверяемыеРеквизиты, в который платформа передает массив имен тех реквизитов, которые подлежат проверке. Если после выхода из обработчика в этом массиве все еще останутся какие-то имена реквизитов — платформа выполнит автоматическую проверку оставшися реквизитов.

Поэтому существует несколько сценариев того, как разработчик может встроить свой алгоритм в механизм проверки заполнения:

  • самостоятельно проверить заполненность всех реквизитов и очистить массив ПроверяемыеРеквизиты, чтобы платформа не выполняла их проверку
  • проверить часть реквизитов самостоятельно, удалить их из массива ПроверяемыеРеквизиты, а оставшиеся оставить на проверку платформе
  • добавить в массив ПроверяемыеРеквизиты какие-то реквизиты, чтобы платформа проверила и их тоже
  • вообще отказаться от проверки заполненности реквизитов, очистив массив

Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:

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

// Проверка остальных реквизитов
// ..........

// Очистить массив проверяемых реквизитов, чтобы платформа
// не выполняла их автоматическую проверку
ПроверяемыеРеквизиты.Очистить(); 

Чтобы проверить лишь часть реквизитов, можно выполнить такой код:

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

Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:

ПроверяемыеРеквизиты.Добавить("Комментарий");

А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:

ПроверяемыеРеквизиты.Очистить();

Вторым параметром в обработчиках этих событий является параметр Отказ. Если ему присвоить значение Истина, то после выхода из обработчика дальнейшая запись объекта будет отменена. Таким образом этот параметр нужно устанавливать в значение Истина тогда, когда ваш алгоритм приходит к выводу, что реквизит не заполнен. В этом случае запись объекта выполнена не будет.

Справка

ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
  • Отказ. Тип: Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет. Значение по умолчанию Ложь.
  • ПроверяемыеРеквизиты. Тип: Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.

Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение(). Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.

Позволяет разработчику самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.

Для формы документа, если при конфигурировании для документа свойство Проведение установлено в Разрешить, событие вызывается только при проведении. Если документ не проводится (свойство Проведение установлено в Запретить), то вызывается при записи.

ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
  • Отказ. Тип: Булево. Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчанию Ложь.
  • ПроверяемыеРеквизиты. Тип: Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.

Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение(). Если для документа при конфигурировании свойство Проведение установлено в Разрешить, то вызывается только при проведении. Если документ не проводится (установлено Запретить), то вызывается при записи.

Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    // Проверим заполненность реквизита «Покупатель»
    Покупатель = ПроверяемыеРеквизиты.Найти("Покупатель");

    Если Не ЗначениеЗаполнено(Покупатель) Тогда
        
        // Если он не заполнен, сообщим об этом пользователю
        Сообщение = Новый СообщениеПользователю();
        Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
        Сообщение.Поле = "Покупатель";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
            
        // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель»
        ПроверяемыеРеквизиты.Удалить(Покупатель);

        // Так как информация не консистентна, то продолжать работу дальше смысла нет
        Отказ = Истина;
            
    КонецЕсли;

    // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары»
    ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));

    // Обходим строки и проверяем заполнение реквизита
    Для Индекс = 0 По Товары.Количество()-1 Цикл
        СтрокаТовар = Товары.Получить(Индекс);
        Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
            Сообщение.Поле = "Товары[" + Индекс + "].Товар";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            Отказ = Истина;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Поиск:
1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма

В этой статье я рассмотрю основные механизмы платформы 1С 8.3, которые обеспечивают проверку заполнения реквизитов.

Проверка заполнения реквизита объекта 1С

У любого реквизита объекта 1С можно настроить проверку заполнения, когда нельзя сохранить новый элемент объекта, не заполнив этот реквизит. Выйдет ошибка.

Для того, чтобы у реквизита объекта осуществлялась проверка заполнения, достаточно в свойстве реквизита «Проверка заполнения» указать значение «Выдавать ошибку».

Проверка заполнения реквизита объекта 1С

При таком конфигурировании реквизита, если это реквизит не заполнен, то при попытке записи элемента, выйдет соответствующая ошибка, и запись элемента не будет осуществлена.

Проверка заполнения реквизита объекта 1С

Данная проверка будет осуществляться независимо от того, сгенерирована эта форма платформой 1С 8.3 автоматически, или используется форма созданная разработчиком.

Проверка заполнения табличной части в 1С

Помимо реквизитов у объектов можно проверять заполнение табличной части.  Для этого у табличных частей объектов имеется свойство «Проверка заполнения», в которое также необходимо установить значение «Выдавать ошибку».

Проверка заполнения табличной части в 1С

Если в этом случае мы попытаемся записать элемент, в котором будет табличная часть без строк, то выйдет ошибка, и записать элемент не получится.

Проверка заполнения табличной части в 1С

В тоже время, мы спокойно сможем записать элемент, у которого имеется строка табличной части с пустыми полями.

Проверка заполнения табличной части в 1С

Если мы хотим проверять реквизиты табличной части, то у них нужно заполнить аналогичное свойство.

Проверка заполнения программно в 1С

Иногда возникает необходимость проверить программно заполнение объекта в 1С. Для этих целей предназначен метод ПроверитьЗаполнение(), который имеется у большинства объектов 1С (справочники, документы и т.д.).

Например, во время программного создания элемента справочника, мы можем проверить заполнение реквизитов этого справочника, перед его записью.

НовОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НовОбъект.Наименование = "Товар";
Если НовОбъект.ПроверитьЗаполнение() Тогда
    НовОбъект.Записать();
КонецЕсли;

В этом случае, элемент справочника не будет записан, если у него имеются реквизиты, у которых в свойстве ПроверкаЗаполнения установлено значение «Выдавать ошибку».

Иногда, нужно проверить заполнение реквизита, у которого в свойстве «Проверка заполнения» установлено значение «Не проверять».  Например, у реквизита Артикул справочника Номенклатура.

Проверка заполнения программно в 1С

Если нам нужно осуществлять проверку этого реквизита (например, по какой-то определенной логике), то необходимо в модуле объекта создать метод  ОбработкаПроверкиЗаполнения.

ОбработкаПроверкиЗаполнения в 1С

ОбработкаПроверкиЗаполнения в 1С

У этого метода, который является процедурой, имеется параметр ПроверяемыеРеквизиты. Этот параметр массив, в котором содержится список имен реквизитов, которые нужно проверять. Если в этот список мы добавим название реквизита, то при сохранении элемента будет осуществляться проверка на то, заполнен этот реквизит или нет.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    ПроверяемыеРеквизиты.Добавить("Артикул");
КонецПроцедуры
Проверка заполнения программно в 1С

Также, мы можем удалить реквизит из проверяемых, если по какой-то причине нет необходимости в проверке заполнения этого реквизита.

Например, удалим из проверяемых реквизит ПолноеНаименование.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Индекс = ПроверяемыеРеквизиты.Найти("ПолноеНаименование");

    Если Индекс <> 0 Тогда
        ПроверяемыеРеквизиты.Удалить(Индекс);
    КонецЕсли;

КонецПроцедуры

Тогда мы сможем спокойно записать элемент с незаполненным реквизитом ПолноеНаименование.

Проверка заполнения программно в 1С

Если мы хотим проверить программно, что заполнен реквизит табличной части объекта, то необходимо добавить этот реквизит в массив ПроверяемыеРеквизиты по такому формату: [НазваниеТабличнойЧасти].[НазваниеРеквизита] .

Например:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    ПроверяемыеРеквизиты.Добавить("СписокСвойств.НазваниеСвойства");

КонецПроцедуры

В этом случае, будет осуществляться проверка заполнения реквизита табличной части.

Проверка заполнения программно в 1С

Проверка заполнения формы 1С

Иногда нужно проверить заполнение реквизитов формы.  Разберем небольшую задачу: будем на форме умножать два числа друг на друга, если они заполнены. Создадим на форме реквизиты  с типом Число — Множитель1, Множитель2 и Сумма. У реквизитов Множитель1 и Множитель2 установим в свойство «Проверка заполнения» значение «Выдавать ошибку».

Проверка заполнения реквизита объекта 1С

При выполнении команды Посчитать, произведем расчет только в том случае, если реквизиты заполнены.  Проверку заполнения будем выполнять при помощи метода ПроверитьЗаполнение.

&НаКлиенте
Процедура Посчитать(Команда)

    Если ПроверитьЗаполнение() Тогда

        Сумма = Множетель1 * Множетель2;

    КонецЕсли;

КонецПроцедуры

Теперь мы не сможем посчитать сумму, если один из множителей не заполнен.

Проверка заполнения реквизита объекта 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Подскажите, кто знает, как отключить проверку заполнения реквизита в документе? Конкретно: надо, чтобы документ проводился и с нулевым количеством.

если программно, то для Объекта попробуй Загрузка=Истина

если программно проверяется, то закомментировать кусок проверки, а если нет, то в свойствах реквизита галка вроде есть по проверке заполнения.

А фото в профиле не заполнено…

при проведении, бывает, заполняется СтруктураОбязательныхПараметров (или что-то похожее). Если есть такое, можно оттуда нужное поле убрать

по галке он просто цветом красит

, — а где это искать? У меня УПП 8.1

в обработке проведения скорее всего. не помню точнее

+ но начинать надо с обработки проведения

К сожалению, ничего не получилось. Может, этого и нельзя сделать?

Конечно нельзя! Дело в том что 1с система где нечего нельзя сделать,а программист 1с это люди которые нечего не делают, только делают вид что работают и получают ЗП

у меня вот тоже фотка не выкладывается… какие трудности? с «ничего не получилось»?

В модуле документа «ПоступлениеТоваровУслуг» в процедуре «ПроверитьЗаполнениеТабличнойЧастиТовары(ТаблицаПоТоварам, СтруктураШапкиДокумента, Отказ, Заголовок)» закомментировала строку: ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, «Товары», СтруктураОбязательныхПолей, Отказ, Заголовок); Все равно выдает ошибку: Не заполнена колонка «Количество» в строке 1 списка «Товары».

Омг… Девушка, кто вас допустил к УПП и зачем вам поступление нуля единиц чего-либо? З.Ы. Бех фото не взлетит…

Давайте пример, возможно ваша задача реализуется как-то иначе… Я не могу понять как может поступить 0 палочек для суши

Вы наверное какие допуслуги пытаетесь оприходовать? Или увеличить стоимость пришедшего товара?

смотря каких. Ты про какие пытался понять, про китайские или японские? ЗЫ: бред, не нужно 0 приходовать.

СтруктураОбязательныхПолей — вот это где присваивается? найдите это место и комментарии, думаю, станут излишни. Как дальше жить с нулевым количеством, решайте сами. С Вас 500 рублей или одно фото ;)

Тэги: Математика и алгоритмы

Комментарии доступны только авторизированным пользователям

Доброго дня, коллеги!

Далеко не все свойства реквизитов документа являются расширяемыми. В качестве альтернативного варианта можно рассмотреть программное изменение значений свойств в расширении. Именно такой вариант тренер предложил слушателю в рамках темы “Доработка управляемых форм в расширениях” курса «Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки».

Вопрос

Здравствуйте, вопрос следующий. В документе в табличной части есть реквизит Характеристика со свойством “Проверка заполнения”, значение которого установлено как “Выдавать ошибку”. Перенес этот реквизит в расширение, но свойства этого реквизита не доступны для редактирования. Хотел для него в расширении проставить значение “Не проверять”.

Ответ

Добрый день! Вы не сможете поменять свойство “Проверка заполнения” в расширении у заимствованного реквизита, но можете изменить обработку ОбработкаПроверкиЗаполнения() в модуле объекта через расширение, так чтобы реквизит, даже не заимствованный, не проверялся. Вот пример кода:

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

  1. Здравствуйте.
    1С:Предприятие 8.2 (8.2.19.68)
    Управление торговлей, редакция 11.1 (11.1.2.10)

    У справочника «Партнеры» есть форма «ПомощникНового» (Помощник регистрации нового партнера). Она открывается, когда нажимаешь на кнопку «Создать», в форме списка партнера. На форме «ПомощникНового» есть реквизит «АдресЭППартнера» (E-mail партнера), его свойство «Проверка заполнения = Неопределено» .
    На элементе управления (АдресЭППартнераТолькоПартнеры) для реквизита «АдресЭППартнера», свойство АвтоОтметкаНезаполненного = Ложь (изменил типовую, раньше стояло Неопределено)».
    Но почему-то, когда в режиме 1с Предприятие я открываю форму «Помощник регистрации нового партнера» этот реквизит (АдресЭППартнера) становится обязательным к заполнению (подчеркнут красной линией).
    Вопросы:
    1. Как убрать подчеркивание. Смотрел отладчиком процедуру обработчик события «При открытии», на последней строке процедуры смотрел отладчиком Элементы.АдресЭППартнераТолькоПартнеры.АвтоОтметкаНезаполненного = Ложь
    А где свойство-падла в Истину тогда свойство устанавливается? И тут я подумал, а может ка-то программно для реквизита формы «АдресЭППартнера» свойство «Проверка заполнения» ставится в значение «Проверять». Однако это врятли, я даже уверен, это не так, если бы было значение «Проверять», тогда разработчики УТ не делали такую проверку:

    Если ПустаяСтрока(АдресЭППартнера) И ПустаяСтрока(ТелефонПартнера) Тогда
    Если (УказатьДанныеКонтактногоЛица И ЭтоКомпания = 0) Тогда
    
    Если ПустаяСтрока(ТелефонКЛ) И ПустаяСтрока(МобильныйТелефонКЛ) И ПустаяСтрока(АдресЭПКЛ) Тогда
    
    ВывестиСообщениеПользователю(НСтр("ru = 'Необходимо указать хотя бы одно значение контактной информации'"),"АдресЭППартнера");
    Отказ = Истина;
    
    КонецЕсли;
    
    Иначе
    

    Я до нее отладчиком дошел именно на этом месте ругается — мол вы не заполнили.

    2. Как в отладчике посмотреть значения свойств реквизита формы? Вот, например, в процедуре «При открытии/При создании на сервере» смотрю отладчиком реквизит формы «АдресЭППартнера», отладчик мне не показывает свойства реквизита например (Проверка заполнения или АдресЭППартнера), он показывает мне только значение (Строка), «плюсика» нет.

  2. Вот еще, что нашел

    &НаКлиенте
    Процедура АдресЭППартнераПриИзменении(Элемент)
    ОтключитьОтметкуНезаполненного();
    КонецПроцедуры
    

    Смотрю в синтаксис момощнике:
    Синтаксис:
    ОтключитьОтметкуНезаполненного()

    Описание:
    Снимает свойство ОтметкаНезаполненного у всех полей, у которых свойство АвтоОтметкаНезаполненного = Ложь.

    У всех полей на форме?
    Что значит снимает свойство?
    И главное — у которых свойство АвтоОтметкаНезаполненного = Ложь, что -то я не понял — а какого хера его снимать если оно уже Ложь :topor:

  3. Спасибо ответ на вопрос 1:
    Нашел. Это Условное оформление у формы.

  4. Спасибо, что дочитали до конца. Хотя получается зря :( я уже разобрался. Ну хоть анекдот напишу что ли:


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Понравилась статья? Поделить с друзьями:
  • 1с основное представление справочника в виде реквизита
  • 1с получить значение дополнительного реквизита объекта
  • 1с проверка на существование реквизита табличной части
  • 1с программное изменение проверки заполнения реквизита
  • 1с расширение добавление реквизитов в регистр сведений