Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как получить остаток товара на счете, на заданое время?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
kostya77
Добрий день. Подскажите, как получить остаток товара на счете, на заданое время?
denis84
kostya77 @ Сегодня, 8:52 необходимо зарегистрироваться для просмотра ссылки ,
Функция глПолучитьОстатокТМЦ(Конт, ТМЦ, МестоХранения) Экспорт
    // проверка остатка
    Если (ПустоеЗначение(ТМЦ)=1)  Тогда
        Возврат "";
    КонецЕсли;
    
    Фирма    = Конт.Фирма;
    
    Рег     =  СоздатьОбъект("Регистр.Остатки");
    
    Рег.УстановитьЗначениеФильтра("Фирма",Фирма);
    Рег.УстановитьЗначениеФильтра("ТМЦ",ТМЦ);
    Рег.УстановитьЗначениеФильтра("МестоХранения",МестоХранения);
    
    //Установить флаг участия регистра во временном расчете.
    //Рассчитать все регистры с установленным флагом временного расчета на конец события
    Если (Конт.СравнитьТА() = - 1) Тогда                                            //если дата и время документа меньше даты и времени ТА итогов.
        Рег.ВременныйРасчет(1);
        РассчитатьРегистрыПо(Конт.ТекущийДокумент());
        ТекущийОстаток = Рег.Остаток(Фирма,ТМЦ,МестоХранения,"ОстатокТовара");
    ИначеЕсли (Конт.СравнитьТА() = - 2) И (Конт.ДатаДок < ПолучитьДатуТА()) Тогда  //в случае, если новый документ, который сравнивается с ТА,
        Рег.ВременныйРасчет(1);                                                    //еще не записан - то есть он еще не имеет никакой позиции
        РассчитатьРегистрыПо(Конт.ДатаДок);                                        // на оси времени.
        ТекущийОстаток = Рег.Остаток(Фирма,ТМЦ,МестоХранения,"ОстатокТовара");
    ИначеЕсли (Конт.СравнитьТА() = 0) Тогда                                        //если дата и время документа равны дате и времени ТА итогов.
        ТекущийОстаток = Рег.Остаток(Фирма,ТМЦ,МестоХранения,"ОстатокТовара");
    ИначеЕсли (Конт.СравнитьТА() = + 1) Тогда                                      //если дата и время документа больше даты и времени ТА итогов.
        ТекущийОстаток = Рег.Остаток(Фирма,ТМЦ,МестоХранения,"ОстатокТовара");
    КонецЕсли;    
        
    Возврат СокрЛП(Формат(ТекущийОстаток,глФорматКоличестваВформах));
КонецФункции
kostya77
denis84 @ Сегодня, 9:21 необходимо зарегистрироваться для просмотра ссылки ,
Нужно получать остатки из Бухгалтерских итогов. так как регистра Остатки нет
sava1
заполнение тз

Ит=СоздатьОбъект("БухгалтерскиеИтоги");
    //Ит.ВключатьСубсчета(-1);
    Ит.ИспользоватьСубконто("Товар",,1);
    Ит.ИспользоватьСубконто("Цена",,1);
    Ит.ВыполнитьЗапрос(,ДатаМХ,"283");                
    
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1)=1 Цикл
        Ит.ВыбратьСубконто(2);
        Пока Ит.ПолучитьСубконто(2)=1 Цикл
            Тов=Ит.Субконто(1);
            таб.НоваяСтрока();
            таб.Товар=Тов;
            таб.Код = Тов.Код;
            таб.Ед = Тов.ЕдИзмерения;
            таб.Цена=Ит.Субконто(2)/100;
            таб.Ост=Ит.СКД(3);
        КонецЦикла;
    КонецЦикла;
    Таб.Сортировать("Код");
kostya77
sava1 @ Сегодня, 10:03 необходимо зарегистрироваться для просмотра ссылки ,
Зачем выгружать остатки в ТЗ?
sava1
kostya77 @ Сегодня, 10:53 необходимо зарегистрироваться для просмотра ссылки ,

это пример
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.