Digital-агентство Программист 1С
Портфолио
О нас
  • О компании
  • Партнеры
  • Реквизиты
  • Вопрос ответ
Услуги
  • Продвижение сайтов
    • SEO-продвижение
    • Seo-оптимизация сайта
    • Продвижение сайта статьями
    • SMM-продвижение в социальных сетях
    • Продвижение бренда в Инстаграм
    • Продвижение товаров интернет-магазина
  • Настройка и ведение контекстной рекламы
    • Настройка и ведение контекстной рекламы Яндекс.Директ
    • Google Adwords
    • Комплексная контекстная реклама
    • Аудит контекстной рекламы
  • Создание сайтов
    • Создание Интернет-магазина
    • Создание Корпоративного сайта
    • Наполнение интернет-магазина и сайтов
    • Дизайн и редизайн сайта
    • Интеграция сайта с Яндекс Маркетом
    • Коллтрекинг Mango
    • Web-аналитика и настройка счетчиков
  • Услуги 1С для бизнеса
    • Внедрение 1С
    • Hастройка 1С
    • Обслуживание 1С
    • Услуги программиста 1С
    • Сопровождение 1С
    • Автоматизация 1С
    • Доработка 1С
    • Интеграция 1С:Предприятие с Яндекс Маркетом
    • Маркировка импорта обуви
    • Интеграция OZON и 1C Предприятие
  • Автоматизация салона красоты
    • 1С:Предприятие для Салона красоты
    • CRM-система для Салона красоты
    • Создание сайта салона красоты
    • Продвижение сайта салона красоты
    • Реклама для Салона красоты
Блог
Контакты
Ещё
    Задать вопрос
    info@programmist1c.ru
    Люберцы, ул. Октябрьский проспект, 241Б,этаж 3 ,офис 301.
    Digital-агентство Программист 1С
    Портфолио
    О нас
    • О компании
    • Партнеры
    • Реквизиты
    • Вопрос ответ
    Услуги
    • Продвижение сайтов
      Продвижение сайтов
      • SEO-продвижение —
      • Seo-оптимизация сайта —
      • Продвижение сайта статьями —
      • SMM-продвижение в социальных сетях —
      • Продвижение бренда в Инстаграм —
      • Продвижение товаров интернет-магазина
    • Настройка и ведение контекстной рекламы
      Настройка и ведение контекстной рекламы
      • Настройка и ведение контекстной рекламы Яндекс.Директ —
      • Google Adwords —
      • Комплексная контекстная реклама —
      • Аудит контекстной рекламы
    • Создание сайтов
      Создание сайтов
      • Создание Интернет-магазина —
      • Создание Корпоративного сайта —
      • Наполнение интернет-магазина и сайтов —
      • Дизайн и редизайн сайта —
      • Интеграция сайта с Яндекс Маркетом —
      • Коллтрекинг Mango —
      • Web-аналитика и настройка счетчиков
    • Услуги 1С для бизнеса
      Услуги 1С для бизнеса
      • Внедрение 1С —
      • Hастройка 1С —
      • Обслуживание 1С —
      • Услуги программиста 1С —
      • Сопровождение 1С —
      • Автоматизация 1С —
      • Доработка 1С —
      • Интеграция 1С:Предприятие с Яндекс Маркетом —
      • Маркировка импорта обуви —
      • Интеграция OZON и 1C Предприятие
    • Автоматизация салона красоты
      Автоматизация салона красоты
      • 1С:Предприятие для Салона красоты —
      • CRM-система для Салона красоты —
      • Создание сайта салона красоты —
      • Продвижение сайта салона красоты —
      • Реклама для Салона красоты
    Блог
    Контакты
      Digital-агентство Программист 1С
      Портфолио
      О нас
      • О компании
      • Партнеры
      • Реквизиты
      • Вопрос ответ
      Услуги
      • Продвижение сайтов
        Продвижение сайтов
        • SEO-продвижение —
        • Seo-оптимизация сайта —
        • Продвижение сайта статьями —
        • SMM-продвижение в социальных сетях —
        • Продвижение бренда в Инстаграм —
        • Продвижение товаров интернет-магазина
      • Настройка и ведение контекстной рекламы
        Настройка и ведение контекстной рекламы
        • Настройка и ведение контекстной рекламы Яндекс.Директ —
        • Google Adwords —
        • Комплексная контекстная реклама —
        • Аудит контекстной рекламы
      • Создание сайтов
        Создание сайтов
        • Создание Интернет-магазина —
        • Создание Корпоративного сайта —
        • Наполнение интернет-магазина и сайтов —
        • Дизайн и редизайн сайта —
        • Интеграция сайта с Яндекс Маркетом —
        • Коллтрекинг Mango —
        • Web-аналитика и настройка счетчиков
      • Услуги 1С для бизнеса
        Услуги 1С для бизнеса
        • Внедрение 1С —
        • Hастройка 1С —
        • Обслуживание 1С —
        • Услуги программиста 1С —
        • Сопровождение 1С —
        • Автоматизация 1С —
        • Доработка 1С —
        • Интеграция 1С:Предприятие с Яндекс Маркетом —
        • Маркировка импорта обуви —
        • Интеграция OZON и 1C Предприятие
      • Автоматизация салона красоты
        Автоматизация салона красоты
        • 1С:Предприятие для Салона красоты —
        • CRM-система для Салона красоты —
        • Создание сайта салона красоты —
        • Продвижение сайта салона красоты —
        • Реклама для Салона красоты
      Блог
      Контакты
        Digital-агентство Программист 1С
        Digital-агентство Программист 1С
        • Портфолио
        • О нас
          • Назад
          • О нас
          • О компании
          • Партнеры
          • Реквизиты
          • Вопрос ответ
        • Услуги
          • Назад
          • Услуги
          • Продвижение сайтов
            • Назад
            • Продвижение сайтов
            • SEO-продвижение
            • Seo-оптимизация сайта
            • Продвижение сайта статьями
            • SMM-продвижение в социальных сетях
            • Продвижение бренда в Инстаграм
            • Продвижение товаров интернет-магазина
          • Настройка и ведение контекстной рекламы
            • Назад
            • Настройка и ведение контекстной рекламы
            • Настройка и ведение контекстной рекламы Яндекс.Директ
            • Google Adwords
            • Комплексная контекстная реклама
            • Аудит контекстной рекламы
          • Создание сайтов
            • Назад
            • Создание сайтов
            • Создание Интернет-магазина
            • Создание Корпоративного сайта
            • Наполнение интернет-магазина и сайтов
            • Дизайн и редизайн сайта
            • Интеграция сайта с Яндекс Маркетом
            • Коллтрекинг Mango
            • Web-аналитика и настройка счетчиков
          • Услуги 1С для бизнеса
            • Назад
            • Услуги 1С для бизнеса
            • Внедрение 1С
            • Hастройка 1С
            • Обслуживание 1С
            • Услуги программиста 1С
            • Сопровождение 1С
            • Автоматизация 1С
            • Доработка 1С
            • Интеграция 1С:Предприятие с Яндекс Маркетом
            • Маркировка импорта обуви
            • Интеграция OZON и 1C Предприятие
          • Автоматизация салона красоты
            • Назад
            • Автоматизация салона красоты
            • 1С:Предприятие для Салона красоты
            • CRM-система для Салона красоты
            • Создание сайта салона красоты
            • Продвижение сайта салона красоты
            • Реклама для Салона красоты
        • Блог
        • Контакты
        info@programmist1c.ru
        Люберцы, ул. Октябрьский проспект, 241Б,этаж 3 ,офис 301.
        • Главная
        • Примеры программирования

        v8: Хранение в хранилище обработок и файлов. Определение типа хранимого файла

        Мы всегда на связи
        Описана методика хранения в хранилище обработок(отчетов) и файлов.
        Автор статьи: Гений 1С | Редакторы: Buran
        Последняя редакция №3 от 19.01.07 |
        URL:


        Ключевые слова: хранилище,обработка,отчет,файл


        К сожалению, 1С не позволяет хранить обработки и отчеты в переменных типа "Хранилище".
        Приходится извращаться. Код основан на типовых конфигурациях (не мое изобретение).

        Для начала рассмотрим две функции по сохранению файла в переменную хранилища и извлечения этого файла из хранилища.

        //Сохраняет файл в хранилище значений
        Функция обФайлВХранилищеЗначений(ИмяФайла, СтепеньСжатия=9) Экспорт
            Попытка
                ОбъектДляХранилища = Новый ДвоичныеДанные(ИмяФайла);
            Исключение
                ВызватьИсключение "Не удалось загрузить файл:"+ИмяФайла;
                Возврат Неопределено;
            КонецПопытки;
            
            ФайлХранилище = Новый ХранилищеЗначения(ОбъектДляХранилища, Новый СжатиеДанных(9));
            Возврат  ФайлХранилище;
        КонецФункции
        
        //Распаковывает хранилище во временный файл и вовращает его имя
        Функция обФайлИзХранилищаЗначений(Хранилище, ПолноеИмяФайла=Неопределено, Расширение=Неопределено) Экспорт
            ХранимоеЗначение=Хранилище.Получить();
            Если ХранимоеЗначение=Неопределено Тогда
                ВызватьИсключение "В хранилище пустое значение!";
            КонецЕсли;
            
            Если ТипЗнч(ХранимоеЗначение)<>Тип("ДвоичныеДанные") Тогда
                ВызватьИсключение "В хранилище не хранится двоичный файл!";
                Возврат Неопределено;
            КонецЕсли;
            
            Если ПолноеИмяФайла=Неопределено Тогда
                ВремФайл = ПолучитьИмяВременногоФайла(Расширение);
            Иначе
                Ф=Новый Файл(ПолноеИмяФайла);
                Если Ф.Существует() Тогда
                    УдалитьФайлы(ПолноеИмяФайла);
                КонецЕсли;
                ВремФайл = ПолноеИмяФайла;
            КонецЕсли; 
            
            
            ХранимоеЗначение.Записать(ВремФайл);
            Возврат ВремФайл;
        КонецФункции
        


        Теперь методика сохранения обработок в хранилище понятна - используем временный файл, распаковываем в него обработку и запускаем внешнюю обработку.
        Вот код:
        //fixin 20061006 Для сохранения внешних обработок в хранилище значений
        Функция обВнешняяОбработкаИзХранилищаЗначений(Хранилище) Экспорт
            ХранимоеЗначение=Хранилище.Получить();
            Если ХранимоеЗначение=Неопределено Тогда
                Сообщить("В хранилище пустое значение!");
                Возврат Неопределено;
            КонецЕсли;
            Если ТипЗнч(ХранимоеЗначение)<>Тип("ДвоичныеДанные") Тогда
                Сообщить("В хранилище не хранится двоичный файл!");
                Возврат Неопределено;
            КонецЕсли;
            
            ВремФайлВнешнегоОтчета = ПолучитьИмяВременногоФайла();
            Попытка
                ХранимоеЗначение.Записать(ВремФайлВнешнегоОтчета);
                ВнешняяОбработка=ВнешниеОбработки.Создать(ВремФайлВнешнегоОтчета);
                Возврат ВнешняяОбработка;
            Исключение
                ОписаниеОшибки=ОписаниеОшибки();
                Сообщить("При чтении файла обработки произошла ошибка: "+ОписаниеОшибки);
            КонецПопытки;
            Возврат Неопределено;
        КонецФункции
        
        
        //fixin 20061006 Для сохранения внешних обработок в хранилище значений
        Функция обВнешняяОбработкаВХранилищеЗначений(ИмяФайла, СтепеньСжатия=9) Экспорт
            Попытка
                ОбъектДляХранилища = Новый ДвоичныеДанные(ИмяФайла);
            Исключение
                Сообщить("Не удалось загрузить внешний отчет!");
                Возврат Неопределено;
            КонецПопытки;
            
            ФайлХранилище = Новый ХранилищеЗначения(ОбъектДляХранилища, Новый СжатиеДанных(9));
            Возврат  ФайлХранилище;
        КонецФункции
        


        Buran:
        На одном из внедрений надо было вместе с обработками подключать справку по программе непосредственно к форме, также другие действия, связанные именно с открытой формой. Поэтому в хранилище находились и обработки и файлы других типов. Но типовые конфигурации старых редакций не позволяли хранить имя(и расширение файла).
        Поэтому тип файла в хранилище мы определяли по "сигнатуре"(характерному набору байтов в заголовке).
        Вот пример:
            // Проверка сигнатур
            ФайлОбработки = Новый ТекстовыйДокумент;
            ФайлОбработки.Прочитать(ИмяФайла, КодировкаТекста.ANSI);
            ЗаголовокФайла = ФайлОбработки.ПолучитьСтроку(1);
            СигнатураОбработки = Строка(Символ(1103)+Символ(1103)+Символ(1103)+Символ(127)+Символ(0)+Символ(2)+Символ(0));
            СигнатураSWF = Строка(Символ(70)+Символ(87)+Символ(83)+Символ(5));
                //...............
            Если Найти(ЗаголовокФайла,СигнатураОбработки)=1 Тогда
                Попытка
                
                    Форма = ВнешниеОбработки.Создать(ИмяФайла).ПолучитьФорму();
                    Если НЕ ФормаВладелец = "" И ТипЗнч(ФормаВладелец) = Тип("Форма") Тогда
                        Форма.ВладелецФормы = ФормаВладелец;
                    КонецЕсли;        
                    Форма.Открыть();
                    Возврат Форма;
                
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;
            ИначеЕсли Найти(ЗаголовокФайла,СигнатураSWF)=1 Тогда
                ИмяФайла = КаталогВременныхФайлов() + "1c_help.swf";
                Попытка
                
                    ДвоичныеДанные = ХранилищеВнешнейОбработки.Получить();
                    ДвоичныеДанные.Записать(ИмяФайла);
                    Форма = ПолучитьФорму("Демо");
                    Форма.ЭлементыФормы.ПолеHTMLДокумента1.Перейти(ИмяФайла);
                    Форма.Открыть();
                
                Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;
            // ИначеЕсли....
                Иначе
            
                Сообщить("Неизвестный формат файла");
                Возврат Неопределено;
            
            КонецЕсли; 
        


        Развить это решение можно например включением поиска по регулярным выражениям В 1С есть возможность искать строки вида "Ив*нов*", *-любой символ)

        От Гения1С:
        Для того, чтобы хранить не только сам файл, но и его описание (имя, расширение и т.п.) можно попробовать (за результат правда не ручаюсь), использовать примерно такой код:
        Стр=Новый Структура();
        Стр.Вставить("ДвоичныеДанные",ДвоичныеДанные);
        Стр.Вставить("ИмяФайла",ИмяФайла);
        Стр.Вставить("Расширение",Расширение);
        Возврат Новый ХранилищеЗначения(Стр);
        

        Т.е. хранить не просто файл, а структуру, которая описывает и включает файл. Правда нужно проверить, сумеет ли 1С упаковать в хранилище подобную струтуру!
        Услуги
        Продвижение сайтов
        Настройка и ведение контекстной рекламы
        Создание сайтов
        Услуги 1С для бизнеса
        Автоматизация салона красоты
        Компания
        О компании
        Партнеры
        Реквизиты
        Вопрос ответ
        Проекты
        Пресс-центр
        Контакты
        Подписка на рассылку
        info@programmist1c.ru
        Люберцы, ул. Октябрьский проспект, 241Б,этаж 3 ,офис 301.
        Политика конфиденциальности
        © 2026 Все права защищены.
        ООО «УСПЕХ» ОРГН:1105027007843