7.7 Альтернатива отчета Остатки ТМЦ

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Umptek, 26 июн 2014.

  1. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Вообщем, вдруг встала следующая задача.
    В связи с расширением возможностей сайта приходиться регулярно выгружать на него остатки ТМЦ.
    Раньше я просто делал отчет Остатки ТМЦ с уточнение цены "отпускная цена (только розница)" и все.
    Но теперь нужно, чтобы в отчете присутствовали все позиции номенклатуры (даже нулевые), код элемента номенклатуры и код родителя (для деления по группам на сайте).
    Сваял такой небольшой отчетик, который тупо перебирает весь справочник номенклатуры и заполняети таблицу.
    Остатки по складу (склад и фирма выбирается в диалоге) взял из Регистр.ОстаткиТМЦ. Вроде правильно получилось (хотя берут сомнения почему-то...). А вот где взять эту цену, которая "отпускная цена (только розница)"? Я так понимаю, это ведь цена из того же регистра, измерение "ЦенаПрод"? А как ее оттуда выдрать?
    Вот фрагмент моего кода:
    Код:
    Процедура СписокНоменклатурыВсей() 
                 
        СпрНоменклатуры=СоздатьОбъект("Справочник.Номенклатура");  // Создаем привязку к справочнику номенклатуры
       
        ТабВсяНоменклатура=СоздатьОбъект("Таблица");        // Создаем привязку к табличной части
        ТабВсяНоменклатура.ИсходнаяТаблица("ВсяНоменклатура");  
       
        РегОстаткиТМЦ=СоздатьОбъект("Регистр.ОстаткиТМЦ");
           
         
        // Вариант вывода номенклатуры без названий групп
           
        СпрНоменклатуры.ВыбратьЭлементы();
        Пока СпрНоменклатуры.ПолучитьЭлемент()=1 Цикл
            Если СпрНоменклатуры.ЭтоГруппа()=0 Тогда   // Если не группа, то выводим данные
                ПечКод=СпрНоменклатуры.Код;
                ПечНоменклатура=СпрНоменклатуры.ПолнНаименование;
                ПечРодитель=СпрНоменклатуры.Родитель.Код;      
                ПечКоличество=РегОстаткиТМЦ.СводныйОстаток(ВыбРазделитель1,СпрНоменклатуры,ВыбСклад,,"Количество");
                ТабВсяНоменклатура.ВывестиСекцию("ОбщаяСекция");
            КонецЕсли;
        КонецЦикла;
               
        ТабВсяНоменклатура.Показать("Товары");  // Показываем таблицу   
       
    КонецПроцедуры   // СписокНоменклатурыВсей   
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А у вас розничные продажи или оптовые?
  3. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Ну я остатки тмц для сайта выгружаю с розничными ценами ("отпускная цена (только розница)").
    Да и вообще торгуем пока по одной цене, а клиентам скидка в процентах делается уже на месте.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В ТиС это принципиально. Оформляете отгрузку документом Реализация (розница) или Реализация (купля-продажа) ?
    У вас цены могут просто называться розничными, но не быть таковыми с точки зрения конфигурации
  5. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Документом реализация (розница). Заголовок документа в форме "Продажи по принятой выручке (ЕНВД)".
    Поступление товара документом "Поступление в розницу (купля-продажа)".
    Переоценка документом "Переоценка (розница)".
    Всего два склада: "Магазин" - розничный и "Брак" - оптовый. Даже не помню, почему брак сделали оптовым, это делал не я.
    Просто когда деталь бракованная, ее перемещают на склад брак "Перемещением", дабы не светилась в остатках магазина.
    А все остальные операции идут со складом магазин
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ясно. В типовой ТиС в ГМ есть процедура глПолучитьРозничныйОстатокЦену. Возьмите за образец
  7. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Понятно, спасибо большое.
    Обязательно изучу эту функцию.
    Просто мне еще интересно было изучить работу с ценами и регистром остатков...
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не за что. Розничную цену/остаток можно получить и через запрос. Если у вас большой номенклатурный перечень - выиграете по времени.
  9. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Вот именно, у меня такая мысль и была. А как адекватно получить данные через запрос, что добавить в мой код?
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Воспользуйтесь конструктором запросов. Группировка по цене и номенклатуре - обязательна. Все остальные реквизиты могут служить для установки фильтров (при необходимости)
  11. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Используя запрос в регистр остатков я получу позиции с нулевым остатком? У меня почему-то получаются только с положительным остатком.
    А можно просто обратиться в регистры доя получения розничной цены, я ведь так понимаю, что ЦенаПрод она и есть?
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используйте конструкцию "все вошедшие в запрос" в группировке


    Она самая. Только вот понятие "просто обратиться в регистры" звучит как-то расплывчато
  13. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Я имел в виду обращение к регистру не через запрос. Как в моем коде, через сводные остатки, например.
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    можно. но через запрос удобнее
  15. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Выборку по складу и фирме задавать в условиях запроса?
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  17. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Сделал вот такой запрос
    Код:
    Процедура ПробаЗапроса()
       
       
        Перем ТекстЗапроса, тЗнач, ЗапС;
       
        ОчиститьОкноСообщений();
       
        тЗнач=СоздатьОбъект("ТаблицаЗначений");
        ЗапС=СоздатьОбъект("Запрос");
        рабДат=ДатаКонца;
             
        ТекстЗапроса="
        |Период с рабДат по рабДат;
        |Фирма = Регистр.ОстаткиТМЦ.Фирма;
        |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
        |Склад = Регистр.ОстаткиТМЦ.Склад;
        |ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
        |Количество=Регистр.ОстаткиТМЦ.Количество;
        |Функция реаКол=КонОст(Количество);
        |Группировка Номенклатура;
        |Условие(Склад = ВыбСклад);
        |Условие(Фирма = ВыбРазделитель1);";
       
       
    
        флаг=ЗапС.Выполнить(ТекстЗапроса);
        ЗапС.Выгрузить(тЗнач,1);
        Сообщить(флаг);
           тЗнач.ВыбратьСтроку(, "Запрос в таблице значений");
       
    КонецПроцедуры // ПробаЗапроса
    --- Объединение сообщений, 4 авг 2014 ---
    Вроде все работает, но если убрать из текста запроса строчку
    Код:
    Функция реаКол=КонОст(Количество)
    то выдает пустую таблицу из одной строчки.
    А с данной строкой в тексте запроса работает....
    Не могу понять зачем эту функция нужна и почему она так влияет на результаты запроса......
  18. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Кстати, добавляю структуру Все ВошедшиеВЗапрос в групировку, а все равно номенклатура с нулевыми остатками не выводиться.....
    Не могу понять почему, теоретически должна.
  19. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    потому что именно эта строчка и есть результат
    она вычисляет конечный остаток номенклатуры по складу на указанную конечную дату
    кроме того у вас там по идее вашего запроса есть лишняя строка, ибо никуда не подвязана
    Код:
    |ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
    или к ней надо ещё одну строку
    Код:
    |Функция реаКолСумма=КонОст(ЦенаПрод);
    которая вычислит сумму остатка номенклатуры по регистру


    а если вы всё выгружаете в ТЗ то можно по иному получить в неё остатки, особенно на ТА
    Код:
    Остатки(<?>,);
    Синтаксис:
    Остатки(<Измерение1>,<Измерение2>...)
    Назначение:
    Извлечь все ресурсы по регистру.
    Параметры:
    <Измерен1>,<Измерен2>... - значения измерений регистра.
    Замечание:
    Полученные остатки считываются из атрибутов-ресурсов регистра.
    Метод используется только для регистров остатков.
    а с чего ради он должен выводить конечный остаток? в холодильнике ведь не остаётся продуктов которые скушали?
  20. TopicStarter Overlay
    Umptek
    Offline

    Umptek

    Регистрация:
    17 фев 2014
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    ЦенаПрод нужна так как моя задача получить остатки розничного склада на дату и розничную цену по каждой номенклатуре, которая и является этой ЦенойПрод.

Поделиться этой страницей