8.х Проблема с отчетом

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем prog_22, 11 окт 2013.

  1. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Смотрите тогда код, где идет запись данных в файл. Скорее всего где-то зациклен вывод в файл. Отладчик вам в помощь.
  2. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    По правильному, нужно было бы пересмотреть структуру формирования табличного документа.
    По факту, нужно добавить очистку табличного документа при условии, что вывод будет в файл, перед заходом в цикл обхода контрагентов.
    например в строку №116 добавить что то вроде :
    Код:
    Если флXLS Тогда ТабДок.Очистить(); КонецЕсли;
    
  3. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Добавил, получилось так: например есть по списку 4 таблицы контрагентов, файл с 3 таблицей 4 не сохраняет, а то что до нее сохраняет. получается очистку еще куда-то нужно вставить, уже в цикле?
  4. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Все, спасибо! Получилось, только в цикле внутри.
  5. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Ребята, вожусь с выгрузкой в xml этой таблицы.. вроде как ничего все, но ошибка , что каталог не обнаружен

    Вот полный код:

    Код:
    Процедура ЗаписатьДанныеВXML(Таб)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЕСТЬNULL(ПродажиСебестоимость.Регистратор.Контрагент, 0) КАК Покупатель,
    | ЕСТЬNULL(ПродажиСебестоимость.ДокументОприходования.Контрагент, 0) КАК Поставщик,
    | ПродажиСебестоимость.Номенклатура КАК Номенклатура,
    | ПродажиСебестоимость.Номенклатура.алкВидПродукции.ЛокальныйКод КАК Код,
    | СУММА(ПродажиСебестоимость.Количество) КАК Количество
    |ИЗ
    | РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
    |ГДЕ
    | ПродажиСебестоимость.Регистратор.Дата >= &начпер
    | И ПродажиСебестоимость.Регистратор.Дата <= &конпер
    | И ПродажиСебестоимость.Номенклатура.ВидНоменклатуры.алкВидЭлементаТМЦ = &алкВидЭлементаТМЦ
    | И ЕСТЬNULL(ПродажиСебестоимость.Регистратор.Контрагент, 0) = &контр
    |
    |СГРУППИРОВАТЬ ПО
    | ЕСТЬNULL(ПродажиСебестоимость.Регистратор.Контрагент, 0),
    | ЕСТЬNULL(ПродажиСебестоимость.ДокументОприходования.Контрагент, 0),
    | ПродажиСебестоимость.Номенклатура,
    | ПродажиСебестоимость.Номенклатура.алкВидПродукции.ЛокальныйКод
    |
    |УПОРЯДОЧИТЬ ПО
    | Покупатель,
    | Код,
    | Номенклатура
    |ИТОГИ ПО
    | Покупатель";
    Запрос.Текст =
    "ВЫБРАТЬ
    | РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Покупатель,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.алкПроизводитель КАК Поставщик,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции КАК Номенклатура,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции.ЛокальныйКод КАК Код,
    | СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Номенклатура.алкЕмкость / 10) КАК Количество,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД КАК ГТД,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры,
    | РеализацияТоваровУслугТовары.Ссылка,
    | РеализацияТоваровУслугТовары.Ссылка.алкЛицензияКонтрагента как лицензия
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |   ВЫБОР
    |  КОГДА &фл ТОГДА ИСТИНА
    |  ИНАЧЕ
    |   РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контр
    | КОНЕЦ
    | И РеализацияТоваровУслугТовары.Ссылка.Дата >= &Начпер
    | И РеализацияТоваровУслугТовары.Ссылка.Дата <= &Конпер
    | И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    | И РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры.алкВидЭлементаТМЦ = &алкВидЭлементаТМЦ
    |
    |СГРУППИРОВАТЬ ПО
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.алкПроизводитель,
    | РеализацияТоваровУслугТовары.Ссылка.Контрагент,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции.ЛокальныйКод,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры,
    | РеализацияТоваровУслугТовары.Ссылка.Дата,
    | РеализацияТоваровУслугТовары.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    | Покупатель,
    | Код,
    | Поставщик,
    | Номенклатура
    |ИТОГИ ПО
    | РеализацияТоваровУслугТовары.Ссылка.Организация";
    
    Запрос.УстановитьПараметр("конпер", КонецДня(конпер));
    Запрос.УстановитьПараметр("начпер", начпер);
    Запрос.УстановитьПараметр("контр", контрагент);
    Запрос.УстановитьПараметр("фл", флXLS);
    Запрос.УстановитьПараметр("алкВидЭлементаТМЦ",  Перечисления.алкВидыЭлементовТМЦ.Алкоголь);
    
    Результат = Запрос.Выполнить().Выгрузить();
    
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    //Если ТабличноеПоле1.Количество() > 0 Тогда
    МойXML  = Новый ЗаписьXML;
    ДополнениеКИмениФайла = Формат(ДеньГода(ТекущаяДата()),"ЧВН; ЧРГ=""""") + Формат(Час(ТекущаяДата()),"ЧВН; ЧРГ=""""") + Формат(Минута(ТекущаяДата()),"ЧВН; ЧРГ=""""");
    ИмяФайлаXML = "С:\Temp\" + "_Exchange.xml";
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайлаXML, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    Объект = СериализаторXDTO.ЗаписатьXDTO(Таб);
    ФабрикаXDTO.ЗаписатьXML(МойXML, Объект);
    МойXML.Закрыть();
    //КонецЕсли;
    КонецПроцедуры
    
    Процедура ОсновныеДействияФормыВыгрузить(Кнопка,ОбъектДанных)
    // Вставить содержимое обработчика.
    ЗаписатьДанныеВXML(Таб);
    КонецПроцедуры
    

    Ошибка в строке
    Код:
    ИмяФайлаXML = "С:\Temp\" + "_Exchange.xml";
    Хотя в этом каталоге есть такой файл xml с таким же названием.
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    И каталог начинается с нижнего подчеркивания ?
    Попробуйте полный путь указать "С:\Temp\_Exchange.xml"
    И желательно не начинать имена файлов с подчеркивания.
  7. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Попробовал , такая же ошибка .. точнее на строке
    Код:
     МойXML.ОткрытьФайл(ИмяФайлаXML, ПараметрыЗаписиXML);


    {Форма.ФормаОтчета.Форма(739)}: Ошибка при вызове метода контекста (ОткрытьФайл)
    МойXML.ОткрытьФайл(ИмяФайлаXML, ПараметрыЗаписиXML);
    по причине:
    Каталог не обнаружен 'С:\Temp\Kontragenty_7727539126_2k2013.xml'


    Вот такая ошибка..

    Путь такой:
    Код:
    ИмяФайлаXML = "С:\Temp\Kontragenty_7727539126_2k2013.xml";
  8. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Пробовал еще вот так:

    Код:
    Функция ВыгрузитьТЗ_в_XML(ТабличноеПоле1)
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("С:\Temp\Kontragenty_7727539126_2k2013.xml");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("Root");
    Для А=0 По ЭлементыФормы.ТабличноеПоле1.Количество()-1 Цикл
    ЗаписьXML.ЗаписатьНачалоЭлемента("item");
    Для Каждого Колонка Из ЭлементыФормы.ТабличнноеПоле1.Колонки Цикл
    ИмяАтрибута=Колонка.Имя;
    ЗначениеАтрибута=ТабличноеПоле1[А][Колонка.Имя];
    ЗаписьXML.ЗаписатьАтрибут(ИмяАтрибута,Строка(ЗначениеАтрибута));
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.Закрыть();
    КонецФункции  
    
    И такая же ошибка

    {Форма.ФормаОтчета.Форма(762)}: Ошибка при вызове метода контекста (ОткрытьФайл)
    ЗаписьXML.ОткрытьФайл("С:\Temp\Kontragenty_7727539126_2k2013.xml");
    по причине:
    Каталог не обнаружен 'С:\Temp\Kontragenty_7727539126_2k2013.xml'
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Если дело не в правах... странно. А вы пробовали в другое место записать файл, например, в корень диска С ?
  10. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Вроде бы все доступно, и создание и запись.. но на другом диске получилось. Но теперь у меня другое: я правильно передаю имя ТЗ? На форме у меня она наз ТабличноеПоле1, а в ревизитах формы Таб.

    Если я оставляю как привел выше код, то ошибок нет, но xml пустой.

    Если меняю строки :
    Код:
     Объект = СериализаторXDTO.ЗаписатьXDTO(Таб);
    на
    Код:
     Объект = СериализаторXDTO.ЗаписатьXDTO(ТабличноеПоле1);
    и
    Код:
    Процедура ОсновныеДействияФормыВыгрузить(Кнопка,ОбъектДанных)
    // Вставить содержимое обработчика.
    ЗаписатьДанныеВXML(Таб);
    КонецПроцедуры
    на

    Код:
    Процедура ОсновныеДействияФормыВыгрузить(Кнопка,ТабличноеПоле1)
    // Вставить содержимое обработчика.
    ЗаписатьДанныеВXML(ТабличноеПоле1);
    КонецПроцедуры
    Ошибка :

    {Форма.ФормаОтчета.Форма(742)}: Ошибка при вызове метода контекста (ЗаписатьXDTO)
    Объект = СериализаторXDTO.ЗаписатьXDTO(ТабличноеПоле1);
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа 'Неопределено'
  11. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    табличное поле - это элемент формы, для него нет "отображения в XML"
  12. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    То есть мне везде "Таб" прописать?

    Все равно та же ошибка с типом "Неопределено"
  13. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Спасибо всем огромное за помощь и напутствие!!)) С помощью вас я додумался, как реализовать! Я не ту таблицу передавал в параметр..
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Тему закрывать ?
  15. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Да, закрывайте! А тут на форуме есть тема или раздел с какими то типовыми ответами на вопросы? Я тут видел просто парень какой то мучился тоже с этим
  16. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Такой темы нет. Если поиском пользоваться не лень - найдет.
  17. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    http://www.1c-pro.ru/topic38768.html

Поделиться этой страницей