Имя: Пароль:
1C
1C 7.7
v7: Этикетки в ТиС
,
0 Паштет
 
21.11.12
21:31
А подскажите пожалуйста как мне быть, если при нажатии на кнопку "Этикетка" в номенклатуре мне нужно чтобы их формировало, к примеру 10 штук.
Перем ОписаниеРезультата;

//******************************************************************************
// ТолькоЦифры(Стр)
//
// Параметры:
//  Стр - текстовая строка
//
// Возвращаемое значение:
//  1 - если в строке только цифры, иначе 0
//
// Описание:
//
Функция ТолькоЦифры(Стр)
   Рез = 1;
   Для Сч = 1 По СтрДлина(Стр) Цикл
       Символ = Сред(Стр, Сч, 1);
       Если Найти("0123456789", Символ) = 0 Тогда
           Рез = 0;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Возврат Рез;
   
КонецФункции // ТолькоЦифры()

//******************************************************************************
// ПроверитьШтрихкод(Штрихкод)
//
// Параметры:
//  Штрихкод - штриховой код, который нужно проверить
//
// Возвращаемое значение:
//  1 - штрихкод имеет верный формат, 0 - нет.
//
// Описание:
//  Проеверяет штрихкод на соответствие кодировке EAN 13 и EAN 8.
//
Функция ПроверитьШтрихкод(Штрихкод)
   
   Штрихкод = СокрЛП(Штрихкод);
   ДлинаКода = СтрДлина(Штрихкод);
   Рез = 0;
   
   Если ТолькоЦифры(Штрихкод) = 1 Тогда
       // штрихкод должен состоять из цифр
       
       Если (ДлинаКода = 13) Тогда
           Если глКонтрольныйСимволEAN(Лев(Штрихкод,12), 13) = Прав(Штрихкод, 1) Тогда
               Рез = 1;
           КонецЕсли;
       ИначеЕсли (ДлинаКода = 8) Тогда
           Если глКонтрольныйСимволEAN(Лев(Штрихкод,7), 8) = Прав(Штрихкод, 1) Тогда
               Рез = 1;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   
   Возврат Рез;
   
КонецФункции // ПроверитьШтрихкод()

//******************************************************************************
// Сформировать(Штрихкод, Устройство)
//
// Параметры:
//  ТаблицаТоваров - таблица значений, состоящая из колонок:
//                   Товар - эл.справочника номенклатура или строка,
//                           наименование товара
//                   Штрихкод - строка, штрихкод товара
//  Устройство     - устройство, куда выводить этикетку.
//                   "экран" - на экран, "принтер" - на принтер.
//                   Значение по умолчанию - 0;
//
// Возвращаемое значение:
//  1 - штрихкод имеет верный формат, 0 - нет.
//
// Описание:
//  Выводит этикетку(и) на заданное устройство.
//
Процедура Сформировать(ТаблицаТоваров, Устройство)

   //  Создание Таблицы для выходного отчета
   Таб    = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Этикетка");
   
   Если ТаблицаТоваров.КоличествоСтрок() = 1 Тогда
       ТаблицаТоваров.ПолучитьСтрокуПоНомеру(1);
       
       Если ПроверитьШтрихкод(ТаблицаТоваров.Штрихкод) = 0 Тогда
           Предупреждение("У товара """ + ТаблицаТоваров.Товар + """ штрихкод не задан или имеет неверный формат!");
           Возврат;
       Иначе
           Таб.ВывестиСекцию("ГорТелоВнутр|ВертТелоВнутр");
       КонецЕсли;
       
   Иначе
       ВсегоКолонок = 4;
       ВсегоСтрок   = 10;
       
       ТекКолонка = 1;
       ТекСтрока  = 1;
       
       ТаблицаТоваров.ВыбратьСтроки();
       Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл
           Если ПроверитьШтрихкод(ТаблицаТоваров.Штрихкод) = 0 Тогда
               Сообщить("У товара """ + ТаблицаТоваров.Товар + """ штрихкод не задан или имеет неверный формат!");
           Иначе
               Если ТекКолонка > ВсегоКолонок Тогда
                   ТекКолонка = 1;
                   ТекСтрока  = ТекСтрока + 1;
               КонецЕсли;
               
               Если ТекСтрока > ВсегоСтрок Тогда
                   ТекСтрока  = 1;
                   Таб.НоваяСтраница();
               КонецЕсли;
               
               Если ТекКолонка = 1 Тогда
                   Таб.ВывестиСекцию("ГорТело|ВертТело");
               Иначе
                   Таб.ПрисоединитьСекцию("ГорТело|ВертТело");
               КонецЕсли;
               
               ТекКолонка  = ТекКолонка + 1;
               
           КонецЕсли;
       КонецЦикла;
       
   КонецЕсли;
   
   //Вызов выходного отчета в окно просмотра и редактирования.
   Таб.Опции(0, 0, 0, 0, "ПечатьЭтикетки", "ПечатьЭтикетки");
   Если Устройство="экран" Тогда
       Таб.ТолькоПросмотр(1);
       Таб.Показать("Этикетка", "");
   Иначе
       Таб.Напечатать(0);
   КонецЕсли;
   
КонецПроцедуры

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
   
   СтатусВозврата(0);
   
   // проверка наличия компоненты
   Попытка
       КомпонентABC = СоздатьОбъект("BARCODE.BarcodeCtrl.1");
   Исключение
       Предупреждение("Компонент ActiveBarcode не установлен на данном компьютере!" +
                       РазделительСтрок +
                      "Порядок установки компоненты ActiveBarcode описан в документации.");
       Возврат;
   КонецПопытки;
   
   Если ТипЗначенияСтр(Форма.Параметр) <> "СписокЗначений" Тогда
       Возврат;
   КонецЕсли;
   
   Устройство = Форма.Параметр.Получить("Устройство");
   Если ПустоеЗначение(Устройство) = 1 Тогда
       Устройство = "экран";
   КонецЕсли;
   Сформировать(Форма.Параметр.Получить("ТаблицаТоваров"), Устройство);
КонецПроцедуры // ПриОткрытии()
1 zak555
 
21.11.12
21:33
а формируется сколько *?
2 zak555
 
21.11.12
21:34
в ТаблицаТоваров передай 10ть строк
3 Паштет
 
21.11.12
21:34
формируется одна
4 Паштет
 
21.11.12
21:37
(2) это же здесь?
   Иначе
       ВсегоКолонок = 4;
       ВсегоСтрок   = 10;
       
       ТекКолонка = 1;
       ТекСтрока  = 1;
5 Паштет
 
21.11.12
21:38
но я пытаюсь менять а результат отрицательный
6 zak555
 
21.11.12
21:43
(4) нет
если больше одной строки передаёшь, то будет выводится по квадратам
7 Паштет
 
21.11.12
21:44
(6) так а там больше негде менять ничего
8 zak555
 
21.11.12
21:45
(7) ты спросил -- как напечатть 10 штук - я ответил
9 Паштет
 
21.11.12
21:48
(8) очень содержательно ответил
10 zak555
 
21.11.12
21:52
(9) тебе надо передать СЗ, в котором есть два элемента
1. строка со значением Устройство
2. таблицаЗначений ( ТЗ ) ТаблицаТоваров

вот в в это и должно быть больше одной строки
11 Паштет
 
21.11.12
22:07
(10) понимаете в чем дело, на этом форуме большинство таким образом обьясняют людям, чтобы их смогли понять только программеры... Но программерам она и нак не нужно, они и сами знают такие простые вещи, а обычным пользователям 1С это просто не понятно. Тогда смысл такой помощи?
12 Паштет
 
21.11.12
22:08
(10) неужели я не прав?
13 Паштет
 
21.11.12
22:18
Ато получается когда обычный пользователь заходит на форум с каким-то вопросом, то вероятность что он получит какую-то помощь минимальная. Или человека обсырают с ног до головы, мол "Ты что тупой таких вещей не знать..." или просто программеры общаются между собой на своем языке непонятном для обычного пользователя 1С...
14 zak555
 
21.11.12
22:20
(11) > а обычным пользователям 1С это просто не понятно. Тогда смысл такой помощи

обычные пользователи вызывают за денежку тех, кто понимают написанное
15 Паштет
 
21.11.12
22:23
За денюжку все решается, это понятно... Но согласитесь, вы бы могли обьснить гораздо проще, но специально делаете так))
16 Паштет
 
21.11.12
22:27
Реально большинство тем на форуме из тех, которые я читал просто оскорбляют человека, если он далекий от программирования.
17 Neg
 
21.11.12
22:31
(16) Волшебник, ты что ли? :)
18 Паштет
 
21.11.12
22:34
(17) ... ппц
19 Паштет
 
21.11.12
22:35
не волшебник))) стал бы он такой херней заниматься
20 AlexNew
 
21.11.12
22:37
(16) Я бы сказал оскорбляют разум человека.
21 Паштет
 
21.11.12
22:39
(20) пусть будет так как вы говорите, а не так как я))) но смысл не сильно меняется
22 Паштет
 
21.11.12
22:39
в результате все равно сплошной троллинг...
23 AlexNew
 
21.11.12
22:40
(21) Очко, конечно, но смысл сильно меняется.
24 Паштет
 
21.11.12
22:44
(23) угу, очень сильно... читаешь бывает ветку, и охереваешь... ничего по теме ветки, большинство обсиралово и споры... какая-то атмосфера не дружная, не человеческая.
25 Паштет
 
21.11.12
22:46
(24) наверное на пальцах одной руки можно пересчитать тех людей, которые еще не "включили понты", которые могут помочь пользователям и делают это
26 Паштет
 
21.11.12
22:47
ну да ладно, не хочу разводить эту болтовню... ее на форуме и так хватает
27 AlexNew
 
21.11.12
22:49
(25) Странно объяснять человеку, к-рый видел Excel что такое программирование, нет?
28 Паштет
 
21.11.12
23:16
(27) нет, не странно. Например я прислал код, и спросил как его нужно изменить чтобы было 10 ценников. Есть 2 варианта: можно написать как его нужно изменить, а можно обьяснить как программер программеру... всего-то... но куда там на этом форуме получить реальный ответ))) надо же попонтоваться
29 zak555
 
21.11.12
23:28
(25) кто тут и где включил "понты" ?
30 BlackSeaCat
 
21.11.12
23:51
Опять "Уважаемые спецы, объясните на пальцах - как построить самолет, и чтобы летал! Только чур, по телефону, а то учиться некогда, завтра уже лететь надо!"
31 Паштет
 
22.11.12
00:08
(30) та ладно... утрировать не нужно только)) все гораздо проще.
32 Паштет
 
22.11.12
00:10
(29) вы знаете о чем я говорю. Вы так же прекрасно понимаете мой уровень... вам видимо моральный садизм удовольствие приносит))
33 zak555
 
22.11.12
00:10
(32) ты же написал даже откуда тебе надо распечатать
34 Voronve
 
22.11.12
00:15
(32) В тис нет такого кода. Твой уровень - нуб. Мы ржем на нубами неспособными заставить юзеров проставить количество копий, да.
никогда не ржем над людьми которые хатят учиться.
35 zak555
 
22.11.12
00:16
(34) код из (0) не из ТиСа ?
36 Voronve
 
22.11.12
00:17
эммм ... да. там нет конструкций вида:
   Устройство = Форма.Параметр.Получить("Устройство");
   Если ПустоеЗначение(Устройство) = 1 Тогда
       Устройство = "экран";
   КонецЕсли;
37 zak555
 
22.11.12
00:19
может в ert ?
38 Voronve
 
22.11.12
00:23
Есть, и в ert тоже

Процедура Печать(Устройство = 0, КолвоКопий = 1)
....
   Если Устройство = 0 Тогда
       ПечТаблица.Опции(0, 0, 0, 0, "Параметры", "Параметры");
       ПечТаблица.Показать("Печать");  
   Иначе    
       ПечТаблица.КоличествоЭкземпляров(КолвоКопий);
       ПечТаблица.Напечатать(0);
   КонецЕсли;

КонецПроцедуры
39 zak555
 
22.11.12
00:25
ну так очень похоже ))
40 Voronve
 
22.11.12
00:25
у него явно самоделка какая то ...
41 zak555
 
22.11.12
00:26
(40) ход мыслней верный )
42 Voronve
 
22.11.12
00:31
(41) Пачиба дядька мне писец как нехватало твоих слов.
43 Злопчинский
 
22.11.12
02:33
(32) жизнь несправедлива - смирись с этим. Повозврни в клинику, попроси чтобы рассказали как починить зуб.. или имплант вставить - эффект будет примерно как и тут.
.
если ты прог совсем начального уровня - читай код. в ТИС он внятно написан - я же как-то научился сам, ни книжек ни форумов не было. к чтению кода - добавь чтение комплекта желтых книжек п о описанию встроенного языка.
.
и долбить.. долбить.. долбить...
.
когда уровень твоих вопросов повыситяс до некоего базового уровня - тебе будут здесь отвечать.
.
при том уровне вопросов который у тебя сейчас - просто скажут что делать, но врядли скажут КАК (подробно разжевава для непонятливых и попутно проведя лекцию на 2 часа о структуре построения типовой ТИС и взаимосвязях и типовых приемах)...
44 Злопчинский
 
22.11.12
02:36
а! самое главное: куча людей то что тебе надо делали это уже столько раз что уже тошнит.. а тут ты.. по 10 кругу...
45 zak555
 
22.11.12
02:36
> и долбить.. долбить.. долбить...

чего долбить-то ?
46 Паштет
 
22.11.12
11:31
(34)(35) типовая ТиС, обработка "ПечатьЭтикеток"
47 Паштет
 
22.11.12
11:32
(40) какая нах самоделка...
48 Voronve
 
22.11.12
11:33
Ипать... и правда
49 Mikeware
 
22.11.12
11:34
(28) есть третий вариант - ты платишь денежку, и тебе делают.
есть и четвертый - ты платишь денежку, и тебя учат, как сделать...
50 Паштет
 
22.11.12
11:34
(43) вы мудрый однако дядька)))
51 Паштет
 
22.11.12
11:36
(49) с таким раскладом гораздо проще заплатить всего лишь 800 рубчиков на инфостарт и месяц качать уже готовые обработки, на любой вкус и цвет.
52 Mikeware
 
22.11.12
11:37
(51) ну так заплати. какие проблемы?
53 Паштет
 
22.11.12
11:38
(52) я уже писал в предыдущей ветке что рассчитывал узнать бесплатно
54 Mikeware
 
22.11.12
11:41
(53) и что? узнал? :-)
в принципе, информации тебе дадено уже вполне достаточно, чтобы начать работать самостоятельно.
55 Масянька
 
22.11.12
11:42
Поддержу - бесплатный сыр бывает только в мышеловке.

PS Если человек - начинающий 1с-ник - меньше шуми и требуй, больше вежливо проси и не забывай говорить "Пожалуйста" и "Спасибо".
56 Паштет
 
22.11.12
11:44
(55) спасибо за очень ценный совет))) Тогда буду учиться, а когда научусь формулировать свои вопросы на более высоком уровне, я обязательно вернусь
57 Злопчинский
 
22.11.12
20:09
(51) ты глубоко заблуждаешься. Среди выложенных на ИСЕ к непосредственному прямому использованию пригоден очень маленький процент.
.
В частности - попробуй сходу найди на ИСЕ, чтобы в этикетке (любого размера) название товара ВСЕГДА ВЛАЗИЛО в отведенное место без изменения размера этикетки.
.
Я - сходу не нашел.
.
так что успехов вам в берибольше кидай дальше отдыхай пока летит