Примеры программирования в 1С 7.7

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

Содержание

  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С.

Зайдите в Конфигуратор и для начала сделайте выгрузку данных: Администрирование – Выгрузить данные…

Укажите путь куда выгружать, затем назовите файл, например текущей датой: 19.01.2011.zip.

После выгрузки откройте пункт меню Конфигурация – Объединение конфигураций…

Выберите .md-файл, появится окно «Объединение конфигураций», нажмите кнопку OK.

Выберите пункт меню Файл – Сохранить. Да. Принять. ОК. Закрыть конфигурацию.

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

Как из 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;
Возврат ФайлИсходящий;
КонецФункции

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

Для этого откройте Конфигуратор. Откройте конфигурацию, пункт меню Конфигурация-Открыть конфигурацию.

В дереве конфигурации выберите нужный вам отчет (обработку).

Нажмите правой кнопкой мыши и в появившемся меню выберите “Заменить на внешний отчет (обработку)…”.

Найдите файл .ert отчета (обработки) на вашем компьютере и выберите его.

Вас спросят: “Заменить?”, ответьте “Да”. Сохраните конфигурацию. Пункт меню Файл-Сохранить.

Как получить период работы контрагента с организацией в системе 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
.


Этот блог читают уже более 3000 человек
- читай и ТЫ!

8 ответы
  1. Матвей says:

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

    Ответить
  2. Илья says:

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

    Ответить
  3. Softmaker
    Softmaker says:

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

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

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

    Ответить
  5. Softmaker
    Softmaker says:

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

    Ответить
  6. Abavam says:

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

    Ответить

Ответить

Want to join the discussion?
Feel free to contribute!

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

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