|
Движение регистра накопление с запросом | ☑ | ||
---|---|---|---|---|
0
Shamil84
09.12.17
✎
18:26
|
Здравствуйте! Подскажите пожалуйста что не так? Я только учусь) Создаю конструктором движение по документу Расходные. Затем добавляю запрос в движение по выборке. Движение не происходит)
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК КоличествоОстаток, | МАКСИМУМ(ЕСТЬNULL(Остатки.СтоимостьОстаток, 0)) КАК СтоимостьОстаток, | ДокТЧ.Номенклатура, | СУММА(ДокТЧ.Количество) КАК Количество |ИЗ | Документ.РассходнаяНакладная.ТабличнаяЧасть1 КАК ДокТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени) КАК Остатки | ПО ДокТЧ.Номенклатура = Остатки.Номенклатура |ГДЕ | НЕ ДокТЧ.Номенклатура.Услуга | И ДокТЧ.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ДокТЧ.Номенклатура"; //Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); //Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Движения.ОстаткиТоваров.Записывать = Истина; Пока Выборка.Следующий() Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТабличнаяЧасть1.Номенклатура; Движение.Количество = ТекСтрокаТабличнаяЧасть1.Количество; Движение.Стоимость = ТекСтрокаТабличнаяЧасть1.Сумма; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
1
Shamil84
09.12.17
✎
18:28
|
Чуть подправил))
Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Движение.Стоимость = Выборка.Сумма; |
|||
2
Pandoch
09.12.17
✎
18:39
|
попробуй добавить Движения.ОстаткиТоваров.Записать()
|
|||
3
Pandoch
09.12.17
✎
18:45
|
хотя и без этого должно работать.
параметры запроса в рабочем коде же раскоменчены? отладкой проверял, в цикл вобще заходит? |
|||
4
Mankubus
09.12.17
✎
20:24
|
В начале добавь движения. Остатки товаров. Записывать = истина
|
|||
5
Shamil84
09.12.17
✎
21:46
|
Да разкоментировал параметры, блин отладкой в цикл не заходит( чет я не догадался посмотреть отладкой.
|
|||
6
Shamil84
09.12.17
✎
21:47
|
Запрос рабочий, в консоле запроса набирал все четко выходит, чет с кодом не то((
|
|||
7
Shamil84
09.12.17
✎
21:50
|
Да если запустить конструктор движений регистр накопления там отсутствует(. код с запросом затираешь регистр снова появляется в конструкторе
|
|||
8
Мимохожий Однако
09.12.17
✎
22:12
|
Используй набор записей
|
|||
9
Shamil84
09.12.17
✎
22:19
|
Все ок в Цикл заходит. Крутится)) блин но в регистре движении по остаткам ничего(
|
|||
10
Мимохожий Однако
09.12.17
✎
22:21
|
выкинь запрос, бери из табличной части данные
|
|||
11
Shamil84
09.12.17
✎
22:28
|
Да я понял, запрос нужен, дело в том что мне нужно посчитать себестоимость всего товара сколько осталось в остатках. Т.е мне нужно с регистра остатков вытащить количество и сумму. Один фиг то же самое.
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр РегистрЦен Движения.РегистрЦен.Записывать = Истина; Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл Движение = Движения.РегистрЦен.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТабличнаяЧасть1.Номенклатура; Движение.Контрагент = Контрагент; Движение.Цена = ТекСтрокаТабличнаяЧасть1.Цена; КонецЦикла; Движения.ОстаткиТоваров.Записывать = Истина; // регистр ОстаткиТоваров Расход //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК КоличествоОстаток, | МАКСИМУМ(ЕСТЬNULL(Остатки.СтоимостьОстаток, 0)) КАК СтоимостьОстаток, | ДокТЧ.Номенклатура, | СУММА(ДокТЧ.Количество) КАК Количество |ИЗ | Документ.РассходнаяНакладная.ТабличнаяЧасть1 КАК ДокТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени) КАК Остатки | ПО ДокТЧ.Номенклатура = Остатки.Номенклатура |ГДЕ | НЕ ДокТЧ.Номенклатура.Услуга | И ДокТЧ.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ДокТЧ.Номенклатура"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Отказ = Истина; Движения.ОстаткиТоваров.Записывать = Ложь; КонецЕсли; Если Отказ Тогда Продолжить КонецЕсли; Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Движение.Стоимость = Выборка.Количество/Выборка.КоличествоОстаток*Выборка.СтоимостьОстаток; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
12
Shamil84
09.12.17
✎
22:43
|
Все ОК записывает. Странно а почему он в конструкторе не отражается? Т.е если конструктором строишь движение там ведь регистры появляются ставишь регистры и сохраняешь, а тут как бы заходишь в конструктор движение а там только один сохраненый регистр хотя должно быть два.
|
|||
13
Мимохожий Однако
09.12.17
✎
22:54
|
Конструктор для затравки. Остальное пишешь сам.
|
|||
14
h-sp
09.12.17
✎
23:51
|
(12) может из-за этого
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда остатка не хватает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |