Версия для печати темы (https://pro1c.org.ua/index.php?s=1b2fb6bcbc9f40285a60db32f1dff6a5&showtopic=47430)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Указать 0 в сумме документа

Автор: Alien900 25.08.18, 19:12

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

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

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


Подскажите как заставить платформу принимать 0 в числе, или может подскажет где моя ошибка

Автор: mut 26.08.18, 8:49

Alien900 @ Вчера, 20:12 * ,
В формате поля можно указать представление нуля
ЧН=0

Автор: Alien900 26.08.18, 9:20

mut @ Сегодня, 11:49 * ,
это не помогает. проверял. уже и формат в печатной форме менял. числа сумма не подставляет

Автор: andr_andrey 26.08.18, 15:21

Alien900 @ Вчера, 20:12 * ,
У проверяемых реквизитов объекта должно быть установлено свойство ПроверкаЗаполнения - "Выдавать ошибку"

И вообще:

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

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

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

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

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

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

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

П.С. По-моему, вам не мешало бы чуток поучиться разработке в 1С на курсах или почитать учебники.

Автор: Alien900 26.08.18, 20:57

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua