Получение отрицательных остатков номенклатуры по документу
Привет - всем!
Что хочу сделать.
Открывать выборку проведенных документов такого-то вида и "смотреть" остатки номенклатуры по каждому очередному документу на момент сразу после того, как 1С-платформа присвоила ему статус "Проведен". В случае, если остаток этой (отдельно взятой и обработанной) ТМЦ менее "0" - вывод секции "Строка" итоговой таблицы.
Сделать хочу без использования запросов!!! Во внимание не принимается низкая производительность такого решения.
Так понимаю, что мне нужно рассчитывать регистры на каждый из документов - верно? Нужен метод РассчитатьРегистрыПо(<?>,);
Все правильно?
Что хочу сделать.
Открывать выборку проведенных документов такого-то вида и "смотреть" остатки номенклатуры по каждому очередному документу на момент сразу после того, как 1С-платформа присвоила ему статус "Проведен". В случае, если остаток этой (отдельно взятой и обработанной) ТМЦ менее "0" - вывод секции "Строка" итоговой таблицы.
Сделать хочу без использования запросов!!! Во внимание не принимается низкая производительность такого решения.
Так понимаю, что мне нужно рассчитывать регистры на каждый из документов - верно? Нужен метод РассчитатьРегистрыПо(<?>,);
Все правильно?
По теме из базы знаний
- Консультация для сдачи экзамена "1С:Специалист" по конфигурированию платформы
- Исправление отрицательных остатков по организациям в УТ 11.4, КА 2.4, ЕРП 2.4. Интеркампани, механизм формирования резервов
- Как сдать экзамен 1С:Специалист по платформе?
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Создание поступления по отрицательным остаткам на счете для 1С:Бухгалтерии версии 3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот, что-то вроде этого... Работает, по крайней мере...
//*******************************************
Процедура Сформировать()
Док=СоздатьОбъект("Документ");
ВремРегистры=СоздатьОбъект("Регистры");
РегОстатки=ВремРегистры.ОстаткиТМЦ;
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Проведен()=0 Тогда
Продолжить;
КонецЕсли;
Если глЕстьРеквизитМнЧ("Номенклатура",Док.ТекущийДокумент().Вид())=0 Тогда
Продолжить;
КонецЕсли;
Если глЕстьРеквизитШапки("Склад",Док.ТекущийДокумент().Вид())=0 Тогда
Продолжить;
КонецЕсли;
Состояние("Обработка: "+Док.ДатаДок+" - "+Док.ТекущийДокумент());
РегОстатки.ВременныйРасчет();
ВремРегистры.РассчитатьРегистрыПо(Док.ТекущийДокумент(),);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
Остаток=РегОстатки.Остаток(Док.Фирма,
Док.Номенклатура,
Док.Склад,,"Количество");
Если Остаток<0 Тогда
Сообщить(""+Док.ТекущийДокумент()+" - "+Док.Номенклатура+": "+Остаток,"!");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Док=СоздатьОбъект("Документ");
ВремРегистры=СоздатьОбъект("Регистры");
РегОстатки=ВремРегистры.ОстаткиТМЦ;
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Проведен()=0 Тогда
Продолжить;
КонецЕсли;
Если глЕстьРеквизитМнЧ("Номенклатура",Док.ТекущийДокумент().Вид())=0 Тогда
Продолжить;
КонецЕсли;
Если глЕстьРеквизитШапки("Склад",Док.ТекущийДокумент().Вид())=0 Тогда
Продолжить;
КонецЕсли;
Состояние("Обработка: "+Док.ДатаДок+" - "+Док.ТекущийДокумент());
РегОстатки.ВременныйРасчет();
ВремРегистры.РассчитатьРегистрыПо(Док.ТекущийДокумент(),);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
Остаток=РегОстатки.Остаток(Док.Фирма,
Док.Номенклатура,
Док.Склад,,"Количество");
Если Остаток<0 Тогда
Сообщить(""+Док.ТекущийДокумент()+" - "+Док.Номенклатура+": "+Остаток,"!");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот