8.х Отчет по отстаткам товара

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем AmoZ, 4 окт 2009.

  1. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!
    1С 8.1 Бухгалтерия 1.6.15.6.
    Была задача написать отчет, который выводит остаток по товарам... При это пользователь выбирает в форме цифру меньше которой будут выводится товары. Т.е. если ввела 5, то будут выведены товары, которых меньше или равно 5.
    Код:
    Функция КнопкаВыполнитьНажатие(Кнопка)
    
    Форма = ПолучитьФорму("Форма");
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Остаток";
    
    Макет = ПолучитьМакет("Макет");
    
    ОбластьШапка   = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока  = Макет.ПолучитьОбласть("Строка");
    ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка1");
    
    ТабДокумент.Вывести(ОбластьШапка);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Кол", Номер);
    Запрос.Текст = "ВЫБРАТЬ
    |	ПартииТоваровНаСкладахНалоговыйУчетОстатки.Номенклатура,
    |	ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток
    |ИЗ
    |	РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Остатки КАК ПартииТоваровНаСкладахНалоговыйУчетОстатки
    |ГДЕ
    |	ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток <= &Кол";
    Выборка = Запрос.Выполнить();
    Результат = Выборка.Выбрать();
    Ном = 0;
    Флаг_цвет = 1;
    
    Пока Результат.Следующий() Цикл
    Ном = Ном + 1;
    Если Флаг_Цвет = 1 Тогда
    ОбластьСтрока.Параметры.Номенклатура = Результат.Номенклатура;
    ОбластьСтрока.Параметры.Ном = Ном;
    ОбластьСтрока.Параметры.Остаток = Результат.КоличествоОстаток;
    ТабДокумент.Вывести(ОбластьСтрока);
    Флаг_Цвет = 0;
    Иначе
    Флаг_Цвет = 1;
    ОбластьСтрока1.Параметры.Номенклатура = Результат.Номенклатура;
    ОбластьСтрока1.Параметры.Ном = Ном;
    ОбластьСтрока1.Параметры.Остаток = Результат.КоличествоОстаток;
    ТабДокумент.Вывести(ОбластьСтрока1);
    КонецЕсли;
    
    КонецЦикла;
    
    ТабДокумент.Показать();
    
    КонецФункции
    
    Проблема в том, что если вводить 0, то товары, которых нет вообще на складе не выводится, т.к. в регистре "ПартииТоваровНаСкладахНалоговыйУчетОстатки" их нет.

    Подскажите, плз, как исправить?
  2. reloc
    Offline

    reloc

    Регистрация:
    30 окт 2008
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Использовать в запросе связь со справочником "Номенклатура"
    Код:
    ВЫБРАТЬ
    НоменклатураСпр.Ссылка КАК Номенклатура,
    НоменклатураСпр.Представление,
    ЕСТЬNULL(ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
    ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Остатки КАК ПартииТоваровНаСкладахНалоговыйУчетОстатки
    ПО (ПартииТоваровНаСкладахНалоговыйУчетОстатки.Номенклатура = НоменклатураСпр.Ссылка)
    ГДЕ
    ЕСТЬNULL(ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток, 0) <= &Кол
    
    
  3. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Отчет написал, но еще пару вопросиков.
    Как сделать, чтобы на каждой новой странице в отчете печаталась шапка?
    Еще в начале выводятся: "Товары", "Товары на комиссии", "Оборудование к установке" (в общем номенклатурные группы). Как от них избавиться?
  4. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Видимо вывод у тебя по иерархии. Покажи текст как выводишь.
  5. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Код:
    	Форма = ПолучитьФорму("Форма");
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Остаток";
    
    Макет = ПолучитьМакет("Макет");
    
    ОбластьШапка   = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока  = Макет.ПолучитьОбласть("Строка");
    ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка1");
    
    ТабДокумент.Вывести(ОбластьШапка);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Кол", Номер);
    Запрос.Текст = "ВЫБРАТЬ
    |НоменклатураСпр.Ссылка КАК Номенклатура,
    |НоменклатураСпр.Представление,
    |ЕСТЬNULL(ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
    |ИЗ
    |Справочник.Номенклатура КАК НоменклатураСпр
    |	ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Остатки КАК ПартииТоваровНаСкладахНалоговыйУчетОстатки
    |	ПО (ПартииТоваровНаСкладахНалоговыйУчетОстатки.Номенклатура = НоменклатураСпр.Ссылка)
    |ГДЕ
    |ЕСТЬNULL(ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток, 0) <= &Кол";
    Выборка = Запрос.Выполнить();
    Результат = Выборка.Выбрать();
    Ном = 0;
    Флаг_цвет = 1;
    
    Пока Результат.Следующий() Цикл
    Ном = Ном + 1;
    Если Флаг_Цвет = 1 Тогда 			
    ОбластьСтрока.Параметры.Номенклатура = Результат.Номенклатура;
    ОбластьСтрока1.Параметры.Ном = Ном;
    ОбластьСтрока.Параметры.Остаток = Результат.КоличествоОстаток;
    //Сообщить(Результат.);
    ТабДокумент.Вывести(ОбластьСтрока);
    Флаг_Цвет = 0;
    Иначе
    Флаг_Цвет = 1;
    ОбластьСтрока1.Параметры.Номенклатура = Результат.Номенклатура;
    ОбластьСтрока1.Параметры.Ном = Ном;
    ОбластьСтрока1.Параметры.Остаток = Результат.КоличествоОстаток;
    //Сообщить(Результат.);
    ТабДокумент.Вывести(ОбластьСтрока1);
    КонецЕсли;
    
    КонецЦикла;
    
    ТабДокумент.Показать();
    
  6. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте?

    1.
    В запросе добавьте

    Код:
    	|ГДЕ
    |ЕСТЬNULL(ПартииТоваровНаСкладахНалоговыйУчетОстатки.КоличествоОстаток, 0) <= &Кол"
    |И НоменклатураСпр.ЭтоГруппа = ЛОЖЬ
    
    2.
    Посмотрите другие макеты, и как они печатаются, там всё достаточно просто, однако описывать, займет много времени.
  7. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Код:
    ПовторятьПриПечатиСтроки (RepeatOnRowPrint)
    
    А можно примерчик?
    Где хоть вставлять: перед самым выводом или как?
  8. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Вот как же вам лень пользоваться поиском :unsure: Откройте процедуру печати счет-фактуры в любой типовой
    Код:
    	ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    ТабДокумент.ПовторятьПриПечатиСтроки =  ТабДокумент.Область("ЗаголовокТаблицы");
    
  9. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Пользовался, но только не на форуме... :unsure: в гугле - ничего хорошего не нашел :aua:

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