Имя: Пароль:
1C
 
Программное проведение документа
0 ladalk
 
09.03.16
12:44
Добрый день,
программно создаю и провожу документ:

Попытка                 Док.Записать(РежимЗаписиДокумента.Проведение);
Исключение
КонецПопытки;

Проводит. Проводит даже то, что не должен - с пустыми реквизитами или строками. Что делать?
1 Rie
 
09.03.16
12:45
(0) А кто сказал, что не должен проводить с пустыми реквизитами или строками?
2 ladalk
 
09.03.16
12:46
(1) когда вручную провожу - ошибки соответствующие выходят и не проводит. Хотелось бы также
3 aleks_default
 
09.03.16
12:48
(0)Уволить программиста.
4 Rie
 
09.03.16
12:49
(2) Где стоят проверки на пустые строки или реквизиты?
(Ну и так, для общей информации - что за конфигурация, что за документ, какая платформа...)
5 ladalk
 
09.03.16
12:51
(4) Розница 2.1, документ "отчет о розничных продажах",загрузка с рабочих мест кассиров через хмл файлы.
6 FIXXXL
 
09.03.16
12:53
(2) проверки в форме?
7 SadrArt
 
09.03.16
12:54
(0) > Проводит.
Откуда инфа?
8 ladalk
 
09.03.16
12:55
(7) из базы.
9 ladalk
 
09.03.16
12:57
ПроверкаЗаполнения() мне поможет ведь?
10 Одинесю
 
09.03.16
13:00
ОбработкаОбъект.<Имя обработки> (DataProcessorObject.<Имя обработки>)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
Синтаксис:

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

<Отказ>

Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.
<ПроверяемыеРеквизиты>

Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Описание:

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

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

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

// Обходим строки и проверяем заполнение реквизита
Для Индекс = 0 по Товары.Количество()-1 Цикл
    Товар = Товары.Получить(Индекс);
    Если Не ЗначениеЗаполнено(Товары.Товар) Тогда
        Сообщение = Новый СообщениеПользователю();
        Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
        Сообщение.Поле = "Товары[" + Индекс + "].Товар";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецЦикла;
    
КонецПроцедуры
11 ladalk
 
09.03.16
13:01
ПроверитьЗаполнение т.е.)
12 aleks_default
 
09.03.16
14:02
(11) нет, при проведении проверка заполнения итак выполняется
13 drcrasher
 
09.03.16
14:06
предположу, что проведение в режиме обмена данными
14 aleks_default
 
09.03.16
14:10
(11)По-нормальному нужно перетаскивать все проверки из модуля формы в модуль объекта, вот в эту самую процедуру. Ну или у реквизитов документа свойство "Проверка заполнения" выставлять в "выдавать ошибку".
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан