Имя: Пароль:
1C
1С v8
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров
0 tylerkiss
 
17.10.16
06:00
Добрый день!
В типовых конфигурациях (у меня УПП для Казахстана ред. 1.3, версия 1.3.2.4) есть процедура общего модуля "УправлениеЗапасамиПартионныйУчет"
ДвижениеПартийТоваров(ОбрабатываемыйДокумент, ТаблицаСписания = Неопределено, КоличествоСтрокВДокументе = 0, Упр = Истина, Бух = Истина, Нал = Истина, Останавливаться = Ложь, ПроведениеОстановлено = Ложь, ДокументМоментВремени = Неопределено, СписаниеВыполняетсяОбработкой = Ложь, СтруктураНаборовЗаписей = Неопределено) Экспорт

Процедура вызывается при обработке проведения, например, документов списания. При этом вызов выглядит так:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить());

В случае нехватки партий выдается сообщение, о том, что недостаточно количества для списания и ПРОВЕДЕНИЕ ПО ПАРТИЯМ ОСТАНОВЛЕНО.
Однако, документ становится проведенным. Сообщение зачастую игнорируется ("документ же проведен"). Последствия, сами понимаете, какие.
Было решено использовать параметр указанной процедуры ПроведениеОстановлено, который в случает нехватки партий принимает значение Истина. Вызов процедуры стал выглядеть так:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить(),,,,,, Отказ);
Теперь при нехватке партий выдается сообщение, и документ остается не проведенным, также выводится предупреждение об отмене проведения документа, игнорировать которое невозможно.
Казалось бы, проблема решена. Однако, при запуске Восстановления последовательностей обработка прерывается на первом документе с ошибками из-за вышеуказанной доработки.
Вопрос: как разделить два этих способа проведения - непосредственное проведение документа и восстановление последовательности? Заинтересовал параметр СписаниеВыполняетсяОбработкой, но, вроде он не про то, хотя, я так и не понял, для чего он нужен.
Прошу помочь, кто решал такую задачу?
Заранее спасибо!
1 Peltzer
 
17.10.16
06:23
Разделите условной конструкцией #НаСервере, чтобы выделить неинтерактивное проведение.
2 Defender aka LINN
 
17.10.16
07:15
(1) Проведение по партиям и так происходит на сервере. По крайней мере, в российской УТ10 так.
(0) "обработка прерывается на первом документе с ошибками из-за вышеуказанной доработки." - это обычное поведение обработки
3 tylerkiss
 
17.10.16
07:26
(2) Обычное поведение обработки - это пытаться провести документы до конца последовательности. Именно поэтому ее можно включить на ночь и утром получить все ошибки.
4 Nuobu
 
17.10.16
09:02
Нужно было перед этой строкой проверить на "ПолныеПрава" и на "ВозможностьПроводитьВМинусПоСкладу".
5 tylerkiss
 
17.10.16
10:04
(4) Поясните, пож-та?
6 Nuobu
 
17.10.16
11:25
(5) Что тут объяснять?
Был код:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить());

стал код:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить(),,,,,, Отказ);

А нужно было написать:

Если РольДоступна("ПолныеПрава") или УниверсальныеМеханизмы.ПолучитьНастройкуПользователя("ВозможностьПроводитьВМинусПоСкладу") Тогда
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить());
Иначе
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка,  Движения.СписанныеТовары.Выгрузить(),,,,,, Отказ);
КонецЕсли;
7 tylerkiss
 
17.10.16
11:49
(6) Пользователю не требуются полные права для запуска восстановления последовательностей.
8 tylerkiss
 
18.10.16
05:11
(0) В общем, решил сделать настройку в учетной политике "Останавливать проведение при нехватке партий". Перед запуском восстановления последовательностей будем отключать, пока ничего другого в голову не пришло.
Всем спасибо.