8.х Внешний отчет

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

  1. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Подскажите, чего не хватает в коде, чтобы вывести внешний отчет?
    Код:
    Процедура КнопкаСформироватьНажатие(Кнопка)
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ЭкземпляровНаСтранице = 0;
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    КонецПроцедуры
    
    Спасибо.
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    ТабДок.Показать();
  3. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
  4. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    ыыы, странно как Вы друг друга поняли :D
    Для того чтобы вывести внешний отчет не хватает всего.....
  5. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Просто написал первое, что пришло на ум)))
  6. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Еще вопросик. Формируется отчет. Как привязать аналог к номенклатуре?
    Код:
    Область.Параметры.Номенклатура = стр.Номенклатура;
    Как установить связку номенклатуры с данными из регистров сведений(Аналоги)?
    Т.е. я имею ввиду что мне нужно еще один столбец с Аналогами чтобы заполнялся. Другое дело что аналогов может быть не один, а более...
  7. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    привязать - вы имеете ввиду вывести рядом с требуемой номенклатурой? если да, то организуйте через дополнительную секцию в макете и метод Присоединить(), или доп строка(область) в макете и в цикле выводите ее под требуемой номенклатурой через Вывести().

    gg, опыт общения тут ;)
  8. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Нужно в код добавить вывод информации по аналогам(в отдельный столбец).
    Есть такая функция(фрагмент):
    Код:
    Для каждого стр из исхтабл Цикл
    номен = стр.Номенклатура;
    Если не ОстановитьРазузлование(номен, стр) тогда
    ПолучитьМатериалыНаВыпускПоСпецификации(Номен, табл, стр.Количество, Справочники.СпецификацииНоменклатуры.ПустаяСсылка());       	
    Иначе
    ст = табл.Добавить();
    ст.Номенклатура    = Номен;
    ст.ВидНоменклатуры = Номен.Родитель;
    ст.ЕдИзм		   = стр.ЕдиницаИзмерения;
    ст.Количество	  = стр.Количество;
    КонецЕсли;
    
  9. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Код:
    Функция ПолучитьМатериалыНаВыпускПоСпецификации(Номенклатура, табл, количество, исхСпецификация) Экспорт
    состояние("Обработка даных по узлу " +  Номенклатура);
    Если исхСпецификация.Пустая() тогда
    Спецификация = УправлениеПроизводством.ОпределитьСпецификациюПоУмолчанию(Номенклатура,,ДатаСпецификации);
    иначе
    Спецификация = исхСпецификация;
    КонецЕсли;
    Если Спецификация = Неопределено тогда
    Возврат "";  
    КонецЕсли;
    Отбор = Новый Структура();
    исхтабл = УправлениеПроизводством.ПолучитьМатериалыПоСпецификации(Спецификация, количество, Отбор, ДатаСпецификации, Ложь);
    Если  исхтабл = Неопределено Тогда
    возврат "";
    иначе
    Для каждого стр из исхтабл Цикл
    номен = стр.Номенклатура;
    Если не ОстановитьРазузлование(номен, стр) тогда
    ПолучитьМатериалыНаВыпускПоСпецификации(Номен, табл, стр.Количество, Справочники.СпецификацииНоменклатуры.ПустаяСсылка());
    Иначе
    ст = табл.Добавить();
    ст.Номенклатура    = Номен;
    ст.ВидНоменклатуры = Номен.Родитель;
    ст.ЕдИзм		   = стр.ЕдиницаИзмерения;
    ст.Количество	  = стр.Количество;
    КонецЕсли;
    КонецЦикла;
    Возврат "";
    КонецЕсли;
    КонецФункции
    
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ...

    я так понимаю - это у вас формирование таблицы идет? а после этого уже выводите в отчет данные или как?
  11. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Да, именно так.
  12. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    каким образом выводите? наверное в цикле? если да, то внутри него по вашей таблице выбираете записи по номенклатуре из регистра аналоги (как он у вас связывается не знаю) и циклом выводите их. Скорее всего придется доработать макет - добавить область для вывода или секцию - это уже на ваш вкус. Что конкретно у вас не получается?
  13. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    В этой функции "создается" таблица для вывода в дальнейшем из нее информации. Не получается к ней привязать аналоги номенклатуры.
    Т.е. функция должна быть вида:
    Код:
    Функция ПолучитьМатериалыНаВыпускПоСпецификации(Номенклатура, табл, количество, исхСпецификация, Аналоги) Экспорт
    
    Не могу под эту функцию код самой функции переписать.
    Чтобы формировалось таблица:
    Код:
    ст = табл.Добавить();
    ст.Номенклатура	= Номен;
    ст.ВидНоменклатуры = Номен.Родитель;
    ст.ЕдИзм		   = стр.ЕдиницаИзмерения;
    ст.Количество	  = стр.Количество;
    ст.Аналоги		   = стр.Аналоги;
    
  14. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    так вам же аналоги надо отдельным столбиком выводить, зачем вы все в одну таблицу то хотите запихать?
  15. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Да.
    Т.е. мне проще будет прямо перед выводом информации сделать цикл и выборкой заполнять таблицу?
  16. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я бы попробовала так, только не таблицу заполнять, а сразу аналоги выводить в макет
  17. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Очень большая просьба помочь с кодом.
    Вот фрагмент кода нажатия кнопки:
    Код:
    Для каждого стр Из спсНоменклатуры Цикл
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Параметры.Номенклатура = стр.Номенклатура;
    Область.Параметры.ПолнНаименование = стр.Номенклатура.НаименованиеПолное;
    Область.Параметры.Код		  = стр.Номенклатура.Код;
    Область.Параметры.Количество   = стр.Количество;
    Область.Параметры.Единица	  = стр.едизм;
    Область.Параметры.ХрЕдиница    = стр.Номенклатура.ЕдиницаХраненияОстатков;
    Область.Параметры.ВидНоменклатуры = стр.Номенклатура.ВидНоменклатуры;
    Область.Параметры.Аналог        =
    НайденнаяСтрока = таблицаСоответствий.Найти(стр.Номенклатура, "Объект");
    ТабДок.Вывести(Область);
    
    Интересует именно последний аналог (по дате), так как может быть очень много аналогов на одну позицию, не буду же их все выводить.
    Большое спасибо.
  18. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а у вас аналоги в регистре сведений? тогда посмотрите метод СрезПоследних() там как раз последний на дату найдете
  19. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Да, аналоги именно там. А как конкретно к определенной номенклатуре привязать определенный аналог? Как эту выборку сделать?
  20. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Как правильно написать код?
    Код:
    Для каждого стрВидов Из ТАблВидовНом Цикл
    Область = Макет.ПолучитьОбласть("Группа");
    Область.Параметры.Код	   = стрВидов.ВидНоменклатуры.Код;
    Область.Параметры.Группа    = стрВидов.ВидНоменклатуры;
    ТабДок.Вывести(Область);
    Отбор = Новый Структура("ВидНоменклатуры");
    Отбор.ВидНоменклатуры = стрВидов.ВидНоменклатуры;
    спсНоменклатуры = Таблица.НайтиСтроки(Отбор);
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
    |    АналогиНоменклатуры.Аналог.Артикул КАК АналогиАртикул
    |ИЗ
    |    РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры
    |        ПРАВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураОсн
    |        ПО (АналогиНоменклатуры.Номенклатура = НоменклатураОсн.Ссылка)";
    
    
    Для каждого стр Из спсНоменклатуры Цикл
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Параметры.Номенклатура = стр.Номенклатура;
    Область.Параметры.ПолнНаименование = стр.Номенклатура.НаименованиеПолное;
    Область.Параметры.Код		  = стр.Номенклатура.Код;
    Область.Параметры.Количество   = стр.Количество;
    Область.Параметры.Единица	  = стр.едизм;
    Область.Параметры.ХрЕдиница    = стр.Номенклатура.ЕдиницаХраненияОстатков;
    Область.Параметры.ВидНоменклатуры = стр.Номенклатура.ВидНоменклатуры;
    Область.Параметры.Аналог         = стр.АналогиАртикул;
    НайденнаяСтрока = таблицаСоответствий.Найти(стр.Номенклатура, "Объект");
    ТабДок.Вывести(Область);
    КонецЦикла;
    
    Говорит
    Код:
    .Форма.Форма(209)}: Поле объекта не обнаружено (АналогиАртикул)
    Область.Параметры.Аналог         = стр.АналогиАртикул;
    
    Я понимаю что АналогиАртикул не содержится в спсНоменклатуры, но не могу понять как его правильно прицепить и где к номенклатуре.

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