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

двойное проведение по регистрам накопления

Автор Sasha1C, 12 ноя 2024, 17:07

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

Sasha1C

Добрый день, есть вопрос. Почему при выполнении данного участка кода списывание производится дважды. При отладке результат запроса верный.
апрос = Новый Запрос;
Запрос.УстановитьПараметр ("Ссылка", ЭтотОбъект.Ссылка);

Запрос.Текст = "ВЫБРАТЬ
| ВводВЭксплуатацию.Склад КАК Склад,
| ВводВЭксплуатацию.Дата КАК Дата
|ИЗ
| Документ.ВводВЭксплуатацию КАК ВводВЭксплуатацию
|ГДЕ
| ВводВЭксплуатацию.Ссылка = &Ссылка";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

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


Далее обрабатываю результат запроса
РезультатЗапроса = Запрос.Выполнить().Выбрать();

Если РезультатЗапроса.Следующий() Тогда

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

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

Сообщить("Саша");

КонецЕсли;


На каком этапе кода искать причину двойного проведения? Заранее спасибо

Максим75

Sasha1C, что у Вас стоит у документа на закладке Движения в свойстве Удаление движений?

Sasha1C

Максим75, Удалять автоматически при отмене проведения

Максим75

Sasha1C, объясните подробнее, что значит списание происходит дважды?
при проведении нового, при перепроведении уже проведенного или как?
задваиваются записи в регистре?

Теги: Запрос 

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

Рейтинг@Mail.ru

Поиск