Имя: Пароль:
1C
1С v8
ХранилищеЗначений
0 galimovmaks
 
17.10.13
07:07
Нужна помощь, не могу разобраться. Есть реквизит с типом ХранилищеЗначений. я туда помещаю вордовский документ. Печатаю, все нормально. Загружаю такой же документ, только пару строчек других, печатается все равно предыдущий. в чем дело?
1 galimovmaks
 
17.10.13
07:08
вот код

&НаКлиенте
Процедура Загрузить(Команда)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Текст = "ru = ""Документ Word""; en = ""Text""";
    Фильтр = НСтр(Текст)+"(*.doc, *.docx)|*.doc*";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл шаблона";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        Файл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
        ЭтаФорма.Объект.ИмяШаблона = Файл.Имя;
        
        МойШаблон = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
        ЗагрузитьСервер(МойШаблон);
    
        
    КонецЕсли;

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


&НаСервере
Процедура ЗагрузитьСервер(МойШаблон)
    Документ = РеквизитФормыВЗначение("Объект");
    Документ.Шаблон =  Новый ХранилищеЗначения(МойШаблон);
    ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры
2 galimovmaks
 
17.10.13
07:09
вот кусок печати:

Процедура ПечатьДоговора()
    // ИстЛайн Галынин 25042013
    //Хранилище = ТарифныйПлан.ВидТарифногоПлана.МакетДоговора;
    Хранилище = Шаблон;
    Если Хранилище = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    
    //ИстЛайн Галынин 25042013
    //Файл = Новый Файл(ТарифныйПлан.ВидТарифногоПлана.ИмяМакета);
    Файл = Новый Файл(ИмяШаблона);
    
    ИмяФайла = Файл.Расширение;
    MSWord = ПолучитьКомОбъект(Хранилище, ИмяФайла);
    Если MSWord = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    /////////////////////////////////////////////////////////////////////////////////////


Функция ПолучитьКомОбъект(Хранилище, ИмяФайла)
    
    ИмяКаталога = РаботаСФайлами.ПолучитьИмяКаталога();
    
    СтрокаИмени = ""+?(ЗначениеЗаполнено(Организация.Префикс), Организация.Префикс+"-", "")+Ссылка+" "+Контрагент.Наименование+"_"+Формат(ТекущаяДата(), "ДФ=yyyyddMMhhmmss")+ИмяФайла; // ИмяФайла - это расширение
    СтрокаИмени = РаботаСФайлами.УдалитьЗапрещенныеСимволыИмени(СтрокаИмени);
    ИмяФайла = РаботаСФайлами.ПолучитьИмяФайла(ИмяКаталога, СтрокаИмени);
    
    
    Попытка
        
        ДвоичныеДанные = Хранилище.Получить();
        ДвоичныеДанные.Записать(ИмяФайла);
        КомОбъект = ПолучитьCOMОбъект(ИмяФайла);
        Возврат КомОбъект;
        
    Исключение
        
                Возврат Неопределено;
        
    КонецПопытки;
    
КонецФункции
3 lopus
 
17.10.13
07:11
Чего то у меня такое ощущение что не хватает записать
4 galimovmaks
 
17.10.13
07:13
(3) в процедуре ЗагрузитьСервер(МойШаблон) вставить Документ.Записать() ??
5 galimovmaks
 
17.10.13
07:17
(3) и вправду. спасибо)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший