Убавить количество в строке тч и добавить строку
1С:Управление нашей фирмой 1.6
Платформа 1С v8.3
Запросы
Система компоновки данных
Управляемые формы
Добрый вечер делаю небольшую доработку в тч документ СборкаЗапасов
А точнее добавляю замену аналогами материалов
вроде бы все данные получил
получил сколько нужно списать основного материала
сколько есть в свободном остатке
сколько есть в резерве
Получил сколько есть аналогов и остатков по ним
а вот теперь как убавить я чет тормознул
например
нужно списать 10 штук из них уже 2 в резерве и 1 в свободном остатке
Аналога 1 есть 3 штуки свободного
Аналога 2 есть 4 штуки свободного
нужно чтоб основной в тч убавился
1.строка основной 3 шт резерв 2
2.строка аналог 1 3 шт резерв 0
2.строка аналог 2 4 шт резерв 0
задача вроде простая но что то у меня не то выходит
А точнее добавляю замену аналогами материалов
вроде бы все данные получил
получил сколько нужно списать основного материала
сколько есть в свободном остатке
сколько есть в резерве
Получил сколько есть аналогов и остатков по ним
а вот теперь как убавить я чет тормознул
например
нужно списать 10 штук из них уже 2 в резерве и 1 в свободном остатке
Аналога 1 есть 3 штуки свободного
Аналога 2 есть 4 штуки свободного
нужно чтоб основной в тч убавился
1.строка основной 3 шт резерв 2
2.строка аналог 1 3 шт резерв 0
2.строка аналог 2 4 шт резерв 0
задача вроде простая но что то у меня не то выходит
&НаСервере
Организация = Константы.УчетПоКомпании.Компания(Объект.Организация);
Для каждого СтрокаТабличнойЧасти Из Объект.Запасы Цикл
////1. Проверить хватает или нет + не забыть резерв если хватает продолжить и добавить резерв
СтруктураОстатков = СвободныйОстатокПоСтруктурнойЕдинице(СтрокаТабличнойЧасти.СтруктурнаяЕдиница, СтрокаТабличнойЧасти.Номенклатура
, СтрокаТабличнойЧасти.Характеристика, СтрокаТабличнойЧасти.Партия, СтрокаТабличнойЧасти.ЕдиницаИзмерения);
ТребуетсяСписать= СтрокаТабличнойЧасти.Количество;
ОстатокПоФакту = СтруктураОстатков.КоличествоСвободно+СтруктураОстатков.КоличествоРезерв;
//СтрокаТабличнойЧасти.Резерв
//СтруктураОстатков.КоличествоРезерв
//СтруктураОстатков.КоличествоСвободно
Если ТребуетсяСписать> ОстатокПоФакту Тогда
////2. Проверить есть ли аналоги + свободные остатки по данным аналогам и отсортировать по приоритету
Запрос.Текст =
"ВЫБРАТЬ
| АМ_АналогиНоменклатуры.Номенклатура КАК Номенклатура,
| АМ_АналогиНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| АМ_АналогиНоменклатуры.Аналог КАК Аналог,
| АМ_АналогиНоменклатуры.ХарактеристикаАналога КАК ХарактеристикаАналога,
| АМ_АналогиНоменклатуры.Количество КАК Количество,
| АМ_АналогиНоменклатуры.КоличествоАналога КАК КоличествоАналога,
| АМ_АналогиНоменклатуры.Приоритет КАК Приоритет
|ПОМЕСТИТЬ ВТ_Аналог
|ИЗ
| РегистрСведений.АМ_АналогиНоменклатуры КАК АМ_АналогиНоменклатуры
|ГДЕ
| АМ_АналогиНоменклатуры.Номенклатура = &Номенклатура
| И АМ_АналогиНоменклатуры.ХарактеристикаНоменклатуры = &Характеристика
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ЗапасыОстаткиСвободные.КоличествоОстаток) КАК КоличествоСвободно,
| ЗапасыОстаткиСвободные.Номенклатура КАК Номенклатура,
| ЗапасыОстаткиСвободные.Характеристика КАК Характеристика
|ПОМЕСТИТЬ ВТОстатокАналогов
|ИЗ
| РегистрНакопления.Запасы.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| Вт_аналог.Аналог КАК номенклатура
| ИЗ
| Вт_аналог)
| И ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| И Организация = &Организация
| И Характеристика = &Характеристика
| И СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ЗапасыОстаткиСвободные
|
|СГРУППИРОВАТЬ ПО
| ЗапасыОстаткиСвободные.Номенклатура,
| ЗапасыОстаткиСвободные.Характеристика
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Аналог.Номенклатура КАК Номенклатура,
| ВТ_Аналог.ХарактеристикаНоменклатуры КАК Характеристика,
| ВТ_Аналог.Аналог КАК Аналог,
| ВТ_Аналог.ХарактеристикаАналога КАК ХарактеристикаАналога,
| ВТ_Аналог.Количество КАК Количество,
| ВТ_Аналог.КоличествоАналога КАК КоличествоАналога,
| ВТ_Аналог.Приоритет КАК Приоритет,
| ВТОстатокАналогов.КоличествоСвободно КАК КоличествоСвободно
|ИЗ
| ВТ_Аналог КАК ВТ_Аналог
| ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатокАналогов КАК ВТОстатокАналогов
| ПО ВТ_Аналог.Аналог = ВТОстатокАналогов.Номенклатура
| И ВТ_Аналог.ХарактеристикаАналога = ВТОстатокАналогов.Характеристика
|
|УПОРЯДОЧИТЬ ПО
| Приоритет,
| КоличествоСвободно";
Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СтрокаТабличнойЧасти.СтруктурнаяЕдиница);
Запрос.УстановитьПараметр("Номенклатура",СтрокаТабличнойЧасти.Номенклатура);
Запрос.УстановитьПараметр("Характеристика",СтрокаТабличнойЧасти.Характеристика);
Запрос.УстановитьПараметр("Организация",Организация);
Выборка = Запрос.Выполнить().Выбрать();
////ЕСЛИ ЕСТЬ АНАЛОГИ С ОСТАТКОВ
Пока Выборка.Следующий() Цикл
//ТЕПЕРЬ ВОТ ТУТ Я ПОТЕРЯЛСЯ МНЕ НУЖНО УБАВИТЬ ОСТАТКИ ПО ОСНОВНОМУ МАТЕРИАЛУ И ЕСЛИ ЕСТЬ РЕЗЕРВ ДОБАВИТЬ
////ОСТАТКИ ПО ОСНОВНОМУ МАТЕРИАЛУ
////СтруктураОстатков.КоличествоРезерв +////СтруктураОстатков.КоличествоСвободно
//РЕЗЕР ОСНОВНОГО В СтрокаТабличнойЧасти.Резерв=СтруктураОстатков.КоличествоРезерв;
//И ПОТОМ ДОБАВИТЬ ОСТАТКИ ПО АНАЛОГАМ
//ТребуетсяСписать= СтрокаТабличнойЧасти.Количество;
//ОстатокПоФакту = СтруктураОстатков.КоличествоСвободно+СтруктураОстатков.КоличествоРезерв;
//
////СтрокаТабличнойЧасти.Резерв
////СтруктураОстатков.КоличествоРезерв
//СтруктураОстатков.КоличествоСвободно
НоваяСтрока=Объект.Запасы.Вставить(СтрокаТабличнойЧасти.индекс);
////3. Добавить аналоги и уменьшить количество в документе но перед этим проверим сколько есть для списания основного материала
КонецЦикла;
Иначе //количества хватает но надо заполнить резерв
СтрокаТабличнойЧасти.Резерв=СтруктураОстатков.КоличествоРезерв;
КонецЕсли;
КонецЦикла;
ПоказатьПрикрепленные файлы:


По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Как то так что ли
////3. Добавить аналоги и уменьшить количество в документе но перед этим проверим сколько есть для списания основного материала
Нехватает = ТребуетсяСписать-(СтруктураОстатков.КоличествоСвободно+СтруктураОстатков.КоличествоРезерв);
СтрокаТабличнойЧасти.Количество = СтруктураОстатков.КоличествоСвободно+СтруктураОстатков.КоличествоРезерв;
СтрокаТабличнойЧасти.Резерв = СтруктураОстатков.КоличествоРезерв;
Пока Выборка.Следующий()и Нехватает >0 Цикл
Списываем = Мин(Выборка.Количество, Нехватает);
НоваяСтрока=Объект.Запасы.Вставить(СтрокаТабличнойЧасти.НомерСтроки);
ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка);
НоваяСтрока.Количество = Списываем;
Нехватает = Нехватает - Списываем;
//ТребуетсяСписать= СтрокаТабличнойЧасти.Количество;
//ОстатокПоФакту = СтруктураОстатков.КоличествоСвободно+СтруктураОстатков.КоличествоРезерв;
//
////СтрокаТабличнойЧасти.Резерв
////СтруктураОстатков.КоличествоРезерв
//СтруктураОстатков.КоличествоСвободно
КонецЦикла
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот