Как добавить код товара на ценник?

1. maskva 20.09.13 14:44 Сейчас в теме
Уважаемые, подскажите пожалуйста, используем 1С 7.7 ТиС, есть необходимость добавить в ценник информацию о коде товара. Важно чтобы код добавлялся не обязательно из карточки товара, а из документа "поступление ТМЦ розница". В "поступление ТМЦ розница" подключена обработка printcen.ert. Основываясь на этом http://forum-1c.ru/index.php?topic=5564.0 удалось добавить код, но в ценник из карточки номенклатуры. Как добавить код в ценник из документа "поступление ТМЦ розница"?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. maskva 20.09.13 14:54 Сейчас в теме
выложу еще модуль из printcen.ert может кто-то и подскажет

Перем ПечФирма;

//******************************************************************************
// ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
//
// Параметры:
//  Таб             - таблица, в которую выполняется вывод ценника
//  ПечНаименование - наименование ТМЦ
//  ПечЕдиница      - единица измерения ТМЦ
//  ПечРозн         - цена ТМЦ
//  Столбик         - номер столбика.
//  Ряд             - номер ряда
//
// Возвращаемое значение:
//  Нет.
//
// Описание:
//  Добавляет ценник в таблицу.
//
Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) Экспорт
         
    Столбик    = ?(Столбик = 2, 0      , Столбик+1  );
    Ряд        = ?(Столбик = 0, Ряд + 1, Ряд);

    Если Ряд > 7 Тогда
         Таб.НоваяСтраница();
         Ряд = 1;
     КонецЕсли;
     
     Если Столбик = 0 Тогда
         Таб.ВывестиСекцию("Товар|Ценник");
     Иначе
         Таб.ПрисоединитьСекцию("Товар|Ценник");
     КонецЕсли;

КонецПроцедуры // ДобавитьЦенник()

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

//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Кнопка "Печать"
//
// Описание:
//
Процедура ПоКнопкеПечать()
    
    Если Док.Выбран() = 0 Тогда
        Предупреждение("Не выбран документ!", 60);
        Возврат;
    КонецЕсли;
    
    Печать(Док);
    
КонецПроцедуры // ПоКнопкеПечать()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
    
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        
        Докум      = Форма.Параметр.Получить("Контекст");
        Устройство = Форма.Параметр.Получить("Устройство");
        КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
    
        Печать(Докум, Устройство, КолвоКопий);
        Статусвозврата(0);
        Возврат;
    КонецЕсли;
    
КонецПроцедуры // ПриОткрытии()
Показать
5. DJDUH 17 20.09.13 16:39 Сейчас в теме
(2) maskva,
В обходе строк --->:

Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
Показать

Строку:

ПечНаименованиеТМЦ = +СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");

Заменяешь на строку:
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.код)+" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
8. Timesoft 271 20.09.13 16:50 Сейчас в теме
(5)
Какой у полного наименования может быть код ?????????? Вы о чём ?
СокрЛП(Докум.Номенклатура.ПолнНаименование.код)
9. Timesoft 271 20.09.13 16:51 Сейчас в теме
3. Timesoft 271 20.09.13 16:16 Сейчас в теме
А где в документе "поступление ТМЦ розница" код и чем он должен отличаться от кода номенклатуры ?
4. maskva 20.09.13 16:29 Сейчас в теме
не могу знать этого
Знаю что из документа "поступление ТМЦ розница", ценники печатаются из внешней печатной формы printcen.ert , разложенной выше. В ней как мы видим, нет инфы о коде номенклатуры. Помогите ребятки.
6. Cartman 20.09.13 16:45 Сейчас в теме
Ну тут если в документе колонка с кодом все таки есть - самый простой вариант добавить глобальную переменную т.е. перед всеми функциями процедурами:
Перем ПечКод;

А перед и вот так вот дополнить:
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ПечКод = Докум.Код; //ну или как там называется колонка с кодом (смотри в конфигураторе)
        ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);


Если же надо взять код из справочника номенклатура:
ПечКод = ПечЕдиница.Владелец.Код;
     Если Столбик = 0 Тогда
         Таб.ВывестиСекцию("Товар|Ценник");
     Иначе
         Таб.ПрисоединитьСекцию("Товар|Ценник");
     КонецЕсли;


Ну и в даблице должна быть ячейка с параметром ПечЕдиница
10. maskva 20.09.13 16:59 Сейчас в теме
(6) Cartman, вы не могли бы поподробнее описать что и где дописывать, не совсем понял просто.
11. DJDUH 17 20.09.13 17:00 Сейчас в теме
(10) maskva, исправил - пятница))))
12. Timesoft 271 20.09.13 17:03 Сейчас в теме
(11)Ну так он из справочника НОМЕНКЛАТУРА
13. maskva 20.09.13 17:08 Сейчас в теме
(11) DJDUH, вау-e-e
вы гений, заработало. Спасибо огромное!
Ситуация сильно осложнится?, если Вписывать код в конце наименования и ТОЛЬКО НА ВЕСОВОЙ ТОВАР?
15. Sanario 27 23.09.13 12:32 Сейчас в теме
(13)а можно было просто в таблице на форме выставить вот так:

СокрЛП(Докум.Номенклатура.код) - тип ячейки - выражение

или просто сделать в таблице:

ПечКод

а в модуле добавить:

ПечКод = СокрЛП(Докум.Номенклатура.код);
ПечНаименованиеТМЦ = ПечКод +" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
7. maskva 20.09.13 16:50 Сейчас в теме
спасибо, ошибка такая
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование.код)+" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
{C:\1С_БАЗА\DB0\EXTFORMS\PRNFORMS\PRINTCEN.ERT(90)}: Значение не представляет агрегатный объект (код)
14. Cartman 20.09.13 18:42 Сейчас в теме
Не сильно понятно что надо было код или артикул, но заказчик остался доволен и ладно :)
Timesoft; +1 Ответить
16. maskva 23.09.13 12:58 Сейчас в теме
с весовым товаром никто не подскажет?
17. Sanario 27 23.09.13 13:29 Сейчас в теме
(16) maskva, задачу сформулируйте - тогда и подскажут. Правильно поставленная ТЗ = 99,9% полученного правильно результата
18. maskva 23.09.13 13:36 Сейчас в теме
думаю что все поняли, но по просьбе - "Как получить код товара на ценнике только весового товара?"
19. Sanario 27 23.09.13 16:03 Сейчас в теме
(18) maskva, да таким же способом. Всеравно вы его из поступления печатаете :) Вы думаете, код у товара изменится?:)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот