gifts2017

Печатаем этикетки - быстро, просто и легко

Опубликовал Александр Гордеев (goldencity178) в раздел Программирование - Практика программирования

В сегодняшнем примере речь пойдет об автоматизации печати этикеток более простыми и легкими способами:
Табличная часть "товары" обработки "Печать этикеток" может быть заполнена обоими способами. В данной статье описан метод передачи из документа и приема параметров в форме обработки "Печать этикеток"

1. Путем ввода штрихкода

Этикетки вводятся при вводе штрихкода при нажатии ENTER если зайти через операции, обработки, Печать Самоклеек.

2. Прямо из документа установки цен номенклатуры

Данные передаются в форму обработки для печати этикеток из документа "Установка цен номенклатуры в магазине" Во втором способе ввод по штрихкоду в табличную часть неактивен. он передает введенные данные из документа "Установка цен в магазине"


Печатаем этикетку прямо из документа.

Вызываем из общего модуля процедуру "ОткрытьФормуСамоклейкиБирки

Процедура КПТНапечататьСамоклейкиБирки(Кнопка)
    
    РаботаСДокументами.ОткрытьФормуСамоклейкиБирки(ЭтаФорма, Организация, ЭтотОбъект);
    
КонецПроцедуры

// Загружаем нашу обработку в конфигураторе в разделе прикладных объектов:

// ОБРАБОТКИ, -> ВСТАВИТЬ ВНЕШНЮЮ ОБРАБОТКУ, ОТЧЕТ.

// Переходим в общие модули и создаем общий модуль "Работа с документами"

// Текст процедуры прилагается далее. он размещается в общем модуле "Работа с документами"
 

Процедура ОткрытьФормуСамоклейкиБирки(Форма, Организация, ДокументОбъект) Экспорт

	
	Если Не ЗаписатьНовыйОбъектВФорме(Форма) Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Если Форма.Модифицированность Тогда

		Проведен    = Метаданные.Документы.Содержит(ДокументОбъект.Метаданные()) И ДокументОбъект.Проведен;
		СтрПроведен = ?(Проведен, " и провести","");
		
		Ответ = Вопрос("Документ изменен. Для печати  ценников его необходимо записать"+ СтрПроведен +".
		               |Записать" + СтрПроведен + "?",
		               РежимДиалогаВопрос.ОКОтмена, , 
		               КодВозвратаДиалога.Отмена,
		               "Документ изменен");

		Если Ответ = КодВозвратаДиалога.ОК Тогда

			Если Проведен Тогда

				Попытка

					Форма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);

				Исключение

					Предупреждение("Операция не выполнена!");
					Возврат;

				КонецПопытки;

			Иначе
				Форма.ЗаписатьВФорме();
			КонецЕсли;
			
		Иначе
			
			Возврат;

		КонецЕсли;
		
	КонецЕсли;
	
	ФормаПечатиЦенников = Обработки.ПечатьСамоклеек.ПолучитьФорму("ЭтикеткиСамоклейкиУЦНМка", Форма, Форма);
	Структура = Новый Структура;
	Структура.Вставить("Организация",Организация);
	//Структура.Вставить("Подпись",ДокументОбъект.Подпись);

	Структура.Вставить("Хран",ПоместитьВоВременноеХранилище(ДокументОбъект.Товары.Выгрузить()));
	ФормаПечатиЦенников.Параметр = Структура;
	ФормаПечатиЦенников.Открыть();
	
КонецПроцедуры
 
// Текст следующей процедуры позволяет принять передаваемые пареметры от формы документа.
// Размещается же он в форме самой обработки.

 
Процедура ПриОткрытии()

    Перем ЗаполнитьЦены;

    Перем НастройкиПостроителя;


    СтруктураНастроек = ВосстановитьЗначение("Обработка.ПечатьЦенников.Настройки");
    Если ТипЗнч(СтруктураНастроек) = Тип("Структура") Тогда
        СтруктураНастроек.Свойство("Организация", Организация);
        СтруктураНастроек.Свойство("ТипЦен", ТипЦен);
        СтруктураНастроек.Свойство("Валюта", Валюта);
        СтруктураНастроек.Свойство("ТолькоИмеющиесяВНаличии", ТолькоИмеющиесяВНаличии);
        СтруктураНастроек.Свойство("НастройкиПостроителя", НастройкиПостроителя);
    КонецЕсли;

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

    Если НастройкиПостроителя <> Неопределено Тогда
        ПостроительОтчета.УстановитьНастройки(НастройкиПостроителя);
    КонецЕсли;

    Если ТипЗнч(Параметр) = Тип("Структура") Тогда
        Параметр.Свойство("ЗаполнитьЦены", ЗаполнитьЦены);
        Если ЗаполнитьЦены = Истина Тогда
            Если ПроверитьПараметрыЗаполненияЦен(Параметр.Свойство("ПечетьБезПроверкиЗаполненияПараметров")) Тогда
                ПерезаполнитьЦены();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
    Если ТипЗнч(Параметр) = Тип("Структура") Тогда
         ОбработкаОбъект.Организация = Параметр.Организация;
         //ОбработкаОбъект.Подпись   = Параметр.Подпись;
         Таблица = ПолучитьИзВременногоХранилища(Параметр.Хран);
         ОбработкаОбъект.Товары.Загрузить(Таблица);
         Для каждого Эл Из ОбработкаОбъект.Товары Цикл
                    Эл.Печать = Истина;
         КонецЦикла;
     КонецЕсли; 

КонецПроцедуры // ПриОткрытии() 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Печать этикетки прямо из документа
.epf 43,14Kb
22.04.16
3
.epf 1.0.0.0 43,14Kb 3 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Наталья Андреева (bridgeuper178) 22.04.16 13:12
Сделано неплохо, на один видно вид ленту Ш=58 В=60?
А можно сделать чтобы было реализовано на несколько самых популярных типов лент?
2. Александр Гордеев (goldencity178) 22.04.16 13:16
Следующая моя публикация как раз и посвящена решению этого вопроса. Там будет реализована печать как на нескольких типах лент, так и на специальной бумаге формата А4
3. Александр Гордеев (goldencity178) 24.04.16 06:07
По вашему вопросу готова моя разработка. Вы можете заказать внедрение. интегрируется в течение около 2 часов
4. Александр Гордеев (goldencity178) 24.04.16 06:07
о принципе ее работы будет рассказано в следующем постинге
5. Сергей Самсонов (cas) 18.05.16 07:59
Для УТ 10.3 не работает.

Вот этот код божественен:
ПечШирина = Мин(Макс(ПечШирина, ?(НЕ БольшойЦенник, 58, 58)), 58);
@lexandr; goldencity178; +2 Ответить 1
6. @Lexandr Zubov (@lexandr) 24.05.16 23:40
(5) cas,
ПечШирина = Мин(Макс(ПечШирина, ?(НЕ БольшойЦенник, 58, 58)), 58);
Только годы практики и постоянного самосовершенствования дают такие результаты. Сарказм и ирония посещают инфостарт.:))
goldencity178; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа