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

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, да таким же способом. Всеравно вы его из поступления печатаете :) Вы думаете, код у товара изменится?:)
Оставьте свое сообщение

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