Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Указать 0 в сумме документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Alien900
ДОброго времени суток.
имеется Авансовый отчет, вкладка прочее. в сумму реквизита нужно иногда ставить 0, платформа (8.3.10.2299)
пробовал делать составной тип указывать, строка+число, выдает ошибку, тип строка 0 дает писать но это не числа, в печатной форме проблемы, печатную форму подправил но не всю, есть места где не выводятся числа.
в реквизите отключал проверку заполненного, не помогает. пытаюсь отключить программно, но никак не могу заставить работать ОбработкаПроверкиЗаполнения, отладчик не ловит мой код

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

Отказ = Истина;
    КонецЕсли;
КонецПроцедуры


Подскажите как заставить платформу принимать 0 в числе, или может подскажет где моя ошибка
mut
Alien900 @ Вчера, 20:12 необходимо зарегистрироваться для просмотра ссылки ,
В формате поля можно указать представление нуля
ЧН=0
Alien900
mut @ Сегодня, 11:49 необходимо зарегистрироваться для просмотра ссылки ,
это не помогает. проверял. уже и формат в печатной форме менял. числа сумма не подставляет
andr_andrey
Alien900 @ Вчера, 20:12 необходимо зарегистрироваться для просмотра ссылки ,
У проверяемых реквизитов объекта должно быть установлено свойство ПроверкаЗаполнения - "Выдавать ошибку"

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

Надеюсь реквизит в документе не называется "Сумма", иначе присваивание с вызовом функции "Найти" затирает значение там хранящееся.
Процедура "Сообщить" будет вызываться всегда, и выводить сообщение "Сумма не заполнена".
Вызов процедуры сообщить должен сопровождаться ошибкой "Ошибка при вызове метода контекста (Сообщить)", так как "СтатусСообщения = Истина", надеюсь вы не хотите всех тут присутствующих ввести в заблуждение о том, что это якобы работающий код?

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

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

        Отказ = Истина;
    КонецЕсли;

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

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

П.С. По-моему, вам не мешало бы чуток поучиться разработке в 1С на курсах или почитать учебники.
Alien900
andr_andrey @ Сегодня, 18:21 необходимо зарегистрироваться для просмотра ссылки ,
с сообщениями разобрался. а вообще все это не правильно делал 09000000.gif не стоит изменять заполнение суммы в авансовом отчете. лучше будет добавить свой реквизит миную суммы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.