[РЕШЕНО] Замена служебных символов

Тема в разделе "Система компоновки данных (СКД)", создана пользователем dimon_k, 27 мар 2014.

  1. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    1С:Предприятие 8.3 (8.3.4.408)
    Управление торговлей, редакция 11.1 (11.1.4.11)

    Есть отчет на СКД который собирает из доков некую информацию и выгружает ее в текстовый файл по расписанию используя стандартный механизм "Рассылка отчетов". Проблема появилась когда в отчет попал один документ в котором в поле "Назначение платежа" в тексте присутствует символ перевода строки. При попытке грузить итоговый тестовый файл в другую базу имеем ошибку из-за того что одна строка разбита на две. Вот пример:
    Дата Номер Назначение
    27.03.2014 25 Для примера1
    27.03.2014 26 Для примера2
    27.03.2014 27 Для
    примера3
    27.03.2014 28 Для примера4
    Как можно избежать такого???
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    А почему бы не сделать обработку, которая обработает данные и соединит эти строки?
  3. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Перед выгрузкой в текстовый обрабатывать.
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Будет большим плюсом еще и для того, что вдруг потом найдете еще ошибку или просто нужно будет обработать данные по своим условиям, а у вас уже есть готовый механизм.
  5. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Перед выгрузкой обрабатывать не получится (отчет сделан на СКД в текстовый файл выгружает стандартный механизм "Рассылка отчетов"). Хотелось бы просто в вычисляемом поле или в поле "Выражение, по которому вычисляется представление поля" что нить вписать чтоб убирало системные символы ... типа такого
    Код:
    мТекст = СтрЗаменить(мТекст,Символы.ВК,"");
    мТекст = СтрЗаменить(мТекст,Символы.ВТаб,"");
    мТекст = СтрЗаменить(мТекст,Символы.НПП,"");
    мТекст = СтрЗаменить(мТекст,Символы.ПС,"");
    мТекст = СтрЗаменить(мТекст,Символы.ПФ,"");
    мТекст = СтрЗаменить(мТекст,Символы.Таб,"");
    
    --- Объединение сообщений, 27 мар 2014 ---
    Но СтрЗаменить не проходит...
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Чейто нельзя то?! СКД же формирует данные каким то образом. Вот там сразу и выводите что надо.
  7. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Пришлось пока добавить в "Общие модули" свою функцию и ее использовать в "Выражение, по которому вычисляется представление поля". Но мне кажется что можно как-то проще ... А можно функцию добавлять не в "Общие модули" а в "Модуль объекта" самого отчета??? И если да то как к ней обратиться?
  8. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Нет. Такой возможности нет.
  9. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    А вот это странно ... Отчет внешний. Наверное должно считаться что его можно использовать на разных конфигурациях ... Но необходимый ему для работы код нельзя в него же и встроить :(
  10. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Это ограничение СКД. В самой схеме можно использовать только процедуры и функции из общего модуля.
    --- Объединение сообщений, 27 мар 2014 ---
    И по-моему только глобального. Если память не изменяет.
  11. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Нет. У меня есть в "Общие модули" модуль "Нетиповое" в него мы пихаем все что дописываем (процедуры "подписок на события") вот в него я и впихнул функцию
    Код:
    Функция ЗаменаАбзаца(ТекстНаЗамену) Экспорт
    Возврат СтрЗаменить(ТекстНаЗамену,Символы.ПС," ");
    КонецФункции
    
    для пробы ... все отработало... Жаль что 1С опять коряво сделало ...
  12. Stroicikin
    Offline

    Stroicikin

    Регистрация:
    23 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Спасибо.
  13. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Что нет?
  14. TopicStarter Overlay
    dimon_k
    Offline

    dimon_k Опытный в 1С Команда форума

    Регистрация:
    17 янв 2011
    Сообщения:
    259
    Симпатии:
    17
    Баллы:
    29
    Нет, в смысле не только глобального... Из любого общего модуля ... У меня в свойствах общего модуля "Нетиповое" галочка "Глобальный" не стоит. Но функция расположенная в нем
    Код:
    Функция ЗаменаАбзаца(ТекстНаЗамену) Экспорт
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.ВК," ");
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.ВТаб," ");
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.НПП," ");
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.ПС," ");
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.ПФ," ");
       ТекстНаЗамену = СтрЗаменить(ТекстНаЗамену,Символы.Таб," ");
    Возврат ТекстНаЗамену
    КонецФункции
    
    и вызванная из внешнего отчета из поля "Выражение, по которому вычисляется представление поля" как
    Код:
    Нетиповое.ЗаменаАбзаца(НазначениеПлатежа)
    
    отрабатывает нормально...

Поделиться этой страницей