Пример получения подстроки по номеру из строки с разделителям в обработке 1С 7.7

Доброго времени суток, уважаемые коллеги! В этой статье рассмотрены примеры кода, который часто нужны на разных этапах разработки программного кода 1С 7.7. Здесь вы найдете примеры, которые использовались в разное время и в различных конфигурациях. Кроме того, есть статья о примерах программирования в версии 8.х и отдельная статья о том, как программно вставить рисунок с прозрачным фоном в таблицу. Итак, начнем!

Содержание

  1. Как устранить ошибку «Порядок сортировки, установленный для базы данных, отличается от системного!»?
  2. Как объединить конфигурации?
  3. Как из 1С преобразовать в PDF?
  4. Как заменить внешний отчет (обработку) в конфигурации?
  5. Как получить период работы контрагента с организацией в системе 1С:Предприятие7.7?
  6. Как получить из строки с разделителями определённую подстроку по её позиции?

Как устранить ошибку «Порядок сортировки, установленный для базы данных, отличается от системного!»?

Для её исправления следует установить платформу 1С не ниже 26 релиза и выполнить следующие действия:

— запустить базу данных в режиме «Конфигуратор»;

— в меню «Администрирование» выбрать пункт «Кодовая страница таблиц ИБ»;

— в выпадающем списке выбрать «+ Текущая системная установка».

— на вопрос системы о перестройки индексов нажать «да».

Через некоторое время появится сообщение об удачном изменении кодовой страницы. В самом крайнем случае, когда нет возможности согласовать системный порядок сортировки и порядок сортировки для базы данных «1С:Предприятие», можно отключить проверку их идентичности. Для этого нужно создать пустой файл OrdNoChk.prm и поместить его либо в каталоге запуска программы, либо в каталоге базы данных. При размещении этого файла в каталоге запуска программы (папка BIN) будет отключена проверка для всех баз, а при размещении в каталоге базы данных (там размещаются файлы 1Сv7.md, *.dbf, *.cdx) проверка будет отключена только для этой конкретной базы. Таким образом, проблема отличия сортировок решится, но при этом нужно иметь ввиду два важных момента:

1. «1С:Предприятие» при работе использует возможности по сортировке обоих механизмов, и отключение проверки идентичности порядка в них может привести к неожиданному для пользователя порядку следования строк, например, при формировании отчетов.

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

Как объединить конфигурации?

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

  1. Администрирование — Выгрузить данные…
  2. Укажите путь куда выгружать, затем назовите файл, например текущей датой: 19.01.2020.zip. 
  3. После выгрузки откройте пункт меню Конфигурация — Объединение конфигураций…
  4. Выберите .md-файл, появится окно «Объединение конфигураций», нажмите кнопку OK.
  5. Выберите пункт меню Файл — Сохранить. Да. Принять. ОК. Закрыть конфигурацию.

Изменения внесены. Закройте Конфигуратор.

Как из 1С преобразовать в PDF?

Я использую такую функцию:

Функция СохранитьPDF()
	
	// Заранее приготовим шаблон файла, затем, в процессе работы, 
	
	// изменим его и преобразуем в pdf
	
	ФайлВходящий  = КаталогИБ() + "ExtFormsЗаявкаНаЗавод.doc";
	
	
	Если ФС.СуществуетФайл(ФайлВходящий) = 0 Тогда
		Сообщить("Не могу найти Файл '" + ФайлВходящий +
		"' ! Нужен этот файл!");
	Иначе
		// Создаем объект Word (запускаем программу Word)
		Попытка
			Word = СоздатьОбъект("Word.Application");
			Word.Documents.Open(ФайлВходящий);
		Исключение
			Сообщить("Ошибка открытия файла: " + ФайлВходящий);
			Возврат 0;
		КонецПопытки;
	КонецЕсли;
	
	// здесь можно что-нибудь добавить в файл
	
	//// 
	ADoc = Word.ActiveDocument;
	
	Если ПустоеЗначение(Word) = 0 Тогда
		ФайлИсходящий = СтрЗаменить(ФайлВходящий, ".doc", ".pdf");
		// такая функция появилась только, начиная с Word 2007
		ADoc.ExportAsFixedFormat(ФайлИсходящий, 17);
	Иначе
		Возврат 0;
	КонецЕсли;
	
	ADoc.Close(0); // без записи изменений
	Word.Quit();
	Word = 0;
	Возврат ФайлИсходящий;
КонецФункции

Как заменить внешний отчет (обработку) в конфигурации?

  1. Для этого откройте Конфигуратор.
  2. Откройте конфигурацию, пункт меню Конфигурация-Открыть конфигурацию.
  3. В дереве конфигурации выберите нужный вам отчет (обработку).
  4. Нажмите правой кнопкой мыши и в появившемся меню выберите «Заменить на внешний отчет (обработку)…».
  5. Найдите файл .ert отчета (обработки) на вашем компьютере и выберите его.
  6. Вас спросят: «Заменить?», ответьте «Да».
  7. Сохраните конфигурацию. Пункт меню Файл-Сохранить.

Как получить период работы контрагента с организацией в системе 1С:Предприятие7.7?

Можно воспользоваться такой функцией:

Функция ПолучитьПериод(Контрагент)
	РазделительУчетаОперации = ПолучитьПустоеЗначение();
	Опер = СоздатьОбъект("Операция");
	Опер.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
	Опер.ВыбратьОперацииСПроводками(ВыбНачПериода, ВыбКонПериода ,"121", , ВыбранныйПланСчетов(), РазделительУчетаОперации);
	к=0;
	Пока Опер.ПолучитьОперацию() = 1 Цикл
		Если к=0 Тогда
			ДатаО1 = Опер.ДатаОперации;
		КонецЕсли;
		к=1;
		ДатаО2 = Опер.ДатаОперации;
	КонецЦикла;
	Возврат ПериодСтр(ДатаО1,ДатаО2);
КонецФункции // ПолучитьПериод

Как получить из строки с разделителями определённую подстроку по её позиции?

Обычно используется функция ПолучитьСтр():

//******************************************************************************
// ПолучитьСтр(знач ГдеИщем, Ном = 1, Р = ",")
//
// Параметры: 
// знач ГдеИщем - строка, Ном = 1 - число, Р = "," - строка
//
// Возвращаемое значение: Строка
//
// Описание: Возвращает подстроку под номером Ном из строки ГдеИщем с разделителями Р 
Функция ПолучитьСтр(знач ГдеИщем, Ном = 1, Р = ";")
	Ном1 = Число(Ном);
	Поз=Найти(ГдеИщем,Р);
	Если (Поз = 0) Тогда Возврат ГдеИщем;КонецЕсли;
	Стр1=Лев(ГдеИщем,Поз-1);
	Если Ном1 = 1 Тогда Возврат Стр1;КонецЕсли;
	СчетчикЦикла = 0;
	Для СчетчикЦикла = 2 По Ном1 Цикл
		ГдеИщем=Сред(ГдеИщем,Поз+1,СтрДлина(ГдеИщем)-Поз);
		Поз=Найти(ГдеИщем,Р);
		Если (Поз = 0) Тогда Возврат ГдеИщем;КонецЕсли;
		Стр=Лев(ГдеИщем,Поз-1);
		Если Ном1 = СчетчикЦикла Тогда Возврат Стр;КонецЕсли;
	КонецЦикла;
КонецФункции // ПолучитьСтр()

Пример использования:

НужнаяСтрока = "1С,PHP,Delphi,HTML,CSS";
Сообщить(ПолучитьСтр(НужнаяСтрока, 4, ","));

В результате выполнения примера будет выведена подстрока «HTML». Вы можете скачать реализацию данной функции на примере внешней обработки здесь.

Пример получения подстроки по номеру из строки с разделителям в обработке 1С 7.7

Также можно посмотреть работу такой же функции в 1С 8.


Уважаемый посетитель! Как вы, может быть, заметили все материалы с нашего сайта предоставляются бесплатно. Вы можете поддержать наш сайт, сняв c него блокировку рекламы, то есть добавив его в исключения вашего блокировщика.


Этот блог читают уже более 3000 человек - читай и ТЫ!
8 ответы
  1. Матвей
    Матвей говорит:

    Программирование в 1С я стал изучать совсем недавно, и пока что у меня не совсем все получается. В частности у меня не все получается в работе со строками. Предоставленный пример мне как раз подходит. Но возникли трудности с переводом на программный язык. Можете выложить уже готовый пример?

    Ответить
  2. Илья
    Илья говорит:

    Хотелось бы поблагодарить, что помогли мне разобраться с сортировкой. А то сам мучился мучился, вообще ничего не получалось.. А так попробовал эти примеры, все заработало. Вы сами писали или это из учебника?

    Ответить
  3. Softmaker
    Softmaker говорит:

    Первую часть сам, а вторую часть прочитал, кажется из книжки по 1С 7.7, которая прилагается к самой программе.

    Ответить
  4. Ирина
    Ирина говорит:

    Мне в срочном порядке необходимо было сделать конвертацию из 1С7.7 в PDF, какова же была моя радость, когда я увидела уже готовый пример. За него я и хочу вас поблагодарить, избавили меня от головной боли и научили полезной вещи.

    Ответить
  5. Softmaker
    Softmaker говорит:

    Рад помочь, Ирина! Надеюсь напишу больше примеров по программированию в 1С и не только о преобразовании в PDF.

    Ответить
  6. Abavam
    Abavam говорит:

    Ошибка с порядком сортировки в 1С7.7 просто вынесла мне весь мозг, сколько бы я не пытался ее исправить ничего не помогало. Стал делать как у вас описано — аллилуйя! Заработало!! Сейчас это запомнил как таблицу умножения.

    Ответить

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *