|
Проверка отрицательных остатков при проведении документа | ☑ | ||
---|---|---|---|---|
0
19710715
11.01.20
✎
16:48
|
Добрый день всем.
Столкнулся с такой проблемой. Взял для своей задачи из книги Радченко "Практическое пособие разработчика" такой пример для проверки отрицательных остатков на складе после проведения документа непосредственно в процедуре его проведения. После движений по регистру идет запрос: Если Режим = РежимПроведенияДокумента.Оперативный Тогда // Проверить отрицательные остатки Запрос3 = Новый Запрос; Запрос3.МенеджерВременныхТаблиц = МенеджерВТ; Запрос3.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстатки.Материал, | ОстаткиМатериаловОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки( ,Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента) | И Склад = &Склад) | КАК ОстаткиМатериаловОстатки |ГДЕ | ОстаткиМатериаловОстатки.КоличествоОстаток < 0"; Запрос3.УстановитьПараметр("Склад", Склад); РезультатЗапроса = Запрос3.Выполнить(); ТЗ = РезультатЗапроса.Выгрузить(); // для контроля ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + " единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """"; Сообщение.Сообщить(); Отказ = Истина; КонецЦикла; КонецЕсли; В итоге отрицательные остатки не выявляются при их явном наличии (формирую отчет после процедуры проведения), но если я делаю этот же запрос из консоли, отрицательные остатки выявляются. Подозреваю, что дело в моменте времени, в который производится проверка. Такое впечатление, что она производится до его окончательного проведения. |
|||
1
ДенисЧ
11.01.20
✎
17:06
|
А движения-то созданные записал до проверки?
|
|||
2
19710715
11.01.20
✎
17:23
|
Да,
Движения.ОстаткиМатериалов.Записывать = Истина; Но похоже дело в другом. Там для расчета стоимости материалов по среднему значению чуть ранее: // Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе Движения.СтоимостьМатериалов.Записать(); Движения.ОстаткиМатериалов.Записать(); А уже потом после движений проверка отрицательных остатков, но в итоге без учета данного документа. Неужели ошибка в книге? Если убираю Движения.ОстаткиМатериалов.Записать(); то остатки контролируются нормально, но стоимость будет расчитываться криво. Может все-таки надо после расчета стоимости и после движений и до контроля остатков снова записать? |
|||
3
GROOVY
11.01.20
✎
17:31
|
(2) Да, за это обычно убивают :)
|
|||
4
19710715
11.01.20
✎
17:49
|
Точно в этом дело. Не ожидал такой подставы от Радченко.
Единственное не пойму? Без принудительного Движения.ОстаткиМатериалов.Записать(); движения записываются только по окончании процедуры проведения если не было Отказ = Истина; ? А для чего тогда Движения.ОстаткиМатериалов.Записывать = Истина; ? |
|||
5
19710715
11.01.20
✎
17:59
|
Там еще по третьему регистру движения присутствуют но нигде нет
Движения.Продажи.Записать(); , но документ в итоге по данному регистру проводится нормально. В чем тогда дело? |
|||
6
ДенисЧ
11.01.20
✎
18:07
|
(5) А по третьему регистру никто остатки не считает в транзакции проведения. Вот и не записывают явно. И они платформенно записываются по завершении транзакции.
ЗЫ, Может, ты учебник почитаешь, а не методом тыка изучать будешь? |
|||
7
19710715
11.01.20
✎
18:17
|
Так я его и читаю. Только его неплохо сначала автору почитать и ошибки исправить,чтоб других в заблуждение не вводить.
|
|||
8
GROOVY
11.01.20
✎
18:21
|
(7) Почитай учебники. Есть кучка видеоуроков... Ну правда.
|
|||
9
19710715
11.01.20
✎
18:44
|
Правда? Не, что то тут не то.
Я уже ранее написал: Если убираю запись пустых наборов записей перед контролем остатков Движения.ОстаткиМатериалов.Записать(); то остатки контролируются нормально. То есть до окончания транзакции без принудительной записи движения по данному регистру, эти движения участвуют в контроле и значит каким то образом записаны. Так что вопрос о необходимости явно записывать остается. |
|||
10
quest
11.01.20
✎
22:31
|
(7) точно! требуй возврата денег за то что вообще это читать начал.
|
|||
11
Злопчинский
12.01.20
✎
13:31
|
xt вы стебетесь? дали бы ответ по существу
|
|||
12
astrawalk
12.01.20
✎
13:44
|
(11) Ответ по-существу. Забыть о контроле отрицательных остатков, как о полностью высосанной из пальца ерунде.
|
|||
13
Cyberhawk
13.01.20
✎
07:33
|
"Взял для своей задачи из книги Радченко "Практическое пособие разработчика" такой пример для проверки отрицательных остатков на складе после проведения документа" // Ссылку давай на конкретное место в этой книге https://its.1c.ru/db/pubdevguide83
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |