1с как узнать размер файла
Как восстановить любое значение из файла в 1с 8.3, 8.2
Как записать текстовый файл в 1с 8.3, 8.2
Ложь // перезаписывать файл, а не дописывать в конец (необязательно.)
Как прочитать текстовый файл в 1с 8.3, 8.2
Как проверить существование файла в 1С 8.3, 8.2
Как скопировать файл в 1с 8.3, 8.2
Как переместить файл в 1с 8.3, 8.2
Как найти файлы в каталоге в 1с 8.3, 8.2
Ложь // если Истина, то будет искать и в подкаталогах
Как удалить файл в 1с 8.3, 8.2
Как удалить файлы в каталоге по маске в 1с 8.3, 8.2
) ; // если маску не указать, то удалятся все файлы вместе с каталогом
Как получить имя временного файла в 1с 8.3, 8.2
Сообщить ( ПолучитьИмяВременногоФайла ( ) ) ; // например, c:\Temp\v8_11AE_4.tmp
Сообщить ( ПолучитьИмяВременногоФайла ( ".txt" ) ) ; // например, c:\Temp\v8_11AE_5.txt
Как прочитать атрибуты файла в 1с 8.3, 8.2
Как установить атрибуты файла в 1с 8.3, 8.2
Как узнать размер файла в 1с 8.3, 8.2
Сообщить ( Файлег . Размер ( ) ) ; // покажет размер в байтах
Как узнать по пути, файл это или каталог в 1с 8.3, 8.2
Как вытащить расширение файла из его пути в 1с 8.3, 8.2
Как вытащить имя файла без расширения в 1с 8.3, 8.2
Как создать каталог в 1с 8.3, 8.2
Как проверить существование каталога в 1с 8.3, 8.2
Как удалить каталог вместе с содержимым в 1с 8.3, 8.2
Как получить каталог временных файлов в 1 с 8.3 , 8.2
Как сохранить произвольное значение во временное хранилище в 1с 8.3, 8.2
АдресВХранилище = ПоместитьВоВременноеХранилище ( Список ) ;
Как прочитать произвольное значение из временного хранилища в 1с 8.3, 8.2
СписокИзХранилища = ПолучитьИзВременногоХранилища ( АдресВХранилище ) ;
Сообщить ( "Значение по этому адресу уже удалено из хранилища." ) ;
Как перезаписать уже сохраненное значение во временном хранилище в 1с 8.3, 8.2
ПоместитьВоВременноеХранилище ( Массив , АдресВХранилище ) ;
Как сохранить значение во временное хранилище на всё время жизни формы в 1с 8.3, 8.2
ПоместитьВоВременноеХранилище ( Массив , ЭтаФорма . УникальныйИдентификатор ) ;
Как сохранить значение во временное хранилище на всё время сеанса пользователя в 1с 8.3, 8.2
АдресВХранилище = ПоместитьВоВременноеХранилище ( Массив , Новый УникальныйИдентификатор ) ;
Как удалить значение из временного хранилища в 1с 8.3, 8.2
Как узнать является ли строка адресом во временном хранилище в 1с 8.3, 8.2
Если ЭтоАдресВременногоХранилища ( АдресВХранилище ) Тогда
Как передать файл с клиента на сервер в 1с 8.3, 8.2
ОповещениеОЗавершени и = Новый ОписаниеОповещения ( "ВыполнитьПослеПомещенияФайла" , ЭтотОбъект ) ;
// если опустить последний параметр, то помещенный файл
// а если указать - то только после удаления объекта формы
// выбрать файл самому четвёртый параметр (интерактивно)
Процедура ВыполнитьПослеПомещенияФайла ( Результат , Адрес , ВыбранноеИмяФайла , ДополнительныеПараметры ) Экспорт
ВыбранноеИмяФайла + " передан на сервер и сохранён во " +
Как прочитать файл на сервере из временного хранилища в 1с 8.3, 8.2
Процедура ПрочитатьФайлНаСервереИзХранилищаНаСервере ( )
Сообщить ( "Сначала нужно передать файл с клиента на сервер." ) ;
ДвоичныеДанные = ПолучитьИзВременногоХранилища ( АдресФайлаВХранилище ) ;
Как передать файл с сервера на клиент в 1с 8.3, 8.2
АдресФайлаВХранилище // адрес в хранилище на сервере
Процедура ВыполнитьПослеПолученияФайлов ( ПолученныеФайлы , ДополнительныеПараметры ) Экспорт
Сообщить ( "Получен " + Файл . Имя + " из " + Файл . Хранение ) ;
Поиск по сайту
Okolokompa в Яндекс Дзен
Платформа 1С, начиная с релиза 8.3.8.1652, поддерживает новый формат хранения файловых баз данных.
Чем же так хорош этот новый формат? По заверениям 1С он более оптимизирован, а значит после перехода на него мы можем рассчитывать на некоторое увеличение производительности.
Кроме того, новый формат позволяет выбирать размер страницы данных. В старой версии формата (8.2.14) он всегда равен 4 килобайта, в новом же формате (8.3.8) он может быть: 4К, 8К, 16К, 32К или 64К.
Как его менять штатным способом
Чтобы изменить формат базы штатным способом:
- либо создайте новую пустую базу в новом формате (это так по умолчанию для версий платформы после 8.3.8.1652), а затем загрузите в неё dt-выгрузку из старой базы
- либо воспользуйтесь консольной утилитой от 1С cnvdbfl.exe (идёт с дистрибутивом 8.3.8)
Обновлятор поддерживает работу с утилитой cnvdbfl
Слава богам, что cnvdbfl.exe это нормальная утилита (в отличие от chdbfl.exe), которая поддерживает параметры командной строки.
Это позволило мне добавить возможность работы с форматом баз (одной или группы) прямо в Обновлятор-1С.
Сейчас я расскажу и покажу как это всё работает.
Выводим текущий формат баз
Пусть у нас имеются две торговые базы в "старом" формате (версии 8.2.14):
Попросим для начала обновлятор показать нам текущий формат этих баз.
Для этого, отметив их галками, раскроем пункт "Ещё", в котором последовательно перейдём:
- далее нажмём на пункт "6.17 Изменение формата файла БД"
В открывшемся диалоге ничего устанавливать не будем, просто нажмём выполнить:
Результат будет таким:
Меняем формат баз и размер страницы
Отлично. Сменим формат этих баз на 8.3.8 с размером страницы 16 килобайт. Для этого снова выбираем пункт 6.17 и в открывшемся диалоге устанавливаем следующие параметры:
Вот результат, к примеру, для первой базы:
Вы можете менять формат и в обратную сторону, можете экспериментировать с размером страниц, можете делать это для одной или сразу группы баз.
Работайте с удовольствием (то есть с обновлятором)!
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Казалось бы безобидный запрос работает под SQL некорректно из-за того, что разные реквизиты ссылаются на один и тот же справочник.
По отдельности работать будет (а также если перенести вторую группировку вперед и поставить между свойствами еще какую-то гуппировку). Можете попробовать.
Вот пример для ТиС:
ЗначениеСвойства = Справочник.Контрагенты.ОсновноеСвойство.ЗначениеСвойства;
ЗначениеСвойства1 = Справочник.Контрагенты.ОсновноеСвойство1.ЗначениеСвойства;
Группировка ЗначениеСвойства;
Группировка ЗначениеСвойства1;
Вот просто отсебятина:
|Организация = Справочник.МестаХранения.Организация;
|Организация1 = Справочник.МестаХранения.Организация1;
|Группировка Организация;
|Группировка Организация1;
Тип реквизитов Организация и Организация1 - "Справочник.Контрагенты"
Это знакомое <Объект не найден>
А вот так можно, например:
ЗЫ. Аккуратно с непосредственным удалением объектов
Как узнать является ли строка числом? <в начало>
Примеры: "0004" - число, "440ф0" - не число, "43.045" - число, "-33" - число, "5453.54.4" - не число и т.п.
Есть некоторые специфические ситуации вроде "+1", с которыми эта функция не справится. Приспосабливайте.
Сохранение настроек множественного фильтра <в начало>
Scaner1C.dll. Компонента не загружена <в начало>
Установите атоловский драйвер (скачать можно на официальном сайте АТОЛа)
Как узнать размер картинки и размер файла в 1с 7.7? <в начало>
Размер файла узнать очень просто. Используем штатную работу с файлами
Запуск 1С в терминальном режиме. Как запустить проводник, как показать рабочий стол? <в начало>
Некоторые нехорошие люди дают доступ к серверу весьма ограниченный. Заходишь в терминал и сразу же запускается 1С. А хочется передать файл какой-то себе по почте, полазить по папкам
Если не помогает Ctrl+Alt+End, запуск диспетчера задач (в котором можно выбрать "New Task" и набрать Explorer.exe), то пробуем действовать так: в 1С: Предприятии выполняем Меню - Сервис - Табло. В табло набираем ЗапуститьПриложение("explorer") и нажимаем Ввод.
Также можно действовать через Меню - Файл - Открыть: кликаем правой кнопкой мыши на любой папке и выбираем Проводник или "Открыть в новом окне" (за этот совет спасибо посетителю сайта).
Создание документов по OLE (ОЛЕ) - "Неизвестная ошибка" <в начало>
Поиском можно найти разные пути решения этой ошибки: долгое время выполнения операции, неправильные данные в реестре, ошибки в конструкциях языка и проч. Недавно столкнулся с такой ошибкой, когда переделывал чужую обработку. Ошибка возникала то на одном документе, то на другом. Мне помогло вот что: убрал загрузку внешних компонент и создание объектов типа "ODBCRecordSet" для служебного пользователя. Просто добавил код в ПриНачалеРаботыСистемы():
Также был убран код, который делал документы не проведенными перед записью (документы синхронизировались по номеру и дате, и менять дату проведенного документа не нужно было).
При переносе в другую группу справочника записать элемент (Объект заблокирован) <в начало>
Как изменить реквизит элемента при переносе его в другую группу?
Добавляем запись родителя и статус возврата в код процедуры ПриПереносеЭлементаВДругуюГруппу()
Неудачная попытка создания объекта <в начало>
Если такая ошибка возникает при попытке создания объекта, например:
и т. п., то нужно сделать следующее:
- Убедиться в том, что происходит загрузка соответсвующей внешней компоненты (если указана загрузка из каталога ИБ, то там она и должна находиться)
- Зарегистрировать ее если это нужно. В Пуск - Выполнить набрать, например, такую строку regsvr32 G:\DB77_SQL\Base1C\svcsvc.dll и нажать Ввод.
Как удалить Search Protect (HpUI.exe)? <в начало>
Что делать, если заметили изменение домашней страницы на Search Protect и странную иконку в панели управления?
Нажимаем "Настройка", чтобы посмотреть что это за иконка.
Видим что это программа HpUI.exe.
Возвращаем обратно адрес домашней страницы и беспощадным образом удаляем в реестре (выполняя regedit) все, что связано с файлом HpUi.exe. Пытаемся снять процесс - ничего не получается, процесс запускается другим процессом.
Перезагружаем компьютер, выбираем загрузку в безопасном режиме и удаляем папку SupTab в Program Files (там находится этот файл).
Удаляем также папку C:\Program Files (x86)\MySearch (в случае 64-битной Windows) вместе со всем содержимым. На нее я бы не обратил внимания, если бы не установил антивирус (были найдены вредоносные файлы w.dll и w.x64.dll). Удаляем из реестра ветки, содержащие MySearch.
Все, вроде победили.
Программа была завершена аварийно. Выполнить переиндексацию? <в начало>
Часто требуется, чтобы робот гарантированно отработал на файловой базе 1С 7.7. Как это организовать?
Очень просто, перед выполнением регламентного задания старта робота выполнить так же, по расписанию, батник (delcdx.bat), в котором написать:
Del D:\Base_1C\*.cdx
Далее запускать 1С в монопольном режиме, с ключом /m.
MercuryFPrt1C : System Error. Code: 5. Отказано в доступе <в начало>
Такая ошибка может возникнуть, например, при использовании с 1С фискального регистратора. Первым делом нужно проверить, на какой порт подключено оборудование в настройках и не конфликтует ли оно с другим оборудованием (например, с дисплеем покупателя). Допустим, указан один и тот же порт - Com 1. Настройки могут слететь.
Ошибка проверки сертификата. Avest. Электронное декларирование <в начало>
Переустановка криптопровайдера из старого комплекта поставки ничего не даст.
Как получить ссылку на перечисление по метаданным? <в начало>
Как вариант: использование внешней компоненты 1cpp.dll. Загружаем ее и создаем объект.
Далее, используя вид перечисления и идентификатор, получаем представление объекта в базе данных.
Во время создания очередной B2B-системы на этапе интеграции 1С: Предприятие 8.2 с web — интерфейсом возникла необходимость безопасной передачи файлов больших размеров из 1С в web.
Для решения этой задачи был выбран протокол SFTP, как надежный и не имеющий ограничений по размеру передаваемого файла.
Во встроенном языке 1С: Предприятие 8.2 отсутствуют функции для передачи данных через SFTP, поэтому пришлось искать прикладные средства. На интернет-ресурсах, посвященных программированию 1С, есть примеры удачного использования freeware утилит типа WinSCP. Для использования данного способа необходимо из встроенного языка 1С выполнить запуск утилиты с параметрами командной строки.
Пример запуска утилиты WinCSP из 1С:
Минусом такого решения является отсутствие возможности контроля ошибок запуска и выполнения из встроенного языка 1С. В связи с этим было принято решение написать внешнюю DLL компоненту для 1С: Предприятие 8.2.
Создание компоненты DLL
- IcomponentBase — реализует основные методы компоненты.
- IlanguageInterface — служит для локализации методов и свойств 1С и С++ через определения массивов соответствий и методов акцессоров GetMethodName, GetPropName.
3. Для вызова необходимой функции из компоненты используется метод CallAsFunc из интерфейса IcomponentBase. При вызове методов из компоненты 1С, вызывается этот С++ метод.
- lMethodNum – номер метода в массиве соответствий.
- pvarRetValue – указатель на выходные параметры.
- paParams — параметры из метода в 1С.
- lSizeArray – размер массива, если входной параметр массив.
4. В нашем примере из 1С можно выполнять 4 метода, которым соответствуют С++ методы в DLL компоненте.
1С (методы) | С++ методы |
---|---|
НачатьСессию() Предварительно нужно определить параметры авторизации(хост, связку логин, пароль – либо rsa ключи, путь на удалённом сервере). Поэтому функция НачатьСессию обрастает свойствами: Хост, Логин, Пароль, УдаленныйПуть | StartSSHSession(status,this->ssh_host,this->ssh_login,this->ssh_pass); StartSftpSession(status,this->sftp_path) |
ПослатьФайл(“Путь и имя файла на клиентской машине”) | WriteToServer(const char * &status, const char *loclfile) |
ЕслиСессияНачата() | isSessionStart() |
ЗакончитьСессию() | endSession() – завершает SFTP сеанс и SSH сеанс |
5. В С++ нужно определить параметры доступа(чтение/запись) к созданным свойствам за это отвечают два метода IsPropReadable и IsPropWritable.
Таблица соотношений свойств 1С и С++
1С(свойства) | С++ свойства |
---|---|
Хост | ssh_host |
Логин | ssh_login |
Пароль | ssh_pass |
УдаленныйПуть | Sftp_path |
Готовую библиотеку можно скачать тут.
Работа с компонентой во встроенном языке 1С
1. Выполняем подключение и создаем объект внешней компоненты, с помощью стандартных команд встроенного языка 1С.
2. Заполняем 4 свойства объекта компоненты Хост, Логин, Пароль, УдаленныйПуть.
3. Открываем сессию соединения
4. Отправляем файл
5. Отправляем следующий файл, с проверкой открыта ли сессия соединения.
6. После отправки файлов закрываем сессию
В результате выполнения успешно был передан файл с C:\data2.xml в /var/www/company/data/www/import/data.xml.
Вывод: данная реализация позволяет передавать файлы из 1С: Предприятие 8.2. большого размера по защищенному протоколу SFTP. Плюс появляется возможность переносить часть функционала из 1С во внешнюю компоненту, что защищает написанный код и позволяет реализовывать дополнительный, не доступный 1С функционал.
Читайте также: