Имя: Пароль:
1C
1C 7.7
v7: ошибка при сохранении таблицы в файл
0 noook
 
12.01.12
15:00
есть комплексная 515 (и в предыдущих не работает)
сохраняю таблицу (печатную форму документа счет)
\\
ИсхТабл.Опции(0,0,0,0,"","");
ИсхТабл.ТолькоПросмотр(1);
ИсхТабл.ПараметрыСтраницы(1,,,,,,,,,,,);
ПочтаФайлВложение = "c:\docs1c\документ " + ТекущаяДата() + " Счет № " + ДокНомер + " от " + ДокДата + ".xls";
ИсхТабл.Записать(ПочтаФайлВложение,1);
\\
если в счете 1 товар то всё хорошо, если товаров больше, то копируется первая строка и сумма нормальная, а первая строка копируется в остальные
ВОПРОСЫ:
может ли такое быть от версии офиса установленного?
от чего это может быть ещё?
1 Wobland
 
12.01.12
15:03
а что такой интересный второй параметр у Записать()?
2 Tatitutu
 
12.01.12
15:06
(0) весь код в студию (что с циклом у тебе не так)
на экране отображается правильно (Показать())

(1) тип файла
3 Wobland
 
12.01.12
15:07
(2) да я понимаю, число зачем?
4 andrewks
 
12.01.12
15:11
(3) продать СП? :)
5 Он
 
12.01.12
15:11
(3) Потому что 1 - нажать одну клавишу, а XLS - четыре.
6 povar
 
12.01.12
15:11
(0) офис не при делах
7 andrewks
 
12.01.12
15:12
(0) давай таблицы нормальную и проблемную в обоих вариантах (mxl + xls)
8 filh
 
12.01.12
15:25
ёкселем сохраняй.
9 noook
 
13.01.12
10:34
исходный код процедуры
           //проверяем есть ли что то в документе
           Если Док.КоличествоСтрок() = 0 Тогда Предупреждение("В документе не заполнена табличная часть, документ пустой",0);    Возврат; КонецЕсли;
           ИсхТабл = СоздатьОбъект("Таблица");
           ИсхТабл.ИсходнаяТаблица("zayavka");
           НачПовт = 0; КонПовт = 0;
           // Секция ЗаголовокСчета
           ПечФирма = ""; Банк = ""; Счет = ""; БИК = ""; СчетБанка = "";
           Если Найти(Док.Фирма.ЮрЛицо.ИНН, "\") <> 0 Тогда
               // найден разделитель
               ПолучательИНН = Лев(Док.Фирма.ЮрЛицо.ИНН, Найти(Док.Фирма.ЮрЛицо.ИНН, "\") - 1);
           Иначе
               ПолучательИНН = СокрЛП(Док.Фирма.ЮрЛицо.ИНН);
           КонецЕсли;
           Если Найти(Док.Фирма.ЮрЛицо.ИНН, "\") <> 0 Тогда
               // найден разделитель
               ПолучательКПП = Сред(Док.Фирма.ЮрЛицо.ИНН, Найти(Док.Фирма.ЮрЛицо.ИНН, "\") + 1);
           Иначе
               ПолучательКПП = "";
           КонецЕсли;
           Параметры = СоздатьОбъект("СписокЗначений");
           Параметры.ДобавитьЗначение(Док.БанковскийСчет, "БанковскийСчет");
           Параметры.ДобавитьЗначение(1, "Режим");
           глРеквизитыПлательщикаПолучателя(Параметры);
           ПечФирма    = Параметры.Получить("Результат");
           Банк        = Параметры.Получить("СтрокаБанка");
           Счет        = Параметры.Получить("РасчетныйСчет");
           БИК        = Параметры.Получить("БИК");
           СчетБанка    = Параметры.Получить("КоррСчет");
           ИсхТабл.ВывестиСекцию("ЗаголовокСчета");
           НачПовт = НачПовт + ИсхТабл.ВысотаСекции("ЗаголовокСчета");
           // секция Заголовок
           ИсхТабл.ВывестиСекцию("Заголовок");
           НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Заголовок");
           // Секция Поставщик
           Поставщик = "ИНН " + ПолучательИНН + " " + "КПП " + ПолучательКПП + " " +
                       СокрЛП(Док.Фирма.ЮрЛицо.ПолнНаименование) + " " +
                   глПредставлениеАдреса(Док.Фирма.ЮрЛицо.ЮрАдрес);
           Если ПустоеЗначение(Док.Фирма.ЮрЛицо.Телефоны) = 0 Тогда
               Поставщик = Поставщик + ", тел. " + Док.Фирма.ЮрЛицо.Телефоны;
           КонецЕсли;                                                                  
           ИсхТабл.ВывестиСекцию("Поставщик");
           НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Поставщик");
           // Секция Покупатель
           Покупатель = "";
           Если ПустоеЗначение(ДокКонтрагент) = 0 Тогда
               Если Док.Контрагент.ЮрФизЛицо.Выбран() = 1 Тогда
                   Покупатель = СокрЛП(Док.Контрагент.ЮрФизЛицо.ПолнНаименование);
                   Если ПустоеЗначение(Док.Контрагент.ЮрФизЛицо.ИНН) = 0 Тогда
                       Покупатель = "ИНН " + ПолучательИНН + " " + "КПП " + ПолучательКПП + " " + Покупатель;
                   КонецЕсли;
                   Если ПустоеЗначение(Док.Контрагент.ЮрФизЛицо.Телефоны) = 0 Тогда
                       Покупатель = Покупатель + ", тел. " + Док.Контрагент.ЮрФизЛицо.Телефоны;
                   КонецЕсли;                                                                  
               КонецЕсли;
           КонецЕсли;
           ИсхТабл.ВывестиСекцию("Покупатель");
           НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Покупатель");
           СекцСкидка = ?(ПустоеЗначение(Док.Скидка) = 0, "Скидка", "");
           // Секция Шапка таблицы
           ИсхТабл.ВывестиСекцию("ШапкаТаблицы" + СекцСкидка);
           КонПовт = НачПовт + ИсхТабл.ВысотаСекции("ШапкаТаблицы" + СекцСкидка);
           ИсхТабл.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);
           // выводим табличную часть
           НомСтроки = 0;
           Док.ВыбратьСтроки();
           Пока Док.ПолучитьСтроку() = 1 Цикл
               НомСтроки = НомСтроки + 1;
               ИсхТабл.ВывестиСекцию("Строка" + СекцСкидка);
           КонецЦикла;
           СуммаИтог = Док.Итог("Сумма");
           // секция Итого
           ИсхТабл.ВывестиСекцию("Итого");
           // секция ИтогоНДС
           Если Док.УчитыватьНДС = 1 Тогда
               СуммаНДСИтог = Док.Итог("СуммаНДС");
               Если Док.СуммаВклНДС = 0 Тогда
                   СуммаИтог = СуммаИтог + СуммаНДСИтог;
               КонецЕсли;
               ИсхТабл.ВывестиСекцию("ИтогоНДС");
           КонецЕсли;
           // секция ИтогоНП
           Если Док.УчитыватьНП = 1 Тогда
               СуммаНПИтог = Док.Итог("СуммаНП");
               Если Док.СуммаВклНП = 0 Тогда
                   СуммаИтог = СуммаИтог + СуммаНПИтог;
               КонецЕсли;
               ИсхТабл.ВывестиСекцию("ИтогоНП");
           КонецЕсли;
           // секция СуммаПрописью
           ИсхТабл.ВывестиСекцию("СуммаПрописью");
           // секция Подписи
           ИсхТабл.ВывестиСекцию("Подписи");
           //готовим печатную форму
           ИсхТабл.Опции(0,0,0,0,"","");
           ИсхТабл.ТолькоПросмотр(1);
           ИсхТабл.ПараметрыСтраницы(1,,,,,,,,,,,);
           ПочтаФайлВложение = "c:\docs1c\документ " + ТекущаяДата() + " Счет № " + ДокНомер + " от " + ДокДата + ".xls";
           ИсхТабл.Записать(ПочтаФайлВложение,1);
10 dk
 
13.01.12
10:37
тебе еще в (2) сказали посмотри что 1с наваяла ПЕРЕД сохраненнием в XLS
11 noook
 
13.01.12
10:49
(8) как это сохранять экселем?
(7) это интересный вариант, спасибо
12 filh
 
13.01.12
10:50
13 НЕА123
 
13.01.12
10:57
(9)
в (0) про товар говорится. где он заполняется?
14 Tatitutu
 
13.01.12
10:58
ИсхТабл.Показать("Моязаморока");
добавь и посмотри что на экране тебе формирует

что у тебя в таблице в секциях

"Строка"  и "СтрокаСкидка"
15 НЕА123
 
13.01.12
11:01
+(13)
сорри. слепой. пятница, наверно...
16 НЕА123
 
13.01.12
11:04
(9)
если док - это выборка тоды приблизительно так

Пока Док.ПолучитьСтроку() = 1 Цикл
   Товар = Док.Товар; // товар - параметр макета
   НомСтроки = НомСтроки + 1;
   ИсхТабл.ВывестиСекцию("Строка" + СекцСкидка);
КонецЦикла;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший