Печать этикеток

22.04.25

Задачи пользователя - Этикетки, ценники

Печатная форма этикеток расходного ордера.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Печатная форма этикеток
.epf 17,86Kb ver:1.1
3 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Добрый день, уважаемые читатели, хочу показать вам реализацию простенькой обработки по печатной форме товаров из расходного ордера.

Одно "НО", специально под эту обработку был создан специальный реквизит в справочнике "СерииНоменклатуры", это штрихкод, который обязан быть для того, чтобы программа получала данные штрихкодов по сериям, так как сами штрихкоды могут меняться от партии к партии, для этого он и был разработан.

Сама обработка была создана для кладовщиков, поэтому функционал изначально выключен, а вы сможете включить его для себя, включив доступ на форме (также и опробовать сам расходный ордер сможете, перенастроив надпись на поле ввода)

Прилагаю код модуля формы:
 

#Область ОбработчикиСобытийФормы

// Процедура выполняет действия при создании объекта на сервере, проверяя наличие и тип объекта назначения, и вызывает обработку изменения расходного ордера на товары, если он присутствует.
// 
// Параметры:
//  Отказ                - Булево - Флаг, указывающий на необходимость отказа от выполнения стандартной обработки
//  СтандартнаяОбработка - Булево - Флаг, указывающий на необходимость выполнения стандартной обработки
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если (Параметры.Свойство("ОбъектыНазначения") И  ЗначениеЗаполнено(Параметры.ОбъектыНазначения))тогда 
        Для каждого ОбъектНазначения Из Параметры.ОбъектыНазначения Цикл
            Если ТипЗнч(ОбъектНазначения) = Тип("ДокументСсылка.РасходныйОрдерНаТовары") Тогда
                РасходныйОрдер = ОбъектНазначения;
            КонецЕсли;            
        КонецЦикла;
    КонецЕсли;
    Если ЗначениеЗаполнено(РасходныйОрдер) Тогда
        РасходныйОрдерПриИзмененииНаСервере();
    КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

// Вызывает процедуру обработки изменения расходного ордера на сервере при изменении элемента на клиенте
// 
// Параметры:
//  Элемент - Объект - Элемент интерфейса, который был изменён
&НаКлиенте
Процедура РасходныйОрдерПриИзменении(Элемент)

    РасходныйОрдерПриИзмененииНаСервере();

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// Обрабатывает выделенные строки в таблице товаров, устанавливая флаг 'Выбран' в значение 'Истина' для каждой выделенной строки.
// 
// Параметры:
//  Команда - Неизвестно - Команда, инициирующая выполнение процедуры
&НаКлиенте
Процедура ВыбратьВыделенныеСтроки(Команда)

    МассивСтрок = Элементы.Товары.ВыделенныеСтроки;
    
    Если МассивСтрок.Количество() = 0 Тогда
        ПоказатьПредупреждение(Неопределено, НСтр("ru = 'В списке отсутствуют выделенные строки';
        |en = 'No selected lines in the list'"));
        Возврат;
    КонецЕсли;
    
    Для Каждого НомерСтроки Из МассивСтрок Цикл
        СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
        СтрокаТЧ.Выбран = Истина;
    КонецЦикла;

КонецПроцедуры

// Процедура исключает выделенные строки из табличной части 'Товары', снимая флаг 'Выбран' у каждой выделенной строки.
// 
// Параметры:
//  Команда - Неопределено - Параметр команды, который может быть использован для вызова процедуры.
&НаКлиенте
Процедура ИсключитьВыделенныеСтроки(Команда)

    МассивСтрок = Элементы.Товары.ВыделенныеСтроки;
    
    Если МассивСтрок.Количество() = 0 Тогда
        ПоказатьПредупреждение(Неопределено, НСтр("ru = 'В списке отсутствуют выделенные строки';
        |en = 'No selected lines in the list'"));
        Возврат;
    КонецЕсли;
    
    Для Каждого НомерСтроки Из МассивСтрок Цикл
        СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
        СтрокаТЧ.Выбран = Ложь;
    КонецЦикла;

КонецПроцедуры

// Процедура выполняет печать этикеток на основе проверки наличия выбранных товаров и наличия необходимых подсистем для печати. Если проверка пройдена успешно, формируется табличный документ и запускается процесс печати.
// 
// Параметры:
//  Команда - Неопределено - Команда, инициирующая процесс печати. Тип и содержимое не указаны в коде.
&НаКлиенте
Процедура Печать(Команда)

    ОчиститьСообщения();
    
    РезультатПроверки = ВыполнитьПроверку(ЭтаФорма);
    Если Не РезультатПроверки.ТоварыВыбраны Тогда
        ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Не выбрано ни одного товара';
        |en = 'No goods selected'"));
        Возврат;
    КонецЕсли;
    
    Если РезультатПроверки.ПроверкаВыполнена Тогда
        
        ТабДок = ПолучитьТабличныйДокументПечатьЭтикеток();
        
        ИдентификаторПечатнойФормы = "ПечатьЭтикетокGX420d";
        НазваниеПечатнойФормы = НСтр("ru = 'Печать этикетки на номенклатуру расходного ордера'");
        
        Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
            ТабДок.Показать(НазваниеПечатнойФормы);
            ДокументыПечатались = Истина;
            Возврат;
        КонецЕсли;     
        МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");     
        КоллекцияПечатныхФорм = МодульУправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторПечатнойФормы);
        ПечатнаяФорма = МодульУправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормы);
        ПечатнаяФорма.СинонимМакета = НазваниеПечатнойФормы;
        ПечатнаяФорма.ТабличныйДокумент = ТабДок;
        ПечатнаяФорма.ИмяФайлаПечатнойФормы = НазваниеПечатнойФормы;
        
        ОбластиОбъектов = Новый СписокЗначений;
        МодульУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
        
        ДокументыПечатались = Истина;    
    КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// Функция создает и возвращает табличный документ для печати этикеток товаров на основе выбранных товаров в объекте. Для каждого выбранного товара генерируется указанное количество этикеток с штрихкодами и названием товара.
// 
// Возвращаемое значение:
// ТабличныйДокумент - Документ с подготовленными этикетками для печати
&НаСервере
Функция ПолучитьТабличныйДокументПечатьЭтикеток()

    ТабДок = Новый ТабличныйДокумент; 
    Обработка =  РеквизитФормыВЗначение("Объект");
    Макет = Обработка.ПолучитьМакет("ПечатьЭтикетокGX420d");     
    
    Для каждого Строка из Объект.Товары Цикл
        Если Строка.Выбран Тогда  
            Повтор = 1;
            Пока Повтор <= Строка.КоличествоЭтикеток Цикл   
                
                ПараметрыШтрихкода = Новый Структура;
                ПараметрыШтрихкода.Вставить("Ширина",          400);
                ПараметрыШтрихкода.Вставить("Высота",          130);
                ПараметрыШтрихкода.Вставить("ТипКода",         4);         
                ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина); 
                ПараметрыШтрихкода.Вставить("Штрихкод",        Строка.Штрихкод);
                ПараметрыШтрихкода.Вставить("Масштабировать", Истина);                             
                ПараметрыШтрихкода.Вставить("РазмерШрифта",    14);
                
                Область = Макет.ПолучитьОбласть("Шапка");
                Область.Параметры.Номенклатура = Строка.Номенклатура.Наименование;
                
                Штрихкод = Область.Рисунки.Штрихкод;
                Штрихкод.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода); 
                
                ТабДок.Вывести(Область); 
                
                ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
                Повтор = Повтор + 1;
            КонецЦикла;
        КонецЕсли;    
    КонецЦикла;  
    
    ТабДок.ПолеСверху = 1;
    ТабДок.ПолеСлева  = 10;
    ТабДок.ПолеСнизу  = 10;
    ТабДок.ПолеСправа = 10;
    
    Возврат    ТабДок;

КонецФункции

// Выполняет проверку заполнения данных в табличной части 'Товары' и возвращает результат проверки.
// 
// Параметры:
//  Форма - Структура - Объект формы, содержащий табличную часть 'Товары' для проверки
// 
// Возвращаемое значение:
// Структура - Состоит из двух полей: ТоварыВыбраны (Булево) и ПроверкаВыполнена (Булево)
&НаКлиентеНаСервереБезКонтекста
Функция ВыполнитьПроверку(Форма)

    ЕстьОшибки = Ложь;
    
    Для Каждого СтрокаТЧ Из Форма.Объект.Товары Цикл
        
        Если Не СтрокаТЧ.Выбран Тогда
            Продолжить;
        КонецЕсли;
        
        НомерСтроки = СтрокаТЧ.НомерСтроки - 1;
        
        Если СтрокаТЧ.КоличествоЭтикеток = 0 Тогда
            
            ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Не заполнено количество этикеток в строке: %1';
            |en = 'Number of labels is required in line: %1'"),
            НомерСтроки + 1);
            
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
            ТекстСообщения,,
            "Объект.Товары["+НомерСтроки+"].КоличествоЭтикеток",,
            ЕстьОшибки);
            
        КонецЕсли;      
        
        Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Штрихкод) Тогда
            
            ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Не заполнен штрихкод этикетки в строке: %1';
            |en = 'The label barcode in the line is not filled in: %1'"),
            НомерСтроки + 1);
            
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
            ТекстСообщения,,
            "Объект.Товары["+НомерСтроки+"].Штрихкод",,
            ЕстьОшибки);
            
        КонецЕсли;
        
    КонецЦикла;
    
    Отбор = Новый Структура("Выбран", Истина);
    ТоварыВыбраны = Форма.Объект.Товары.НайтиСтроки(Отбор).Количество() > 0;
    
    Возврат Новый Структура("ТоварыВыбраны, ПроверкаВыполнена", ТоварыВыбраны, Не ЕстьОшибки);

КонецФункции

// Процедура обновляет товары в расходном ордере при изменении, заполняя данными из указанных строк документа
&НаСервере
Процедура РасходныйОрдерПриИзмененииНаСервере()

    Объект.Товары.Очистить();
    
    ТЧРасхОрдера = ЭтотОбъект.РасходныйОрдер.ОтгружаемыеТовары;
    Для каждого Строка из ТЧРасхОрдера Цикл
        НовСтр = Объект.Товары.Добавить();
        НовСтр.Номенклатура = Строка.Номенклатура;
        НовСтр.КоличествоВДокументе = Строка.Количество;
        НовСтр.Серия = Строка.Серия; 
        НовСтр.КоличествоЭтикеток = 1;
        
        Запрос = Новый Запрос;
        Запрос.Текст = 
        "ВЫБРАТЬ
        |    СерииНоменклатуры.Штрихкод КАК Штрихкод
        |ИЗ
        |    Справочник.СерииНоменклатуры КАК СерииНоменклатуры
        |ГДЕ
        |    СерииНоменклатуры.Ссылка = &Ссылка";
        
        Запрос.УстановитьПараметр("Ссылка", Строка.Серия);
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
            НовСтр.Штрихкод = ВыборкаДетальныеЗаписи.Штрихкод;    
        КонецЦикла;
    КонецЦикла;

КонецПроцедуры

#КонецОбласти

Код модуля объекта:

Функция СведенияОВнешнейОбработке() Экспорт 
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
    ПараметрыРегистрации.Информация = НСтр("ru = 'Печать Этикеток (НС)'");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "2.4.4.0";
    ПараметрыРегистрации.Назначение.Добавить("Документ.РасходныйОрдерНаТовары");
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
        
    Команда = ПараметрыРегистрации.Команды.Добавить();    
    Команда.Представление = НСтр("ru = 'Печать Этикеток (НС)'");
    Команда.Идентификатор = "ПечатьЭтикеток(НС)";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;
    Команда.Модификатор = "ПечатьЭтикеток(НС)";    
    
    Возврат ПараметрыРегистрации;
КонецФункции  

 

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.4.12.71

Вступайте в нашу телеграмм-группу Инфостарт

Печать этикетки склад расходный ордер реализация продажа печатная форма

См. также

Этикетки, ценники Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Вы работаете с маркируемым товаром? Вам нужно вывести штрихкод GTIN на этикетку? Вы используете типовое решение УТ, УНФ, КА или ERP? В типовых конфигурациях нет возможности добавить штрихкод GTIN на этикетку. Сейчас это очень важно для торговых сетей. Добавьте штрихкод GTIN рядом со штрих кодом DataMatrix (код маркировки) на Ваши этикетки с нашим расширением. Решение в виде расширения, а это означает, что конфигурация останется на поддержке. Подключив данное решение, Вы сможете выводить GTIN в виде штрих кода EAN13 (без лидирующего нуля)/EAN128 (с лидирующим нулем).

5490 руб.

09.06.2021    21012    34    19    

36

Этикетки, ценники Пользователь 1С:Предприятие 8 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Беларусь Украина Россия Управленческий учет Платные (руб)

Простая в использовании обработка для формирования и печати ценников и этикеток со штрих-кодом, с дополнительной ценой, для 1С8.х Большое разнообразие шаблонов печатных форм. Управляемая форма (Такси) + Обычный режим.

5084 руб.

11.11.2020    54697    75    53    

84

Этикетки, ценники Обмен с ГосИС Программист Пользователь 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Печатайте дубликаты ЛЮБЫХ кодов маркировки мгновенно! Расширение для 1С (УТ 11.5, ERP 2.5, КА 2.5), которое копирует даже чужие коды маркировки (с криптохвостом) и автоматически проверяет их статус и владельца в Честном Знаке. Данное решение позволит избежать проблем при приемке товара, штрафов и обезлички на WB, Ozon и других площадках.

10 стартмани

21.11.2025    5824    63    GarriSoft    85    

12

Этикетки, ценники Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Абонемент ($m)

Расширение "Контроль ценников". Позволяет автоматизировать контроль над устаревшими ценниками в магазине при изменении цен на товары. Продавцы или товароведы получают список товаров с измененными ценами для замены ценников в режиме онлайн.

8 стартмани

30.10.2024    3695    24    Miket78    41    

8

Этикетки, ценники Пользователь 1С:Предприятие 8 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Внешняя обработка для 1С Розница 2.2.ХХХ - 2.3.ХХХ для печати формирования штрихкодов весового товара и печати на принтере термоэтикеток или кассовом аппарате.

1 стартмани

29.10.2024    3868    24    independ    7    

8

Логистика, склад и ТМЦ Этикетки, ценники Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Абонемент ($m)

Выводит при печати этикетки складской ячейки в качестве штрихкода адрес ячейки вместо уникального идентификатора

1 стартмани

20.06.2024    4515    13    Alexei_Siva    4    

8
Для отправки сообщения требуется регистрация/авторизация