shtrix-kodirovanie_dokumentov

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
shtrix-kodirovanie_dokumentov [2021/03/03 11:30]
tro
shtrix-kodirovanie_dokumentov [2021/03/03 11:52] (текущий)
tro
Строка 1: Строка 1:
 <code> <code>
  
-Функция ПолучитьШК128ДляВедомости(СсылкаНаДок,ИмяМакетаДляШК) Экспорт  +</code>
-  +
- ПараметрыШтрихКода = Новый Структура; +
- ПараметрыШтрихКода.Вставить("ТипКода"); +
- ПараметрыШтрихКода.Вставить("ОтображатьТекст"); +
- ПараметрыШтрихКода.Вставить("Сообщение"); +
- ПараметрыШтрихКода.Вставить("ТекстКода"); +
-  +
-  +
- //Проверяем наличие установленной компоненты  +
- Попытка +
- КомпонентШК = Новый COMОбъект("V8.Barcod"); +
- Исключение +
- КомпонентШК = Неопределено; +
- Сообщить("Компонента 1CBarCode не установлена на данном компьютере! Штрих код не будет сформирован.", СтатусСообщения.Важное); +
- Возврат Неопределено; +
- КонецПопытки; +
-  +
-  +
- Если КомпонентШК <Неопределено Тогда +
-  +
- Если ИмяМакетаДляШК = "ТТН (КАШКАН)" Тогда  +
- ИмяМакетаДляШК = "ТТН_КАШКАН" +
- ИначеЕсли ИмяМакетаДляШК = "ТТНАлкогольРазд" Тогда  +
- ИмяМакетаДляШК = "ТТН_Алкоголь_Полный" +
- ИначеЕсли ИмяМакетаДляШК = "НакладнаяАТБ_КАШКАН" Тогда  +
- ИмяМакетаДляШК = "ТТН_АТБ" +
- ИначеЕсли ИмяМакетаДляШК = "ТТНАлкогольАТБ" Тогда  +
- ИмяМакетаДляШК = "ТТН_Алкоголь_Полный_АТБ" +
- ИначеЕсли ИмяМакетаДляШК = "ФУРШЕТ" Тогда  +
- ИмяМакетаДляШК = "НакладнаяФуршет" +
- ИначеЕсли ИмяМакетаДляШК = "КАРАВАН" Тогда  +
- ИмяМакетаДляШК = "НакладнаяКараван" +
- КонецЕсли; +
-  +
- МойШтрихКод = Штрихкодирование.СформироватьШК128(СсылкаНаДок,ИмяМакетаДляШК); +
-  +
- Если ЗначениеЗаполнено(МойШтрихКод) Тогда  +
-  +
- ПараметрыШтрихКода.ТипКода = 4; //CODE128 +
- ПараметрыШтрихКода.ОтображатьТекст = Ложь; +
- ПараметрыШтрихКода.Сообщение = СокрЛП(МойШтрихКод); +
- ПараметрыШтрихКода.ТекстКода = СокрЛП(МойШтрихКод); +
- Возврат ПараметрыШтрихКода;  +
- Иначе  +
- Сообщить("Невозможно сформировать штрих код для документа "+СсылкаНаДок+" и его печатной формы "+ИмяМакетаДляШК+" т.к. его нет в таблице кодировки"); +
- Возврат Неопределено; +
- КонецЕсли; +
-  +
- КонецЕсли;  +
-  +
-  +
-КонецФункции+
  
 +<code>
  
 </code> </code>
  
 <code> <code>
-Функция ПолучитьШК128ДляВедомости(СсылкаНаДок,ИмяМакетаДляШК) Экспорт  
-  
- ПараметрыШтрихКода = Новый Структура; 
- ПараметрыШтрихКода.Вставить("ТипКода"); 
- ПараметрыШтрихКода.Вставить("ОтображатьТекст"); 
- ПараметрыШтрихКода.Вставить("Сообщение"); 
- ПараметрыШтрихКода.Вставить("ТекстКода"); 
-  
-  
- //Проверяем наличие установленной компоненты  
- Попытка 
- КомпонентШК = Новый COMОбъект("V8.Barcod"); 
- Исключение 
- КомпонентШК = Неопределено; 
- Сообщить("Компонента 1CBarCode не установлена на данном компьютере! Штрих код не будет сформирован.", СтатусСообщения.Важное); 
- Возврат Неопределено; 
- КонецПопытки; 
-  
-  
- Если КомпонентШК <> Неопределено Тогда 
-  
- Если ИмяМакетаДляШК = "ТТН (КАШКАН)" Тогда  
- ИмяМакетаДляШК = "ТТН_КАШКАН" 
- ИначеЕсли ИмяМакетаДляШК = "ТТНАлкогольРазд" Тогда  
- ИмяМакетаДляШК = "ТТН_Алкоголь_Полный" 
- ИначеЕсли ИмяМакетаДляШК = "НакладнаяАТБ_КАШКАН" Тогда  
- ИмяМакетаДляШК = "ТТН_АТБ" 
- ИначеЕсли ИмяМакетаДляШК = "ТТНАлкогольАТБ" Тогда  
- ИмяМакетаДляШК = "ТТН_Алкоголь_Полный_АТБ" 
- ИначеЕсли ИмяМакетаДляШК = "ФУРШЕТ" Тогда  
- ИмяМакетаДляШК = "НакладнаяФуршет" 
- ИначеЕсли ИмяМакетаДляШК = "КАРАВАН" Тогда  
- ИмяМакетаДляШК = "НакладнаяКараван" 
- КонецЕсли; 
-  
- МойШтрихКод = Штрихкодирование.СформироватьШК128(СсылкаНаДок,ИмяМакетаДляШК); 
-  
- Если ЗначениеЗаполнено(МойШтрихКод) Тогда  
-  
- ПараметрыШтрихКода.ТипКода = 4; //CODE128 
- ПараметрыШтрихКода.ОтображатьТекст = Ложь; 
- ПараметрыШтрихКода.Сообщение = СокрЛП(МойШтрихКод); 
- ПараметрыШтрихКода.ТекстКода = СокрЛП(МойШтрихКод); 
- Возврат ПараметрыШтрихКода;  
- Иначе  
- Сообщить("Невозможно сформировать штрих код для документа "+СсылкаНаДок+" и его печатной формы "+ИмяМакетаДляШК+" т.к. его нет в таблице кодировки"); 
- Возврат Неопределено; 
- КонецЕсли; 
-  
- КонецЕсли;  
-  
-  
-КонецФункции 
  
- </code>+</code>
  
 +<code>
  
-Функция ЧисловойКодПоСсылке(Ссылка) Экспорт +</code>
- ШестнадчатиричноеЧисло = СтрЗаменить(Строка(Ссылка.УникальныйИдентификатор()),"-",""); +
- Возврат ПреобразоватьИзШестнадцатиричнойСистемыСчисленияВДесятичноеЧисло(ШестнадчатиричноеЧисло); +
-КонецФункции +
- +
-Функция ПреобразоватьИзШестнадцатиричнойСистемыСчисленияВДесятичноеЧисло(Знач Значение) +
- Значение = НРег(Значение); +
- ДлинаСтроки = СтрДлина(Значение); +
- Результат = 0; +
- Для НомерСимвола = 1 По ДлинаСтроки Цикл +
-  Результат = Результат * 16 + Найти("0123456789abcdef", Сред(Значение, НомерСимвола, 1)) - 1; +
- КонецЦикла; +
- Возврат Формат(Результат, "ЧГ=0");  +
-КонецФункции +
- +
-Функция ПреобразоватьДесятичноеЧислоВШестнадцатиричнуюСистемуСчисления(Знач ДесятичноеЧисло) +
- Результат = ""; +
- Пока ДесятичноеЧисло > 0 цикл +
-  ОстатокОтДеления = ДесятичноеЧисло % 16; +
-  ДесятичноеЧисло  = (ДесятичноеЧисло - ОстатокОтДеления) 16; +
-  Результат        = Сред("0123456789abcdef", ОстатокОтДеления + 1, 1) + Результат; +
- КонецЦикла;  +
- Возврат Результат; +
-КонецФункции +
- +
-Функция ПолучитьСсылкуПоШтрихкодуТабличногоДокумента(Штрихкод, Менеджеры = Неопределено) Экспорт +
-  +
- Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Штрихкод, Ложь, Ложь) Тогда +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
- ШтрихкодВШестнаднадцатиричномВиде = ПреобразоватьДесятичноеЧислоВШестнадцатиричнуюСистемуСчисления(Число(Штрихкод)); +
- Пока СтрДлина(ШтрихкодВШестнаднадцатиричномВиде) < 32 Цикл +
-  ШтрихкодВШестнаднадцатиричномВиде = "0" + ШтрихкодВШестнаднадцатиричномВиде; +
- КонецЦикла; +
-  +
- Идентификатор = +
-         Сред(ШтрихкодВШестнаднадцатиричномВиде, 1,  8) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 9,  4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 13, 4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 17, 4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 21, 12); +
-  +
- Если СтрДлина(Идентификатор) <> 36 Тогда +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
- Если Менеджеры = Неопределено Тогда +
-  МенеджерыОбъектов = Новый Массив(); +
-  Для Каждого ЭлементМетаданных Из Метаданные.Документы Цикл +
-   МенеджерыОбъектов.Добавить(Документы[ЭлементМетаданных.Имя]); +
-  КонецЦикла; +
- Иначе +
-  МенеджерыОбъектов = Новый Массив(); +
-  Для Каждого ПустаяСсылка Из Менеджеры Цикл +
-   ТипСсылки = ТипЗнч(ПустаяСсылка); +
-    +
-   Если Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(Документы[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(Справочники[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли Задачи.ТипВсеСсылки(ТипСсылки) Тогда  +
-    МенеджерыОбъектов.Добавить(Задачи[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли БизнесПроцессы.ТипВсеСсылки(ТипСсылки) Тогда  +
-    МенеджерыОбъектов.Добавить(БизнесПроцессы[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(ПланыВидовХарактеристик[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   Иначе +
-    ТекстИсключения = НСтр("ru = 'Ошибка распознования штрихкода: тип ""%Тип%"" не поддерживается.'"); +
-    ТекстИсключения = СтрЗаменить(ТекстИсключения,"%Тип%",ТипСсылки); +
-     +
-    ВызватьИсключение ТекстИсключения; +
-   КонецЕсли; +
-    +
-  КонецЦикла; +
- КонецЕсли; +
-  +
- Запрос = Новый Запрос; +
-  +
- МассивСсылок = Новый Массив; +
- ПервыйЗапрос = Истина; +
- Для Каждого Менеджер Из МенеджерыОбъектов Цикл +
-   +
-  Попытка +
-   Ссылка = Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(Идентификатор)); +
-  Исключение +
-   Продолжить; +
-  КонецПопытки; +
-   +
-  МетаданныеСсылки = Ссылка.Метаданные(); +
-  Если Не ПравоДоступа("Чтение", МетаданныеСсылки) Тогда +
-   Продолжить; +
-  КонецЕсли; +
-   +
-  МассивСсылок.Добавить(Ссылка); +
-   +
-  Если НЕ ПервыйЗапрос Тогда +
-   Запрос.Текст = Запрос.Текст +  +
-   "ОБЪЕДИНИТЬ ВСЕ +
-   |"; +
-  КонецЕсли; +
-   +
-  Запрос.Текст = Запрос.Текст + +
-  "ВЫБРАТЬ" + ?(ПервыйЗапрос," " + "РАЗРЕШЕННЫЕ" + " "," ") + "Таблица.Ссылка КАК Ссылка +
-  |ИЗ " + МетаданныеСсылки.ПолноеИмя() + " КАК Таблица +
-  |ГДЕ Ссылка В (&МассивСсылок) +
-  |"; +
-   +
-  ПервыйЗапрос = Ложь; +
-   +
- КонецЦикла; +
-  +
- Если Не ПервыйЗапрос Тогда +
-  Запрос.Параметры.Вставить("МассивСсылок", МассивСсылок); +
-  Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); +
- Иначе +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
-КонецФункции +
- +
-Функция ПолучитьСсылкуПоШтрихкодуТабличногоДокумента(Штрихкод, Менеджеры = Неопределено) Экспорт +
-  +
- Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Штрихкод, Ложь, Ложь) Тогда +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
- ШтрихкодВШестнаднадцатиричномВиде = ПреобразоватьДесятичноеЧислоВШестнадцатиричнуюСистемуСчисления(Число(Штрихкод)); +
- Пока СтрДлина(ШтрихкодВШестнаднадцатиричномВиде) < 32 Цикл +
-  ШтрихкодВШестнаднадцатиричномВиде = "0" + ШтрихкодВШестнаднадцатиричномВиде; +
- КонецЦикла; +
-  +
- Идентификатор = +
-         Сред(ШтрихкодВШестнаднадцатиричномВиде, 1,  8) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 9,  4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 13, 4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 17, 4) +
- + "-" + Сред(ШтрихкодВШестнаднадцатиричномВиде, 21, 12); +
-  +
- Если СтрДлина(Идентификатор) <36 Тогда +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
- Если Менеджеры = Неопределено Тогда +
-  МенеджерыОбъектов = Новый Массив(); +
-  Для Каждого ЭлементМетаданных Из Метаданные.Документы Цикл +
-   МенеджерыОбъектов.Добавить(Документы[ЭлементМетаданных.Имя]); +
-  КонецЦикла; +
- Иначе +
-  МенеджерыОбъектов = Новый Массив(); +
-  Для Каждого ПустаяСсылка Из Менеджеры Цикл +
-   ТипСсылки = ТипЗнч(ПустаяСсылка); +
-    +
-   Если Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(Документы[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(Справочники[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли Задачи.ТипВсеСсылки(ТипСсылки) Тогда  +
-    МенеджерыОбъектов.Добавить(Задачи[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли БизнесПроцессы.ТипВсеСсылки(ТипСсылки) Тогда  +
-    МенеджерыОбъектов.Добавить(БизнесПроцессы[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки(ТипСсылки) Тогда +
-    МенеджерыОбъектов.Добавить(ПланыВидовХарактеристик[ПустаяСсылка.Метаданные().Имя]); +
-     +
-   Иначе +
-    ТекстИсключения = НСтр("ru = 'Ошибка распознования штрихкода: тип ""%Тип%"" не поддерживается.'"); +
-    ТекстИсключения = СтрЗаменить(ТекстИсключения,"%Тип%",ТипСсылки); +
-     +
-    ВызватьИсключение ТекстИсключения; +
-   КонецЕсли; +
-    +
-  КонецЦикла; +
- КонецЕсли; +
-  +
- Запрос = Новый Запрос; +
-  +
- МассивСсылок = Новый Массив; +
- ПервыйЗапрос = Истина; +
- Для Каждого Менеджер Из МенеджерыОбъектов Цикл +
-   +
-  Попытка +
-   Ссылка = Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(Идентификатор)); +
-  Исключение +
-   Продолжить; +
-  КонецПопытки; +
-   +
-  МетаданныеСсылки = Ссылка.Метаданные(); +
-  Если Не ПравоДоступа("Чтение", МетаданныеСсылки) Тогда +
-   Продолжить; +
-  КонецЕсли; +
-   +
-  МассивСсылок.Добавить(Ссылка); +
-   +
-  Если НЕ ПервыйЗапрос Тогда +
-   Запрос.Текст = Запрос.Текст +  +
-   "ОБЪЕДИНИТЬ ВСЕ +
-   |"; +
-  КонецЕсли; +
-   +
-  Запрос.Текст = Запрос.Текст + +
-  "ВЫБРАТЬ" + ?(ПервыйЗапрос," " + "РАЗРЕШЕННЫЕ" + " "," ") + "Таблица.Ссылка КАК Ссылка +
-  |ИЗ " + МетаданныеСсылки.ПолноеИмя() + " КАК Таблица +
-  |ГДЕ Ссылка В (&МассивСсылок) +
-  |"; +
-   +
-  ПервыйЗапрос = Ложь; +
-   +
- КонецЦикла; +
-  +
- Если Не ПервыйЗапрос Тогда +
-  Запрос.Параметры.Вставить("МассивСсылок", МассивСсылок); +
-  Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); +
- Иначе +
-  Возврат Новый Массив; +
- КонецЕсли; +
-  +
-КонецФункции +
  • /sites/data/attic/shtrix-kodirovanie_dokumentov.1614771003.txt.gz
  • Последнее изменение: 2021/03/03 11:30
  • tro