Имя: Пароль:
1C
 
Ошибка сохранения в .xls формат по кнопке ещё
0 NIGHTHUNTER
 
25.08.22
06:01
При формировании макета, в документе, Производится его сохранение в .xls формат, по кнопке ещё.
Выходит диалог, где задается путь в сохраняемый каталог.

http://joxi.ru/Vm6jkblC3J45Xm

После в процессе сохранения выходит непонятная ошибка http://joxi.ru/8An130OCNdzQ92 .

Над ещё есть пиктограмма сохранения. По ней сохраняется. Так же над ещё есть три точки, там меню файл. так же сохраняется.

Почему идет ошибка, при сохранении через диалог ещё ?
1 Мимохожий Однако
 
25.08.22
07:00
На второй картинке есть кнопка Подробно. Там ответ. Но еще надо "долго думать"
2 DrZombi
 
гуру
25.08.22
07:02
(0) Предлагаю вам запустить отладчик и вы все поймете, где ошибка :)

Встречный вопрос:
     Это ошибка возникает на любой печатной форме документа(ов) или только на той, что вы добавили?
3 DrZombi
 
гуру
25.08.22
07:06
+(0)  При формировании печатных форм методикой "БСП", есть ряд переменных, которые заполняются нужными значениями при формировании печатных форм.
Рекомендую вам их добавить в свой кусочек кода печатной формы :)
4 NIGHTHUNTER
 
25.08.22
12:28
(1) Дело в том что в подробно нет ничего http://joxi.ru/Grq8VexCz7G3VA .
И переход в конфигуратор тоже никуда не приводит.
5 NIGHTHUNTER
 
25.08.22
12:31
(2) От куда я что пойму запустив отладчик?
Искать в нем по тексту ошибки?
Переход в конфигуратор ничего не открывает. Места где ошибка.

В другом документе , сейчас посмотрел, идет такая же ошибка. Но ещё в другом ее вроде как нет. Там на печать выводилась печатная форма. Внешняя.
А где ошибка это макеты документа.
6 NIGHTHUNTER
 
25.08.22
12:33
Вот код, который формирует макет, где потом идет ошибка, при сохранении в .xls, через ещё.

Процедура Печать_М15_ЗаказКлиентаДавальца(Команда)
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Сообщение       = Новый СообщениеПользователю;
        Сообщение.Текст = "Для вывода печатной формы документ должен быть записан!";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    ТабДок                              = М15_ЗКД_ПечатьНаСервере();
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "М15";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДок;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "М15";
    ОбластиОбъектов                     = Новый СписокЗначений;
    ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка);
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
КонецПроцедуры
7 DrZombi
 
гуру
25.08.22
12:33
(5) Там все в форме "Предварительного просмотра" - форма одна, ее трудно пропустить.
Чисто отладчиком запускаешься и останавливаешься на том моменте, где система определяет, а как же назвать файлы :)
8 Ryzeman
 
25.08.22
12:33
"От куда я что пойму запустив отладчик?"

Золотая цитата
9 DrZombi
 
гуру
25.08.22
12:34
(6) Типовой посмотри, тебя удивит, как это делает сам разраб конфигурации :)
10 NIGHTHUNTER
 
25.08.22
12:35
(7) Как эту форму то открыть?
11 DrZombi
 
гуру
25.08.22
12:35
(6) Вот тут пишется , как бы имен файлов.


ОбластиОбъектов                     = Новый СписокЗначений;
    ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка);

Не хорошо, если у вас там нет ссылок :)
12 mikecool
 
25.08.22
12:36
(8) для автора достаточно "От куда я что пойму"
он как то давно уже ничего не понимает (((
13 NIGHTHUNTER
 
25.08.22
12:37
я так понимаю, мне нужно искать вот эту форму http://joxi.ru/L21g3j4cw10XKr

в ней же идет ошибка
14 DrZombi
 
гуру
25.08.22
12:37
(10) Форма предопределенная "ПечатьДокументов"
15 DrZombi
 
гуру
25.08.22
12:37
(13) Не, надо так глубоко :)
16 DrZombi
 
гуру
25.08.22
12:38
не надо
17 DrZombi
 
гуру
25.08.22
12:41
+(14)  Общая форма, заговариваюсь уже :)
18 DrZombi
 
гуру
25.08.22
12:46
+ (6) Еще у вас там "М15_ЗКД_ПечатьНаСервере"

Вы области Табличного документа тоже назначаете, ссылки?


//По методики БСП.
//НомерСтрокиНачало - начало вашего документа (начало страницы)
//ОбъектыПечати - Список значений, содержащий ссылку на документ, или справочник, откуда печатаете (можно искусственно указать ссылку на любой справочник, используется для группировок при записи в файл)


        // В табличном документе зададим имя области, в которую был
        // выведен объект. Нужно для возможности печати покомплектно.
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
            НомерСтрокиНачало, ОбъектыПечати, СведенияОДокументе.Документ);
19 DrZombi
 
гуру
25.08.22
12:48
+(6)

// Задает область печати объекта в табличном документе. Необходимо использовать при выводе нескольких печатных форм
// в одном табличном документе для возможности печати комплектов документов, а также для возможности сохранения
// печатных форм в отдельных файлах.
// Необходимо вызывать после формирования каждой печатной формы в табличном документе.
//
// Параметры:
//  ТабличныйДокумент - ТабличныйДокумент - печатная форма;
//  НомерСтрокиНачало - Число - позиция начала очередной области в документе;
//  ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати
//  Ссылка - ЛюбаяСсылка - объект печати.
//
// Пример:
//  Пока ВыборкаПоДокументам.Следующий() Цикл
//    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
//    // ... вывод печатной формы в табличный документ ...
//    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
//  КонецЦикла;
//
Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт
    
    Если Не ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Ссылка)) Тогда
        ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru = 'Недопустимое значение параметра ""Ссылка"",
            |ожидалось значение ссылочного типа, передано значение: ""%1"" (тип %2)'"), Ссылка, ТипЗнч(Ссылка));
        Попытка // Такая конструкция нужна для проброса стека в журнал регистрации.
            ВызватьИсключение ТекстСообщения;
        Исключение
            ЗаписьЖурналаРегистрации(НСтр("ru = 'Печать'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ,
                ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        КонецПопытки;
        Возврат;
    КонецЕсли;
    
    Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
    Если Элемент = Неопределено Тогда
        ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=");
        ОбъектыПечати.Добавить(Ссылка, ИмяОбласти);
    Иначе
        ИмяОбласти = Элемент.Представление;
    КонецЕсли;
    
    НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы;
    ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;
    
    Если Не НастройкиПечати().ИспользоватьПодписиИПечати Тогда
        Возврат;
    КонецЕсли;
    
    Для Каждого Рисунок Из ТабличныйДокумент.Рисунки Цикл
        ЭтоПодписьИПечать = Ложь;
        Для Каждого ИмяОбластиСПодписьюИПечатью Из ПрефиксыИменОбластейСПодписьюИПечатью() Цикл
            Если СтрНайти(Рисунок.Имя, ИмяОбластиСПодписьюИПечатью) > 0 Тогда
                ЭтоПодписьИПечать = Истина;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Если Не ЭтоПодписьИПечать Тогда
            Продолжить;
        КонецЕсли;
        Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Картинка И СтрНайти(Рисунок.Имя, "_Документ_") = 0 Тогда
            Рисунок.Имя = Рисунок.Имя + "_" + ИмяОбласти;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
20 NIGHTHUNTER
 
25.08.22
12:53
(18) Это какой то пример, который я стал последовательно использовать в последствии.
Выявилась вот эта ошибка, с сохранением в эксель, через ещё. нужно сейчас мне ее выявить и устранить.
21 NIGHTHUNTER
 
25.08.22
12:55
Вот я нашел форму,
СохранениеПечатнойФормы .

В ней же нужно искать ошибку, это форма (13) .
22 DrZombi
 
гуру
25.08.22
12:57
(21) Не знаю, я потерял суть... Написал все что знал.

Ошибка у вас тут.

ОбластиОбъектов                     = Новый СписокЗначений;
    ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка);

А вот так 1С это пишет насамом деле. (19)

А как вы в (6) "ТабДок                              = М15_ЗКД_ПечатьНаСервере();" , Пишите, я не знаю :)
23 NIGHTHUNTER
 
25.08.22
12:57
При нажатии на сохранить, отрабатывает вот эта процедура и потом идет ошибка

&НаКлиенте
Процедура Сохранить(Команда)
    
    Если Элементы.ПапкаДляСохраненияФайлов.Видимость Тогда
        Если ВариантСохранения = "СохранитьВПапку" И ПустаяСтрока(ВыбраннаяПапка) Тогда
            ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Укажите папку.';
                                                            |en = 'Select a folder.'"),,"ВыбраннаяПапка");
            Возврат;
        КонецЕсли;
    КонецЕсли;
        
    ФорматыСохранения = Новый Массив;
    
    Для Каждого ВыбранныйФормат Из ВыбранныеФорматыСохранения Цикл
        Если ВыбранныйФормат.Пометка Тогда
            ФорматыСохранения.Добавить(ВыбранныйФормат.Значение);
        КонецЕсли;
    КонецЦикла;
    
    Если ФорматыСохранения.Количество() = 0 Тогда
        ПоказатьПредупреждение(,НСтр("ru = 'Укажите как минимум один из предложенных форматов.';
                                    |en = 'Specify at least one of the suggested formats.'"));
        Возврат;
    КонецЕсли;
    
    РезультатВыбора = Новый Структура;
    РезультатВыбора.Вставить("УпаковатьВАрхив", УпаковатьВАрхив);
    РезультатВыбора.Вставить("ФорматыСохранения", ФорматыСохранения);
    РезультатВыбора.Вставить("ВариантСохранения", ВариантСохранения);
    РезультатВыбора.Вставить("ПапкаДляСохранения", ВыбраннаяПапка);
    РезультатВыбора.Вставить("ОбъектДляПрикрепления", ВыбранныйОбъект);
    РезультатВыбора.Вставить("ПереводитьИменаФайловВТранслит", ПереводитьИменаФайловВТранслит);

    ОповеститьОВыборе(РезультатВыбора);
    
КонецПроцедуры
24 DrZombi
 
гуру
25.08.22
12:58
(23) Смотрите в (22) и немного думать. :)
25 DrZombi
 
гуру
25.08.22
13:01
(22) Эх, мне вас жаль... НО.

В конструкции

ОбластиОбъектов                     = Новый СписокЗначений;
ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка);


Представление, должно быть названием области, которую вы должны задать в табличном документе.
Смотрите в (19)

Кусок коду

ОбъектыПечати = ОбластиОбъектов                    


Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
    Если Элемент = Неопределено Тогда
        ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=");
        ОбъектыПечати.Добавить(Ссылка, ИмяОбласти);
    Иначе
        ИмяОбласти = Элемент.Представление;
    КонецЕсли;
26 NIGHTHUNTER
 
25.08.22
13:09
текс ошибки нигде не найден. Хотел местно найти где он выводится .

Не определен список получаемых файлов.
27 NIGHTHUNTER
 
25.08.22
13:11
(25) Мне это не понятно. Подсказали бы что нужно сделать. Я не умею гадать.
28 DrZombi
 
гуру
25.08.22
13:22
(27) По тексту в (25)


Представление, должно быть названием области, которую вы должны задать в табличном документе.



ОбластиОбъектов                     = Новый СписокЗначений;
ОбластиОбъектов.Добавить(Объект.Ссылка,<Объект.Ссылка - ОШИБКА ТУТ!!!>);
29 DrZombi
 
гуру
25.08.22
13:22
+(27) коль вы используете формы БСП, то потрудитесь так же и сопутствующие данные заполнять :)
30 NIGHTHUNTER
 
25.08.22
13:38
(28) Что конкретно сделать?
31 DrZombi
 
гуру
25.08.22
13:47
Процедура Печать_М15_ЗаказКлиентаДавальца(Команда)
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Сообщение       = Новый СообщениеПользователю;
        Сообщение.Текст = "Для вывода печатной формы документ должен быть записан!";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    ТабДок                              = М15_ЗКД_ПечатьНаСервере();
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "М15";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДок;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "М15";
    ОбластиОбъектов                     = Новый СписокЗначений;

   //Ура!!! Я то что задает по фен Шую БСП, содержимое файла
   ИмяОбласти = "Документ_" + Формат(1, "ЧН=; ЧГ=");
   ОбластиОбъектов.Добавить(Объект.Ссылка, ИмяОбласти);


    //ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка); - Ошибка молодости

    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
КонецПроцедуры
32 DrZombi
 
гуру
25.08.22
13:50
+ (30) А в "М15_ЗКД_ПечатьНаСервере()"

Нужно, если хочется что бы все было как надо.
Нужно задать Область, используя код


//Где то в дебрях функции "М15_ЗКД_ПечатьНаСервере"

    ИмяОбласти = "Документ_" + Формат(1, "ЧН=; ЧГ=");
    
    //ТабличныйДокумент - это табличный документ, который уже заполнен...
    НомерСтрокиНачало = 1;
    НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы;
    ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;
33 DrZombi
 
гуру
25.08.22
13:52
+(0)Точно, ну... держи


Процедура Печать_М15_ЗаказКлиентаДавальца(Команда)
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Сообщение       = Новый СообщениеПользователю;
        Сообщение.Текст = "Для вывода печатной формы документ должен быть записан!";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    ТабДок                              = М15_ЗКД_ПечатьНаСервере();
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "М15";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДок;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "М15";
    ОбластиОбъектов                     = Новый СписокЗначений;

  //Ура!!! Я то что задает по фен Шую БСП, содержимое файла

   ИмяОбласти = "Документ_" + Формат(1, "ЧН=; ЧГ=");
   ОбластиОбъектов.Добавить(Объект.Ссылка, ИмяОбласти);

    // Табличный документ
    НомерСтрокиНачало = 1;
    НомерСтрокиОкончание = ТабДок.ВысотаТаблицы;
    ТабДок.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;

    //ОбластиОбъектов.Добавить(Объект.Ссылка,Объект.Ссылка); - Ошибка молодости


    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
КонецПроцедуры
34 DrZombi
 
гуру
25.08.22
13:53
(0) Бери и беги, блаженный :)
35 NIGHTHUNTER
 
25.08.22
14:09
(34) Не совсем понял конечно. Но сейчас буду пробовать! Спасибо!
36 NIGHTHUNTER
 
25.08.22
14:23
(34) Спасибо! Первое тестирование показало что сработало!
Мне все же не известная технология, буду ещё разбираться в ней.
37 Ryzeman
 
25.08.22
14:48
(36) >>буду ещё разбираться в ней.
Ложь...