Перевод из шестнадцатеричного числа в десятичное

Публикация № 170509 07.02.13

Приемы и методы разработки - Универсальные функции

Необходимо было сопряжение фискального регистратора(ФР) Штрих..  - установка времени компьютера на фискальном регистраторе - пришлось общаться с ФР с помощью команд в шестнадцатеричном формате. Перевод из десятичного формата в шестнадцатеричный нашел - http://infostart.ru/public/83824/, а обратно нет, пришлось написать. И вот что получилось

Функция ПеревестиЧислоИзШестнадцатиричногоВДесятичное(СтрокаХекс) Экспорт

                мСтрокаХекс = СокрЛП(СтрокаХекс);

                СтрДлинаХексЧисла = СтрДлина(мСтрокаХекс);

                ДесятичноеЧисло = 0;

                Для Сч = 0 По СтрДлинаХексЧисла-1 Цикл

                               Множитель = Pow(16,Сч);

                               //Сообщить("Множитель:"+Строка(Множитель));

                               НехЧисло1Байт = Сред(мСтрокаХекс,СтрДлинаХексЧисла-Сч,СтрДлинаХексЧисла-Сч);

                               //Сообщить("ХексЧисло1Байт:" + НехЧисло1Байт);

                               Если НехЧисло1Байт = "A" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 10*Множитель;

                               ИначеЕсли НехЧисло1Байт = "B" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 11*Множитель;

                               ИначеЕсли НехЧисло1Байт = "C" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 12*Множитель;

                               ИначеЕсли НехЧисло1Байт = "D" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 13*Множитель;

                               ИначеЕсли НехЧисло1Байт = "E" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 14*Множитель;

                                              

                               ИначеЕсли НехЧисло1Байт = "F" Тогда

                                               ДесятичноеЧисло = ДесятичноеЧисло + 15*Множитель;

                               Иначе

                                               Попытка

                                                               ДесятичноеЧисло = ДесятичноеЧисло + Число(НехЧисло1Байт)*Множитель;

                                               Исключение;

                                                               //не число от 0 до 9

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

                               КонецЕсли;

                КонецЦикла;

                Возврат ДесятичноеЧисло;

 КонецФункции

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1329 07.02.13 14:06 Сейчас в теме
да уж... жесть жестяная.

http://my1c-archive.narod.ru/knowhow/uni_conv.html
Sergey_Nazarov; vladimir2008; Serj1C; +3 Ответить
2. vladimir2008 13 07.02.13 15:18 Сейчас в теме
Спасибо за ссылку - теперь будет и на инфостате, если кто будет искать
3. Gesperid 2 13.02.13 08:32 Сейчас в теме
Во многих типовых есть процедуры типае - ОбщегоНазначения.ДесятичноеВШестнадцатиричное
vladimir2008; +1 Ответить
4. Gesperid 2 13.02.13 08:33 Сейчас в теме
и ОбщегоНазначенияЗК.ШестнадцатиричноеВДесятичное
5. vladimir2008 13 13.02.13 09:36 Сейчас в теме
Спасибо, посмотрел в конфах: "Розница","БСП" - нет такой функции.
В УПП есть:
Функция ДесятичноеВШестнадцатиричное(Источник) Экспорт

ШеснадцатиричныеСимволы = "0123456789ABCDEF";

Если Источник < 0 Тогда
Возврат "00";
КонецЕсли;
Если Источник > 255 Тогда
Возврат "FF";
КонецЕсли;

ПервыйСимвол = Цел(Источник / 16) + 1;
ВтройСимвол = Источник % 16 + 1;

Возврат Сред(ШеснадцатиричныеСимволы, ПервыйСимвол, 1) + Сред(ШеснадцатиричныеСимволы, ВтройСимвол, 1);

КонецФункции


Функция ШестнадцатиричноеВДесятичное(Источник) Экспорт

Результат = 0;

ШеснадцатиричныеСимволы = "0123456789ABCDEF";

ДлинаСтроки = СтрДлина(Источник);
Для Поз = 1 По ДлинаСтроки Цикл
ИскомыйСимвол = Сред(Источник,Поз,1);
ЗначениеСимвола = Найти(ШеснадцатиричныеСимволы, ВРег(ИскомыйСимвол));
Если ЗначениеСимвола <=0 Тогда
#Если ТолстыйКлиентОбычноеПриложение Тогда
Сообщить("В числе обнаружен неверный символ: """ + ИскомыйСимвол+ """ ");
#КонецЕсли
Результат = 0;
Прервать;
Иначе
ЗначениеСимвола = ЗначениеСимвола - 1;
Результат = Результат + ЗначениеСимвола * Pow(16, ДлинаСтроки-Поз);
КонецЕсли;
КонецЦикла;

Возврат Результат;

КонецФункции
6. Linx-p 14.08.13 16:16 Сейчас в теме
Похоже в Вашем коде неточность.
Строку
НехЧисло1Байт = Сред(мСтрокаХекс,СтрДлинаХексЧисла-Сч,СтрДлинаХексЧисла-Сч);


я бы переписал следующим образом:
НехЧисло1Байт = Сред(мСтрокаХекс,СтрДлинаХексЧисла-Сч,1);
7. bzmax 14.08.13 17:37 Сейчас в теме
После долгих поисков и раздумий
Вот две функции из десятичного в шестнадцатиричное
и обратно.
Просто, понятно и со вкусом :)
Функция DecToHex(Знач _Dec) Экспорт 
	ДесятичноеЗначение = _Dec; 
	Результат = ""; 
	Пока ДесятичноеЗначение > 0 Цикл 
		Ост = ДесятичноеЗначение % 16 + 1; 
		Результат = Сред("0123456789ABCDEF", Ост, 1) + Результат; 
		ДесятичноеЗначение = Цел(ДесятичноеЗначение/16); 
	КонецЦикла; 
	Возврат Результат; 
КонецФункции 

Функция HexToDec(Знач _Hex) Экспорт
    База = 16;
    _Hex = СокрЛП(_Hex);
    СтаршаяСтепень = СтрДлина(_Hex) - 1;
    Результат = 0;
    счСимволов = 1;
    Пока СтаршаяСтепень >=0 Цикл
                   _HexСимвол = Сред(_Hex, счСимволов, 1);
                   Представление = Найти("0123456789ABCDEF", _HexСимвол) - 1;
                   Результат = Результат + Представление * Pow(База, СтаршаяСтепень);
                   СтаршаяСтепень = СтаршаяСтепень - 1;
                   СчСимволов = СчСимволов + 1;
    КонецЦикла;   
    Возврат Результат;
КонецФункции
Показать

Пользуйтесь :)
P.S. Сорри за монохромный код. (так и не понял как он тут раскрашивается).
9. kotich 15.08.13 13:24 Сейчас в теме
(7) bzmax, вы тестировали свою функцию DecToHex на значениях меньше 10? Вы же получите строчку с длиной меньше 2!
10. bzmax 15.08.13 13:43 Сейчас в теме
(9) kotich,
Вы сами то поняли, что сказали? :)
Смысл перегонять десятичные в шестнадцатиричные меньше 10 если они ОДИНАКОВЫ!
(1,2,3,4,5,6,7,8,9)
Достаточно из числа например 5, сделать строку "5".
:)
17. kotich 15.08.13 15:19 Сейчас в теме
(10) bzmax, вы когда пишите код, добавляйте проверки. Например, если параметр не входит в диапазон, выдавайте предупреждение, а ещё лучше - вызывайте исключение. Поймите, когда данная функция вызывается в цикле для массива десятичных чисел, на выходе собирается , строка шестнадцатеричного представления, подобную ошибку в работе вашего кода отследить довольно трудно, в 15 случаях из 16 она отработает корректно. Для 1С это актуально в том случае, если она работает с внешними базами через уникальные идентификаторы объектов.
8. vladimir2008 13 14.08.13 21:14 Сейчас в теме
11. Goruch 7 15.08.13 13:47 Сейчас в теме
В ФР Штрих-М овском есть драйвер, который сию команду (установку времени) в 2 строки делает. Без всяких шестнадцатеричных-десятичных приблуд.
12. vladimir2008 13 15.08.13 14:15 Сейчас в теме
(11) Goruch, А обратно из ККМ тоже в десятичном формате?
13. vladimir2008 13 15.08.13 14:17 Сейчас в теме
От ККМ надо разбирать ответы по битам
14. Goruch 7 15.08.13 14:29 Сейчас в теме
15. Goruch 7 15.08.13 14:32 Сейчас в теме
ФискальныйРегистратор.Password=Константа.ПарольСистемногоАдминистратора;
ФискальныйРегистратор.Connect();
Если ФискальныйРегистратор.ResultCode<>0 Тогда
Предупреждение("Ошибка кассы: "+ФискальныйРегистратор.ResultCodeDescription+"!");
Возврат;
КонецЕсли;
ФискальныйРегистратор.Password=Константа.ПарольСистемногоАдминистратора;
ФискальныйРегистратор.GetECRStatus();
Если ФискальныйРегистратор.ResultCode<>0 Тогда
Предупреждение("Ошибка кассы: "+ФискальныйРегистратор.ResultCodeDescription+"!");
Возврат;
КонецЕсли;
ДатаВККМ=Дата(ФискальныйРегистратор.Date);
ВремяВККМ=Строка(ФискальныйРегистратор.TimeStr);
16. Goruch 7 15.08.13 14:32 Сейчас в теме
Скопировал код целиком с Штрих-М Кассира.
18. vladimir2008 13 15.08.13 16:22 Сейчас в теме
(16) Goruch,
Я пользовался драйвером для 1С: Из описания работы с ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С:
Там нет функций установки даты и времени только через команды: DeviceControl(УправлениеУстройством) или DeviceControlHEX(УправлениеУстройствомХекс)
Прикрепленные файлы:
DriverFR_ specification_1C.pdf
19. Goruch 7 15.08.13 16:44 Сейчас в теме
(18) Обычно для периферии сканеры штрих-кодов, ТСД, Весы для печати этикеток, различные пос приблуды лучше использовать драйвера или атолла или Штрих-М.
Иначе возни и мороки, как в вашем случае море.

Единственное, когда я писал выгрузку товаров из 1С Штрих-М Кассир в весы там пришлось серьезно возиться с 10<->16 системы исчисления. Так что не завидую.:)
20. Goruch 7 15.08.13 16:46 Сейчас в теме
21. DrZombi 217 26.09.14 16:09 Сейчас в теме
Автора на мыло!!! Смотреть лучше тут http://kb.mista.ru/article.php?id=78
It-developer; +1 Ответить
22. vladimir2008 13 26.09.14 20:10 Сейчас в теме
Спасибо за ссылку. А прежде чем ругать сам, то что-нибудь создал?
23. DrZombi 217 30.10.14 13:45 Сейчас в теме
Фсё просто, сударь...

1. Добавляете общий модуль "ФискальникиКлиент" - Только клиент, толстый клиент и внешнее соединение

Функция ТестОборудование(Оборудование, ПолныйЛог = Ложь) Экспорт 
	// Пишем лог
	Лог = Формат(МенеджерОборудованияКлиентПереопределяемый.ДатаСеанса(),"ДЛФ=T") + " Имя команды: ТестУстройства" + Символы.ПС;

	ВходныеПараметры  = Неопределено;
	ВыходныеПараметры = Неопределено;

	ПараметрыУстройства = МенеджерОборудованияКлиентПовтИсп.ПолучитьПараметрыУстройства(Оборудование);

	Результат = МенеджерОборудованияКлиент.ВыполнитьДополнительнуюКоманду("CheckHealth",
	                                                                      ВходныеПараметры,
	                                                                      ВыходныеПараметры,
	                                                                      Оборудование,
	                                                                      ПараметрыУстройства);
	Если Не Результат Тогда
		Попытка 
			ОписаниеОшибки = ВыходныеПараметры[1];
		Исключение
			ОписаниеОшибки = "";
		КонецПопытки;
		
		ОписаниеОшибки = "Тест не был пройден!" + Символы.ПС + ОписаниеОшибки;
		
		РезНаОшибку = Новый Структура("Результат,ОписаниеОшибки,Лог",Ложь,ОписаниеОшибки,"");
		
	Иначе
		Если ПолныйЛог <> Истина Тогда 
			Возврат Неопределено;
		КонецЕсли;
		
		ОписаниеОшибки = "Команда выполнена успешно!"+(?(ВыходныеПараметры.Количество()>1, Символы.ПС+ВыходныеПараметры[1], ""));
		
		РезНаОшибку = Новый Структура("Результат,ОписаниеОшибки,Лог",Истина,ОписаниеОшибки,"");
	КонецЕсли;

	// Пишем лог
	Лог = Лог + Формат(МенеджерОборудованияКлиентПереопределяемый.ДатаСеанса(),"ДЛФ=T") + " " + ОписаниеОшибки + Символы.ПС +
	      "========================================" + Символы.ПС;
	ОтветОтУстройства = Лог + ОтветОтУстройства;
	
	РезНаОшибку.Лог = ОтветОтУстройства;
	
	Возврат РезНаОшибку;
КонецФункции

//Объект - Структура вида: "Команда" (Команда в формате Хекс для ФР через пробелы "13 1E 00 00 00") 
//                         и "КассаККМ" (КассаККМ - касса для отбора, функция доступна только для ФР)
Функция ВыполнитьКоманду(Объект, ФР, УникальИдент, РезультатПробитияЧека = Неопределено) Экспорт 
	Перем РезПечатиЧека;
	
	РезПечатиЧека  = Неопределено; //Нормальное состояние - чек не печатался, возможно просто нет Фискальника
	
	Если ФискальникиСервер.ФискальныйРегистраторПоКассе(Объект.КассаККМ) = Истина Тогда
		//
		
		Если МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента() Тогда // Проверка на определенность рабочего места ВО
			
			Если ФР.Пустая() Тогда
				ИдентификаторУстройства = МенеджерОборудованияКлиент.ВыбратьУстройство("ФискальныйРегистратор",
				НСтр("ru='Выберите фискальный регистратор'"),
				НСтр("ru='Фискальный регистратор не подключен'"));
			Иначе
				ИдентификаторУстройства = ФР;
			КонецЕсли;
			
			Если ИдентификаторУстройства <> Неопределено Тогда
				
				РезТестаОборудования = ФискальникиКлиент.ТестОборудование(ИдентификаторУстройства);
				Если РезТестаОборудования <> Неопределено Тогда 
					ТекстСообщения = НСтр("ru = 'При проверке устройства произошла ошибка. Команда не выполнена на фискальном регистраторе.
					|Дополнительное описание:
					|%ДополнительноеОписание%'");
					
					ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ДополнительноеОписание%", РезТестаОборудования.Лог);
					
					ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
					
					РезПечатиЧека = -5; //Число, код ошибки...
					
					Возврат РезПечатиЧека;
				КонецЕсли;
				
				// Подключаем ФР
				ОписаниеОшибки_ = "";
				Результат = МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(УникальИдент,
				ИдентификаторУстройства,
				ОписаниеОшибки_);
				
				Если Результат Тогда
					
					// Готовим данные
					ВходныеПараметры  = Новый Массив;
					ВыходныеПараметры = Неопределено;
					
					ВходныеПараметры.Добавить(Объект.Команда);
					
					// Выполняем команду.
					Попытка
						Результат = МенеджерОборудованияКлиент.ВыполнитьКоманду(
						ИдентификаторУстройства,
						"DeviceControlHEX",
						ВходныеПараметры,
						ВыходныеПараметры);
					Исключение
						СтрОписОшибки = ОписаниеОшибки();
						Если ТипЗнч(ВыходныеПараметры) <> Тип("Массив") Тогда 
							ВыходныеПараметры = Новый Массив;
						КонецЕсли;
						КолМасс = ВыходныеПараметры.Количество();
						Для Сч = КолМасс По 4 Цикл 
							ВыходныеПараметры.Добавить(Неопределено);
						КонецЦикла;
						ВыходныеПараметры[0] = 999;
						ВыходныеПараметры[1] = "Вызвыно Исключение ""ВыполнитьКоманду""";
						ВыходныеПараметры[3] = СтрОписОшибки;
						
						Результат = Ложь;
					КонецПопытки;
					// Отключаем ФР
					МенеджерОборудованияКлиент.ОтключитьОборудованиеПоИдентификатору(УникальИдент,
					ИдентификаторУстройства);
					
					Если Результат Тогда
						
						// Установить полученное значение номера чека реквизиту документа.
						
						РезПечатиЧека = 1; //Число, Положительный, все замечательно						
						
					Иначе
						
						ТекстСообщения = НСтр("ru = 'При выполнении команды произошла ошибка. Команда не выполнена на фискальном регистраторе.
						|Дополнительное описание: %ДополнительноеОписание%'");
						
						ТекстСообщения = СтрЗаменить(ТекстСообщения,
						"%ДополнительноеОписание%",
						ВыходныеПараметры[1]);
						ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
						
						РезПечатиЧека = -1; //Число, код ошибки...
						
					КонецЕсли;
					
					Если РезультатПробитияЧека = Неопределено Тогда 
						РезультатПробитияЧека = Новый Структура;
					КонецЕсли;
					
					РезультатПробитияЧека.Вставить("КодОшибки",ВыходныеПараметры[0]);
					РезультатПробитияЧека.Вставить("Расшифровка",ВыходныеПараметры[1]);
					РезультатПробитияЧека.Вставить("ВыхДанные",ВыходныеПараметры[2]);
					РезультатПробитияЧека.Вставить("ОписаниеОшибки",ВыходныеПараметры[3]);
					
				Иначе
					
					ТекстСообщения = НСтр("ru = 'При подключении устройства произошла ошибка. Команда не выполнена на фискальном регистраторе.
					|Дополнительное описание: %ДополнительноеОписание%'");
					
					ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ДополнительноеОписание%", ОписаниеОшибки_);
					
					ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
					
					РезПечатиЧека = -2; //Число, код ошибки...
					
				КонецЕсли;
				
			Иначе
				
				ТекстСообщения = НСтр("ru = 'Не выбран фискальный регистратор.'");
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
				
				РезПечатиЧека = -3; //Число, код ошибки...
				
			КонецЕсли;
			
		Иначе
			
			ТекстСообщения = НСтр("ru = 'Предварительно необходимо выбрать рабочее место внешнего оборудования текущего сеанса.'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
			
			РезПечатиЧека = -4; //Число, код ошибки...
			
		КонецЕсли;
		
	ИначеЕсли ФискальникиСервер.ФискальныйРегистраторПоКассе(Объект.КассаККМ) = Ложь Тогда 
		//Это обычная касса, или Чекопичатающая машинка...
		Если РезультатПробитияЧека = Неопределено Тогда 
			РезультатПробитияЧека = Новый Структура;
		КонецЕсли;
		РезультатПробитияЧека.Вставить("ПровестиДокумент",Истина);
	КонецЕсли;
	
	Возврат РезПечатиЧека;
КонецФункции
Показать





2. Добавляете общий модуль "ФискальникиСервер"

Функция Из_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт
     Если Нотация<=0 Тогда Возврат("") КонецЕсли;
     Значение=Число(Значение);
     Если Значение<=0 Тогда Возврат("0") КонецЕсли;
     Значение=Цел(Значение);
     Результат="";
     Пока Значение>0 Цикл
          Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат;
          Значение=Цел(Значение/Нотация) ;
     КонецЦикла;
     Возврат Результат;
КонецФункции
//_________________________________________________________

Функция Из_Любой_В_10(Знач Значение="0",Нотация=36) Экспорт
     Если Нотация<=0 Тогда Возврат(0) КонецЕсли;
     Значение=СокрЛП(Значение);
     Если Значение="0" Тогда Возврат(0) КонецЕсли;
     Результат=0;
     Длина=СтрДлина(Значение);
     Для Х=1 По Длина Цикл
          М=1;
          Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла;
          Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;
     КонецЦикла;
     Возврат Окр(Результат);
КонецФункции
//Сообщил Рупор Абсурда (avb).

Функция ПеревестиЧислоИз16в10(СтрокаХекс) Экспорт
	Возврат Из_Любой_В_10(СтрокаХекс, 16);
КонецФункции

Функция ПеревестиЧислоИз10в16(Число, Байт = Неопределено, НулиСправа = Истина) Экспорт
	
	ЧислВ16 = Из_10_В_Любую(Число, 16);
	
	Если Байт <> Неопределено и Байт > 0 Тогда 
		//Допишем нулики, не достающие...
		пКолСимв = Байт * 2; //1 байт = 2 символам
		
		//Подставим недостающие нули
		СтДлин = СтрДлина(ЧислВ16);
		Если СтДлин = 0 Тогда 
			//Заполним нулями
			Для Сч = 1 По Байт Цикл 
				ЧислВ16 = ЧислВ16 + "00";
			КонецЦикла;
			
		ИначеЕсли СтДлин % 2 <> 0 Тогда 
			//Если нехватает одного нулика
			ЧислВ16 = "0" + ЧислВ16;
		КонецЕсли;
		
		//Проверем на избыток
		СтДлин = СтрДлина(ЧислВ16);
		Если СтДлин > пКолСимв Тогда 
			ЧислВ16 = "";
			Для Сч = 1 По Байт Цикл 
				Если НулиСправа = Истина Тогда 
					ЧислВ16 = ЧислВ16 + "00";
				Иначе 
					ЧислВ16 = "00" + ЧислВ16;
				КонецЕсли;
			КонецЦикла;
		Иначе 
			//Добъем просто нулями до кондиции!!!
			Для Сч = СтДлин+1 По пКолСимв Цикл 
				Если НулиСправа = Истина Тогда 
					ЧислВ16 = ЧислВ16 + "0";
				Иначе 
					ЧислВ16 = "0" + ЧислВ16;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
		
	Иначе 
		//Подставим недостающие нули
		СтДлин = СтрДлина(ЧислВ16);
		Если СтДлин % 2 <> 0 Тогда 
			//Если нехватает одного нулика
			ЧислВ16 = "0" + ЧислВ16;
		КонецЕсли;
	КонецЕсли;
	
	Возврат ЧислВ16;
КонецФункции

//В конец и в начале пробелы сокращатся
Функция МеждуДвумяСимволамиПробел(Число16) Экспорт 
	
	пЧисло16 = СокрЛП(Число16);
	СтрДлин = СтрДлина(пЧисло16);
	КолРаз = Цел(СтрДлин/2);
	Если КолРаз <> (СтрДлин/2) Тогда 
		КолРаз = КолРаз + 1;
	КонецЕсли;
	
	Сч = 1;
	Если Сч <= КолРаз Тогда 
		РезпЧисло16 = "";
		Сч_ = 1;
		Пока Сч <= КолРаз Цикл 
			Симв = Сред(пЧисло16,Сч_,2);
			
			РезпЧисло16 = РезпЧисло16 + Симв + " ";
			
			Сч  = Сч + 1;
			Сч_ = Сч_ + 2;
		КонецЦикла;
	Иначе 
		РезпЧисло16 = пЧисло16;
	КонецЕсли;
	
	Возврат СокрЛП(РезпЧисло16);
КонецФункции

Функция УбратьПробелы(Число16) Экспорт 
	Возврат СтрЗаменить(Число16," ","");
КонецФункции

Функция ПеревернутьСтроку(СтрокаХекс, ПараСимв = 1) Экспорт 
	
	СтрДлин = СтрДлина(СтрокаХекс);
	
	пСтрокаХекс = "";
	
	Сч = 1;
	Пока Сч <= СтрДлин Цикл 
		СледСимв = Сред(СтрокаХекс,Сч, ПараСимв);
		СледСимв = ДополнитьСтрокуСправа(СледСимв, ПараСимв, " ");
		
		пСтрокаХекс = СледСимв + пСтрокаХекс;
		
		Сч = Сч + ПараСимв;
	КонецЦикла;
	
	Возврат СокрЛП(пСтрокаХекс);
КонецФункции

Функция ДополнитьСтрокуСправа(СтрокаСимв, КолСимволов, СимволДоп) Экспорт 
	
	КолСимвВсего = СтрДлина(СтрокаСимв);
	
	Если КолСимвВсего < КолСимволов Тогда 
		пСтрокаСимв = СтрокаСимв;
		
		Для Сч = КолСимвВсего+1 По КолСимволов Цикл 
			пСтрокаСимв = пСтрокаСимв + СимволДоп;
		КонецЦикла;
		
		Возврат пСтрокаСимв;
	Иначе 
		Возврат СтрокаСимв;
	КонецЕсли;
		
КонецФункции

Функция ДополнитьСтрокуСлева(СтрокаСимв, КолСимволов, СимволДоп) Экспорт 
	
	КолСимвВсего = СтрДлина(СтрокаСимв);
	
	Если КолСимвВсего < КолСимволов Тогда 
		пСтрокаСимв = СтрокаСимв;
		
		Для Сч = КолСимвВсего+1 По КолСимволов Цикл 
			пСтрокаСимв = СимволДоп + пСтрокаСимв;
		КонецЦикла;
		
		Возврат пСтрокаСимв;
	Иначе 
		Возврат СтрокаСимв;
	КонецЕсли;
		
КонецФункции
Показать




3. В общем модуле модуле "ПодключаемоеОборудованиеШтрихМФискальныеРегистраторыКлиент"­,
а. в функции "ВыполнитьКоманду", прописываете



	// Передает низкоуровневую команду устройству
	ИначеЕсли Команда = "УправлениеУстройствомХекс" ИЛИ Команда = "DeviceControlHEX" Тогда
		КоманднаяСтрока = ВходныеПараметры[0];
		Результат = УправлениеУстройствомХекс(ОбъектДрайвера, Параметры, ПараметрыПодключения, КоманднаяСтрока, ВыходныеПараметры);


б. добавляете туда же функцию:

Функция УправлениеУстройствомХекс(ОбъектДрайвера, Параметры, ПараметрыПодключения, КоманднаяСтрока, ВыходныеПараметры) Экспорт

	Результат = Истина;
	
	пВходныеПараметры  = КоманднаяСтрока;
	пВыходныеПараметры = "";
	
	Попытка
		ОписОшибки = "";
		Результат = ОбъектДрайвера.DeviceControlHex(ПараметрыПодключения.ИДУстройства, пВходныеПараметры, пВыходныеПараметры);
	Исключение
		ОписОшибки = ОписаниеОшибки();
		ОписОшибки = ОписОшибки + Символы.ПС + "Команда - ["+КоманднаяСтрока+"]";
		Результат = Ложь;
	КонецПопытки;
	
	ВыходныеПараметры.Очистить();
	Если НЕ Результат Тогда
		ВыходныеПараметры.Добавить(999);
	Иначе 
		ВыходныеПараметры.Добавить(0);
	КонецЕсли;
	ВыходныеПараметры.Добавить("");
	ВыходныеПараметры.Добавить(пВыходныеПараметры);
	ВыходныеПараметры.Добавить(ОписОшибки);
	ВыходныеПараметры[0] = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
	
	Если ПустаяСтрока(ОписОшибки) Тогда 
		ВыходныеПараметры[3] = "Команда - ["+КоманднаяСтрока+"]";
	КонецЕсли;

	Возврат Результат;

КонецФункции
Показать



4. И далее указываете к примеру обращение к внутренним командам драйвера:

//Печать контрольной ленты

&НаКлиенте
Процедура ФР_КонтрольнаяЛента(Команда)
	// Вставить содержимое обработчика.
	
	Если ФР.Пустая() Тогда
		ТекстСообщения = "Оборудование не выбрано!";
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
		Возврат;
	КонецЕсли;
	
	Если НЕ ЕстьПравоНаПечатьКЛ_ФР() Тогда 
		ТекстСообщения = "Нет права доступа для печати ""Контрольной ленты по смене""!";
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
		Возврат;
	КонецЕсли;
	
	ТекстВопроса = "Для печати Контрольной ленты необходимо указать: 
	|номер смены в интервале 0000…2100.
	|
	|Рапечатать Контрольную ленту по смене "+Строка(НомерСменыКЛ)+" ?";
	РезОтвета = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Нет, "Вопрос...", КодВозвратаДиалога.Нет);
	Если РезОтвета <> КодВозвратаДиалога.Да Тогда 
		Возврат;
	КонецЕсли;
	
	//СтрокаДляКонтрольнойЛенты
	СтрокаДляКонтрольнойЛенты = "A6"; //1 байт, Команда для печати контрольной ленты
	
	//Добавим пароль Администратора, 4 байта
	ПарольСисАдмина = 30;
	СтрокаПароляХекс = ФискальникиСервер.ПеревестиЧислоИз10в16(ПарольСисАдмина, 4, Ложь);
	СтрокаПароляХекс = ФискальникиСервер.ПеревернутьСтроку(СтрокаПароляХекс,2);
	СтрокаДляКонтрольнойЛенты = СтрокаДляКонтрольнойЛенты + СтрокаПароляХекс;
	
	//Номер смены, 2 байта
	СтрокаНомерСмены = ФискальникиСервер.ПеревестиЧислоИз10в16(НомерСменыКЛ, 2, Ложь);
	СтрокаНомерСмены = ФискальникиСервер.ПеревернутьСтроку(СтрокаНомерСмены,2);
	СтрокаДляКонтрольнойЛенты = СтрокаДляКонтрольнойЛенты + СтрокаНомерСмены;
	
	//Допишем пробелы, и того 7 байт на команду, без учета пробелов... :)
	СтрокаДляКонтрольнойЛенты = ФискальникиСервер.МеждуДвумяСимволамиПробел(СтрокаДляКонтрольнойЛенты);
	
	//Сообщить(СтрокаДляКонтрольнойЛенты); //Отладка
	
	// Подготовка данных ФР
	ВходныеПараметры  = Новый Массив;
	ВходныеПараметры.Добавить(СтрокаДляКонтрольнойЛенты);
	ВыходныеПараметры = Неопределено;
	
	ВыполнитьКомандуОборудования(ФР,
	                             "DeviceControlHEX",
	                             ВходныеПараметры,
	                             ВыходныеПараметры);
								 
КонецПроцедуры
Показать



5. Примеры команд можно взять по ссылке ftp://ftp.shtrih-m.ru/download/FR/Doc
24. DrZombi 217 30.10.14 13:52 Сейчас в теме
(23) Вот еще вызов...

&НаКлиенте
Процедура ФР_КонтрольнаяЛента(Команда)
	// Вставить содержимое обработчика.
	
	Если НЕ ЕстьПравоНаПечатьКЛ_ФР() Тогда 
		ТекстСообщения = "Нет права доступа для печати ""Контрольной ленты по смене""!";
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
		Возврат;
	КонецЕсли;
	
	ТекстВопроса = "Для печати Контрольной ленты необходимо указать: 
	|номер смены в интервале 0000…2100.
	|
	|Рапечатать Контрольную ленту по смене "+Строка(НомерСменыКЛ)+" ?";
	РезОтвета = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Нет, "Вопрос...", КодВозвратаДиалога.Нет);
	Если РезОтвета <> КодВозвратаДиалога.Да Тогда 
		Возврат;
	КонецЕсли;
	
	//СтрокаДляКонтрольнойЛенты
	СтрокаДляКонтрольнойЛенты = "A6"; //1 байт, Команда для печати контрольной ленты
	
	//Добавим пароль Администратора, 4 байта
	ПарольСисАдмина = 30;
	СтрокаПароляХекс = ФискальникиСервер.ПеревестиЧислоИз10в16(ПарольСисАдмина, 4, Ложь);
	СтрокаПароляХекс = ФискальникиСервер.ПеревернутьСтроку(СтрокаПароляХекс,2);
	СтрокаДляКонтрольнойЛенты = СтрокаДляКонтрольнойЛенты + СтрокаПароляХекс;
	
	//Номер смены, 2 байта
	СтрокаНомерСмены = ФискальникиСервер.ПеревестиЧислоИз10в16(НомерСменыКЛ, 2, Ложь);
	СтрокаНомерСмены = ФискальникиСервер.ПеревернутьСтроку(СтрокаНомерСмены,2);
	СтрокаДляКонтрольнойЛенты = СтрокаДляКонтрольнойЛенты + СтрокаНомерСмены;
	
	//Допишем пробелы, и того 7 байт на команду, без учета пробелов... :)
	СтрокаДляКонтрольнойЛенты = ФискальникиСервер.МеждуДвумяСимволамиПробел(СтрокаДляКонтрольнойЛенты);
	
	//Сообщить(СтрокаДляКонтрольнойЛенты); //Отладка
	
	// Подготовка данных ФР
	ОбъектСтр = Новый Структура; //("Команда","131E000000")
	ОбъектСтр.Вставить("Команда",СтрокаДляКонтрольнойЛенты);
	ОбъектСтр.Вставить("КассаККМ",Новый Структура("ТипКассы",ПредопределенноеЗначение("Перечисление.ТипыКасс.ФискальныйРегистратор")));
	
	ФР = ПредопределенноеЗначение("Справочник.ПодключаемоеОборудование.ПустаяСсылка");
	
	РезультатПробитияЧека = Неопределено;
	РезПробитияЧека = ФискальникиКлиент.ВыполнитьКоманду(ОбъектСтр, ФР, УникальныйИдентификатор, РезультатПробитияЧека);
	Если РезПробитияЧека <> Неопределено и РезПробитияЧека < 0 Тогда 
		//Была ошибка //Шантарин СВ 08,09,2014 - Обработка Ошибки ФР
		Сообщить("Ошибка вызова команды: "+Строка(РезПробитияЧека));
		
		Если РезультатПробитияЧека <> Неопределено Тогда 
			Для Каждого ЗначСтрукт Из РезультатПробитияЧека Цикл 
				Сообщить(""+ЗначСтрукт.Ключ+": "+Строка(ЗначСтрукт.Значение));
				
				Если ТипЗнч(ЗначСтрукт.Значение) = Тип("Массив") Тогда 
					Для Каждого ЗначМасс Из ЗначСтрукт.Значение Цикл 
						Сообщить(" - "+ЗначСтрукт);
					КонецЦикла;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	Иначе 
		Сообщить("Команда выполнена...");
	КонецЕсли;
								 
КонецПроцедуры
Показать
25. Euroset1 11 02.03.17 04:27 Сейчас в теме
		
       ДатаТранзакции = ВРЕГ(ДатаТранзакции);
	ДатаТранзакцииЧисло = 0;
	для й = 1 по СтрДлина(ДатаТранзакции) цикл
		ДатаТранзакцииЧисло = ДатаТранзакцииЧисло * 16 + Найти("0123456789ABCDEF", Сред(ДатаТранзакции, й, 1)) - 1;
	КонецЦикла;


Проще некуда... перестаньте бездумно возводить в степень!!!
dctvghbdtn; ilyav; GlukAl; +3 Ответить
29. dctvghbdtn 11.07.21 14:03 Сейчас в теме
(25)
Спасибо! Откуда такой алгоритм?
26. vladimir2008 13 02.03.17 11:27 Сейчас в теме
Прикольно тема не поднималась 3 года
27. Euroset1 11 02.03.17 12:07 Сейчас в теме
Но я же не с пустыми руками пришел. Все же поисковик эту тему охотно выдает, поэтому у нее должен быть счастливый конец.
28. vladimir2008 13 02.03.17 15:27 Сейчас в теме
Оставьте свое сообщение

См. также

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    56369    tormozit    52    

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.04.2022    3355    quazare    11    

Вывод табличных документов с разной ориентацией страниц в один pdf файл

Универсальные функции v8 Россия Бесплатно (free)

Привожу код для вывода нескольких табличных документов c разной ориентацией страниц в один файл pdf.

06.04.2022    1129    sdjoker    5    

Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)

БСП (Библиотека стандартных подсистем) Универсальные функции v8 Бесплатно (free)

Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так... ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм...

07.03.2022    3474    vandalsvq    0    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    53292    tormozit    74    

Убираем параметры из отбора СКД

Универсальные функции СКД v8 v8::СКД Бесплатно (free)

Заметка о некоторых технических нюансах параметров данных и отборов СКД.

17.02.2022    2749    Yashazz    28    

Конвертируем печатную форму pdf в картинку (jpg, gif, png и прочие) на сервере

Универсальные функции v8 1cv8.cf Бесплатно (free)

Была поставлена интересная задача конвертировать печатную форму в файл картинку. По условию задачи клиенту на почту нужно присылать только файл картинку (jpg, gif).

22.12.2021    2971    John_d    23    

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С v8 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    7954    acces969    95    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

14 универсальных функций, с примерами использования - для обычного и управляемого интерфейса

26.02.2016    44164    unichkin    47    

Простейший способ учета изменений управляемых форм объектов 1С

Универсальные функции v8 1cv8.cf Бесплатно (free)

Описание методологии, позволяющей контролировать список изменений форм + вспомогательные функции программного изменения форм. Пригодятся при внесении изменений в расширениях, если есть необходимость видеть и контролировать все сделанные с формой изменения.

02.11.2021    1389    avalakh    12    

Функции для преобразования справочников и документов в соответствие и обратно

Универсальные функции v8 1cv8.cf Бесплатно (free)

Функции для преобразования справочников и документов в соответствие и обратно. Предназначены для передачи данных между одинаковыми и не очень конфигурациями или как очередной вариант сохранения (архивирования) объектов перед редактированием с последующим восстановлением.

01.11.2021    1114    avalakh    5    

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

Работа с интерфейсом Универсальные функции v8 Бесплатно (free)

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом)... То вам - сюда.

08.10.2021    2064    e-9    13    

Программные перечисления, ч.2: приемы кэширования при разработке Промо

Универсальные функции Механизмы платформы 1С Запросы v8 Бесплатно (free)

Все знают, что такое кэш, и зачем он нужен. Но в 1С разработчик обычно использует кэширование только на уровне конфигурации, а в какой-нибудь обработке скорее ломает голову над запросом - как получить все данные за один заход... Хочется рассказать о том, как можно добиться хороших результатов с стратегией "разделяй и властвуй".

30.10.2017    28459    unichkin    18    

Взаимодействие с api Честный знак (Молочная продукция)

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    5323    user5300    57    

Из Word в табличный документ

Универсальные функции v8 Платформа 1C v8.2 Бесплатно (free)

Быстро и просто: текст, списки, таблицы. Готовый код

18.08.2021    2183    Yashazz    5    

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия БУ УУ Бесплатно (free)

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

21.06.2021    6764    quazare    4    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    25562    unichkin    13    

Своя функция &Вместо &ИзменениеИКонтроль

Универсальные функции v8 Россия Бесплатно (free)

Как добавить контроль в расширения, если не доверяешь аннотации &ИзменениеИКонтроль.

06.06.2021    8888    AntonProgma    162    

Предотвращение многократного вызова "ПриПолученииДанных" во время поиска в табличном поле в обычных формах

Универсальные функции v8 Бесплатно (free)

Долго искал решение: как при выводе строк заполнить значениями колонки, которые созданы программно, чтобы, не было тормозов при стандартном поиске. И с минимальными изменениями (легко контролируемыми, при обновлении).

07.04.2021    2439    Vlad_CK    9    

Генератор QR кодов для 1С без компонент через HTTP API

Универсальные функции v8 Бесплатно (free)

Самый простой, на мой взгляд, способ получить QR код для 1СV8. Без внешних компонент, как говорится, бесплатно, без смс и регистрации))

17.12.2020    6665    shell_maxim    28    

Ускорение отладки управляемых форм Промо

Универсальные функции v8 1cv8.cf Бесплатно (free)

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

23.05.2015    15416    moolex    5    

Сохранение настроек

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

22.11.2020    5963    the1    8    

Сохранение настроенного запроса набора данных СКД

Универсальные функции v8 v8::СКД 1cv8.cf Бесплатно (free)

Как сохранить запрос набора данных СКД в том виде, каким он будет выполнен системой для открытия в консоли запросов с диска ИТС.

09.11.2020    1915    Serge R    0    

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

Универсальные функции v8 Бесплатно (free)

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

07.10.2020    7596    ellavs    3    

УстановитьСсылкуНового() как ход оптимизации! Промо

