Примеры программирования в 1С 7.7
Доброго времени суток, уважаемые коллеги! В этой статье рассмотрены примеры кода, который часто нужны на разных этапах разработки программного кода 1С 7.7. Здесь вы найдете примеры, которые использовались в разное время и в различных конфигурациях. Кроме того, есть статья о примерах программирования в версии 8.х и отдельная статья о том, как программно вставить рисунок с прозрачным фоном в таблицу. Итак, начнем!
Содержание
- Как устранить ошибку «Порядок сортировки, установленный для базы данных, отличается от системного!»?
- Как объединить конфигурации?
- Как из 1С преобразовать в PDF?
- Как заменить внешний отчет (обработку) в конфигурации?
- Как получить период работы контрагента с организацией в системе 1С:Предприятие7.7?
- Как получить из строки с разделителями определённую подстроку по её позиции?
Как устранить ошибку «Порядок сортировки, установленный для базы данных, отличается от системного!»?
Для её исправления следует установить платформу 1С не ниже 26 релиза и выполнить следующие действия:
— запустить базу данных в режиме «Конфигуратор»;
— в меню «Администрирование» выбрать пункт «Кодовая страница таблиц ИБ»;
— в выпадающем списке выбрать «+ Текущая системная установка».
— на вопрос системы о перестройки индексов нажать «да».
Через некоторое время появится сообщение об удачном изменении кодовой страницы. В самом крайнем случае, когда нет возможности согласовать системный порядок сортировки и порядок сортировки для базы данных «1С:Предприятие», можно отключить проверку их идентичности. Для этого нужно создать пустой файл OrdNoChk.prm и поместить его либо в каталоге запуска программы, либо в каталоге базы данных. При размещении этого файла в каталоге запуска программы (папка BIN) будет отключена проверка для всех баз, а при размещении в каталоге базы данных (там размещаются файлы 1Сv7.md, *.dbf, *.cdx) проверка будет отключена только для этой конкретной базы. Таким образом, проблема отличия сортировок решится, но при этом нужно иметь ввиду два важных момента:
1. «1С:Предприятие» при работе использует возможности по сортировке обоих механизмов, и отключение проверки идентичности порядка в них может привести к неожиданному для пользователя порядку следования строк, например, при формировании отчетов.
2. В случае использования компоненты УРБД не использовать символы любых других алфавитов, кроме латинского, в трехбуквенном идентификаторе информационных баз.
Как объединить конфигурации?
Вам передали .md-файл, с измененной конфигурацией. Как внести эти изменения в Вашу конфигурацию? Пусть все выйдут из 1С. Здорово, если у вас налажено резервное копирование базы, чтобы не потерять данные. Зайдите в Конфигуратор и для начала сделайте выгрузку данных:
- Администрирование — Выгрузить данные…
- Укажите путь куда выгружать, затем назовите файл, например текущей датой: 19.01.2020.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С 8.
Программирование в 1С я стал изучать совсем недавно, и пока что у меня не совсем все получается. В частности у меня не все получается в работе со строками. Предоставленный пример мне как раз подходит. Но возникли трудности с переводом на программный язык. Можете выложить уже готовый пример?
Пожалуйста, Матвей, качайте пример в конце статьи.
Хотелось бы поблагодарить, что помогли мне разобраться с сортировкой. А то сам мучился мучился, вообще ничего не получалось.. А так попробовал эти примеры, все заработало. Вы сами писали или это из учебника?
Первую часть сам, а вторую часть прочитал, кажется из книжки по 1С 7.7, которая прилагается к самой программе.
Мне в срочном порядке необходимо было сделать конвертацию из 1С7.7 в PDF, какова же была моя радость, когда я увидела уже готовый пример. За него я и хочу вас поблагодарить, избавили меня от головной боли и научили полезной вещи.
Рад помочь, Ирина! Надеюсь напишу больше примеров по программированию в 1С и не только о преобразовании в PDF.
Ошибка с порядком сортировки в 1С7.7 просто вынесла мне весь мозг, сколько бы я не пытался ее исправить ничего не помогало. Стал делать как у вас описано — аллилуйя! Заработало!! Сейчас это запомнил как таблицу умножения.
Abavam: рздорово, что вы разобрались с проблемой сортировки в 1С 7.7!