Архив за месяц: Январь 2017

wp и парные кавычки

Вечно мучающий вопрос, особенно программистов, которые выкладывают код, как убрать эти щьёртаффы парные кавычки, чтобы были прямые.

Так как проблему берутся решать программисты, получается, что они лезут в код темы или ядра wordpress. То есть после обновления нужно снова искать год назад читанную статью и восстанавливать как было раньше. По этой причине многие не обновляют темы и движок и делают свой сайт более уязвимым.
Попробуем решить вопрос без программирования. Переключаемся в редакторе записи с «Визуально» на «Текст»
Давайте я напишу какой нибудь текст с кавычками, и заключу его в тег code (см. скрин)
Вот пример кода;
//Код на 1С Предприятие
Сообщить("А как там парные кавычки поживают?");
//Как видите, кавычки в этом случае не парные

Чтобы сохранить ещё и форматирование, заключите и в pre. Но в моей теме тогда плохо видно текст. Если подскажете, как можно просто настроить цвет текста в pre не открывая файлов css буду весьма признателен. Пока что вот так выглядит:

//Код на 1С Предприятие
Сообщить("А как там парные кавычки поживают?");
//Как видите, кавычки в этом случае не парные

Хотя просто выбрал другой цвет. И всё красиво

//Код на 1С Предприятие
Сообщить("А как там парные кавычки поживают?");
//Как видите, кавычки в этом случае не парные

Кстати, зашел в настройки сайта, выбрал пункт «Дополнительные CSS», внес такую строку:
PRE {color: #000080;}
теперь всё что в PRE синее.

для каждого стр из таблица цикл
   Сообщить ("Имя товара: "+стр.Номенклатура);
КонецЦикла;

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

Печать справочников в 1С 7.7

Как выгрузить в эксель справочник из 1С 7.7?

Имеется универсальная обработка, которая выводит справочник в виде табличного документа. Затем распечатанный справочник можно скопировать в эксель, или же сохранить с помощью другой обработки, которая сохраняет печатные документы в эксель сохраняя форматирование. Позже найду и её.
Универсальную обработку можно скачать с этого сайта по ссылке.

Как устанавливать автоматически префикс документов в типовых конфигурациях 1С 8.х

В типовых конфигурациях достаточно добавить документ к списку выбора в событии «При установке нового номера документа», как показано на картинке.

Сами префиксы берутся из настроек учета. Например для распределенной базы данных РИБ префикс узла (чтобы не совпадали номера документов, введенных в подчиненных узлах) указывается здесь.

Регулярные выражения в 1С 8.х

Процедура возвращает массив из n/m  элементов, где n — это количество найденных выражений, а m — количество подвыражений в каждом выражении. Обратите внимание, что подвыражений может быть разное количество.

Если не найдено ни одного выражения, возвращает «неопределено»

 


функция регВырИгнорРегистр (текст, выражение)
	рез=неопределено;
	Если (ЗначениеЗаполнено(текст)=ложь) ИЛИ (ЗначениеЗаполнено(выражение) =ложь)Тогда
		возврат текст;
	КонецЕсли;
	_Истина=-1;
	_Ложь=0;
	RegExp = новый COMОбъект("VBScript.RegExp");
	
	RegExp.IgnoreCase = _Истина; //Игнорировать регистр
	RegExp.Global = _Истина; //Поиск всех вхождений шаблона
	RegExp.MultiLine = _Ложь; //Многострочный режим
	
	RegExp.Pattern = выражение; //Ищем вхождение
	Matches=RegExp.Execute(текст);
	ЧислоВхождений=Matches.Count();
	Если ЧислоВхождений>0 Тогда
		рез = новый массив;
		для н = 0 по ЧислоВхождений-1 цикл
			Match = Matches.Item(н);
			SubMatches = Match.SubMatches;
			
			Если SubMatches.Count()>0 тогда
				субРез = новый массив;
				для н1 = 0 по SubMatches.Count()-1 цикл
					субРез.Добавить(SubMatches.Item(н1));		
				КонецЦикла;
				рез.Добавить( субРез);
			КонецЕсли;			
				
		КонецЦикла;
		
		//Match = Matches.Item(0);
		//SubMatches = Match.SubMatches;
		//SubMatch=SubMatches.Item(номерПозиции);
		возврат (рез);
	Иначе
		возврат неопределено;
	КонецЕсли;
	Возврат неопределено;
КонецФункции


Как теперь функцию использовать. Предположим, там нужно изменить наименование в карточке склада, в которой установлен признак «не кондиция», чтобы между фразой «Продукты-» далее идет номер магазина, это может быть «Продукты-15» или Продукты-15, то есть с кавычками или без. Затем идет адрес. И нужно между фразой с номером магазина и адресом вставить слово «НЕ КОНДИЦИЯ». Тобишь ,

"Филиал Новозанзибаровка "Продукты-15"ул. Заречная д. 7"

должен превратиться в

"Филиал Новозанзибаровка "Продукты-15"НЕ КОНДИЦИЯ ул. Заречная д. 7"

. Как видно, после фразы «Продукты-15» пробела нет. Но это только в случае, если там его небыло и сразу шло «ул….». Но в нашем случае пробел может быть, а может не быть. Вам предлагаю усовершенствовать выражение, чтобы красиво ставился один пробел, независимо от того, был он там или небыло. В этом примере если он (пробел) там (В наименовании карточки склада) был, то будет и после переименования.


процедура выполнитьПереименование (ТекСклад)
	рез =  регВырИгнорРегистр(СокрЛП(ТекСклад.Наименование),"(.*?)(Продукти|Делві)(-\d+""? ?)(.*)");	
	если рез <> неопределено тогда
		новоеНаименование = рез[0][0]+рез[0][1]+рез[0][2]+"НЕ КОНДИЦИЯ "+рез[0][3];
		Если НеПереименовывать тогда
			Сообщить (СокрЛП(ТекСклад.Наименование)+" --> "+новоеНаименование);
		иначе
			
			о = ТекСклад.ПолучитьОбъект();
			о.Наименование = новоеНаименование;
			попытка
				о.Записать();
			исключение
				сообщить(ОписаниеОшибки());
			КонецПопытки;				
		КонецЕсли;
	КонецЕсли;	
КонецПроцедуры