7.7 Печать ценников

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем apanfil, 19 янв 2015.

  1. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Добрый день, подскажите пожалуйста, как добавить на печатную форму ценника, наименование группы, в которой находится товар. Т.е. имеем каталог с деревом
    Номенклатура
    - Товары для ремонта
    --Обои
    ---ARTShow
    ---Art
    ---Беларусь
    ...
    Нужно, что бы последняя группа, в данном случае (артшоу, арт, Беларусь и т.д.) выводилась под наименованием товара. Внизу модуль который используется сейчас.

    Код:
    //******************************************************************************
    // ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
    //
    // Параметры:
    //  Таб             - таблица, в которую выполняется вывод ценника
    //  ПечНаименование - наименование товара
    //  ПечЕдиница      - единица измерения товара
    //  ПечРозн         - цена товара
    //  Столбик         - номер столбика.
    //  Ряд             - номер ряда
    //
    // Возвращаемое значение:
    //  Нет.
    //
    // Описание:
    //  Добавляет ценник в таблицу.
    //
    Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование,ПечЕдиница, ПечРозн, Столбик, Ряд)
            
        Столбик    = ?(Столбик = 0, 1      , 0  );
        Ряд        = ?(Столбик = 0, Ряд + 1, Ряд);
    
        Если Ряд > 3 Тогда
             Таб.НоваяСтраница();
             Ряд = 1;
         КонецЕсли;
        
         Если Столбик = 0 Тогда
             Таб.ВывестиСекцию("Товар|Ценник");
         Иначе
             Таб.ПрисоединитьСекцию("Товар|Ценник");
         КонецЕсли;
    
    КонецПроцедуры // ДобавитьЦенник()
    
    //******************************************************************************
    // Сформировать(ТаблицаТоваров, ПечФирма)
    //
    // Параметры:
    //  ТаблицаТоваров    - таблица значений, содержащая информацию о цене товара
    //  ПечФирма        - наименование фирмы, которое будет выводиться вверху ценника
    //
    // Возвращаемое значение:
    //  Нет.
    //
    // Описание:
    //  Формирует таблицу с ценниками.
    //
    Процедура Сформировать(ТаблицаТоваров,ПечФирма)
    
        //  Создание Таблицы для выходного отчета
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
       
        Столбик = 1;
         Ряд     = 0;
    
         ТаблицаТоваров.ВыбратьСтроки();
         Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл
            ПечРозн    = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта);
            ПечНаименование    = ТаблицаТоваров.Товар;
            ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
             глОживить(1);
        КонецЦикла;
        
        //Вызов выходного отчета в окно просмотра и редактирования.
        Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Товарные ценники","");
       
    КонецПроцедуры
    
    //******************************************************************************
    // Предопределенная процедура
    //
    Процедура ПриОткрытии()
       
        СтатусВозврата(0);
        ДанныеДляПечати = Форма.Параметр;
                     
        Если ТипЗначенияСтр(ДанныеДляПечати) <> "СписокЗначений" Тогда
            Возврат;
        КонецЕсли;
       
        ПечФирма       = ДанныеДляПечати.Получить("Фирма");
        ТаблицаТоваров = ДанныеДляПечати.Получить("Таблица");
       
        Сформировать(ТаблицаТоваров, ПечФирма);
       
    КонецПроцедуры // ПриОткрытии()
    --- Объединение сообщений, 19 янв 2015 ---
    Конфигурация - Торговля + склад
  2. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    "Товар" это сам товар, а "Товар.Родитель" - группа в которой он находиться
  3. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Как это прописать в модуле? или в форме просто добавить?
  4. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    можете тут передавать, из того места где вызываете
    Код:
    ДобавитьЦенник(Таб, ПечФирма, ПечГруппа, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
    ну и на форму соответственно добавить
  5. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    я не очень силен в правке 1С,
    Так?
    модуль.jpg печать.jpg
  6. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    почти верно,
    это
    Код:
    ДобавитьЦенник(Таб, ПечФирма, ПечГруппа, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
    у вас откуда-то вызывается, так что и там надо прописать

    так что ещё вот тут
    Код:
         ТаблицаТоваров.ВыбратьСтроки();
         Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл
            ПечРозн    = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта);
            ПечНаименование    = ТаблицаТоваров.Товар;
            ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
             глОживить(1);
        КонецЦикла;
    надо заменить
    Код:
         ТаблицаТоваров.ВыбратьСтроки();
         Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл
            ПечРозн    = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта);
            ПечНаименование    = ТаблицаТоваров.Товар;
            ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар.Родитель, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
             глОживить(1);
        КонецЦикла;
    но! сия конструкция ("через две точки")
    Код:
    ТаблицаТоваров.Товар.Родитель
    отрицательна в производительности, особенно в цикле

    так что надо ещё смотреть как эта передаваемая таблица формируется, и в ней добавить Родителя
  7. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    ой беда(((
    --- Объединение сообщений, 19 янв 2015 ---
    так что надо ещё смотреть как эта передаваемая таблица формируется, и в ней добавить Родителя[/QUOTE]
    где это исать?
  8. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    ладно, если не внося реквизит в вызовы, т.е. код = коду из поста 1, просто на форму ставить реквизит (выражение) как у вас на скрине вы сделали что будет в печатной форме на просмотре?
  9. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Пользователи назаходили в 1с, пока не дает сохранить изменения, буду ждать 17:00, когда повылезают. Спасибо, отпишусь
  10. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    если есть копия можете на ней проверить
  11. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    к сожалению нет(
  12. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Проверил, с точкой, модуль не запускается, пишет ошибку в строке 62, и там в 18 - скобку, убрал точки, он написал - поле агрегатного не обнаружено
    --- Объединение сообщений, 19 янв 2015 ---
    ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.ТоварРодитель, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
    {Обработка.ПечатьЦенников.Форма.Модуль(62)}: Поле агрегатного объекта не обнаружено (ТоварРодитель)
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Помимо самой обработки печати ценника, вам нужно еще изменить процедуру формирования параметра, которая передает данные в обработку. Т.к. передается СТРОКА, а не объект данных.
    Пример смотри в процедуре ПечатьЦенника() модуля формы справочника номенклатуры.
    З/Ы воспользуйся поиском по форуму.. Эта тема всплывала уже не раз.
  14. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    перед
    Столбик = ?(Столбик = 0, 1 , 0 );
    напиши
    пГруппа=ПечЕдиница.Владелец.Родитель;
    в ценник впиши переменную пГруппа где ты хочешь ея видеть
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Не сработает... ИБО передается в обработку СТРОКА а не ОБЪЕКТ
  16. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    печединица передается как объект

    ммм... товар тоже передается как объект

    ну, тогда
    пГруппа=ПечНаименование.Родитель;
    Последнее редактирование: 20 янв 2015
  17. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    там и в строку можно родителя вставить, но надо начало найти, исток
    --- Объединение сообщений, 20 янв 2015 ---
    надо было так
    Код:
    ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар.Родитель, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Пост №13
  19. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    да код в №1 есть, там :
    в Процедура ПриОткрытии() получают таблицу товаров и вызывают формирование
    Код:
    ТаблицаТоваров = ДанныеДляПечати.Получить("Таблица");
      
        Сформировать(ТаблицаТоваров, ПечФирма);
    отсылая суда - Процедура Сформировать(ТаблицаТоваров,ПечФирма)
    а там в цикле обходим таблицу товаров,
    Код:
    ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
    дёргая каждый раз Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование,ПечЕдиница, ПечРозн, Столбик, Ряд)
  20. TopicStarter Overlay
    apanfil
    Offline

    apanfil

    Регистрация:
    19 янв 2015
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    спасибо, исправил, вечером попробую отпишусь

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