|
|
|
В регистре накопления Остатки по расходу регистрируется только 1 | ☑ | ||
|---|---|---|---|---|
|
0
HolySheep
04.12.25
✎
10:58
|
Добрый день. Для учебы выполняю задания по 1с сборника чистова. Задача 11.
При проведении документа "расходная накладная" в расходе в любом случае указывается единица, даже если указано другое количество Вот модуль объекта Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиНоменклатуры.Записать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество, | РасходнаяНакладнаяСписокНоменклатуры.Партия КАК Партия |ПОМЕСТИТЬ Товары |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Партия | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОстаткиНоменклатурыОстатки.Партия КАК Партия, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | Товары.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура) КАК НоменклатураП, | Товары.Количество КАК Количество |ИЗ | Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментВремени, ) КАК ОстаткиНоменклатурыОстатки | ПО Товары.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура | И (Товары.Партия <> ДАТАВРЕМЯ(1, 1, 1) | И Товары.Партия = ОстаткиНоменклатурыОстатки.Партия | ИЛИ Товары.Партия = ДАТАВРЕМЯ(1, 1, 1)) | |УПОРЯДОЧИТЬ ПО | ОстаткиНоменклатурыОстатки.Партия |ИТОГИ | СУММА(КоличествоОстаток), | МАКСИМУМ(Количество) |ПО | Номенклатура"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос.УстановитьПараметр("МоментВремени", Неопределено) Иначе Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); КонецЕсли; ВыборкаТовары = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Движения.ОстаткиНоменклатуры.Записывать = Истина; Пока ВыборкаТовары.Следующий() Цикл Если ВыборкаТовары.Количество > ВыборкаТовары.КоличествоОстаток Тогда Сообщить("Не хватает товаров " + ВыборкаТовары.НоменклатураП + " " + (ВыборкаТовары.Количество - ВыборкаТовары.КоличествоОстаток)); Отказ = Истина; Продолжить; КонецЕсли; ОсталосьСписать = ВыборкаТовары.Количество(); ВыборкаПартии = ВыборкаТовары.Выбрать(); Пока ВыборкаПартии.Следующий() И ОсталосьСписать > 0 Цикл Если ВыборкаПартии.КоличествоОстаток <= ОсталосьСписать Тогда СписатьКоличество = ВыборкаПартии.КоличествоОстаток; ОсталосьСписать = ОсталосьСписать - СписатьКоличество; Иначе СписатьКоличество = ОсталосьСписать; ОсталосьСписать = 0; КонецЕсли; Если СписатьКоличество > 0 Тогда Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ВыборкаТовары.Номенклатура; Движение.Партия = ВыборкаПартии.Партия; Движение.Количество = СписатьКоличество; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры И ФОРМА ДОКУМЕНТА &НаСервереБезКонтекста Функция ПолучитьПартии(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОстаткиНоменклатурыОстатки.Партия КАК Партия |ИЗ | РегистрНакопления.ОстаткиНоменклатуры.Остатки(, Номенклатура = &Номенклатура) КАК ОстаткиНоменклатурыОстатки"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить().Выгрузить(); Спс = Новый СписокЗначений; Спс.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Партия")); Возврат Спс; КонецФункции &НаКлиенте Процедура СписокНоменклатурыПартияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтрокаТЧ = Элементы.СписокНоменклатуры.ТекущиеДанные; ДанныеВыбора = ПолучитьПартии(СтрокаТЧ.Номенклатура); СтандартнаяОбработка = Ложь; Если ДанныеВыбора.Количество() = 0 Тогда Сообщить("Партии отсутствуют"); КонецЕсли; КонецПроцедуры |
|||
|
1
Волшебник
04.12.25
✎
11:05
|
и чо?
|
|||
|
2
Волшебник
04.12.25
✎
11:06
|
ОсталосьСписать = ВыборкаТовары.Количество(); // гы-гы
|
|||
|
3
Гипервизор
04.12.25
✎
11:19
|
(2) Вот подстава, так подстава. )
|
|||
|
4
Волшебник
04.12.25
✎
11:21
|
Сон разума рождает чудовищ.
|
|||
|
5
СвинТуз
04.12.25
✎
11:50
|
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментВремени, ????)
|
|||
|
6
HolySheep
04.12.25
✎
12:36
|
(2) а что в этой строчке не так?..
|
|||
|
7
Гипервизор
04.12.25
✎
12:42
|
(6) Ну это зависит от желаемого результата. Что вернёт ВыборкаТовары.Количество(), есть мысли?
|
|||
|
8
HolySheep
04.12.25
✎
12:49
|
(7) в моем понимании, Должно вернуть количество товаров, но я уже не уверена, что это правильно
|
|||
|
9
2S
04.12.25
✎
12:52
|
(8) Скобки убери
|
|||
|
10
HolySheep
04.12.25
✎
12:59
|
(9) спасибо большое, увидела
|
|||
|
11
Сергиус
04.12.25
✎
21:41
|
(3)А ведь есть вероятность, что сработает как надо)
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |