Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 окт 2024, 23:04

Остановка выполнения при невыполнении условия

Автор serkus, 29 авг 2013, 15:14

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

serkus

Как остановить выполнение заполнения документа если в его ячейках не выполняется условие? То есть есть такая проблема: операторы (кто попало) заносят документы в базу данных 1С 7.7; Подскажите, как остановить ввод данных до исправления ошибки? (до проведения документа). Какую функцию или оператор нужно вставить в модуль проведения документа?

Пример:

Процедура ОбработкаПроведения()
   
   Спр=СоздатьОбъект("Справочник.Пацієнти");
   Спр.НайтиПоКоду(Пацієнт.Код);
   Если Спр.Выбран()=1 Тогда
      _сума=Спр.СВЛфакт+Сума;
      _квр=Спр.КРвідпущених+КілВідРец;
      Если Спр.КРвідпущених<_квр   тогда 
         сообщить ("Количество выданных рецептов превышает превышает выписанные.");
      // ..... что сюда вставить, чтобы работа продолжилась после выполнения условия?
      КонецЕсли;   
      Спр.СВЛфакт=_сума;
      Спр.КРвідпущених=_квр;
      Спр.Записать();
   КонецЕсли;
   
КонецПроцедуры



Herby

СтатусВозврата(0);

Ну а, если честно, то не совсем понятно что вам нужно.


serkus

чтобы при вводе данных оператор мог сразу исправить ошибку и она не перенеслась в справочник
Добавлено: 29 авг 2013, 15:45


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

Процедура ОбработкаПроведения()
   
   Спр=СоздатьОбъект("Справочник.Пацієнти");
   Спр.НайтиПоКоду(Пацієнт.Код);
   Если Спр.Выбран()=1 Тогда
      _сума=Спр.СВЛфакт+Сума;
      _квр=Спр.КРвідпущених+КілВідРец;
      Если Спр.КРвиписаних<_квр   тогда 
         сообщить ("Количество отоваренных рецептов превышает превышает выписанные.");
            // ..... что сюда вставить, чтобы работа продолжилась после выполнения условия?
      КонецЕсли;   
      Спр.СВЛфакт=_сума;
      Спр.КРвідпущених=_квр;
      Спр.Записать();
   КонецЕсли;
   
КонецПроцедуры

Herby

это не в модуле проведения нужно делать.
При вводе данных следует делать проверку.

Или перед проведением или при записи делать проверку, если все нормально - Провести()/записать, иначе не проводим/не записываем.

serkus

А не подскажете? я не очень силен в программировании. Хотя бы набросок проверки ...

Herby

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

Ну а так, достаточно в предопределенную процедуру ПриЗаписи() добавить вашу проверку:


Если ...... (проверка не выполнена) Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;


и тогда у вас документ и не запишется и не проведется.

serkus

Спасибо буду пробовать. Отпишусь завтра.

Теги: остановка 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск