Имя: Пароль:
1C
 
Как получить минимальный остаток по товару за период?
0 antotti
 
11.09.14
17:51
Уважаемые знатоки, подскажите пожалуйста, как получить минимальный остаток товара за период в БП 2.0 ?? Пробовал функцию мин , не проходит(
1 Волшебник
 
модератор
11.09.14
17:52
функция МИНИМУМ в запросе
2 antotti
 
11.09.14
18:02
Вот текст запроса:
Не отрабатывает(

Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
                 |    ХозрасчетныйОстатки.Счет КАК Счет,
                 |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                 |    ХозрасчетныйОстатки.Субконто2 КАК Партия,
                 |    ХозрасчетныйОстатки.Субконто3 КАК Склад,
                 |    ХозрасчетныйОстатки.Организация КАК Организация,
                 |    МИНИМУМ(ХозрасчетныйОстатки.КоличествоОстаток) КАК КоличествоОстаток
                 |ИЗ
                 |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстатки
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    ХозрасчетныйОстатки.Организация,
                 |    ХозрасчетныйОстатки.Субконто3,
                 |    ХозрасчетныйОстатки.Субконто1,
                 |    ХозрасчетныйОстатки.Субконто2,
                 |    ХозрасчетныйОстатки.Счет";
3 antotti
 
11.09.14
18:03
Функцию МИНИМУМ использовал - но результата нет, может что- то еще не так?
4 Maniac
 
11.09.14
18:09
ЛОЛ
На лансере висит задание по получению минимальных остатков для заполнения счета в БП
За суп с тарелкой.

ВИдимо супом накормили, пришел сюда спрашивать как написать)))
5 Maniac
 
11.09.14
18:09
(3) Все на так - так как ты запрос написал - вообще не понимая что написал.
6 antotti
 
11.09.14
18:14
Мне запрос не для счета нужен, а для выгрузки всех позиций в эксель.
7 Maniac
 
11.09.14
18:16
Надо по впервых остальзовать
Остатки без параметра даты.
Но с параметром периодичности День
8 Maniac
 
11.09.14
18:17
и еще проверку на 0.

Тк сто пудово за период будет такое когда был 0
9 antotti
 
11.09.14
18:17
Вот весь код:

СчетаРасчетов = Новый Массив();
    СчетаРасчетов.Добавить(ПланыСчетов.Хозрасчетный.Товары);
    //
    мСубконто=Новый Массив();
    мСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    мСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии);
    мСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    //
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ХозрасчетныйОстатки.Счет КАК Счет,
                 |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                 |    ХозрасчетныйОстатки.Субконто2 КАК Партия,
                 |    ХозрасчетныйОстатки.Субконто3 КАК Склад,
                 |    ХозрасчетныйОстатки.Организация КАК Организация,
                 |    МИНИМУМ(ХозрасчетныйОстатки.КоличествоОстаток) КАК КоличествоОстаток
                 |ИЗ
                 |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстатки
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    ХозрасчетныйОстатки.Организация,
                 |    ХозрасчетныйОстатки.Субконто3,
                 |    ХозрасчетныйОстатки.Субконто1,
                 |    ХозрасчетныйОстатки.Субконто2,
                 |    ХозрасчетныйОстатки.Счет";
    Запрос.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.ДатаКонца2)+1);
    Запрос.УстановитьПараметр("Организация",ЭтотОбъект.Организация2);
    Запрос.УстановитьПараметр("Субконто",мСубконто);
    Запрос.УстановитьПараметр("Счет",СчетаРасчетов);
    //
    Результат=Запрос.Выполнить();
    Выборка=Результат.Выбрать();
    //
    // Выгрузка данных в excel
    // Проверка на заполненность пути
        // Создали новый xls  (com объект)
    Попытка
        Состояние("Загрузка Microsoft Excel...");
        // ExcelПриложение=Новый СОМОбъект("Excel.Application");
        Эксель=Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при запуске!"+ ОписаниеОшибки());
    КонецПопытки;
    // Доступ к книге
    Попытка
        // WorkBook=Excel.WorkBooks.Open("ПутьКФайлу");
        Книга=Эксель.WorkBooks.Add();
        Состояние("Открытие файла...");
    Исключение
        Сообщить("Ошибка при открытии книги!" + ОписаниеОшибки());
    КонецПопытки;
    // Доступ к листу номер 1
    Попытка
        // WorkSheet (РабочийЛист)
        Лист=Книга.WorkSheets(1);
        Лист=Книга.Sheets.Add();
        Состояние("Получение доступа к листу...");
    Исключение
        Сообщить("Ошибка в открытии листа");
    КонецПопытки;    
    //
    Лист.Cells.Clear();
    Лист.Cells(1,1).Value="Организация";
    Лист.Cells(1,2).Value="Номенклатура";
    Лист.Cells(1,3).Value="Партия";
    Лист.Cells(1,4).Value="Склад";
    Лист.Cells(1,5).Value="СуммаОстаток";
    Лист.Cells(1,6).Value="КоличествоОстаток";
    //
    СчетчикСтрок=2;
    Пока Выборка.Следующий() Цикл
        Лист.Cells(СчетчикСтрок,1).Value=Строка(Выборка.Организация);
        Лист.Cells(СчетчикСтрок,2).Value=Строка(Выборка.Номенклатура);
        Лист.Cells(СчетчикСтрок,3).Value=Строка(Выборка.Партия);
        Лист.Cells(СчетчикСтрок,4).Value=Строка(Выборка.Склад);
        Лист.Cells(СчетчикСтрок,5).Value=Число(Выборка.СуммаОстаток);
        Лист.Cells(СчетчикСтрок,6).Value=Число(Выборка.КоличествоОстаток);
        СчетчикСтрок=СчетчикСтрок+1;
    КонецЦикла;
    //
    Попытка
        Книга.SaveAs(ЭтотОбъект.ПутьКФайлу2);
    Исключение
        Сообщить("Документ не сохранен");
    КонецПопытки;
    Эксель.Quit();
    ЭтаФорма.ТолькоПросмотр=Истина;    

Maniac, А как сделать периодичность день?
10 Maniac
 
11.09.14
18:17
и вообще конечно какая то дурная задача - по минимальному остатку.
Я еще понимаю когда средний считают.
Но минимальный...
11 Maniac
 
11.09.14
18:18
Третий параметр.
12 Эмбеддер
 
11.09.14
18:21
(10) самое странное, что остаток считается отдельно для каждой партии
13 SUA
 
11.09.14
18:22
"минимальный остаток за период"<>"минимальный остаток на момент времени", не?
14 antotti
 
11.09.14
18:27
а как периодичность день сделать или месяц?
15 Эмбеддер
 
11.09.14
18:29
(14) третий параметр "День"
подозреваю, что надо делать вложенный запрос
во внутреннем запросе группировка по складу и организации (без партий), СУММА(Количество)
а во внешнем запросе - МИНИМУМ
16 Фокусник
 
11.09.14
21:50
(8) значит 0 и будет минимумом, зачем его исключать? ;)
17 Hans
 
11.09.14
21:58
Маня у тебя работы что ли нет на лансере лазиешь?
18 mistеr
 
11.09.14
22:32
А что, если минимальный остаток был достигнут посреди дня?
19 Maniac
 
11.09.14
22:39
(17) работы всегда валом. там часто кидают ТЗ на то что у меня готовое.
20 Maniac
 
11.09.14
22:40
(18) минимальный остаток это всегда ноль ))))
21 Maniac
 
11.09.14
22:40
а ну иногда бывают минусы)))
22 mistеr
 
11.09.14
22:46
(20) Ты не понял. Допустим на начало дня остаток 50, потом расход - остаток 10, потом приход - остаток 110. Так вот эти 10 предлагаемым методом не получишь.

Минимальные остаток ищем *за период*, ноль там может быть, а может не быть.
23 Ник второй
 
11.09.14
22:51
Первый пакет:
Берем движения регистра за период и вытаскивам даты этих движений

Второй пакет:
Соединяем движение регистра соединяем с пакетом где "Пакет1.Дата" >= Регистра.Дата. И "сумма" на ресурс.

Третий пакет:
берем минимум.
24 Maniac
 
11.09.14
22:57
(22) фирма считает остаток на конец дня. тоесть когда окончились продажи.
Если в течении дня были остатки и приходы, продажи - и тп то это не в счет.

Я не знаю конечно чем они торгуют, если бы автор назвал отрасль было бы хотя бы понято что за фигня.
25 mistеr
 
11.09.14
23:13
(23) Как насчет "за период"? Полагаю, в расчете должны участвовать остатки на начало и на конец...
26 Ник второй
 
11.09.14
23:16
(25) На конец можно не брать, достаточно добавить на начало.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс