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

Траблы при неопер проведении

Автор MevMix, 25 июл 2011, 11:36

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

MevMix

Добрый день!!! Конфиг пишется мною 1с 8.1.

при опертивноп проведении все ОК списывает то количество что надо при не оперативном
в несколько раз больше и даже не то что в табличной части, а еще как то сам выбирает и списывает
На скрине комплектация, снизу движение по регистру
3 первый ОК остальное берет сам при проведении.

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

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

Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
// Проверить остаток при оперативном проведении.
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Номенклатура Тогда
Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0, ВыборкаРезультатаЗапроса.КоличествоОстаток);
Если Остаток < ВыборкаРезультатаЗапроса.Количество или Остаток = 0 Тогда
Сообщить("Недостаточное количество на склдаде "+Склад+" :"+СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + ", в наличии только " + Остаток);
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Номенклатура Тогда

Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
КонецЕсли;
КонецЦикла;
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = Комплект;
Движение.Склад = Склад;
Движение.Количество = Количество;

Движения.ОстаткиТоваров.Записать();
КонецЕсли;

sergejK74

Что то во втором запросе не видно условия на ссылку документа.
Кнопочка Спасибо - слева!

MevMix

Тему мона закрыатьнет во втором запросе
|ГДЕ
| КомплектацияНоменклатурыПереченьНоменклатуры.Ссылка = &Ссылка

Теги:

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

Рейтинг@Mail.ru

Поиск