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

Печать имени пользователя на этикетке

Автор sandrowild, 12 мая 2016, 18:08

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

sandrowild

Добрый день, уважаемые!

Помогите новичку с решением.
Думаю, задача не такая уж и нетривиальная :)

Мы на производстве используем 1С 7.7 для контроля производимой продукции.
После окончания производственной операции на термопринтере печатается этикетка с различными данными (дата, время, № детали, наименование, ШК и тыды).

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

Сможете подсказать? Буду премного благодарен!:D:D

Игорь Иванов

Надо найти макет этикетки.
Принтер этикеток как подключен? Через оснастку подключаемого оборудования или как обычный офисный принтер? Если через оснастку (забыл как правильно по-"семёрочному" она называется), там указана внешняя обработка, обслуживающая печать. Макет может быть в ней.

sandrowild

Цитата: Игорь Иванов от 12 мая 2016, 19:53
Надо найти макет этикетки.
Принтер этикеток как подключен? Через оснастку подключаемого оборудования или как обычный офисный принтер? Если через оснастку (забыл как правильно по-"семёрочному" она называется), там указана внешняя обработка, обслуживающая печать. Макет может быть в ней.

Принтер подключен как обычный офисный. Это обычная Зебра.
Макет я нашел тут:
Конфигуратор - открыть конфигурацию - обработки - печать этикеток
Там как я понял и лежит макет. Скрин приложил.

Это оно?

Игорь Иванов

Цитата: sandrowild от 13 мая 2016, 09:19Это оно?

Судя по приведённому перечню, нет.
В поисковике Конфигуратора задайте поиск по всем объектам конфигурации слова, допустим, "этикет". (Окончание указывать не надо, так как падеж, в котором встречается это слово в тексте кода, нам не известен.) Проанализируйте найденные вхождения на предмет принадлежности к искомой этикетке.

sandrowild

Цитата: Игорь Иванов от 13 мая 2016, 10:56Проанализируйте найденные вхождения на предмет принадлежности к искомой этикетке.

Цитата: Игорь Иванов от 13 мая 2016, 10:56Проанализируйте найденные вхождения на предмет принадлежности к искомой этикетке.

Цитата: Игорь Иванов от 13 мая 2016, 10:56
Цитата: sandrowild от 13 мая 2016, 09:19Это оно?

Проанализируйте найденные вхождения на предмет принадлежности к искомой этикетке.

Вот что нашел по запросу "этикет" в коде:

   // ПЕЧАТЬ СТАНДАРТНОЙ ЭТИКЕТКИ
   текСтр="";
   С2=СоздатьОбъект("Справочник.Комплектующие");
   С2.ИспользоватьВладельца(элем);
   Если С2.ВыбратьЭлементы()=1 Тогда
      Пока С2.ПолучитьЭлемент()=1 Цикл
         Если С2.ПометкаУдаления()=1 Тогда
            Продолжить;
         КонецЕсли;
         текСтр=текСтр+СокрЛП(С2.Наименование)+"; ";
      КонецЦикла;
   КонецЕсли;
   текВр=Строка(ТекущееВремя());
   стрДата=Строка(ТекущаяДата())+" "+Лев(текВр,СтрДлина(текВр)-3);
   
   ТекПравШК = СокрЛП(Строка(элем.ШтрихКод));
   ТекПравШК = Прав(ТекПравШК, СтрДлина(ТекПравШК) - Найти(ТекПравШК, "-"));
   ТекПравШК = Сред(ТекПравШК, Найти(ТекПравШК, "-") - 1);
   
   Т=СоздатьОбъект("Таблица");
   Т.ИсходнаяТаблица("Этикетка60мм");
   Т.ВывестиСекцию("Этикетка");
   Т.ТолькоПросмотр(1);
   
   ИмяП = СокрЛП(ПолучитьПараметр("ИмяПринтераДляОбычнойЭтикетки"));
   Если ПустоеЗначение(ИмяП) = 0 Тогда
      Т.ПараметрыСтраницы(1,ВЧисло(ПолучитьПараметр("ПроцентМасштабаПечатиОбычнойЭтикетки")),,,,,,,,0,,ИмяП);
   КонецЕсли;
   
   Если фл2=1 Тогда
      Попытка
         ЗаписатьЛог(12, элем.ШтрихКод, Строка(элем), );
         Т.КоличествоЭкземпляров(1);
         Если ПораПечататьЭтикеткуКонтейнера = 1 Тогда // 2 раза, если пора на контейнер
            Т.КоличествоЭкземпляров(2 - флНетДвойнаяПечать);
         КонецЕсли;
         Т.Напечатать(0);
      Исключение
      КонецПопытки;
   Иначе
      ЗаписатьЛог(13, элем.ШтрихКод, Строка(элем), );
      Т.Показать();
   КонецЕсли;
   
   Если ЭтоГлавнаяСтанция() = 1 Тогда
      Если ТЗСоставКонт.КоличествоСтрок() = 1 Тогда
         Умн = 0;
         сп = СоздатьОбъект("Справочник.Комплектующие");
         сп.ИспользоватьВладельца(элем);
         Если сп.ВыбратьЭлементы() = 1 Тогда
            Пока сп.ПолучитьЭлемент() = 1 Цикл
               Умн = Умн + 1;
            КонецЦикла;
         КонецЕсли;
         Умн = Макс(1, Умн);
         Константа.ЛимитШКБуфер = элем.КолвоВУпаковке * Умн;
      КонецЕсли;
   КонецЕсли;
   
   УстановитьПараметр("ВремяПаузыПечатиОбычнойЭтикетки", _GetPerformanceCounter());
   // ПЕЧАТЬ СТАНДАРТНОЙ ЭТИКЕТКИ
   
   
   // КАРТИНКА
   Форма.Карт.Видимость(0);
   
   Если флКарт = 1 Тогда
      Если ПустоеЗначение(элем.Карт) = 0 Тогда
         Попытка
            Форма.Ош1.Видимость(0);
            Форма.Ош2.Видимость(0);
            Форма.Ош3.Видимость(0);
            
            Карт.Загрузить(СокрЛП(элем.Карт));
            Форма.Карт.Видимость(1);
         Исключение
         КонецПопытки;
      ИначеЕсли ПустоеЗначение(элем.ШтрихКод) = 0 Тогда
         Попытка
            Форма.Ош1.Видимость(0);
            Форма.Ош2.Видимость(0);
            Форма.Ош3.Видимость(0);
            
            ТекКарт = КаталогИБ() + "PICTURES\" + СокрЛП(элем.ШтрихКод) + ".jpg";
            Карт.Загрузить(СокрЛП(ТекКарт));
            Форма.Карт.Видимость(1);
         Исключение
         КонецПопытки;
      КонецЕсли;
   КонецЕсли;
   // КАРТИНКА
   
Как я понял - это касательно обычной этикетки (на деталь), которая мне и нужна. Есть еще этикетка на контейнер, но она меня не интересует.

Подскажите, я на верном пути?

Игорь Иванов

Цитата: sandrowild от 13 мая 2016, 11:16текСтр=текСтр+СокрЛП(С2.Наименование)+"; ";

После этой строки введите
текСтр=текСтр+СокрЛП(ИмяПользователя())+"; ";

sandrowild


Игорь Иванов

Сохраните изменения и напечатайте этикетку. Появилось имя пользователя в конце строки?

sandrowild

Да, сработало :D
Возможно ли перенести фамилию в отдельную строку?

Игорь Иванов

Цитата: Игорь Иванов от 13 мая 2016, 16:22текСтр=текСтр+СокрЛП(ИмяПользователя())+"; ";

Вставьте символ возврата картеки перед именем пользователя вот так:
текСтр=текСтр+Симв(13)+СокрЛП(ИмяПользователя())+"; ";

Теги:

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

Рейтинг@Mail.ru

Поиск