7.7 Как распечатать ценник со страной производителем

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем fog, 20 апр 2008.

  1. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В модуде ЭлементаСправочникаНоменклатура

    Код:
    Процедура ДобавитьВтаблицу(Табл, Товар, ТипЦены)
    Перем ВремЦена, ВремЕдиница, ВремВалюта;
    
    Если глВернутьЦену(Товар, ТипЦены, РабочаяДата(), ВремЦена, ВремЕдиница, ВремВалюта) = 1 Тогда
    Табл.НоваяСтрока();
    Табл.Товар   = СокрЛП(Товар.ПолнНаименование);
    Табл.Цена    = ВремЦена;
    Табл.Валюта  = ВремВалюта;
    Табл.Единица = ВремЕдиница;
    Табл.Производитель = ""; //добавь сам
    Иначе
    Сообщить("У товара """ + Товар.ПолнНаименование + """ отсутствует цена """ + ТипЦены + """");
    КонецЕсли;    
    
    КонецПроцедуры // ДобавитьВтаблицу()
    
    
    Процедура ПечатьЦенника()
    Перем ПечЕдиница, ПечНаименование, ПечРозн;
    Перем Таб;
    Перем Столбик;
    Перем Ряд;
    Перем Процент, ПорядокОкр;
    
    Перем ТабТМЦ, ДанныеДляПечати;
    
    Если Выбран() = 0 Тогда
    Предупреждение("Печать можно выполнять только для записанных номенклатурных позиций", 60);
    Возврат;
    КонецЕсли;
    
    ТипЦены    =    СоздатьОбъект("Справочник.ТипыЦен");
    Если ТипЦены.Выбрать("Типы цен",) = 0 Тогда
    Возврат;
    КонецЕсли;
    ТипЦены    =    ТипЦены.ТекущийЭлемент();
    
    ТабТМЦ = СоздатьОбъект("ТаблицаЗначений");
    ТабТМЦ.НоваяКолонка("Товар");
    ТабТМЦ.НоваяКолонка("Цена","Число");
    ТабТМЦ.НоваяКолонка("Единица");
    ТабТМЦ.НоваяКолонка("Валюта");
    ТабТМЦ.НоваяКолонка("Производитель"); //добавили
    
    
    ВыбТМЦ = ТекущийЭлемент();
    
    ДобавитьВтаблицу(ТабТМЦ, ВыбТМЦ, ТипЦены);
    
    // упакуем данные в список
    ДанныеДляПечати = СоздатьОбъект("СписокЗначений");
    
    Фирма = СокрЛП(глЗначениеПоУмолчанию("ОсновнаяФирма").ЮрЛицо.ПолнНаименование);
    ДанныеДляПечати.ДобавитьЗначение(Фирма          , "Фирма");
    ДанныеДляПечати.ДобавитьЗначение(ТипЦены.Валюта , "Валюта");
    ДанныеДляПечати.ДобавитьЗначение(ТабТМЦ         , "Таблица");
    
    ОткрытьФормуМодально("Обработка.ПечатьЦенников", ДанныеДляПечати);
    
    КонецПроцедуры // ПечатьЦенника()
    
    
    
    
    Аналогмчные изменения произведи в Модуле списка справончика Номенклатуры
  2. noVel
    Offline

    noVel

    Регистрация:
    9 мар 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    И так:
    В справочнике Номенклатура -> Форма элемента -> Модуль
    Добавляем:
    Код:
    Табл.Единица = ВремЕдиница;
    Табл.Производитель = ""; //добавь сам
    Иначе
    
    и
    Код:
    ТабТМЦ.НоваяКолонка("Валюта"); 
    ТабТМЦ.НоваяКолонка("Производитель"); //добавили
    
    ВыбТМЦ = ТекущийЭлемент();
    
    Затем в справочнике Номенклатура -> Формы списка -> Форма списка -> Модуль
    Добавляем:
    Код:
    Табл.Единица = ВремЕдиница;
    Табл.Производитель = ""; //добавь сам
    Иначе
    
    и
    Код:
    ТабТоваров.НоваяКолонка("Валюта");
    ТабТоваров.НоваяКолонка("Производитель");
    
    Если ВыбТовар.ЭтоГруппа() = 0 Тогда
    
    Тут Вопрос: Вставлять ТабТМЦ.НоваяКолонка.... или ТабТоваров.НоваяКолонка .....
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Смотри имя таблицы, передаваемой в качестве параметра в обработку печати. Ту и ставь
  4. noVel
    Offline

    noVel

    Регистрация:
    9 мар 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Бухгалтерский угодник
    Так, а по изменеиям то что дальше ... или это всё?
    В печать ценника printcen.ert, что править/дописывать ?
  5. Хряк
    Offline

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

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Про страну производителя
    В процедуре ДобавитьЦенник напиши
    ПечСтрана = Докум.Единица.Владелец.СтранаПроисхождения;
    больше ничего менять не нужно
  6. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Код:
    //  Создание Таблицы для выходного отчета
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    
    ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);
    
    Столбик = 1;
    Ряд     = 0;
    
    Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку() = 1 Цикл
    Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
    Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
    Продолжить;    
    КонецЕсли;
    КонецЕсли;
    ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
    ПечРозн    = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
    ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
    ПечСтрана = Докум.СтранаПроисхождения;   
    
    ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, ПечСтрана, Столбик, Ряд);
    глОживить(1);
    КонецЦикла;
    
    
    
    Как мне сюда прописать код товара?
  7. Хряк
    Offline

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

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Не здесь, а в процедуре ДобавитьЦенник напиши
    ПечКод = Докум.Единица.Владелец.Код;
  8. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1

    ОГРОМНОЕ ВАМ СПАСИБО! :unsure: :aua: :smile:
  9. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    У меня ценники располагаются на персвой странице в 3 ряда, а на остальных страницах в 2 ряда Подскажите что я не так написал?

    Код:
     
    Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, ПечСтрана, ПечКод, Столбик, Ряд) 
    Если Ряд > 3 Тогда  
    Таб.НоваяСтраница();     
    Ряд = 1;    
    КонецЕсли;    
    Если Столбик = 1 Тогда       
    Таб.ВывестиСекцию("Товар|Ценник");   
    Иначе        Таб.ПрисоединитьСекцию("Товар|Ценник");    
    КонецЕсли;   
    
    Столбик    = ?(Столбик > 2, 1, Столбик + 1);   
    Ряд        = ?(Столбик = 1, Ряд + 1, Ряд);
    КонецПроцедуры // ДобавитьЦенник()
    
    


    Посмотреть вложение 2788

    Вложения:

  10. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    [warn="Интересненько..."]Вот найти смайлы и теги для выделения текста не проблема.... а нажать кнопку СПАСИБО сложно?[/warn]
  11. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Поумничать все мастаки! Ну вот если бы ты написал как решить проблему, я бы тебе был благодарен!
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А кто писал про огромное спасибо???

    А в чем проблема?
    Например из
    Непонятно, тебе надо в три ряда или в два.

    И на картинку раз 5 посмотрел.... где 3 ряда? Не вижу.
  13. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Прошу прощения. Но теперь у меня вот так выглядет это дело :unsure: ЧТО НЕ ТАК НАПИСАННО?

    Код:
    Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, ПечСтрана, ПечКод, Столбик, Ряд) 
    Если Ряд > 3 Тогда  
    Таб.НоваяСтраница();     
    Ряд = 1;    
    КонецЕсли;    
    Если Столбик = 1 Тогда       
    Таб.ВывестиСекцию("Товар|Ценник");   
    Иначе        Таб.ПрисоединитьСекцию("Товар|Ценник");    
    КонецЕсли;   
    
    Столбик    = ?(Столбик > 2, 1, Столбик + 1);   
    Ряд        = ?(Столбик = 1, Ряд + 1, Ряд);  
    
    КонецПроцедуры // ДобавитьЦенник()
    
    
    Посмотреть вложение 2791

    Вложения:

  14. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Я написал что на 1 странице у меня 3 ряда, а на фото я вам показал 2 и 3 страницу где 2 ряда, но у меня сейчас другая проблемка. смотри выше
  15. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Ну где же вы, УМНЫЕ ЛЮДИ? :unsure:
  16. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Наверное умные люди работают и просто физически не могут сидеть на форуме днями.
    Эта фраза видимо относилась к очень умным, их тут еще меньше.

    А что касается сообщений №29 и №33, так у них представленный код одинаковый, значит проблема не в нем. Или тут тоже из разряда "у меня не работает, а этот код просто под руку подвернулся"?
  17. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Я не могу скопировать нормально из буфера код, что это может быть
    Код:
    Ïðîöåäóðà ÄîáàâèòüÖåííèê(Òàá, Ôèðìà, Ïå÷Íàèìåíîâàíèå, Ïå÷Åäèíèöà, Ïå÷Ðîçí, Ïå÷Ñòðàíà, Ïå÷Êîä, Ñòîëáèê, Ðÿä) 
    
    
    Åñëè Ñòîëáèê = 1 Òîãäà       
    Òàá.ÂûâåñòèÑåêöèþ("Òîâàð|Öåííèê");   
    Èíà÷å        Òàá.ÏðèñîåäèíèòüÑåêöèþ("Òîâàð|Öåííèê");    
    ÊîíåöÅñëè;      
    Åñëè Ðÿä > 3 Òîãäà  
    Òàá.ÍîâàÿÑòðàíèöà();     
    Ðÿä = 1;    
    ÊîíåöÅñëè;    
    
    
    Ñòîëáèê    = ?(Ñòîëáèê > 2, 1, Ñòîëáèê + 1);   
    Ðÿä        = ?(Ñòîëáèê = 1, Ðÿä + 1, Ðÿä);  
    ÊîíåöÏðîöåäóðû // ÄîáàâèòüÖåííèê()
    
    
  18. Ramzes
    Offline

    Ramzes

    Регистрация:
    1 май 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Вот вам файл

    Посмотреть вложение 2792

    Вложения:

    • printcen.ert
      Размер файла:
      31,5 КБ
      Просмотров:
      71
  19. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Язык ввода выбран английский при копировании в буфер, поменяй - получится.

    И напиши, что ты хочешь в конечном счете получить?

    (извини, но по "неправильной" картинке сложно понять, что надо)
  20. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Пробуй так (для вывода 3х3):
    Код:
      Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, ПечСтрана, ПечКод, Столбик, Ряд) 
    Если Столбик = 1 Тогда       
    Таб.ВывестиСекцию("Товар|Ценник");   
    Иначе
    Таб.ПрисоединитьСекцию("Товар|Ценник");    
    КонецЕсли;
    /// + WaRDeR - ЮИБ, 2009-10-13 16:04:34
    Столбик = Столбик + 1;
    Если Столбик > 3 Тогда // Здесь 3 - количество ценников по ширине, можно менять на любое
    Столбик = 1;
    Ряд = Ряд + 1;
    КонецЕсли;
    /// ^ WaRDeR - ЮИБ, 2009-10-13 16:04:34
    Если Ряд > 3 Тогда  // Здесь 3 - количество ценников по высоте, можно менять на любое
    Таб.НоваяСтраница();     
    Ряд = 1;    
    КонецЕсли;    
    /// - WaRDeR - ЮИБ, 2009-10-13 16:05:06
    //    Столбик    = ?(Столбик > 2, 1, Столбик + 1);   
    //    Ряд        = ?(Столбик = 1, Ряд + 1, Ряд);  
    /// ^ WaRDeR - ЮИБ, 2009-10-13 16:05:06
    КонецПроцедуры // ДобавитьЦенник()
    
    
    В последних строках вообще бред. Если не веришь, пройдись отладчиком.


    В процедуре "Печать" еще замени строку:
    Код:
    /// * WaRDeR - ЮИБ, 2009-10-13 16:03:24
    //     Ряд     = 0;
    Ряд     = 1;
    /// ^ WaRDeR - ЮИБ, 2009-10-13 16:03:24
    
    
    

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