Имя: Пароль:
1C
1С v8
Отказ перед записью регистра накопления
,
0 Domanoff26
 
03.10.11
14:32
Перед записью РН, вывожу процедуру проверки отрицательных остатков, ставлю отказ истина, вывожу сообщение, соообщение выводит и выводит диалог типа регистр не записан и перезапуск предприятия, почему так? и как от этого избавиться?
1 dka80
 
03.10.11
14:33
Отказ работает в предопределенных процедурах
Ты его в каком месте ставишь?
2 butterbean
 
03.10.11
14:34
поставь отказ в обработке проведения
3 Рэйв
 
03.10.11
14:34
(0)вообщето просвященные люди делают проверку остатков ДО движений. И в случае их нехватки до ни х дело и не доходит.Может стоит перенять?
4 Irbis
 
03.10.11
14:36
(3) C недавних пор модно стало делать с точностью до наоборот. Теоретики даже сказали что это лучше.
5 zmaximka
 
03.10.11
14:37
(4) это какие такие теоретики?
6 Domanoff26
 
03.10.11
14:37
(2) запись во внешней обработке делается
(3) так перед записью, разве это не до движений?
7 Fragster
 
гуру
03.10.11
14:37
(3) а вот и нифига
8 Рэйв
 
03.10.11
14:37
(4)Да, мне тоже интересно.
9 Fragster
 
гуру
03.10.11
14:38
(8) это из-за управляемых блокировок - чтобы руками не писать ничего
10 Рэйв
 
03.10.11
14:38
(6)Нет, это ты уже движения сделал и пытаешься их пропихнуть в регистр
11 Domanoff26
 
03.10.11
14:38
(1) СообщитьОбОшибке() - типовая процедурка
12 unregistered
 
03.10.11
14:38
(0) Код давай. ПередЗаписью регистра может вызываться не один раз при проведении документа.
13 Domanoff26
 
03.10.11
14:39
(10) ясненько, а типа ДО движений - это в доке?
14 Рэйв
 
03.10.11
14:40
(13)Ну да.в обработке проведения. Можно сразу в начале процедуры, чтобы далеко не ходить.
15 Domanoff26
 
03.10.11
14:40
процедура проверкаостатков(отказ)
.............
Пока выборка.Следующий() Цикл
       Если Выборка.КоличествоОстаток+Выборка.Количество<0 Тогда
           СтрокаСообщения = "Остатка " +
       УправлениеЗапасами.ПредставлениеНоменклатуры(Выборка.Номенклатура)
        + ", запрашиваемого по документу " + (Выборка.Регистратор) +  " недостаточно." + "Регистр ""Учет товаров"", отрицательные остатки  "
           + ?(ЗначениеЗаполнено(Выборка.Заказ)," ,по заказу " +Выборка.Заказ,"")+?(ЗначениеЗаполнено(Выборка.Размещение)," ,по размещению " + Выборка.Размещение + ".","");

       УправлениеЗапасами.ОшибкаНетОстатка(СтрокаСообщения, Выборка.КоличествоОстаток, Выборка.Количество,
       Выборка.ЕдиницаХраненияОстатковПредставление, Отказ, "Контроль остатков");

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

Процедура ПередЗаписью(Отказ, Замещение)
    ПроверкаОстатков(Отказ);
   
КонецПроцедуры
16 Domanoff26
 
03.10.11
14:41
(12) я не при проведении пишу регистры
17 Domanoff26
 
03.10.11
14:52
УправлениеЗапасами.ОшибкаНетОстатка стандартная
18 unregistered
 
03.10.11
14:54
Смотри отладчиком.
19 Domanoff26
 
03.10.11
15:09
(18) отладчик выходит из процедуры и все....и окно это
20 unregistered
 
03.10.11
15:41
Тогда покажи код обработки (или что там у тебя) откуда инициируется запись регистра. Может ошибка там, а не в регистре...