Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 01:36

Не записывается движение в регистр

Автор Sasha1C, 15 мая 2024, 09:48

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Добрый день, движения не попадают в регистр накопления, хотя при отладке все значения движения верны. Этот вопрос уже поднимался, раньше делал через набор записей, но было выдвинуто предложение сделать через обычное движение. Но все же опять движения не записываются в регистр. Регистр накопления: 2 измерения НазваниеКниги и Книжный магазин -справочникссылка на нужный справочник, и ресурсы: количество, цена, Сумма -число. В чем может быть ошибка, или какие будут предложения. Заранее спасибо.
Движения.ОстатокКнигНовый.Записывать = Истина;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);

Запрос.Текст =
"ВЫБРАТЬ
| ПродажаКниг.КнижныйМагазин КАК КнижныйМагазин,
| ПродажаКниг.Дата КАК Дата
|ИЗ
| Документ.ПродажаКниг КАК ПродажаКниг
|ГДЕ
| ПродажаКниг.Ссылка = &Ссылка";


Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

Запрос.Текст = "ВЫБРАТЬ
               | ПродажаКнигПроданныеКниги.НазваниеКниги КАК НазваниеКниги,
               | ЕСТЬNULL(ПродажаКнигПроданныеКниги.Количество, 0) КАК Количество,
               | ЕСТЬNULL(ПродажаКнигПроданныеКниги.ЦенаПоставщика, 0) КАК ЦенаПоставщика
               |ПОМЕСТИТЬ Книги
               |ИЗ
               | Документ.ПродажаКниг.ПроданныеКниги КАК ПродажаКнигПроданныеКниги
               |ГДЕ
               | ПродажаКнигПроданныеКниги.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ОстатокКнигНовыйОстатки.НазваниеКниги КАК НазваниеКниги,
               | ОстатокКнигНовыйОстатки.КнижныйМагазин КАК КнижныйМагазин,
               | ЕСТЬNULL(ОстатокКнигНовыйОстатки.КоличествоОстаток, 0) КАК Остаток,
               | ЕСТЬNULL(Книги.Количество, 0) КАК Списать,
               | ЕСТЬNULL(Книги.ЦенаПоставщика, 0) КАК ЦенаПоставщика
               |ИЗ
               | Книги КАК Книги
               | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстатокКнигНовый.Остатки(
               | &Период,
               | КнижныйМагазин = &КнижныйМагазин
               | И НазваниеКниги В
               | (ВЫБРАТЬ
               | Книги.НазваниеКниги КАК НазваниеКниги
               | ИЗ
               | Книги КАК Книги)) КАК ОстатокКнигНовыйОстатки
               | ПО Книги.НазваниеКниги = ОстатокКнигНовыйОстатки.НазваниеКниги";

Запрос.УстановитьПараметр("КнижныйМагазин", Шапка.КнижныйМагазин);
Запрос.УстановитьПараметр("Период", Шапка.Дата);


ВыборкаПолная = Запрос.Выполнить().Выбрать();

Пока ВыборкаПолная.Следующий() Цикл

Если ВыборкаПолная.Остаток < ВыборкаПолная.Списать Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает количества, есть =" + Строка(Ссылка)+ Символы.ПС + ВыборкаПолная.Остаток+ ", а списываем = " + ВыборкаПолная.Списать;
Сообщение.Сообщить();
Иначе
НужноСписать= ВыборкаПолная.Списать;
Выборка = ВыборкаПолная.Выбрать();

Пока Выборка.Следующий() Цикл

Если НужноСписать >= Выборка.Остаток Тогда
КоличествоСписать = Выборка.Остаток;
НужноСписать = НужноСписать - КоличествоСписать;
Иначе
КоличествоСписать = НужноСписать;
НужноСписать= 0;
КонецЕсли;

Движение = Движения.ОстатокКнигНовый.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Шапка.Дата;
Движение.НазваниеКниги = ВыборкаПолная.НазваниеКниги;
Движение.Книжныймагазин = Шапка.КнижныйМагазин;
Движение.Количество = НужноСписать;
Движение.ЦенаПоставщика = ВыборкаПолная.ЦенаПоставщика;
Движение.Сумма = НужноСписать * ВыборкаПолная.ЦенаПоставщика;

Если НужноСписать = 0 Тогда
Прервать;
КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

Похожие темы (5)

Рейтинг@Mail.ru

Поиск