Универсальные функции Механизмы типовых конфигураций v8 1cv8.cf Бесплатно (free)

Для себя открыл новую возможность применения данного метода в типовых конфигурациях. Особенность чрезвычайно интересная при загрузке справочников.

22.10.2014    57865    logarifm    85    

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С v8 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    7737    Neti    47    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    17113    YPermitin    27    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    19762    RPGrigorev    0    

[8.2] Глобальные переменные в контексте сервера (управляемое приложение) Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Можно ли в 8.2 на сервере хранить ссылку на объект внешней компоненты? Можно! Рассмотрим на примере... Эта статья - отчет на вопрос в http://infostart.ru/forum/forum14/topic29689/

09.12.2009    38481    Душелов    34    

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции v8 БП3.0 УТ11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    9990    quazare    5    

Вывод дерева в табличный документ СКД

Универсальные функции v8 v8::СКД Бесплатно (free)

Вывод содержимого элемента формы "ДанныеФормыДерево" в табличный документ средствами СКД.

09.07.2020    5066    Yashazz    11    

Форма выбора (подбор) в управляемых формах

Универсальные функции v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    107612    user5300    29    

Проверка заполненности реквизитов через подписку на событие Промо

Универсальные функции v8 1cv8.cf Бесплатно (free)

Навеяло от...http://infostart.ru/public/203664/ но с другого бока. Пришли пингвины, заявили... (а база перекурочена предшественниками как черепаха богом) хотим чтоб если есть в документе такой то реквизит, чтоб он всегда был заполнен... или же никогда там не выбирались группы и перечислили наименования справочников при ссылке на которые не должно быть пустот. И что? Я рыжий сидеть дня два прсматривать каждый из почти двух сотен доков? Потому и уродились три подписки на события. Описание в тексте Выбор групп проверяется на событие ПередЗаписью а проверка реквизитов на событии ОбработкаПроверкиЗаполнения

16.10.2013    14287    ser6702    7    

[v8] Несколько решений для работы с периодами и датами

Универсальные функции v8 1cv8.cf Бесплатно (free)

Несколько готовых решений нетривиальных задач.

25.03.2020    3684    1C_Casual    3    

Получаем уровень группировки ячейки табличного документа

Универсальные функции v8 Бесплатно (free)

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

23.03.2020    5794    maxx    16    

Поблочная обработка таблицы. Обзор решений

Универсальные функции Запросы СКД v8 Бесплатно (free)

8 способов реализации повседневной актуальной задачи, готовый код

25.02.2020    2756    Yashazz    21    

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения. Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения. Эта статья описывает процесс доработки типовых 1С конфигураций, для добавления возможности запретить редактировать документы, на основании которых другими документами уже сделаны движения в регистрах накопления. Это позволяет предотвратить часть ошибок, возникающих из-за действий пользователя задним числом.

07.04.2011    27566    milkers    25    

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции v8 Россия Бесплатно (free)

Как с учетом обстоятельств сравнить два небрежно записанных адреса и решить, означают ли они одно и то же. Программный код написан для режима совместимости с 8.2.

04.01.2020    4295    AnatolPopov    7    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.

25.12.2019    9402    brooho    21    

Автоматическое создание связанного объекта в базе 1С: Документооборот через бесшовную интеграцию

Универсальные функции Механизмы типовых конфигураций v8 ДО ERP2 БП3.0 УТ11 КА2 ЗУП3.x Бесплатно (free)

При настройке бесшовной интеграции с базой документооборота часто возникает задача - пользователи просят автоматически создавать связанный объект в базе документооборота по некоторому условию. В данной публикации я хочу поделиться своим решением данной задачи.

23.12.2019    4643    pavelpribytkin96    1    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    34952    shakmaev    47    

Полезности | Дерево значений | Обычные формы |

Универсальные функции v8 Бесплатно (free)

Полезные функции при работе с деревом значений.

04.12.2019    10140    Mellow    7    

Разбор любого JSON-объекта в соответствующую структуру

Универсальные функции v8 1cv8.cf Бесплатно (free)

Данная публикация предназначена разработчикам 1С, которым приходиться разбирать данные формата JSON. Выложенный пример кода создает объект типа Структура, полностью повторяющий структуру данных формата JSON.

13.11.2019    24788    user665435_al.windstorm    15    

Использование XML-схемы из макета внешней обработки

Универсальные функции Файловые протоколы обмена (TXT, XML, DBF), FTP v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    14141    Olesia_Matusevich    10    

Быстрое создание наполненных коллекций

Универсальные функции v8 1cv8.cf Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    8342    SeiOkami    69    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Файловые протоколы обмена (TXT, XML, DBF), FTP v8 1cv8.cf Бесплатно (free)

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    17226    kraspila    33    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    8382    DmitryKotov    6    

Методика независимой системы "Подписки на события"

Универсальные функции v8 УПП1 Бесплатно (free)

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

17.10.2019    16013    aximo    35    

Полезные процедуры и функции для программиста

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    42713    HostHost    41    

"Хочу универсально!" [Часть 2]

Универсальные функции v8 Бесплатно (free)

Продолжение истории про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма.

25.09.2019    5639    SeiOkami    5    

Документ на документ. Автоматическое создание связанных документов

Универсальные функции v8 1cv8.cf Бесплатно (free)

Пример решения простой и распространенной задачи - автоматическое создание документа на основании другого документа.

16.09.2019    14778    YPermitin    27