|
|
|
В регистре накопления Остатки по расходу регистрируется только 1 Гипервизор, rozer76, 2S, HolySheep, JohnGilbert, Михаил_, 1cVandal, Волшебник, Затейник, Niveus, Crusher, Chameleon1980, dchumak, vis, breezee, RoRu, программистище, Timon1405, Sanchez_22, Ненавижу 1С, Vostochnick, Krendel, Мультук, alexxx961503, Доминошник, СвинТуз, Шурик71, denk32, lubitelxml, PR, d4rkmesa, Михаил Козлов, Rawasert, DemonShinji2, formista2000, maxar, YaFedor, shuhard, AlexKimp, Jackman, saaken, SleepyHead, Климов Сергей, yuriybylinkin, Rovan, paramedic, Kigo_Kigo
| ☑ | ||
|---|---|---|---|---|
|
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) спасибо большое, увидела
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |