0
isok
07.12.20
✎
23:39
|
Здравствуйте, извиняюсь за тупость сразу, я учусь просто :). У меня есть два документа "возврат книги" и "выдача книги". По обоим документам есть регистры накопления.
Мне нужно сделать так, чтобы при проведении документа "ВОЗВРАТ КНИГИ" у меня делалась проверка - была ли выдана книга(документ выдача книги). Если нет то сообщить о том что она не была выдана.
Я написал код который по идеи должен все это делать в т.ч. отмена проведения, но как всегда что то пошло не так, и у меня документ отказывается проводиться вообще, даже если книга есть в доке "выдача книги". Вот код:
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ОстаткиКниг Приход
Движения.ОстаткиКниг.Записывать = Истина;
Для Каждого ТекСтрокаКнига Из Книга Цикл
//Проверка была ли выдана книга
ТаблицаВыдачи=РегистрыНакопления.РегистрВыдачиКниг.Остатки();
Если (ТекСтрокаКнига.НазваниеКниги <> ТаблицаВыдачи[0].Книга) Тогда //тут я сравниваю значение из таб части документа со значениями из регистра
Сообщить("Такой книги не было выдано");
Отказ=Ложь;
КонецЕсли;
Движение = Движения.ОстаткиКниг.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Книга = ТекСтрокаКнига.НазваниеКниги;
Движение.Количество = ТекСтрокаКнига.Количество;
КонецЦикла;
КонецПроцедуры
|
|
1
Ненавижу 1С
гуру
08.12.20
✎
01:01
|
ад и Израиль
это которая уже по счету 1С:Библиотека?
//зачем вы сравниваете очередную книгу из табличной части с первой попавшейся?
Если (ТекСтрокаКнига.НазваниеКниги <> ТаблицаВыдачи[0].Книга) Тогда
//зачем вы дергаете таблицу остатков для проверки каждой книги снова и снова?
//зачем вы вообще дергаете ВСЮ библиотеку
ТаблицаВыдачи=РегистрыНакопления.РегистрВыдачиКниг.Остатки();
а где учет книг "на руках"?
З.Ы. Воообще думал, что инвентарный номер уникален для каждого экземпляра книги. Оказалось необязательно, может быть один на несколько одинаковых.
|
|