Уважаемые, подскажите пожалуйста, используем 1С 7.7 ТиС, есть необходимость добавить в ценник информацию о коде товара. Важно чтобы код добавлялся не обязательно из карточки товара, а из документа "поступление ТМЦ розница". В "поступление ТМЦ розница" подключена обработка printcen.ert. Основываясь на этом http://forum-1c.ru/index.php?topic=5564.0 удалось добавить код, но в ценник из карточки номенклатуры. Как добавить код в ценник из документа "поступление ТМЦ розница"?
По теме из базы знаний
- 1С 7.7 Торговля и склад. Печать ценников со штрих-кодом, артикулом и кодом
- Ценники и этикетки со штрих-кодом для 1С 8.х
- Подсистема штрихкодирования серий номенклатуры для 1С:УТ 11.4/11.5 КА, ERP 2.4/2.5
- Генерация штрихкода и QR, разбор настроек и примеры
- Sales force automation: мобильное приложение мерчандайзера на платформе 1С с распознаванием товара на 15 языках в одном из крупнейших агентств на нашем континенте (и не только)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
выложу еще модуль из 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);
Возврат;
КонецЕсли;
КонецПроцедуры // ПриОткрытии()
Показать
(2) maskva,
В обходе строк --->:
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла; Показать
Строку:
ПечНаименованиеТМЦ = +СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
Заменяешь на строку:
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.код)+" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
В обходе строк --->:
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
Строку:
ПечНаименованиеТМЦ = +СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
Заменяешь на строку:
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.код)+" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
Ну тут если в документе колонка с кодом все таки есть - самый простой вариант добавить глобальную переменную т.е. перед всеми функциями процедурами:
А перед и вот так вот дополнить:
Если же надо взять код из справочника номенклатура:
Ну и в даблице должна быть ячейка с параметром ПечЕдиница
Перем ПечКод;
А перед и вот так вот дополнить:
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ПечКод = Докум.Код; //ну или как там называется колонка с кодом (смотри в конфигураторе)
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
Если же надо взять код из справочника номенклатура:
ПечКод = ПечЕдиница.Владелец.Код;
Если Столбик = 0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
Иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
Ну и в даблице должна быть ячейка с параметром ПечЕдиница
(13)а можно было просто в таблице на форме выставить вот так:
СокрЛП(Докум.Номенклатура.код) - тип ячейки - выражение
или просто сделать в таблице:
ПечКод
а в модуле добавить:
ПечКод = СокрЛП(Докум.Номенклатура.код);
ПечНаименованиеТМЦ = ПечКод +" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
СокрЛП(Докум.Номенклатура.код) - тип ячейки - выражение
или просто сделать в таблице:
ПечКод
а в модуле добавить:
ПечКод = СокрЛП(Докум.Номенклатура.код);
ПечНаименованиеТМЦ = ПечКод +" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
спасибо, ошибка такая
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование.код)+" "+СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
{C:\1С_БАЗА\DB0\EXTFORMS\PRNFORMS\PRINTCEN.ERT(90)}: Значение не представляет агрегатный объект (код)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот