Проблема с получением остатков товара с использование одного регистра накопления
По теме из базы знаний
- Использование технологии LinqToSql для прямого доступа к данным 1С:Предприятие
- РАУЗ: составление уравнений для расчета себестоимости товаров в программе 1С:Управление торговлей, редакция 11
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Чрезмерная оптимизация кода. Проблемы производительности
Найденные решения
&НаСервере
Функция ПолучитьОстатокСклада(Продукция) //на складе
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
КонецФункции
Показатьесли результат пустой скорее всего либо продукция в параметре, которой на остатке нет, либо передано в параметр наименование, а не ссылка
Что приходит сюда? ПолучитьОстатокСклада(Продукция)
А так:
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.Продукция КАК Продукция,
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
Иначе
Возврат 0;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)Сейчас объясню.
Имеет регистр накопления "ПриходПродукции" и 3 документа :
-Поступление
-Передача в зал
-Реализация.
Я подключил этот регистр к этим трем документам.
1ый документ
3ий документ
Имеет регистр накопления "ПриходПродукции" и 3 документа :
-Поступление
-Передача в зал
-Реализация.
Я подключил этот регистр к этим трем документам.
1ый документ
Движения.ПриходПродукции.Записывать = Истина;
Для Каждого ТекСтрокаПрайсЛист Из ПрайсЛист Цикл
Движение = Движения.ПриходПродукции.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Ответственный = Ответственный;
Движение.МестоХранения = СкладХранения;
Движение.Продукция = ТекСтрокаПрайсЛист.Продукция;
Движение.ТипПродукции = ТекСтрокаПрайсЛист.ТипПродукции;
Движение.Фирма = ТекСтрокаПрайсЛист.Фирма;
Движение.ЕдиницаИзмерения = ТекСтрокаПрайсЛист.ЕдИзмерения;
Движение.Цена = ТекСтрокаПрайсЛист.Цена;
Движение.Количество = ТекСтрокаПрайсЛист.Количество;
Движение.Сумма = ТекСтрокаПрайсЛист.Сумма;
КонецЦикла;
2 ой документ
Движения.ПриходПродукции.Записывать = Истина;
Для Каждого ТекСтрокаСписокПродукции Из СписокПродукции Цикл
Движение = Движения.ПриходПродукции.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Ответственный = Ответственный;
Движение.МестоХранения = Справочники.Склады.НайтиПоНаименованию("Склад");
Движение.Продукция = ТекСтрокаСписокПродукции.Номенклатура;
Движение.ТипПродукции = ТекСтрокаСписокПродукции.ТипПродукции;
Движение.Фирма = ТекСтрокаСписокПродукции.Фирма;
Движение.ЕдиницаИзмерения = ТекСтрокаСписокПродукции.ЕдИзмерения;
Движение.Цена = ТекСтрокаСписокПродукции.Цена;
Движение.Количество = ТекСтрокаСписокПродукции.Количество;
Движение.Сумма = ТекСтрокаСписокПродукции.Сумма;
КонецЦикла;
Движения.ПриходПродукции.Записывать = Истина;
Для Каждого ТекСтрокаСписокПродукции Из СписокПродукции Цикл
Движение = Движения.ПриходПродукции.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Ответственный = Ответственный;
Движение.МестоХранения = Справочники.Склады.НайтиПоНаименованию("Торговый зал");
Движение.Продукция = ТекСтрокаСписокПродукции.Номенклатура;
Движение.ТипПродукции = ТекСтрокаСписокПродукции.ТипПродукции;
Движение.Фирма = ТекСтрокаСписокПродукции.Фирма;
Движение.ЕдиницаИзмерения = ТекСтрокаСписокПродукции.ЕдИзмерения;
Движение.Цена = ТекСтрокаСписокПродукции.Цена;
Движение.Количество = ТекСтрокаСписокПродукции.Количество;
Движение.Сумма = ТекСтрокаСписокПродукции.Сумма;
КонецЦикла;
Показать3ий документ
Движения.ПриходПродукции.Записывать = Истина;
Для Каждого ТекСтрокаПрайсЛист Из ПрайсЛист Цикл
Движение = Движения.ПриходПродукции.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Ответственный = Ответственный;
Движение.МестоХранения = МестоРеализации;
Движение.Продукция = ТекСтрокаПрайсЛист.Продукция;
Движение.ТипПродукции = ТекСтрокаПрайсЛист.ТипПродукции;
Движение.Фирма = ТекСтрокаПрайсЛист.Фирма;
Движение.ЕдиницаИзмерения = ТекСтрокаПрайсЛист.ЕдиницаИзмерения;
Движение.Цена = ТекСтрокаПрайсЛист.Цена;
Движение.Количество = ТекСтрокаПрайсЛист.Количество;
Движение.Сумма = ТекСтрокаПрайсЛист.Сумма;
КонецЦикла;
Показать
(11)&НаСервере
Функция ПолучитьОстатокСклада(Продукция) //на складе
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки КАК ПриходПродукцииОстатки
|ГДЕ
| ПриходПродукцииОстатки.Продукция = &Продукция";
Запрос.УстановитьПараметр("Продукция", Продукция);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьОстатокЗалаДаннойПродукции(Продукция) //в зал пришло
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОбороты.КоличествоРасход КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
|ГДЕ
| ПриходПродукцииОбороты.Продукция = &Продукция";
Запрос.УстановитьПараметр("Продукция", Продукция);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
КонецФункции
Показать
(12) Отбор по номенклатуре, установи не в Секции ГДЕ, а в параметры виртуальной таблицы.
Чтоб отладить запрос разнеси документы поступления и списания по времени, например на час разницы, и в параметр виртуальной таблицы передавай период, и посмотри в какой момент товар пропадает со склада. И отлаживать лучше через консоль запросов.
Чтоб отладить запрос разнеси документы поступления и списания по времени, например на час разницы, и в параметр виртуальной таблицы передавай период, и посмотри в какой момент товар пропадает со склада. И отлаживать лучше через консоль запросов.
(16)В конструкторе запросов - параметры таблицы - там условия, не ошибешься. А вообще, читать справку:
РегистрНакопления.<Имя регистра>.Остатки (AccumulationRegister.<Имя регистра>.Balance)
Синтаксис
РегистрНакопления.<Имя регистра>.Остатки (AccumulationRegister.<Имя регистра>.Balance)
Поля
<Имя измерения>
<Имя общего реквизита> (<Common attribute name>)
<Имя ресурса>Остаток (<Имя ресурса>Balance)
Параметры
Период (Period)
Условие (Condition)
Описание:
Предназначена для получения остатков по регистру накопления. Данные представляют собой итоги ресурсов.
При расчете итогов учитываются только активные записи.
Таблица существует только для регистров остатков.
Агрегация производится по измерениям указанным в запросе.
Пример:
// Получение остатков по регистру остатков по указанному товару
// на указанный момент времени
ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&КонПериода,
Номенклатура = &ПарНоменклатура)
ПоказатьСинтаксис
РегистрНакопления.<Имя регистра>.Остатки (AccumulationRegister.<Имя регистра>.Balance)
Поля
<Имя измерения>
<Имя общего реквизита> (<Common attribute name>)
<Имя ресурса>Остаток (<Имя ресурса>Balance)
Параметры
Период (Period)
Условие (Condition)
Описание:
Предназначена для получения остатков по регистру накопления. Данные представляют собой итоги ресурсов.
При расчете итогов учитываются только активные записи.
Таблица существует только для регистров остатков.
Агрегация производится по измерениям указанным в запросе.
Пример:
// Получение остатков по регистру остатков по указанному товару
// на указанный момент времени
ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&КонПериода,
Номенклатура = &ПарНоменклатура)
Что в переменной дата? Если это оперативное проведение, то должно быть ТекущаяДатаСеанса(), а если неоперативное то дата документа.
Добавь проверку на отрицательные остатки после добавления в регистр записи списания, и если отрицательные, то откатывай транзакцию.
На твоем скрине мне кажется неправильные порядок документов, поступление позже списания
Добавь проверку на отрицательные остатки после добавления в регистр записи списания, и если отрицательные, то откатывай транзакцию.
На твоем скрине мне кажется неправильные порядок документов, поступление позже списания
что за жесть
(14) необходимо в параметр передать момент времени ....
по старой методе
1 выбирается и тч документа список позиций
2 выбираются остатки с соединением с таблицей документа
3 в обработке после запроса определяются хватает ли товара на складе
по новой методике (быстрее по производительности)
1 документ проводится
2 выбираются данные о товарах в документе
3 проверяется нет ли минусов на складе соединяя таблицу остатков с таблицей тч документа
оч рекоментую (0) почитать Радченко с типовыми примерами.
(14) необходимо в параметр передать момент времени ....
по старой методе
1 выбирается и тч документа список позиций
2 выбираются остатки с соединением с таблицей документа
3 в обработке после запроса определяются хватает ли товара на складе
по новой методике (быстрее по производительности)
1 документ проводится
2 выбираются данные о товарах в документе
3 проверяется нет ли минусов на складе соединяя таблицу остатков с таблицей тч документа
оч рекоментую (0) почитать Радченко с типовыми примерами.
Если остатками не получается вытащить данные с регистра.
делаешь запрос
в нем:
две виртуальных таблицы, (или два вложенных запроса) которыми получаешь приход и расход,
создаешь третью таблицу в нее добавляешь два выше созданных запроса где приход минут расход. получиться остаток.
делаешь запрос
в нем:
две виртуальных таблицы, (или два вложенных запроса) которыми получаешь приход и расход,
создаешь третью таблицу в нее добавляешь два выше созданных запроса где приход минут расход. получиться остаток.
(21)
апрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Итог.Количество = ВложенныйЗапрос.КоличествоПриход - ВложенныйЗапрос1.КоличествоРасход КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ПриходПродукцииОбороты.КоличествоПриход КАК КоличествоПриход
| ИЗ
| РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
| ГДЕ
| ПриходПродукцииОбороты.Продукция = &Продукция) КАК ВложенныйЗапрос,
| (ВЫБРАТЬ
| ПриходПродукцииОбороты.КоличествоРасход КАК КоличествоРасход
| ИЗ
| РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
| ГДЕ
| ПриходПродукцииОбороты.Продукция = &Продукция) КАК ВложенныйЗапрос1,
| Итог КАК Итог";
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода",КонецДня(ТекущаяДата()));
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Показать&НаСервере
Функция ПолучитьОстатокСклада(Продукция) //на складе
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
КонецФункции
Показатьесли результат пустой скорее всего либо продукция в параметре, которой на остатке нет, либо передано в параметр наименование, а не ссылка
Что приходит сюда? ПолучитьОстатокСклада(Продукция)
(26)Исправил. Работает. Остаток то я получаю тот, когда было поступление продукции.
Но мне нужен остаток продукции, после передачи продукции в торговый зал.
Вся загвоздка именно в этом.
А так когда у меня было два регистра накопления, то я получал остаток тот который мне нужен был.
Почитав на этом форуме, мне порекомендовали использовать один регистр накопления.
Но мне нужен остаток продукции, после передачи продукции в торговый зал.
Вся загвоздка именно в этом.
А так когда у меня было два регистра накопления, то я получал остаток тот который мне нужен был.
Почитав на этом форуме, мне порекомендовали использовать один регистр накопления.
Если передача раньше датаокончания, значит остаток будет указан с учетом передачи. Добавьте место хранения в условие. РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция и МестоХранения =&Склад) КАК ПриходПродукцииОстатки";
(28)
ДатаОкончания = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция, Склад = &Склад), КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Справочники.Склады.Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Показать
(29)ДатаОкончания = ТекущаяДата();
Склад = Справочники.Склады;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Ошибка
{Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(60)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 99)}: Ожидается имя таблицы
РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), <<?>>КАК ПриходПродукцииОстатки
Склад = Справочники.Склады;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Ошибка
{Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(60)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 99)}: Ожидается имя таблицы
РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), <<?>>КАК ПриходПродукцииОстатки
(32){Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(62)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(6, 39)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПриходПродукцииОстатки.МестоХранения <<?>>= &Склад
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(6, 39)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПриходПродукцииОстатки.МестоХранения <<?>>= &Склад
Прикрепленные файлы:
(34) Так и сделал
Склад = Справочники.Склады;
ДатаОкончания = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период, Продукция = &Продукция, Склад = &Склад) КАК ПриходПродукцииОстатки
|ГДЕ
| ПриходПродукцииОстатки.МестоХранения = &Склад";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Склад = Справочники.Склады;
ДатаОкончания = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период, Продукция = &Продукция, Склад = &Склад) КАК ПриходПродукцииОстатки
|ГДЕ
| ПриходПродукцииОстатки.МестоХранения = &Склад";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
(39)
не хочет отображаться остаток
Склад = Справочники.Склады.Склад;
ДатаОкончания = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки
|ГДЕ
| ПриходПродукцииОстатки.МестоХранения = &Склад";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
Показатьне хочет отображаться остаток
А так:
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.Продукция КАК Продукция,
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
Иначе
Возврат 0;
КонецЕсли;
Показать
(42)
(42) Не выводится остаток
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.Продукция КАК Продукция,
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
Иначе
Возврат 0;
КонецЕсли;
Показать"ВЫБРАТЬ
| ПриходПродукцииОстатки.Продукция КАК Продукция,
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
Иначе
Возврат 0;
КонецЕсли;
(42) Не выводится остаток
(47)Смотри, у тебя, судя из скрина первого (регистр), первым по времени должен быть "Поступление продукции", а у тебя он последний, это раз, во вторых в примере запроса последнего ты хочешь остаток по складу "Склад" но у тебя там его нет: пришло поступлением ушло перемещением, все "0", а вот в торговом зале должно быть, но исправь последовательность, или контролируй как-то...
(50)Суть такова. Что передача продукции в зал может быть полной, а может быть частичной.
В основном будет использоваться частичный метод.
Я вот и хочу чтобы при передаче в зал, отображался реальный остаток на складе.
Я хочу в этом разобраться ,как решить такой нюанс. А в дальнейшем я уже не буду таким назойливым на форуме)
В основном будет использоваться частичный метод.
Я вот и хочу чтобы при передаче в зал, отображался реальный остаток на складе.
Я хочу в этом разобраться ,как решить такой нюанс. А в дальнейшем я уже не буду таким назойливым на форуме)
(62) Ок, допустим Вы выбрали номенклатуру "Мит 160 литр Бойлер" в табличной части. Что должно произойти? Должен отобразиться остаток в поле "Количество продукции на складе"? Или текущий доступный остаток должен подставиться в поле "количество" в таб.части документа?
(63)Представим Мит 160 поступило 100 штук.
При выборе продукции Мит 160 должен отобразиться остаток 160, а в зал нужно отправить 30 штук.
Я провел документ. Остаток уже 70 штук.
В дальнейшем когда человек захочет снова передать продукцию, то остаток в реквизите должен отобразиться со значением 70шт.
Вот чего я хочу добиться.
Мне осталось в этом разобраться, чтобы я уже сам в дальнейшем играться с остатками.
Так как меня в дальнейшем ждем создание еще 3-х документов :
-передача продукции на склад и реализация продукции.
-инвентаризация продукции на складе
-инвентаризация продукции в зале.
При выборе продукции Мит 160 должен отобразиться остаток 160, а в зал нужно отправить 30 штук.
Я провел документ. Остаток уже 70 штук.
В дальнейшем когда человек захочет снова передать продукцию, то остаток в реквизите должен отобразиться со значением 70шт.
Вот чего я хочу добиться.
Мне осталось в этом разобраться, чтобы я уже сам в дальнейшем играться с остатками.
Так как меня в дальнейшем ждем создание еще 3-х документов :
-передача продукции на склад и реализация продукции.
-инвентаризация продукции на складе
-инвентаризация продукции в зале.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот