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

22.04.25

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Печатная форма этикеток
.epf 17,86Kb ver:1.1
1 1 850 руб. Купить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    МассивСтрок = Элементы.Товары.ВыделенныеСтроки;
    
    Если МассивСтрок.Количество() = 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С v8.3 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Беларусь Украина Россия Управленческий учет Платные (руб)

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

3600 руб.

11.11.2020    51670    66    48    

76

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

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

5400 руб.

09.06.2021    17465    17    19    

21

Этикетки, ценники Пользователь 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 Платные (руб)

Встроенная в конфигурации Розница 2.3 и УНФ 1.6 подсистема печати ценников по мне слишком неповоротлива и с усилиями поддается тонкой настройке, решил с нуля написать свою универсальную печать ценников для этих конфигураций.

3000 руб.

04.11.2019    30727    118    89    

57

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

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

10 стартмани

30.10.2024    1539    17    Miket78    23    

7

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

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

1 стартмани

29.10.2024    1525    17    independ    5    

8

Этикетки, ценники Пользователь 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для печати кодов марок, полученных из системы "Честный знак".

4 стартмани

09.10.2024    1916    24    user2105876    3    

4
Оставьте свое сообщение