[ФУНКЦИЯ] Замена обычных кавычек на кавычки-ёлочки «» для 1С: Предприятие 8.X

22.04.13

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

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

Скачать файлы

Наименование Файл Версия Размер
Типограф1С.epf
.epf 10,00Kb
9
.epf 10,00Kb 9 Скачать

Основано на Замена кавычек на «ёлочки» в C# и PHP

Быстродействие на больших объёмах текста не проверял, так как замена кавычек требуется в основном в наименованиях контрагентов или номенклатуры, а они в 99% явно меньше 255 символов. Также не рассматривал упоротые случаи вида Общество с ограниченной ответственностью "Торговый дом "ООО Мокрохрен"".

// Функция заменяет в строке двойные кавычки " на кавычки-елочки «»
// Ported from http://aione.ru/zamena-kavyichek-yolochkami-v-csharp_i_php/
// Coded by Sergey aka Porutchik, 2013, http://forum.aeroion.ru/cat1.html
//
// Параметры
//  ИсходныйТекст  - Строка - входная строка
//
// Возвращаемое значение:
//  Строка  - строка с заменёнными кавычками
//
Функция ЗаменитьКавычкиНаЕлочки(Знач ИсходныйТекст) Экспорт

    Если Не
ЗначениеЗаполнено(ИсходныйТекст) Тогда
        Возврат
ИсходныйТекст;
    КонецЕсли;

   
ДвойнаяКавычка = """";
   
КоличествоКавычек = СтрЧислоВхождений(ИсходныйТекст, ДвойнаяКавычка);

   
// Если количество кавычек меньше двух, ничего не делаем, так как нет смысла закрывать/открывать
   
Если КоличествоКавычек < 2 Тогда
        Возврат
ИсходныйТекст;
    КонецЕсли;

   
ЛеваяКавычка = "«";
   
ПраваяКавычка = "»";
   
БуквыИЦифры = "0123456789ABCDEFGHIKLMNJOPQRSTUVWXYZ";
   
БуквыИЦифры = БуквыИЦифры + "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

   
Результат = "";
   
ПозицияКавычки = Найти(ИсходныйТекст, ДвойнаяКавычка);
    Пока
ПозицияКавычки > 0 Цикл
        Если
ПозицияКавычки = СтрДлина(ИсходныйТекст) Тогда
           
// Если конец строки заканчивается кавычкой
           
ИсходныйТекст = Лев(ИсходныйТекст, ПозицияКавычки - 1) + ПраваяКавычка; //
       
Иначе
           
// Если впереди кавычки идут буквы и цифры, - ставим открывающую "«"
            // Если любые другие символы, - ставим закрывающую "»"
           
СледующийСимвол = ВРег(Сред(ИсходныйТекст, ПозицияКавычки + 1, 1));
           
СтрокаЗамены = ?((Найти(БуквыИЦифры, СледующийСимвол) > 0) Или (ПозицияКавычки = 1), ЛеваяКавычка, ПраваяКавычка); //
           
ИсходныйТекст = Лев(ИсходныйТекст, ПозицияКавычки - 1) + СтрокаЗамены + Сред(ИсходныйТекст, ПозицияКавычки + 1); //
       
КонецЕсли;
       
// Если количество кавычек после последней замены осталось меньше двух, ничего не делаем, так как нет смысла закрывать/открывать
       
КоличествоКавычек = СтрЧислоВхождений(ИсходныйТекст, ДвойнаяКавычка);
        Если
СтрокаЗамены = ПраваяКавычка И КоличествоКавычек < 2 Тогда
           
ПозицияКавычки = 0;
        Иначе
           
ПозицияКавычки = Найти(ИсходныйТекст, ДвойнаяКавычка);
        КонецЕсли;
    КонецЦикла;

    Возврат
ИсходныйТекст;

КонецФункции
// ЗаменитьКавычкиНаЕлочки()

В очередной раз пожалел, что в 1С: Предприятии нет штатных возможностей регулярных выражений для замены текста. Использование COMОбъект VBScript.RegExp к ним не относится.

См. также

GUID в 1С 8.3 - как с ними быть

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4316    atdonya    22    

41

Переоткрытие внешних обработок

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

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

30.11.2023    3883    ke.92@mail.ru    16    

60

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8560    YA_418728146    6    

139

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2020    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16012    131    sapervodichka    112    

129

Система контроля ведения учета [БСП]

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

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

18.07.2022    7200    quazare    8    

108
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 22.04.13 11:29 Сейчас в теме
а упоротые случаи имхо и не сделать нормально из-за неоднозначностей «Торговый дом «ООО Мокрохрен». « ООО Мокрохрен » Торговый дом ».
2. Поручик 4670 22.04.13 11:44 Сейчас в теме
(1) Не сделать, потому и не пытался. Обсуждение http://forum.dklab.ru/viewtopic.php?t=10653
6. KillHunter 7 12.12.16 08:34 Сейчас в теме
(2)
А вы уверены что это будет прокатывать в 1ске ?
//**
// функция замены обычных кавычек " на русские елочки
function rus_quote($s) {
$s = preg_replace (www.php.net/preg_replace)(
array (www.php.net/array)(
"/(^|\s+|\(|\<|\{\[\|)\"/ms",
"/\"(\s+|\.|\,|\!|\?|\)|\>|\}|\]|\||$)/ms",
),
array (www.php.net/array)(
"\\1«",
"»\\1",
),
$s
);
return $s;
}
3. Intervent 22.04.13 14:16 Сейчас в теме
MS Word, например, обособленную кавычку или после открывающей скобки делает открывающей ёлочкой. Думаю имеет смысл задействовать такую же логику и в этой функции. Это в некотором роде обратная логика: всё, что не закрываем, - открываем.
Пример: [обособленная: " или после откр. скобки: (" - надо "открывающие"].

А заодно хорошо бы предоставить пользователю экранировать кавычку: \" → ".
Хотя, если шрифт печатной формы не моноширный, то можно две одинарных ставить. )
4. shoy 19 22.08.14 15:39 Сейчас в теме
Нет, уважаемые кроты, при анализе не лучше ли вначале посчитать количество кавычек и обычных и ёлочек?
5. natala_g 7 12.12.16 08:32 Сейчас в теме
Спасибо, очень выручили!
7. kozanostra-pajero 22.01.18 01:18 Сейчас в теме
8. dialogsoft 73 05.02.19 11:12 Сейчас в теме
// СтрокаСКавычками = "Alena" "Egorova"
СтрокаБезКавычки = СтрЗаменить(СтрокаСКавычками,"""","");
Сообщить(СтрокаБезКавычки); // Alena Egorova


https://helpf.pro/faq/view/560.html
9. bocr 05.12.19 11:43 Сейчас в теме
Пользуемся ALT и клавиатурой NumLock
ALT+0171 - «
ALT+0187 - »
olga-mp; SpaceOfMyHead; +2 Ответить
Оставьте свое сообщение