Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 19:31

Внешняя обработка 1с

Автор Глеб Шахов, 24 окт 2024, 19:36

0 Пользователей и 1 гость просматривают эту тему.

Глеб Шахов

Всем привет. Подскажите, пожалуйста, мне необходимо сформировать внешнюю обработку, в которой по реквизитам формы происходит отбор и формируется табличная часть. Это я вроде сделал. Дальше под табличной частью должна быть кнопка печати, которая выводит на печать эту табличную часть. По логике вещей я создаю макет и заполняю его параметры, но все что я смотрел по формированию печатных форм - делается в модуле объекта. Я только учусь и не понимаю, как мне это реализовать. Кнопка же находится на форме. Для доступа к макету на форме нашёл такую функцию, но где ее писать и как получить область


&НаСервере
Функция ПолучитьМакетНаСервере()
  ОбъектВнешнейОбработки = РеквизитФормыВЗначение("Объект")
  Макет = ОбработкаОбъект.ПолучитьМакет("Макет")
  Возврат Макет
КонецФункции

Или надо как то иначе решать эту задачу

+ ко всему все печатные формы, создание которых я видел, создаются на основе каких либо доков, но мне же нет в этом необходимости? И у меня вид обработки просто - ДополнительнаяОбработка

Или если необходимо делать печатную форму и ссылаться на документ, то на какой документ можно ссылаться в УТ для вывода остатков и цены, когда отбор надо делать по виду цен и организации. Допустим, чтобы вывести данные в табличную часть формы я обращался к регистрам.

alexandr_ll

Глеб Шахов, На форме обработки добавить команду "Сформировать" по ней в модуле формы процедуру на клиенте и функцию на сервере
&НаКлиенте
Процедура Сформировать(Команда)
ТабДок = ПолучитьПечатнуюФормуОтчета();
ТабДок.Показать("отчет Продажи");
КонецПроцедуры
&НаСервере
Функция ПолучитьПечатнуюФормуОтчета()
// вывод таблиц
ТаблицаОтчета = Новый ТабличныйДокумент;

    Запрос = Новый Запрос;
// здесь запрос, его обработка и заполнение пареметров макета печати

Возврат ТаблицаОтчета;

КонецФункции
Если Документ не нужен, то и не добавляте ссылку на него

Глеб Шахов

alexandr_ll, Большое спасибо.

Еще момент, теперь он ругается у меня на соединение, хотя проверял через консоль, все норм было и табличные данные норм выводил

        "ВЫБРАТЬ
        |    ЗапасыНаСкладахОстатки.Организация КАК ТаблицаТоварыОрганизацииОрганизация,
        |    ЗапасыНаСкладахОстатки.Номенклатура КАК НаименованиеТовара,
        |    ЗапасыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
        |    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ТаблицаТоварыОрганизацииВидЦен,
        |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦен = &ВидЦен) КАК ЦеныНоменклатурыСрезПоследних
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки(, Организация = &Организация) КАК ЗапасыНаСкладахОстатки
        |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура
        |ГДЕ
        |    НЕ ЦеныНоменклатурыСрезПоследних.ВидЦен ЕСТЬ NULL";
 


выдает вот такую ошибку

Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.ПрайсЛист.Форма.Форма.Форма(100)}:    Выборка = Запрос.Выполнить().Выбрать();
{ВнешняяОбработка.ПрайсЛист.Форма.Форма.Форма(64)}:      ТабДок = ПолучитьПечатнуюФормуОтчета();
по причине:
{(10, 3)}: Неверное присоединение
<<?>>ПО ЗапасыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура

по причине:
{(10, 3)}: Неверное присоединение
<<?>>ПО ЗапасыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура

С чем может быть связано неверное присоединение и почему до этого никто меня не ругал


Максим75

Глеб Шахов, так Вы в запросе, что нам показываете делаете такое соединение
ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура

а пишите, что ругается на такое:
ПО ЗапасыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура

ну т.е. местами поменяны. может с консоли не перенесли запрос?

и кстати, на NULL вид цен не надо проверять, Вы же делаете выборку по регистру сведений ЦеныНоменклатуры, там не может быть NULL, а вот как раз NULL может быть по второму регистру (тому что присоединяете). Или Вы наоборот хотите, выбрать остатки, а цены присоединять?

Глеб Шахов

Максим75, Спасибо, за подсказку, поменял, но все равно не помогло. Это моя первая печатная форма и не только она, думал, что если я меняю таблицы местами, условие связи меняется автоматически.
А вообще задача была в том, чтобы создать печатную форму прайс листа, по реквизитам формы организация и видцен происходит отбор, так что не удивлюсь, если я регистры не те выбрал, но хотелось хоть что-то вывести)

Глеб Шахов

Максим75, переписал по новой запрос ииии
its alive
Еще раз спасибо

Похожие темы (5)

Рейтинг@Mail.ru

Поиск