Печать в PDF в фоновом режиме через регламентные задания 1с 8.2 с помощью Yoksel.dll на х64 сервере

12.09.11

Учетные задачи - Логистика, склад и ТМЦ

Была поставлена задача автоматической рассылки документов на почтовые ящики ответственных лиц.
Был опробован виртуальный принтер PDFСreator - результат отрицательный.
Фоновый режим рассылки документов сервером осуществлен с помощью внешней компоненты Yoksel.dll, которая была зарегистрирована на х32 1с-сервере с помощью команды regsvr32 Yoksel.dll
Ниже приведенные процедуры созданы в общем модуле.
Ссылки на документы, печатные формы которых необходимо разослать ответственным лицам накапливаютя в регистре сведений рдУведомлениеГотовности.
В процедурах показана сама идея автоматического формирования PDF-документов на сервере 1с. Если 1с-сервер х64, то в кластер вносится х32 1с сервер и создается рабочий процесс, в который автоматически перекочевывает фоновое задание и Йоксель запускается и работает физически на х32 сервере.
Процедура УведомлениеГотовности() Экспорт
    
    Запрос = Новый Запрос;
                   
    Запрос.Текст =  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    рдУведомлениеГотовности.ОтчетПроизводства КАК ОтчетПроизводства,
                    |    ЗаказНаПроизводствоПродукция.Заказ.Ссылка КАК ЗаказПокупателя
                    |ИЗ
                    |    РегистрСведений.рдУведомлениеГотовности КАК рдУведомлениеГотовности
                    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыпускПродукции КАК ВыпускПродукции
                    |            ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция
                    |            ПО ВыпускПродукции.Заказ.Ссылка = ЗаказНаПроизводствоПродукция.Ссылка
                    |        ПО рдУведомлениеГотовности.ОтчетПроизводства = ВыпускПродукции.Регистратор
                    |ГДЕ
                    |    рдУведомлениеГотовности.Отправлено = ЛОЖЬ
                    |    И рдУведомлениеГотовности.Обработано = ЛОЖЬ";
        
    ТЗ = Запрос.Выполнить().Выгрузить();
    ТЗ.Сортировать("ЗаказПокупателя Возр,ОтчетПроизводства Убыв");
    Заказ="";
    Для каждого Строчка из ТЗ Цикл
        Если Заказ <> Строчка.ЗаказПокупателя Тогда
            Заказ = Строчка.ЗаказПокупателя;
            Если НЕ ПустаяСтрока(Строчка.ОтчетПроизводства) Тогда 
                //ТЗ1 = Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
                рдОбработкаПроведенияОтчетПроизводстваЗаСменуРассылкаУведомленийГотовности(Строчка.ОтчетПроизводства);
            КонецЕсли;
        КонецЕсли;    
    КонецЦикла;

КонецПроцедуры    

  
Процедура рдОбработкаПроведенияОтчетПроизводстваЗаСменуРассылкаУведомленийГотовности(Источник) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка",Источник);
    Запрос.УстановитьПараметр("Услуга","Услуга");
    Запрос.УстановитьПараметр("ПустойОтчет",Документы.ОтчетПроизводстваЗаСмену.ПустаяСсылка());
    
    Запрос.Текст =  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    ЗаказНаПроизводствоПродукция.Заказ.Ссылка КАК ЗаказПокупателя
                    |ПОМЕСТИТЬ ТЕМП
                    |ИЗ
                    |    РегистрНакопления.ВыпускПродукции КАК ВыпускПродукции
                    |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция
                    |        ПО ВыпускПродукции.Заказ.Ссылка = ЗаказНаПроизводствоПродукция.Ссылка
                    |ГДЕ
                    |    ВыпускПродукции.Регистратор.Ссылка = &Ссылка
                    |;
                    |
                    |////////////////////////////////////////////////////////////////////////////////
                    |ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    ЗаказыПокупателей.Номенклатура КАК Номенклатура,
                    |    ЗаказыПокупателей.ХарактеристикаНоменклатуры КАК Характеристика,
                    |    ЗаказыПокупателей.Количество КАК КолЗаказ,
                    |    0 КАК КолВыпуск,
                    |    &ПустойОтчет КАК Выпуск,
                    |    ТЕМП.ЗаказПокупателя КАК Заказ
                    |ПОМЕСТИТЬ ТЗЗаказ
                    |ИЗ
                    |    РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей
                    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЕМП КАК ТЕМП
                    |        ПО ЗаказыПокупателей.Регистратор = ТЕМП.ЗаказПокупателя
                    |ГДЕ
                    |    ЗаказыПокупателей.Номенклатура.ВидНоменклатуры.Наименование <> &Услуга
                    |;
                    |
                    |////////////////////////////////////////////////////////////////////////////////
                    |ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    ВыпускПродукции.Продукция,
                    |    ВыпускПродукции.ХарактеристикаПродукции,
                    |    0 КАК КолЗаказ,
                    |    ВыпускПродукции.Количество КАК КолВыпуск,
                    |    ВыпускПродукции.Регистратор КАК Выпуск,
                    |    ЗаказНаПроизводствоПродукция.Заказ.Ссылка КАК Заказ
                    |ПОМЕСТИТЬ ТЗВыпуск
                    |ИЗ
                    |    РегистрНакопления.ВыпускПродукции КАК ВыпускПродукции
                    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЕМП КАК ТЕМП
                    |            ПО ЗаказНаПроизводствоПродукция.Заказ.Ссылка = ТЕМП.ЗаказПокупателя.Ссылка
                    |        ПО ВыпускПродукции.Заказ.Ссылка = ЗаказНаПроизводствоПродукция.Ссылка
                    |;
                    |
                    |////////////////////////////////////////////////////////////////////////////////
                    |ВЫБРАТЬ
                    |    ТЗЗаказ.Номенклатура КАК Номенклатура,
                    |    ТЗЗаказ.Характеристика КАК Характеристика,
                    |    ТЗЗаказ.КолЗаказ КАК КолЗаказ,
                    |    ТЗВыпуск.КолВыпуск КАК КолВыпуск,
                    |    ТЗВыпуск.Выпуск КАК Выпуск,
                    |    ТЗЗаказ.Заказ КАК Заказ
                    |ИЗ
                    |    ТЗЗаказ КАК ТЗЗаказ
                    |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗВыпуск КАК ТЗВыпуск
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
                    |            ПО ТЗВыпуск.Выпуск = ОтчетПроизводстваЗаСмену.Ссылка
                    |        ПО ТЗЗаказ.Номенклатура = ТЗВыпуск.Продукция
                    |            И ТЗЗаказ.Характеристика = ТЗВыпуск.ХарактеристикаПродукции";

           
    
    //ТЗ = Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
//Возврат;
    Выборка = Запрос.Выполнить().Выбрать();

    Отсылать = Ложь;
    Пока Выборка.Следующий() Цикл
        Если (Выборка.КолВыпуск = Выборка.КолЗаказ) И (Выборка.КолЗаказ<>0) Тогда
            Отсылать = Истина;
        иначе    
            Отсылать = Ложь;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Результат = Ложь;
    Если Отсылать Тогда
        //Результат = Истина;
        Результат = ОтправитьУведомление(Выборка.Заказ,Источник);
    КонецЕсли;
    
    СтрокаРегистра = РегистрыСведений.рдУведомлениеГотовности.СоздатьМенеджерЗаписи();
    СтрокаРегистра.ОтчетПроизводства = Источник;
    СтрокаРегистра.Отправлено = Результат;
    СтрокаРегистра.Обработано = Истина;

    Попытка
        СтрокаРегистра.Записать();
    Исключение    
    КонецПопытки;    

КонецПроцедуры

Функция ОтправитьУведомление(Документ,ОтчетПр)
    
    ДокОбъект = Документ.ПолучитьОбъект();
    
    //Удалим pdf и flg оставшийся с прошлого раза
    ИмяФайла = "1c_notify.pdf";
    ПолноеИмяФайла = КаталогВременныхФайлов() + ИмяФайла;
    УдалитьФайлы(ПолноеИмяФайла);
    
    ИмяФлага = "1c_notify.flg";
    ПолноеИмяФлага = КаталогВременныхФайлов() + ИмяФлага;
    УдалитьФайлы(ПолноеИмяФлага);
        
    ПрофильЭлектроннойПочты = ПолучитьПрофильЭлектроннойПочты();
    Если ПрофильЭлектроннойПочты = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли;    
    
    АдресНазначения = ксОбщийМодуль.ПолучитьПочтуПоСотруднику(ДокОбъект.ксОсновнойИнженерКонсультант);
    Если ПустаяСтрока(АдресНазначения) Тогда 
        ЗаписьЖурналаРегистрации("Не указан email у " + ДокОбъект.ксОсновнойИнженерКонсультант + ". Отправка сообщений указанному получателю не возможна!", УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");
        Возврат Ложь;
    КонецЕсли;
        
    //Создадим новое письмо на указаный адрес
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Отправитель = "1c@ridan.ru";
    Письмо.ИмяОтправителя = "ЗАО Ридан (отдел отгрузки)";
    Письмо.Получатели.Добавить(АдресНазначения);
    Письмо.Получатели.Добавить("ryuchin_a@ridan.ru");
        
    Письмо.Тема = "Уведомление о готовности";
    Письмо.Тексты.Добавить(Строка(ОтчетПр) + "
        |Уведомление об готовности выпуска для " + ДокОбъект.Контрагент + " по счету " + СокрЛП(ДокОбъект.Ссылка.Номер) + " от " + Формат(ДокОбъект.Ссылка.Дата, "ДФ=dd.MM.yy") + " находится во вложении");
    ПолноеИмяФайла = ФайлВложенияЙоксель(ДокОбъект,ОтчетПр);
    Письмо.Вложения.Добавить(ПолноеИмяФайла, "Уведомление о готовности");
    ИПочта = Новый ИнтернетПочта;
    
    Попытка
        ИПочта.Подключиться(ПрофильЭлектроннойПочты);
        ИПочта.Послать(Письмо);
        ИПочта.Отключиться();
        ЗаписьЖурналаРегистрации("Уведомление об готовности выпуска для " + ДокОбъект.Контрагент + " по счету " + СокрЛП(ДокОбъект.Ссылка.Номер) + " от " + Формат(ДокОбъект.Ссылка.Дата, "ДФ=dd.MM.yy") + " отправлено " + ДокОбъект.ксОсновнойИнженерКонсультант, УровеньЖурналаРегистрации.Информация, , ,"Уведомление");
        
        //ЗаписьЖурналаРегистрации("Удалить "+ПолноеИмяФайла, УровеньЖурналаРегистрации.Информация, , ,"Уведомление");
        //УдалитьФайлы(ПолноеИмяФайла);        
        Возврат Истина;
    Исключение
        ЗаписьЖурналаРегистрации("Необходимо проверить настройки электронной почты! Отправка невозможна! (" + ОписаниеОшибки() + ")", УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");
        Возврат Ложь;
    КонецПопытки;
    
КонецФункции

Функция ПолучитьПрофильЭлектроннойПочты()
    
    ПрофильПочты = Новый ИнтернетПочтовыйПрофиль;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("УчетнаяЗапись", Константы.ксУчетнаяЗаписьЭлектроннойПочты.Получить());
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    УчетныеЗаписиЭлектроннойПочты.SMTPСервер,
    |    УчетныеЗаписиЭлектроннойПочты.ПортSMTP,
    |    УчетныеЗаписиЭлектроннойПочты.ЛогинSMTP,
    |    УчетныеЗаписиЭлектроннойПочты.ПарольSMTP,
    |    УчетныеЗаписиЭлектроннойПочты.ТребуетсяSMTPАутентификация,
    |    УчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты,
    |    УчетныеЗаписиЭлектроннойПочты.Логин,
    |    УчетныеЗаписиЭлектроннойПочты.Пароль,
    |    УчетныеЗаписиЭлектроннойПочты.ВремяОжиданияСервера
    |ИЗ
    |    Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
    |ГДЕ
    |    УчетныеЗаписиЭлектроннойПочты.Ссылка = &УчетнаяЗапись";
    Результат = Запрос.Выполнить();
    
    ЭлектроннаяПочта = Результат.Выбрать();
    Если ЭлектроннаяПочта.Следующий() Тогда
        
        Если ЭлектроннаяПочта.ТребуетсяSMTPАутентификация Тогда
            
            ПрофильПочты.АутентификацияSMTP = СпособSMTPАутентификации.Login;
            ПрофильПочты.ПользовательSMTP = ЭлектроннаяПочта.ЛогинSMTP;
            ПрофильПочты.ПарольSMTP = ЭлектроннаяПочта.ПарольSMTP;
            
        Иначе
            
            ПрофильПочты.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
            
        КонецЕсли;
        
        ПрофильПочты.АдресСервераSMTP = ЭлектроннаяПочта.SMTPСервер;
        ПрофильПочты.ПортSMTP = ЭлектроннаяПочта.ПортSMTP;
        ПрофильПочты.ВремяОжидания = ЭлектроннаяПочта.ВремяОжиданияСервера;
        
        Возврат ПрофильПочты;
        
    Иначе
        
        ЗаписьЖурналаРегистрации("Не удалось получить учетную запись электронной почты - Отправка сообщений не возможна!", УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");
                 
        Возврат Неопределено;
        
    КонецЕсли;
    
КонецФункции

Функция ПечатьУведомления(СсылкаНаОбъект,ОтчетПр)
    
    НомерПечать = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект);
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УВЕДОМЛЕНИЕ_ОБ_ОТГРУЗКЕ";
    
    Макет = ПолучитьОбщийМакет("УведомлениеГотовности");
    Обл   = Макет.ПолучитьОбласть("Шапка");
    
    Обл.Параметры.Заголовок = "Уведомление о готовности к отгрузке " + НомерПечать + " от " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
    Обл.Параметры.Плательщик = "Плательщик: " + СсылкаНаОбъект.Контрагент.Наименование;
    Обл.Параметры.Уведомление = "Информируем Вас, что оборудование по Счету №" + НомерПечать + " от " + Формат(СсылкаНаОбъект.Дата, "ДФ=dd.MM.yyyy") + Символы.ПС + "готово к отгрузке по следующим позициям:";
    ТабДокумент.Вывести(Обл);
    
    НомерСтроки = 1;
    Обл = Макет.ПолучитьОбласть("Строка");
    Для Каждого ТекСтрока ИЗ СсылкаНаОбъект.Товары Цикл
        
        Обл.Параметры.НомерСтроки = НомерСтроки;
        Обл.Параметры.Товар = ТекСтрока.Номенклатура.НаименованиеПолное + ", расчет " + ТекСтрока.ксРасчет;
        Обл.Параметры.Единица = ТекСтрока.ЕдиницаИзмерения;
        Обл.Параметры.Количество = ТекСтрока.Количество;
        Обл.Параметры.ДатаОтгрузки =  Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
        //Обл.Параметры.ДатаОтгрузки =  Формат(ОтчетПр.Дата, "ДФ=dd.MM.yyyy");
        ТабДокумент.Вывести(Обл);
        НомерСтроки = НомерСтроки + 1;
        
    КонецЦикла;
    
    Обл = Макет.ПолучитьОбласть("Подвал");
    Обл.Параметры.УсловияПоставки = СсылкаНаОбъект.ДополнениеКАдресуДоставки;
    ТабДокумент.Вывести(Обл);
    
    ТабДокумент.АвтоМасштаб = Истина;
    ТабДокумент.ИмяПринтера = "1c_notifyer";

    Возврат ТабДокумент;
    
КонецФункции

Функция ФайлВложенияЙоксель(пСтр,ОтчетПр)
    
    ИмяФайла = "1c_notify.pdf";
    ПолноеИмяФайла = КаталогВременныхФайлов() + ИмяФайла;
    ИмяФлага = "1c_notify.flg";
    ПолноеИмяФлага = КаталогВременныхФайлов() + ИмяФлага;

    //СтруктураПараметров = новый структура("ИмяФайла",ПолноеИмяФайла);
    
    ТабДокумент = ПечатьУведомления(пСтр.Ссылка,ОтчетПр);
    ПолноеИмяФайла = Йоксель_СохранитьОтчётВПДФ(ТабДокумент,ПолноеИмяФайла);
    
    УдалитьФайлы(ПолноеИмяФлага);
    
    Возврат ПолноеИмяФайла;
    
КонецФункции
// Функция формирует файлы для отправки по электронной почте с помощью внешней компоненты Yoksel.dll
//
Функция Йоксель_СохранитьОтчётВПДФ(ТабДок, ИмяФайла)//Путь)
    Попытка
        //ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "Yoksel.dll");
        Йоксель      = ПолучитьCOMОбъект("","Йоксель");
        КонвертерPDF = Йоксель.СоздатьГрафическийКонвертерPDF();
    Исключение
        ЗаписьЖурналаРегистрации(ОписаниеОшибки(), УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");
        //Предупреждение("Не удалось загрузить внешнюю компоненту Yoksel! Сообщите администратору системы!", 20);
        Возврат Неопределено;
    КонецПопытки;
    ТабДок.Записать(КаталогВременныхФайлов()+ "1c_notify.xls", ТипФайлаТабличногоДокумента.XLS97);
    
    // Конвертируем временный файл в формат pdf
    Попытка
        Таб = Йоксель.СоздатьТабличныйДокумент();
        Таб.Открыть(КаталогВременныхФайлов()+ "1c_notify.xls", "2");
        КонвертерPDF.Документ = Таб;
        КонвертерPDF.КоличествоБитНаПиксел = 24; //1, 4, 8, 24
        //КонвертерPDF.ПолеСлева = 1134; // в твипах (1 твип = 1/567 см)
        КонвертерPDF.ЗаписатьВФайл(ИмяФайла);
    Исключение
        УдалитьФайлы(КаталогВременныхФайлов()+ "1c_notify.xls");
        ЗаписьЖурналаРегистрации(ОписаниеОшибки(), УровеньЖурналаРегистрации.Ошибка, , ,"Уведомление");
        //Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецПопытки;

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90159    105    39    

190

Модуль "Ответственное хранение" или фулфилмент (FBS / FBO) для 1С:УТ 11.5, КА 2.5, ERP 2.5

Логистика, склад и ТМЦ Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Модуль "Ответственное хранение" для 1С (УТ 11.5, КА 2.5, ERP 2.5) позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

60000 руб.

09.06.2020    34299    27    57    

54

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210129    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150698    367    375    

501

AS WMS: автоматизация склада с адресным хранением с помощью ТСД

Логистика, склад и ТМЦ Платформа 1С v8.3 Россия Платные (руб)

Подсистема управления складом AS WMS для конфигураций на платформе 1С 8. AS WMS – готовое решение для эффективного управления адресным складом. Внедрение системы AS WMS способствует быстрому отбору товара, ускорению инвентаризации, снижению зависимости от персонала, исключению пересорта. AS WMS встраивается в любую конфигурацию на платформе 1С 8 и работает как единая система без обменов. В учетной системе нет необходимости менять процессы под AS WMS (например, вводить ордерную схему), AS WMS использует стандартные документы по товародвижению вашей учетной системы.

40000 руб.

26.07.2023    3209    13    0    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. AER 45 12.09.11 14:11 Сейчас в теме
Была поставлена задача автоматической рассылки документов на почтовые ящики ответственных лиц.
Был опробован виртуальный принтер PDFСreator - результат отрицательный.
Фоновый режим рассылки документов сервером осуществлен с помощью внешней компоненты Yoksel.dll, которая была зарегистрирована на х32 1с-сервере с помощью команды regsvr32 Yoksel.dll
Ниже приведенные процедуры созданы в общем модуле.
Ссылки на документы, печатные формы которых необходимо разослать ответственным лицам накапливаютя в регистре сведений рдУведомлениеГотовности.
В процедурах показана сама идея автоматического формирования PDF-документов на сервере 1с. Если 1с-сервер х64, то в кластер вносится х32 1с сервер и создается рабочий процесс, в который автоматически перекочевывает фоновое задание и Йоксель запускается и работает физически на х32 сервере.


Перейти к публикации

1. sytkosa 119 12.09.11 14:11 Сейчас в теме
(0)
Был опробован виртуальный принтер PDFСreator - результат отрицательный.

А чё так :D . У меня все получилось в PDFСreator и почту отправлять при помощи скрипта и всякие дополнительные обработки pdf файлов производить если потребуется
3. пользователь 12.09.11 14:38
(1) Ты на сервере попробуй для начала.
(0) Автор, что скажешь про прозрачные картинки экспортируемые в PDF?
4. cool.vlad4 2 12.09.11 14:41 Сейчас в теме
(3) Могу сказать про свой опыт - картинки непрозрачные, да к тому же еще с рамкой. На форуме сайта yoksel это обсуждалось.(недавно).
5. пользователь 12.09.11 14:55
2. cool.vlad4 2 12.09.11 14:13 Сейчас в теме
А в чем ноухау Yoksel.dll и 1с 8.2? Аналогично Yoksel.dll и 1с 8.1 и Yoksel.dll и 1с 7.7 , примеры которые на ИС есть. ДА и наверняка к вам захочет придратся ;) alexk-is по поводу разукрашки...
6. AER 45 12.09.11 16:13 Сейчас в теме
8SiriuS8 пишет:
А чё так smile:D . У меня все получилось в PDFСreator и почту отправлять при помощи скрипта и всякие дополнительные обработки pdf файлов производить если потребуется

PDFCreator у меня не работает на сервере. Т.е. формирование доков самим сервером в фоновом задании.
От лица пользователя интерактивно и у меня работает.
7. AER 45 12.09.11 16:14 Сейчас в теме
cool.vlad4 пишет:

А в чем ноухау Yoksel.dll и 1с 8.2? Аналогично Yoksel.dll и 1с 8.1 и Yoksel.dll и 1с 7.7 , примеры которые на ИС есть. ДА и наверняка к вам захочет придратся ;) alexk-is по поводу разукрашки...


Не нашел как 1с-код раукрасить.
9. cool.vlad4 2 12.09.11 16:52 Сейчас в теме
(7) ссылку, чег-то влом искать, - посмотри сам в профайле у alexk-is. ;)
(8) Бесполезно, как объяснял разработчик yoksel (на этом сайте под ником УжасБухгалтера), - 1С(8-ка) конвертирует картинки при вставке в макет в формат (кажется в bmp), прозрачность которого в yoksel не поддерживается. Выход делать отдельно форму - затем вставлять картинку либо excel, либо в yoksel. Одним словом гемор. Я плюнул на все это, и делаю обычно заранее склейку картинки и фона, затем результат в макет.
8. AER 45 12.09.11 16:16 Сейчас в теме
bomba пишет:
Автор, что скажешь про прозрачные картинки экспортируемые в PDF?

Увы, прозрачности нет. Искал старые версии Йокселя, не нашел.
10. Константин С. 665 13.09.11 11:40 Сейчас в теме
Можно вопрос несколько не по теме.
как yoksel зарегить на машине с 64x, а то моя нехочет это делать. Может она старая?
12. AER 45 20.09.11 08:36 Сейчас в теме
(10) Константин С., В каталоге sysWOW64 regsvr32 yoksel.dll
11. dkprim 5 17.09.11 08:12 Сейчас в теме
печать в формат PDF в фоновом режиме - для меня насущный вопрос. спасибо за предоставленное решение задачи :) ознакомлюсь обязательно.
13. AER 45 20.09.11 08:43 Сейчас в теме
Ну не нравится мне чё то yoksel.dll (непрозрачность, рамка). Буду курить БСП 8.2 и ImageMagick. Как разберусь, решение выложу. Всем спасибо на оценки.
14. vamleshka 31.10.11 16:27 Сейчас в теме
Извинените пож. а как можно сделать печать документов на принтер фоновым заданием?
15. AER 45 01.11.11 08:51 Сейчас в теме
Разве только на ум приходит вот что
Поставить движок 8.2.14.528
Там команда ВыполнитьПриложение теперь работает на сервере. А админы пускай подумают над командами операционки для вывода на принтер, т.е. скрипт напишут.
16. DMSDeveloper 146 20.12.11 12:12 Сейчас в теме
А в чем проблема пользоваться тем же PDFCreator или BullZip на сервере??? Они же работают как COMобъекты, коотрые доступны на стороне сервера.

COMОбъект (COMObject)
Конструкторы:
По имени приложения

Описание:
Создает COM-объект (например, Word, Excel и т.д.). Методы и свойства СОМ-объектов в дальнейшем становятся доступными через данный объект.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.


Устанавливаем на сервер и работаем в фоновом задании на сервере. Через Com-интерфейс передаем все нужные параметры в принтер и печатаем.

Не хочу хвастаться своим вариантом, поэтому ссылки не привожу - смотрите в профиле, там есть обработка по работе с PDFCreator через COM-интерфейс.
17. AER 45 20.12.11 14:35 Сейчас в теме
(16) Padonak-XXI, Может теперь и доступны. Когда я делал 14-й релиз еще не вышел.
18. DMSDeveloper 146 20.12.11 16:05 Сейчас в теме
AER пишет:

(16) Padonak-XXI, Может теперь и доступны. Когда я делал 14-й релиз еще не вышел.


14 релиз чего? Если 8.2.14 то он никак не связан с доступностью COM-объектов на стороне сервера
Эта возможность была добавлена еще в 8.1.10
19. AER 45 18.01.12 06:44 Сейчас в теме
Вышла наконец то 15-я платформа. Реализована конвертация из Табличного документа в PDF. Так что наверно эта тема уже не актуальна. Всем спасибо за оценки.
20. Genneral 21.04.12 23:41 Сейчас в теме
Вышла наконец то 15-я платформа. Реализована конвертация из Табличного документа в PDF. Так что наверно эта тема уже не актуальна. Всем спасибо за оценки.

Многие ещё на 8.1 сидят, так что актуально.

Может я чего не понял, но как этот кусочек вашего кода выполняется на сервере:
ТабДок.Записать(КаталогВременныхФайлов()+ "1c_notify.xls", ТипФайлаТабличногоДокумента.XLS97);

Даже на 15 платформе в синтаксис-помошнике написано:
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)

Примечание:
При работе на сервере, веб клиенте или через внешнее соединение нет возможности сохранять в формате XLS95.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.

По поводу работы с 64-битным сервером, на форуме Йокселя есть такой вариант, сам пока не пробовал, щас только эту тему изучаю
адрес темы http://yoksel.net.ru/forum/topic.php?id=153

Спасибо за наводку. В результате для того что бы заработало нужно проделать
следующее:
1. создаем раздел с именем "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}" в ветке HKEY_CLASSES_ROOT\wow6432node\appid. Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
2. Находим HKEY_CLASSES_ROOT\wow6432node\CLSID\{84A3E023-8F84-4a8a-8CD9-22425B5DA137} и добавляем строковое свойство "AppID" со значением "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".


А за наводку про Yoksel Спасибо,плюсанул.
21. Crazy_Max 82 20.08.19 11:20 Сейчас в теме
Может быть этот параметр изменился со сменой версии Yoksel, но на текущий момент, используя последнюю версию библиотеки, я нашел ошибку в строке:
Таб.Открыть(КаталогВременныхФайлов()+ "1c_notify.xls", "2");

Вместо параметра "2" (строка) нужно передавать 2 (число).
Оставьте свое сообщение