Проблема с получением остатков товара с использование одного регистра накопления

1. Stanislav1993 28.08.18 09:55 Сейчас в теме
Здравствуйте, недавно на форуме было поднята тема по поводу остатков продукции.
Моя ошибка была в том, что я использовал несколько регистров накопления.
Я подключил три документа к одному регистру и прописал движения.
По теме из базы знаний
Найденные решения
23. M61 20 30.08.18 18:26 Сейчас в теме
&НаСервере

Функция ПолучитьОстатокСклада(Продукция) //на складе
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |    РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция) КАК ПриходПродукцииОстатки";
    Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1); 
    Запрос.УстановитьПараметр("Продукция", Продукция);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Если РезультатЗапроса.Количество() = 0 Тогда
        Возврат 0;
    Иначе
        ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
        Возврат ИтогПоНоменклатуре;
    КонецЕсли;

        
    
КонецФункции
Показать

если результат пустой скорее всего либо продукция в параметре, которой на остатке нет, либо передано в параметр наименование, а не ссылка

Что приходит сюда? ПолучитьОстатокСклада(Продукция)
42. Ditron 185 31.08.18 10:35 Сейчас в теме
А так:
   Запрос.Текст = 
        "ВЫБРАТЬ
        |	ПриходПродукцииОстатки.Продукция КАК Продукция,
        |	ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |	РегистрНакопления.ПриходПродукции.Остатки(
        |			&Период,
        |			Продукция = &Продукция
        |				И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
   Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая)); 
   Запрос.УстановитьПараметр("Продукция", Продукция);
   Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
   Возврат Выборка.Количество;
Иначе
   Возврат 0;
КонецЕсли;
Показать
75. Ditron 185 31.08.18 13:02 Сейчас в теме
Дружище, посмотри измерение "Место хранения" в регистре, тип его
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ben19791010 28.08.18 10:08 Сейчас в теме
(1)
Проблема
с использование одного регистра накопления

вот даже тему наврал пять ))
проблема-это и есть суть ошибки
а ошибка была в чём? )
3. Stanislav1993 28.08.18 10:13 Сейчас в теме
(2) Я не вру. Я лишь создал заново тему для обсуждения.
4. Касаткин 28.08.18 10:21 Сейчас в теме
В чем вопрос то? Где не получается?
SoLRoN; alex-l19041; +2 Ответить
5. Stanislav1993 28.08.18 10:26 Сейчас в теме
(4)Сейчас объясню.
Имеет регистр накопления "ПриходПродукции" и 3 документа :
-Поступление
-Передача в зал
-Реализация.

Я подключил этот регистр к этим трем документам.
1ый документ

Движения.ПриходПродукции.Записывать = Истина;
	Для Каждого ТекСтрокаПрайсЛист Из ПрайсЛист Цикл
		Движение = Движения.ПриходПродукции.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.Ответственный = Ответственный;
		Движение.МестоХранения = СкладХранения;
		Движение.Продукция = ТекСтрокаПрайсЛист.Продукция;
		Движение.ТипПродукции = ТекСтрокаПрайсЛист.ТипПродукции;
		Движение.Фирма = ТекСтрокаПрайсЛист.Фирма;
		Движение.ЕдиницаИзмерения = ТекСтрокаПрайсЛист.ЕдИзмерения;
		Движение.Цена = ТекСтрокаПрайсЛист.Цена;
		Движение.Количество = ТекСтрокаПрайсЛист.Количество;
		Движение.Сумма = ТекСтрокаПрайсЛист.Сумма;
	КонецЦикла;

2 ой документ
Движения.ПриходПродукции.Записывать = Истина;
	Для Каждого ТекСтрокаСписокПродукции Из СписокПродукции Цикл
		Движение = Движения.ПриходПродукции.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Ответственный = Ответственный;
		Движение.МестоХранения = Справочники.Склады.НайтиПоНаименованию("Склад");
		Движение.Продукция = ТекСтрокаСписокПродукции.Номенклатура;
		Движение.ТипПродукции = ТекСтрокаСписокПродукции.ТипПродукции;
		Движение.Фирма = ТекСтрокаСписокПродукции.Фирма;
		Движение.ЕдиницаИзмерения = ТекСтрокаСписокПродукции.ЕдИзмерения;
		Движение.Цена = ТекСтрокаСписокПродукции.Цена;
		Движение.Количество = ТекСтрокаСписокПродукции.Количество;
		Движение.Сумма = ТекСтрокаСписокПродукции.Сумма;
	КонецЦикла;
	
	Движения.ПриходПродукции.Записывать = Истина;
	Для Каждого ТекСтрокаСписокПродукции Из СписокПродукции Цикл
		Движение = Движения.ПриходПродукции.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.Ответственный = Ответственный;
		Движение.МестоХранения = Справочники.Склады.НайтиПоНаименованию("Торговый зал");
		Движение.Продукция = ТекСтрокаСписокПродукции.Номенклатура;
		Движение.ТипПродукции = ТекСтрокаСписокПродукции.ТипПродукции;
		Движение.Фирма = ТекСтрокаСписокПродукции.Фирма;
		Движение.ЕдиницаИзмерения = ТекСтрокаСписокПродукции.ЕдИзмерения;
		Движение.Цена = ТекСтрокаСписокПродукции.Цена;
		Движение.Количество = ТекСтрокаСписокПродукции.Количество;
		Движение.Сумма = ТекСтрокаСписокПродукции.Сумма;
	КонецЦикла;
Показать

3ий документ

Движения.ПриходПродукции.Записывать = Истина;
	Для Каждого ТекСтрокаПрайсЛист Из ПрайсЛист Цикл
		Движение = Движения.ПриходПродукции.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Ответственный = Ответственный;
		Движение.МестоХранения = МестоРеализации;
		Движение.Продукция = ТекСтрокаПрайсЛист.Продукция;
		Движение.ТипПродукции = ТекСтрокаПрайсЛист.ТипПродукции;
		Движение.Фирма = ТекСтрокаПрайсЛист.Фирма;
		Движение.ЕдиницаИзмерения = ТекСтрокаПрайсЛист.ЕдиницаИзмерения;
		Движение.Цена = ТекСтрокаПрайсЛист.Цена;
		Движение.Количество = ТекСтрокаПрайсЛист.Количество;
		Движение.Сумма = ТекСтрокаПрайсЛист.Сумма;
	КонецЦикла;
Показать
6. mad375 28.08.18 10:40 Сейчас в теме
(5)А проблема-то в чем?

P.S.
Вместо вот этого:
Справочники.Склады.НайтиПоНаименованию("Торговый зал");

лучше использовать предопределенные значения.
alex-l19041; +1 Ответить
7. Stanislav1993 28.08.18 10:53 Сейчас в теме
(6)Вот как выглядит запись в регистре.
Прикрепленные файлы:
8. Stanislav1993 28.08.18 10:54 Сейчас в теме
9. Касаткин 28.08.18 10:56 Сейчас в теме
(6) Я бы посоветовал склад определить в переменную до цикла, иначе если в табличной части документа 100 строк , то это 100 запросов к базе.
10. Stanislav1993 28.08.18 10:58 Сейчас в теме
11. Stanislav1993 28.08.18 10:59 Сейчас в теме
(4) Проблема в том, что я не могу через запрос, получить остаток продукции на складе после передачи продукции в зал.
12. Stanislav1993 28.08.18 11:01 Сейчас в теме
(11)&НаСервере
Функция ПолучитьОстатокСклада(Продукция) //на складе
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
		|ИЗ
		|	РегистрНакопления.ПриходПродукции.Остатки КАК ПриходПродукцииОстатки
		|ГДЕ
		|	ПриходПродукцииОстатки.Продукция = &Продукция";
	
	Запрос.УстановитьПараметр("Продукция", Продукция);
	
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат 0;
	Иначе
		ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
		Возврат ИтогПоНоменклатуре;
	КонецЕсли;

		
	
КонецФункции


&НаСервере
Функция ПолучитьОстатокЗалаДаннойПродукции(Продукция) //в зал пришло
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПриходПродукцииОбороты.КоличествоРасход КАК Количество
	|ИЗ
	|	РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
	|ГДЕ
	|	ПриходПродукцииОбороты.Продукция = &Продукция";
	
	Запрос.УстановитьПараметр("Продукция", Продукция);
	
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат 0;
	Иначе
		ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
		Возврат ИтогПоНоменклатуре;
	КонецЕсли;
	
	
	
КонецФункции
Показать
15. Касаткин 28.08.18 11:05 Сейчас в теме
(12) Отбор по номенклатуре, установи не в Секции ГДЕ, а в параметры виртуальной таблицы.
Чтоб отладить запрос разнеси документы поступления и списания по времени, например на час разницы, и в параметр виртуальной таблицы передавай период, и посмотри в какой момент товар пропадает со склада. И отлаживать лучше через консоль запросов.
16. Stanislav1993 28.08.18 11:10 Сейчас в теме
(15)
Прикрепленные файлы:
17. catena 110 28.08.18 11:19 Сейчас в теме
(16)В конструкторе запросов - параметры таблицы - там условия, не ошибешься. А вообще, читать справку:

РегистрНакопления.<Имя регистра>.Остатки (AccumulationRegister.<Имя регистра>.Balance)
Синтаксис

РегистрНакопления.<Имя регистра>.Остатки (AccumulationRegister.<Имя регистра>.Balance)
Поля

<Имя измерения>
<Имя общего реквизита> (<Common attribute name>)
<Имя ресурса>Остаток (<Имя ресурса>Balance)

Параметры

Период (Period)
Условие (Condition)


Описание:

Предназначена для получения остатков по регистру накопления. Данные представляют собой итоги ресурсов.
При расчете итогов учитываются только активные записи.
Таблица существует только для регистров остатков.
Агрегация производится по измерениям указанным в запросе.
Пример:

// Получение остатков по регистру остатков по указанному товару

// на указанный момент времени

ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&КонПериода,
Номенклатура = &ПарНоменклатура)

Показать
18. catena 110 28.08.18 11:19 Сейчас в теме
(12)Если функция называется "ПолучитьОстатокСклада", почему в тексте нет отбора по складу?
13. Касаткин 28.08.18 11:01 Сейчас в теме
Что в переменной дата? Если это оперативное проведение, то должно быть ТекущаяДатаСеанса(), а если неоперативное то дата документа.
Добавь проверку на отрицательные остатки после добавления в регистр записи списания, и если отрицательные, то откатывай транзакцию.
На твоем скрине мне кажется неправильные порядок документов, поступление позже списания
14. Stanislav1993 28.08.18 11:04 Сейчас в теме
(13)Я сейчас проставил вместо "Дата" - > ТекущаяДатаСеанса();
Но все так же
20. Artemka20121 6 28.08.18 15:43 Сейчас в теме
что за жесть
(14) необходимо в параметр передать момент времени ....

по старой методе
1 выбирается и тч документа список позиций
2 выбираются остатки с соединением с таблицей документа
3 в обработке после запроса определяются хватает ли товара на складе

по новой методике (быстрее по производительности)
1 документ проводится
2 выбираются данные о товарах в документе
3 проверяется нет ли минусов на складе соединяя таблицу остатков с таблицей тч документа

оч рекоментую (0) почитать Радченко с типовыми примерами.
19. Касаткин 28.08.18 11:20 Сейчас в теме
Вот так примерно выглядит запрос по остатка с параметрами в консоли запросов
Прикрепленные файлы:
21. Sanek32 18 28.08.18 17:43 Сейчас в теме
Если остатками не получается вытащить данные с регистра.

делаешь запрос
в нем:
две виртуальных таблицы, (или два вложенных запроса) которыми получаешь приход и расход,

создаешь третью таблицу в нее добавляешь два выше созданных запроса где приход минут расход. получиться остаток.
24. Stanislav1993 31.08.18 06:58 Сейчас в теме
(21)
   апрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Итог.Количество = ВложенныйЗапрос.КоличествоПриход - ВложенныйЗапрос1.КоличествоРасход КАК Количество
	|ИЗ
	|	(ВЫБРАТЬ
	|		ПриходПродукцииОбороты.КоличествоПриход КАК КоличествоПриход
	|	ИЗ
	|		РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
	|	ГДЕ
	|		ПриходПродукцииОбороты.Продукция = &Продукция) КАК ВложенныйЗапрос,
	|	(ВЫБРАТЬ
	|		ПриходПродукцииОбороты.КоличествоРасход КАК КоличествоРасход
	|	ИЗ
	|		РегистрНакопления.ПриходПродукции.Обороты КАК ПриходПродукцииОбороты
	|	ГДЕ
	|		ПриходПродукцииОбороты.Продукция = &Продукция) КАК ВложенныйЗапрос1,
	|	Итог КАК Итог";
	
	Запрос.УстановитьПараметр("Продукция", Продукция);
	Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата()));
	Запрос.УстановитьПараметр("КонецПериода",КонецДня(ТекущаяДата()));
		
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат 0;
	Иначе
		ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
		Возврат ИтогПоНоменклатуре;
	КонецЕсли;
	

Показать
22. kild 89 30.08.18 18:14 Сейчас в теме
23. M61 20 30.08.18 18:26 Сейчас в теме
&НаСервере

Функция ПолучитьОстатокСклада(Продукция) //на складе
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |    РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция) КАК ПриходПродукцииОстатки";
    Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1); 
    Запрос.УстановитьПараметр("Продукция", Продукция);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Если РезультатЗапроса.Количество() = 0 Тогда
        Возврат 0;
    Иначе
        ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
        Возврат ИтогПоНоменклатуре;
    КонецЕсли;

        
    
КонецФункции
Показать

если результат пустой скорее всего либо продукция в параметре, которой на остатке нет, либо передано в параметр наименование, а не ссылка

Что приходит сюда? ПолучитьОстатокСклада(Продукция)
25. Stanislav1993 31.08.18 07:02 Сейчас в теме
(23) {Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(62,50)}: Переменная не определена (ДатаОкончания)
Запрос.УстановитьПараметр("Период", КонецДня(<<?>>ДатаОкончания)+1);
26. M61 20 31.08.18 07:13 Сейчас в теме
(25)параметр дата окончания задать надо какбы....
27. Stanislav1993 31.08.18 08:16 Сейчас в теме
(26)Исправил. Работает. Остаток то я получаю тот, когда было поступление продукции.
Но мне нужен остаток продукции, после передачи продукции в торговый зал.
Вся загвоздка именно в этом.
А так когда у меня было два регистра накопления, то я получал остаток тот который мне нужен был.
Почитав на этом форуме, мне порекомендовали использовать один регистр накопления.
28. M61 20 31.08.18 08:53 Сейчас в теме
Если передача раньше датаокончания, значит остаток будет указан с учетом передачи. Добавьте место хранения в условие. РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция и МестоХранения =&Склад) КАК ПриходПродукцииОстатки";
29. Stanislav1993 31.08.18 08:59 Сейчас в теме
(28)
   ДатаОкончания  = ТекущаяДата();
	Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |    РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция, Склад = &Склад), КАК ПриходПродукцииОстатки";
    Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1); 
    Запрос.УстановитьПараметр("Продукция", Продукция);
	Запрос.УстановитьПараметр("Склад", Справочники.Склады.Склад);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Если РезультатЗапроса.Количество() = 0 Тогда
        Возврат 0;
    Иначе
        ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
        Возврат ИтогПоНоменклатуре;
    КонецЕсли;

Показать
31. Stanislav1993 31.08.18 09:09 Сейчас в теме
(29)ДатаОкончания = ТекущаяДата();
Склад = Справочники.Склады;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;


Ошибка
{Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(60)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 99)}: Ожидается имя таблицы
РегистрНакопления.ПриходПродукции.Остатки(&Период , Продукция = &Продукция И Склад = &Склад), <<?>>КАК ПриходПродукцииОстатки
30. M61 20 31.08.18 09:09 Сейчас в теме
В параметрах запроса снова сделали фигню. Внимательно посмотрите как условие написал я выше
32. Stanislav1993 31.08.18 09:13 Сейчас в теме
33. Stanislav1993 31.08.18 09:14 Сейчас в теме
(32){Документ.ПередачаПродукцииВТоргЗал.Форма.ФормаДокумента.Форма(62)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(6, 39)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПриходПродукцииОстатки.МестоХранения <<?>>= &Склад
Прикрепленные файлы:
34. M61 20 31.08.18 09:40 Сейчас в теме
Запрос.установить параметр склад
35. Stanislav1993 31.08.18 09:53 Сейчас в теме
(34) Так и сделал
Склад = Справочники.Склады;
ДатаОкончания = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(&Период, Продукция = &Продукция, Склад = &Склад) КАК ПриходПродукцииОстатки
|ГДЕ
| ПриходПродукцииОстатки.МестоХранения = &Склад";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1);
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Возврат 0;
Иначе
ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
Возврат ИтогПоНоменклатуре;
КонецЕсли;
36. M61 20 31.08.18 10:01 Сейчас в теме
(35)Склад = Справочники.Склады.Склад или справочники.склады.найтипонаименованию("Склад"). Вы же просто указали справочник
37. Stanislav1993 31.08.18 10:05 Сейчас в теме
(36)У меня в справочнике Склады есть два предопределенных элемента:
-Склад
-Торговый зал
38. Stanislav1993 31.08.18 10:06 Сейчас в теме
Сделал Склад = Справочники.Склады.Склад , 1с не ругается, но не отображаются остатки
39. M61 20 31.08.18 10:11 Сейчас в теме
В параметрах виртуальной таблицы регистра типа Остатки всего 2 параметра : Период и Условие.

Несколько условий связываются логическими операторами И ИЛИ, у вас вообще запятая.
41. Stanislav1993 31.08.18 10:29 Сейчас в теме
(39)
Склад = Справочники.Склады.Склад;
	ДатаОкончания  = ТекущаяДата();
	Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |	РегистрНакопления.ПриходПродукции.Остатки(
        |			&Период,
        |			Продукция = &Продукция
        |				И МестоХранения = &Склад) КАК ПриходПродукцииОстатки
        |ГДЕ
        |	ПриходПродукцииОстатки.МестоХранения = &Склад";
    Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания)+1); 
    Запрос.УстановитьПараметр("Продукция", Продукция);
	Запрос.УстановитьПараметр("Склад", Склад);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Если РезультатЗапроса.Количество() = 0 Тогда
        Возврат 0;
    Иначе
        ИтогПоНоменклатуре = РезультатЗапроса.Итог("Количество");
        Возврат ИтогПоНоменклатуре;
    КонецЕсли;

	


Показать


не хочет отображаться остаток
40. M61 20 31.08.18 10:12 Сейчас в теме
Продукция = &Продукция И Склад = &Склад
42. Ditron 185 31.08.18 10:35 Сейчас в теме
А так:
   Запрос.Текст = 
        "ВЫБРАТЬ
        |	ПриходПродукцииОстатки.Продукция КАК Продукция,
        |	ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |	РегистрНакопления.ПриходПродукции.Остатки(
        |			&Период,
        |			Продукция = &Продукция
        |				И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
   Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая)); 
   Запрос.УстановитьПараметр("Продукция", Продукция);
   Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
   Возврат Выборка.Количество;
Иначе
   Возврат 0;
КонецЕсли;
Показать
44. Stanislav1993 31.08.18 10:39 Сейчас в теме
(42)
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПродукцииОстатки.Продукция КАК Продукция,
| ПриходПродукцииОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ПриходПродукции.Остатки(
| &Период,
| Продукция = &Продукция
| И МестоХранения = &Склад) КАК ПриходПродукцииОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДатаОкончания, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Продукция", Продукция);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
Иначе
Возврат 0;
КонецЕсли;
Показать

(42) Не выводится остаток
46. Ditron 185 31.08.18 10:41 Сейчас в теме
(44)Значит на момент нет остатка, так не бывает ))
47. Stanislav1993 31.08.18 10:41 Сейчас в теме
(46)Я вот только что создал поступление) А потом решил передать продукцию в зал) Создал передачу, выбрал продукцию, а остатка нет)
48. Ditron 185 31.08.18 10:44 Сейчас в теме
(47)Смотри, у тебя, судя из скрина первого (регистр), первым по времени должен быть "Поступление продукции", а у тебя он последний, это раз, во вторых в примере запроса последнего ты хочешь остаток по складу "Склад" но у тебя там его нет: пришло поступлением ушло перемещением, все "0", а вот в торговом зале должно быть, но исправь последовательность, или контролируй как-то...
49. Stanislav1993 31.08.18 10:46 Сейчас в теме
(48)Я этот косяк со временем исправил) Сейчас обновлю скрин)
51. Stanislav1993 31.08.18 10:48 Сейчас в теме
(48)
Прикрепленные файлы:
52. Ditron 185 31.08.18 10:49 Сейчас в теме
(51)Ну вот, на складе "Склад" 0, пришло и ушло, а вот в торг. зале должно быть
55. Stanislav1993 31.08.18 10:51 Сейчас в теме
(52)
Прикрепленные файлы:
57. Ditron 185 31.08.18 10:53 Сейчас в теме
(55)ааа, ну так это меняет дело, конечно должен быть, надо же полную информацию давать изначально
58. Stanislav1993 31.08.18 10:54 Сейчас в теме
(57)Вот так вот. Я уже неделю мучаюсь с получением остатка.
43. Ditron 185 31.08.18 10:38 Сейчас в теме
И зачем в регистре ресурс "Цена", это глупо, остатки и обороты ведутся по количеству и сумме, т.е. цену можно получить делением остатка суммы на остаток количества...
45. Stanislav1993 31.08.18 10:39 Сейчас в теме
50. Ditron 185 31.08.18 10:46 Сейчас в теме
Это же ты писал, "Склад = Справочники.Склады.Склад;", но на складе склад ничего и не должно быть в итоге
53. Stanislav1993 31.08.18 10:49 Сейчас в теме
(50)Суть такова. Что передача продукции в зал может быть полной, а может быть частичной.
В основном будет использоваться частичный метод.
Я вот и хочу чтобы при передаче в зал, отображался реальный остаток на складе.
Я хочу в этом разобраться ,как решить такой нюанс. А в дальнейшем я уже не буду таким назойливым на форуме)
54. Ditron 185 31.08.18 10:51 Сейчас в теме
(53)Непонятно, что ты имеешь ввиду под "частичным" и "Полным", есть приход, на момент проведения документа передачи остаток есть?
56. Stanislav1993 31.08.18 10:52 Сейчас в теме
(54) Под частичным и полным, я подразумеваю передачу продукцию в зал.
Поступление как обычно и делается - общее количество, сумма.
59. Ditron 185 31.08.18 10:58 Сейчас в теме
В отладке что происходит? Дата получения остатка точно позже чем записи в регистре, и да проверь настройки регистра, свойство "Разрешить разделение итогов" стоит?
60. Stanislav1993 31.08.18 11:03 Сейчас в теме
(59) Как позже?
Прикрепленные файлы:
64. M61 20 31.08.18 11:59 Сейчас в теме
(60) А колонку с количеством можно посмотреть, может в примере остаток 0, а мы голову ломаем. Скрин записей регистра полный пожалуйста
69. Ditron 185 31.08.18 12:27 Сейчас в теме
(64)С количеством там как раз все ок 10 пришло 5 ушло, там есть скрин выше, там проблема с датой получения остатка...
65. M61 20 31.08.18 12:06 Сейчас в теме
(60) и еще пожалуйста скриншот из отладчика с вычисленным выражением "Продукция". Хочется увидеть какое значение приходит в параметр
68. Ditron 185 31.08.18 12:26 Сейчас в теме
(60)А вот так, ты остаток на какую дату получаешь?
70. Ditron 185 31.08.18 12:27 Сейчас в теме
(60)Вы не ответили, "Разрешить разделение итогов" стоит?
61. Jestery 31.08.18 11:46 Сейчас в теме
Я вот и хочу чтобы при передаче в зал, отображался реальный остаток на складе

Я вот не пойму, вы остатки то как смотрите - отчет какой то простой написали или на форму их вывели?
62. Stanislav1993 31.08.18 11:49 Сейчас в теме
(61)Здравствуйте. Проблема не в отчетности, а выводе данных при выборе определенной продукции.
Ниже прикреплю скрин, чего я пытаюсь добиться.
Прикрепленные файлы:
63. Jestery 31.08.18 11:58 Сейчас в теме
(62) Ок, допустим Вы выбрали номенклатуру "Мит 160 литр Бойлер" в табличной части. Что должно произойти? Должен отобразиться остаток в поле "Количество продукции на складе"? Или текущий доступный остаток должен подставиться в поле "количество" в таб.части документа?
72. Stanislav1993 31.08.18 12:52 Сейчас в теме
(63)Представим Мит 160 поступило 100 штук.

При выборе продукции Мит 160 должен отобразиться остаток 160, а в зал нужно отправить 30 штук.
Я провел документ. Остаток уже 70 штук.
В дальнейшем когда человек захочет снова передать продукцию, то остаток в реквизите должен отобразиться со значением 70шт.
Вот чего я хочу добиться.
Мне осталось в этом разобраться, чтобы я уже сам в дальнейшем играться с остатками.
Так как меня в дальнейшем ждем создание еще 3-х документов :
-передача продукции на склад и реализация продукции.
-инвентаризация продукции на складе
-инвентаризация продукции в зале.
67. Ditron 185 31.08.18 12:25 Сейчас в теме
(62)У тебя на скрине дата-время документа 0, какую дату та передаешь при получении остатка?
66. M61 20 31.08.18 12:15 Сейчас в теме
Или кидайте .dt вашей базы, вопрос пяти минут решаем уже второй день :)
ivangrant; Jestery; Ditron; +3 Ответить
73. Stanislav1993 31.08.18 12:53 Сейчас в теме
(66) admin
Init123#
Прикрепленные файлы:
1231231.dt
71. Jestery 31.08.18 12:37 Сейчас в теме
Так точно. дтшник в студию)
74. Stanislav1993 31.08.18 12:56 Сейчас в теме
75. Ditron 185 31.08.18 13:02 Сейчас в теме
Дружище, посмотри измерение "Место хранения" в регистре, тип его
79. Stanislav1993 31.08.18 13:07 Сейчас в теме
(75)Дружище, мне просто смешно и стыдно, от моей ошибки)))))) Честно, я сейчас сижу и ржу!)))
Больше тебе спасибо!) Работает!)
76. Ditron 185 31.08.18 13:03 Сейчас в теме
И заодно ЕдиницаИзмерения ))
78. Jestery 31.08.18 13:07 Сейчас в теме
(76) Ditron, что там "Cтрока" что ли в измерении?
Stanislav1993; Ditron; +2 Ответить
80. Stanislav1993 31.08.18 13:08 Сейчас в теме
(78)Да! Просто жесть, Как я так мог накосячить!
77. Jestery 31.08.18 13:06 Сейчас в теме
Вот засада то, "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.12" А у меня 8.3.10. только. Не запускается.
87. Ditron 185 31.08.18 13:14 Сейчас в теме
(77)Сразу видно, народ не читает раздел о проблемных ситуациях релизов, быстрее последнее ставят )))
81. Stanislav1993 31.08.18 13:08 Сейчас в теме
Хочу поблагодарить всех, кто помогал мне советами и решениями к данной проблеме! Большое спасибо, ребята!))
85. Ditron 185 31.08.18 13:12 Сейчас в теме
(81)Мой тебе совет, прежде чем писать для упр. приложения, почитай матчасть, элементарных вещей не знаешь, но все впереди, удачи!
86. Stanislav1993 31.08.18 13:14 Сейчас в теме
(85)Спасибо за искренность!
82. Ditron 185 31.08.18 13:10 Сейчас в теме
А как вообще это все работало, в модулях формы на клиенте обращаешься к реквизитам через ссылку и получаешь объекты!! ..... WTF ))
84. Stanislav1993 31.08.18 13:11 Сейчас в теме
(82) Это магия!))) Но работает!) Чудо просто! Работает то, чего я и желал!)
83. Stanislav1993 31.08.18 13:10 Сейчас в теме
Теперь я постараюсь разобраться сам, в получении остатка в зале!))
88. Ditron 185 31.08.18 13:15 Сейчас в теме
(83)И поставь в общих модулях серверных галку "вызов сервера", раз ты их из клиента формы вызываешь....
Stanislav1993; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот