|
Помогите советами | ☑ | ||
---|---|---|---|---|
0
максим_38
19.07.13
✎
09:24
|
Доброго дня.
Нужны советы каким макаром добвить в накладную, конкретно в таблицу в одну коловку в каждую строку Штрижкод(картинка для сканирования) для каждой позиции уникальный шрих код. ------------------------------------------вот документ:---------------------------------------------- Перем мВалютаРегламентированногоУчета Экспорт; Функция ПечатьДокумента(СуммыВРублях = Ложь) Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст = ....... ЗапросТовары = Запрос.Выполнить().Выгрузить(); флВыводитьМест = истина; Если ЗапросТовары.Итог("КоличествоМест")=0 Тогда флВыводитьМест = ложь; КонецЕсли; ....бла-бла-бла... ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар"); ОбластьМест = Макет.ПолучитьОбласть("ШапкаТаблицы|Мест"); ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|КоличествоЦена"); ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка"); ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма"); ТабДокумент.Вывести(ОбластьНомера); ....бла-бла-бла..., // Вывести Итого ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар"); ОбластьМест = Макет.ПолучитьОбласть("Итого|Мест"); ОбластьДанных = Макет.ПолучитьОбласть("Итого|КоличествоЦена"); ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка"); ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма"); ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ТабДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабДокумент.Присоединить(ОбластьТовар); Если флВыводитьМест Тогда ТабДокумент.Присоединить(ОбластьМест); КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); Если ЕстьСкидки Тогда ОбластьСкидок.Параметры.ВсегоСкидок = ВсегоСкидок; ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок; ТабДокумент.Присоединить(ОбластьСкидок); КонецЕсли; ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); ТабДокумент.Присоединить(ОбластьСуммы); ....бла-бла-бла... ТабДокумент.Вывести(ОбластьМакета); // Вывести подписи ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); // Отпуск товара произвел Если ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтпускПроизвел, Шапка.Дата); ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество; ФИООтпускПроизвел = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел); ОбластьМакета.Параметры.ОтветственныйПредставление = ФИООтпускПроизвел; КонецЕсли; // Получить необходимое количество копий ТабДокумент.КоличествоЭкземпляров = 1; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.ТолькоПросмотр = Истина; ТабДокумент.ОтображатьГруппировки=Ложь; ТабДокумент.ОтображатьЗаголовки=Ложь; ТабДокумент.Защита = УправлениеДопПравамиПользователей.ЗащитаТаблиц(); //Возврат ТабДокумент; ТабДокумент.Показать(); КонецФункции // ПечатьДокумента() ----------------------------ВОТ ШТРИХКОД:--------------------------------------- Функция ПолучитьКартинкуШтрихкода(ШтрихКод, ТипКода=Неопределено) // В зависимости от типа платформы подключим соответствующую внешнюю компоненту ИнформацияОСистеме = Новый СистемнаяИнформация; //Если ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.Компонентапечатиштрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native); //ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда // ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native); //ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда // ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native); //Иначе // ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native); //КонецЕсли; // Создадим объект внешней компоненты Если ПодключениеВыполнено Тогда Компонент = Новый("AddIn.КартинкаШтрихкода.Barcode"); Иначе Возврат Неопределено; КонецЕсли; // Если нет возможности рисовать Если НЕ Компонент.ГрафикаУстановлена Тогда // То картинку сформировать не сможем Возврат Неопределено; КонецЕсли; // Если в системе установлен шрифт Tahoma Если Компонент.НайтиШрифт("Tahoma") = Истина Тогда // Выбираем его как шрифт для формирования картинки Компонент.Шрифт = "Tahoma"; Иначе // Шрифт Tahoma в системе отсутствует // Обойдем все доступные компоненте шрифты Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл // Получим очередной шрифт, доступный компоненте ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч); // Если шрифт доступен Если ТекущийШрифт <> Неопределено Тогда // Они и будет шрифтом для формирования штрихкода Компонент.Шрифт = ТекущийШрифт; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; // Установим размер шрифта Компонент.РазмерШрифта = 10; //Компонент.РазмерШрифта = 12; // Зададим размер картинки Компонент.Ширина = 80; //Компонент.Высота = 90; Компонент.Высота = 20; Если ТипКода = Неопределено Тогда // Разрешим компоненте самой определять тип кода Компонент.АвтоТип = Истина; // ИЛИ установим код EAN-13 // Компонент.ТипКода = 1; // // Тип смотрим в документации на внешнюю компоненту Иначе Компонент.ТипКода = ТипКода; КонецЕсли; // Если код содержит контрольный символ, обязательно указываем Компонент.СодержитКС = СтрДлина(Штрихкод) = 13; // Если отображать контрольный символ не нужно // Компонент.ВидимостьКС = Ложь; // Формируем картинку штрихкода Компонент.ЗначениеКода = Штрихкод; // Если установленная нами ширина меньше минимально допустимой для этого штрихкода Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда // Скорректируем ширину Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10; КонецЕсли; // Сформируем картинку ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод(); // Если картинка сформировалась Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда // Формируем из двоичных данных Возврат Новый Картинка(ДвоичныеДанныеКартинки); КонецЕсли; Возврат Неопределено; КонецФункции ПечатнаяФормаДоговора = Новый СписокЗначений; ---------------------------------------------------------ВОТ ПРИМЕР ПРИВЯЗКИ к договору-------------------------------------------------------- // Генерируем штрихкод и жобавляем в договор шКод = "1234567890128"; минута = Прав("000000" + СтрЗаменить(Строка(60*60*День(ТекущаяДата()) + 60*Час(ТекущаяДата()) + Минута(ТекущаяДата())),Символ(160),""),6); минута = минута + Прав("000000" + СтрЗаменить(НомерСеансаИнформационнойБазы(),Символ(160),""),6) + "0"; код = РасчитатьКонтрольнуюЦифруЕАН13(минута); последняяЦифра = 10 - 10*((код/10) - Цел(код/10)); последняяЦифра = 10*((последняяЦифра/10) - Цел(последняяЦифра/10)); код = СтрЗаменить(Формат(минута,"ЧРГ=_"),"_","") + Строка(последняяЦифра); Рисунок = ПолучитьКартинкуШтрихкода(код); //ЛокПолноеИмяФайла = КаталогВременныхФайлов()+ПолучитьИмяВременногоФайла("bmp"); ЛокПолноеИмяФайла = ПолучитьИмяВременногоФайла("bmp"); Рисунок.Записать(ЛокПолноеИмяФайла); Док=Ворд.Documents(1); Док.Activate(); ЗаменаКолонтитула=Док.sections.item(1).headers.item(1); //--Просто вставить строку //ЗаменаКолонтитула.Range.Text=СокрЛП("Привет"); //--Вставить картинку ЗаменаКолонтитула.Range.InlineShapes.AddPicture(ЛокПолноеИмяФайла, False, //LinkToFile True //SaveWithDocument ); Поделитесь мыслями по этому поводу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |