Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:57

Добавить штрихкод в Ценник 1С 8.3

Автор naka9, 14 янв 2019, 05:24

0 Пользователей и 1 гость просматривают эту тему.

naka9

Здравствуйте! Нужна помощь.. Нужно добавить штрихкод в ценник. В макете все сделала, теперь в ценнике есть штрихкод, но он не меняется, то есть идет стандартный для всех товаров (1234567890128). Не могу разобраться с модулем объекта, что нужно туда добавить? Чтобы при распечатке ценников был тот штрихкод, который указан в номенклатуре.
Я не программист, самоучка

#Если Клиент Тогда
// Процедура заполняет построитель отчета.
//
Процедура ЗаполнитьПостроительОтчета() Экспорт

    ПостроительОтчета.Параметры.Вставить("ПустаяХарактеристика", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());

    ТекстЗапроса = "
    |ВЫБРАТЬ
    |   ИСТИНА КАК Печать,
    |   СпрНоменклатура.Номенклатура КАК Номенклатура,
    |   СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |   СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    |   0 КАК Цена,
    |   1 КАК Количество
    |ИЗ
    |   (ВЫБРАТЬ
    |       СпрНоменклатура.Ссылка КАК Номенклатура,
    |       &ПустаяХарактеристика КАК ХарактеристикаНоменклатуры
    |   ИЗ
    |       Справочник.Номенклатура КАК СпрНоменклатура
    |   ГДЕ НЕ СпрНоменклатура.ЭтоГруппа
    |   {ГДЕ
    |       СпрНоменклатура.Ссылка.* КАК Номенклатура}
    |   ОБЪЕДИНИТЬ ВСЕ
    |   ВЫБРАТЬ
    |       СпрХарактеристики.Владелец,
    |       СпрХарактеристики.Ссылка
    |   ИЗ
    |       Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
    |   {ГДЕ
    |       СпрХарактеристики.Владелец.* КАК Номенклатура,
    |       СпрХарактеристики.Ссылка.* КАК ХарактеристикаНоменклатуры}
    |   ) КАК СпрНоменклатура
    |";
   
    Если ТолькоИмеющиесяВНаличии Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |   (ВЫБРАТЬ
        |       НаСкладе.Номенклатура,
        |       НаСкладе.ХарактеристикаНоменклатуры,
        |       СУММА(НаСкладе.Количество) КАК Количество
        |   ИЗ
        |       (ВЫБРАТЬ
        |           НаСкладе.Номенклатура,
        |           НаСкладе.ХарактеристикаНоменклатуры,
        |           НаСкладе.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК НаСкладе
        |       ОБЪЕДИНИТЬ ВСЕ
        |       ВЫБРАТЬ
        |           ВРознице.Номенклатура,
        |           ВРознице.ХарактеристикаНоменклатуры,
        |           ВРознице.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК ВРознице
        |       ОБЪЕДИНИТЬ ВСЕ
        |       ВЫБРАТЬ
        |           ВНТТ.Номенклатура,
        |           ВНТТ.ХарактеристикаНоменклатуры,
        |           ВНТТ.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыВНТТ.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК ВНТТ
        |       ) КАК НаСкладе
        |   СГРУППИРОВАТЬ ПО
        |       НаСкладе.Номенклатура,
        |       НаСкладе.ХарактеристикаНоменклатуры
        |   ) КАК НаСкладе
        |ПО
        |   СпрНоменклатура.Номенклатура = НаСкладе.Номенклатура
        |   И СпрНоменклатура.ХарактеристикаНоменклатуры = НаСкладе.ХарактеристикаНоменклатуры
        |ГДЕ
        |   ЕСТЬNULL(НаСкладе.Количество, 0) > 0
        |";
    КонецЕсли;

    ТекстЗапроса = ТекстЗапроса + "
    |УПОРЯДОЧИТЬ ПО
    |   СпрНоменклатура.Номенклатура.Наименование,
    |   СпрНоменклатура.ХарактеристикаНоменклатуры.Наименование
    |";

    // Соответствие имен полей в запросе и их представлений в отчете.
    СтруктураПредставлениеПолей = Новый Структура(
    "Номенклатура,   ХарактеристикаНоменклатуры,    Склад",
    "Номенклатура", "Характеристика номенклатуры", "Склад");

    ПостроительОтчета.Текст = ТекстЗапроса;

    ПостроительОтчета.ЗаполнитьНастройки();

    // Создадим список доступных отборов.
    СоответствиеДоступныхОтборов = Новый Соответствие;
    СоответствиеДоступныхОтборов.Вставить("Номенклатура", 0);
    СоответствиеДоступныхОтборов.Вставить("ХарактеристикаНоменклатуры", 0);
    СоответствиеДоступныхОтборов.Вставить("Склад", 0);

    Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
        Если СоответствиеДоступныхОтборов[ДоступноеПоле.Имя] =Неопределено Тогда
            ДоступноеПоле.Отбор = Ложь;
        Иначе
            ДоступноеПоле.Отбор = Истина;
        КонецЕсли;
    КонецЦикла;

    // Создадим массив отборов.
    МассивОтбора = Новый Массив;
    МассивОтбора.Добавить("Номенклатура");
    МассивОтбора.Добавить("ХарактеристикаНоменклатуры");

    Если ТолькоИмеющиесяВНаличии Тогда
        МассивОтбора.Добавить("Склад");
    КонецЕсли;

    Для Каждого ЭлементОтбора Из МассивОтбора Цикл
        Если ПостроительОтчета.Отбор.Найти(ЭлементОтбора) = Неопределено Тогда
            ПостроительОтчета.Отбор.Добавить(ЭлементОтбора);
        КонецЕсли;
    КонецЦикла;

    // Вызовем стандартную процедуру заполнения представлений.
    УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);

КонецПроцедуры // ЗаполнитьПостроительОтчета()

// Процедура перезаполняет цены в табличной части.
//
Процедура ПерезаполнитьЦены() Экспорт

    СтруктураЗначений = Новый Структура;
    СтруктураЗначений.Вставить("НовыйТипЦен", ТипЦен);

    ЗапросПоЦенам = Ценообразование.СформироватьЗапросПоЦенам(СтруктураЗначений,
       Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры,
       Товары.ВыгрузитьКолонку("Номенклатура"),
       РабочаяДата,
       Неопределено).Выгрузить();

    ПустаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
    ТипЦенРассчитывается = ТипЦен.Рассчитывается;

    СтруктураКурса = МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, РабочаяДата);
    Курс = СтруктураКурса.Курс;
    Кратность = СтруктураКурса.Кратность;

    Для Каждого СтрокаТовара Из Товары Цикл
        ХарактеристикаНоменклатуры = СтрокаТовара.ХарактеристикаНоменклатуры;

        СтруктураПоиска = Новый Структура("Номенклатура", СтрокаТовара.Номенклатура);

        СтрокиЦен = ЗапросПоЦенам.НайтиСтроки(СтруктураПоиска);

        СтрокаБезХарактеристики = Неопределено;
        СтрокаСХарактеристикой = Неопределено;

        Для Каждого СтрокаЦен Из СтрокиЦен Цикл
            Если СтрокаЦен.ХарактеристикаНоменклатуры = ПустаяХарактеристика Тогда
                СтрокаБезХарактеристики = СтрокаЦен;
            ИначеЕсли СтрокаЦен.ХарактеристикаНоменклатуры = ХарактеристикаНоменклатуры Тогда
                СтрокаСХарактеристикой = СтрокаЦен;
            КонецЕсли;
        КонецЦикла;

        Если СтрокаСХарактеристикой <> Неопределено Тогда
            НайденнаяСтрока = СтрокаСХарактеристикой;
        ИначеЕсли СтрокаБезХарактеристики <> Неопределено Тогда
            НайденнаяСтрока = СтрокаБезХарактеристики;
        Иначе
            НайденнаяСтрока = Неопределено;
        КонецЕсли;

        Если (НайденнаяСтрока <> Неопределено) И (НайденнаяСтрока.Цена <> 0) Тогда
            Цена = НайденнаяСтрока.Цена * (1 + ?(ТипЦенРассчитывается, НайденнаяСтрока.ПроцентСкидкиНаценки / 100, 0));
            Цена = Ценообразование.ОкруглитьЦену(Цена, ТипЦен.ПорядокОкругления, ТипЦен.ОкруглятьВБольшуюСторону);
            Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, НайденнаяСтрока.ВалютаЦены, Валюта, Курс, Кратность);

            СтрокаТовара.ЕдиницаИзмерения = НайденнаяСтрока.ЕдиницаИзмеренияЦены;
        Иначе
            Цена = 0;
        КонецЕсли;

        СтрокаТовара.Цена = Цена;
    КонецЦикла;

КонецПроцедуры // ПерезаполнитьЦены()

// Функция формирует табличный документ - печатная форма ценника.
//
// Возвращаемое значение:
//  ТабличныйДокумент - сформированный табличный документ или Неопределено, если есть ошибки.
//
Функция ПечатьЦенника() Экспорт

    Если НЕ ЗначениеЗаполнено(Организация) Тогда
        Предупреждение("Не выбрана организация!");
        Возврат Неопределено;
    КонецЕсли;

    ТабДокумент                     = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник2";
    Макет                           = ПолучитьМакет("Ценник2");
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");

    ДатаПечати = РабочаяДата;

    ТекСтолбец = 0;
    ТекСтрока  = 0;
   
    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
        ТоварКод = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
        ТоварКод = "Код";
    Иначе
        ТоварКод = "";
    КонецЕсли;
   
    Для Каждого СтрокаТаблицы Из Товары Цикл
        Если СтрокаТаблицы.Печать Тогда
            Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
                ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
                ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное + ?(ТоварКод <> "", " " + СокрЛП(СтрокаТаблицы.Номенклатура[ТоварКод]), "");
                ОбластьЦенника.Параметры.ХарактеристикаНаименование      = СтрокаТаблицы.ХарактеристикаНоменклатуры;
                ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
                ОбластьЦенника.Параметры.Цена                            = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, Валюта, "00");
                ОбластьЦенника.Параметры.ДатаПечати                      = ДатаПечати;
                ОбластьЦенника.Параметры.Организация                     = Организация;
                ОбластьЦенника.Параметры.ОрганизацияНаименование         = Организация;
               

                Если ТекСтолбец = 0 Тогда
                    ТабДокумент.Вывести(ОбластьЦенника);
                Иначе
                    ТабДокумент.Присоединить(ОбластьЦенника);
                КонецЕсли;

                ТекСтолбец = ТекСтолбец + 1;

                Если ТекСтолбец = 5 Тогда
                    ТекСтрока  = ТекСтрока + 1;
                    ТекСтолбец = 0;
                КонецЕсли;

                Если ТекСтрока = 3 Тогда
                    ТекСтрока = 0;
                    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;

    ТабДокумент.ТолькоПросмотр = Истина;

    Возврат ТабДокумент;

//Штрихкод Начало
ШК="";
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ ПЕРВЫЕ 1
|Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ
|   РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
|   Штрихкоды.Владелец = &Владелец
|
|СГРУППИРОВАТЬ ПО
|   Штрихкоды.Штрихкод
|
|УПОРЯДОЧИТЬ ПО
|   Штрихкод УБЫВ";

Запрос.УстановитьПараметр("Владелец",СтрокаТаблицы.Номенклатура);
Выб = Запрос.Выполнить().Выбрать();
Если Выб.Следующий() Тогда
ШК=Выб.Штрихкод;
КонецЕсли;


ОбластьЦенника.Рисунки.Штрихкод.Объект.Сообщение = ШК;

//Штрихкод Конец

КонецФункции // ПечатьЦенника()




// Функция выполняет проверку параметров для заполнения цен.
//
// Возвращаемое значение:
//  Булево - Истина, если все параметры заданы.
//
Функция ПроверитьПараметрыЗаполненияЦен() Экспорт

    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не выбран тип цен! Укажите тип цен и повторите перезаполнение цен.");
        Возврат Ложь;
    КонецЕсли;

    Если НЕ ЗначениеЗаполнено(Валюта) Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не выбрана валюта! Укажите валюту и повторите перезаполнение цен.");
        Возврат Ложь;
    КонецЕсли;

    Возврат Истина;

КонецФункции // ПроверитьПараметрыЗаполненияЦен()
#КонецЕсли

LexaK

хм.

    ...
   Возврат ТабДокумент;
//так после возврата ни какой код не работает-же !!! :befhbt:
//Штрихкод Начало
ШК="";
Запрос = Новый Запрос;
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск