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

22.04.25

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

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

Скачать файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    МассивСтрок = Элементы.Товары.ВыделенныеСтроки;
    
    Если МассивСтрок.Количество() = 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.х Большое разнообразие шаблонов печатных форм. Управляемая форма (Такси) + Обычный режим.

3588 руб.

11.11.2020    51062    65    48    

74

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

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

2000 руб.

04.11.2019    30264    116    88    

55

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

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

10 стартмани

30.10.2024    1043    14    Miket78    14    

6

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

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

1 стартмани

29.10.2024    1077    12    independ    5    

8

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

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

5 стартмани

09.10.2024    1391    13    user2105876    2    

3

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

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

1 стартмани

20.06.2024    2092    5    Alexei_Siva    4    

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