Всем доброго дня. Занимаюсь изучением 1с и для этого пишу свою конфигурацию, дабы по лучше разобраться и набить руку. возникла следующая проблема. решил реализовать печать ценников. Для этого создал обработку. на форме обработки поместил табличную часть, в которую можно надергать требуемую номенклатуру, и сделал кнопку "печать".
И вот тут возникла проблема:
Код для печати поместил в "Модуль менеджера" моей обработки. Нужно как то передать данные из "модуля формы" в "Модуль менеджера". Сначала хотел сделать в "Модуле менеджера" таблицу значений, и передать ее в "Модуль менеджера", но не тут то было. Таблица значений не доступна тонком клиенте. Возникла шальная мысль сделать запрос из "Модуля менеджера", но опять же фокус не удался, не к чему обращаться :).
собственно прошу натолкнуть на мысль, каким образом передать данные?

можно конечно по простому в "модуле формы" сделать цикл, и передавать данные как параметры. Этот способ справится если печатать ценник для одной номенклатуры, а вот если их десять, то откроется 10 печатных форм с ценниками, что тоже не вариант.
---
ТаблицаЗначений
Должна быть реквизитом Объекта обработки, и вы прекрасно будете к ней обращаться из формы и из модуля формы
---
все что в кноке печать1 на клиенте,
сделай в процедуре печать на сервере

те
там у тебя должно остаться

```1c
    &НаКлиенте
    Процедура Печать1(Команда)
    ТабДок = Новый ТабличныйДокумент;
    Печать(ТабДок);

    ТабДок.Показать();

    КонецПроцедуры
```

&НаСервере
Процедура Печать(Табдок)
тут обходишь строки в цикле,
выводишь ценник,
и выводишь горизонтальный разделитель страниц.
КонецЦикла

или заморациваешься с таблицей значений, на сервере она сработает
КонецПроцедуры
---
Не прав в том, что создаешь свою таблицу в модуле формы...
Сначала насоздавал себе трудностей - теперь ломаешь голову как с этим бороться...
Я еще раз рекомендую - создай табличную часть у объекта Обработка и обращайся потом к ней откуда угодно и из формы и из модуля объекта
---
какой код для печати ты разместил в модуле формы ?
Запросы все равно на сервере делать придется.
Поэтому все формирование нужно делать в какой то процедуре на сервере, ну или в менеджере.
Туда только входные параметры передавай, например массив ссылок на нужные объекты, а вернуть она должна готовый табличный документ.

Посмотри в типовых конфигурациях, как в менеджерах печатные формы делаются. именно так.
А на форме, остается только какая-то интерактивная работа, минимально необходимая для выбора данных.
---
На самом деле кода на форме минимум.

```1c
    &НаКлиенте
    Процедура Печать1(Команда)
    ТабДок = Новый ТабличныйДокумент;
    ТаблицаДанных=Новый ТаблицаЗначений;
    ТаблицаДанных.Колонки.Добавить("Номенклатура");
    ТаблицаДанных.Колонки.Добавить("Цена");
    Для Каждого ТекСтрока ИЗ Объект.ЗИП Цикл
    Номенклатура=ТекСтрока.Номенклатура;
    Цена=ТекСтрока.ЦенаОтгрузки;
    НоваяСтрока=ТаблицаДанных.Добавить();
    НоваяСтрока["Номенклатура"]=Номенклатура;
    НоваяСтрока["Цена"]=Цена;
    КонецЦикла;

    Печать(ТабДок,ТаблицаДанных);
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();

    КонецПроцедуры

    &НаСервере
    Процедура Печать(ТабДок,ТаблицаДанных)
    Обработки.ПечатьЦенников.Ценники(ТабДок,ТаблицаДанных);

    КонецПроцедуры
```

Но он не работает, т.к. "ТаблицаЗначений;" не доступна на тонком клиенте
---
Но он не работает, т.к. "ТаблицаЗначений;" не доступна на тонком клиенте
понятное дело,
и незачем.
все делай на сервере.
На клиенте кроме табдока ничего и не нужно.

Да и на сервере, у тебя процедура с контекстом формы, а значит что строки ты перебирать можешь и там.
---
ТаблицаЗначений
Должна быть реквизитом Объекта обработки, и вы прекрасно будете к ней обращаться из формы и из модуля формы
---
можно конечно по простому в "модуле формы" сделать цикл, и передавать данные как параметры. Этот способ справится если печатать ценник для одной номенклатуры, а вот если их десять, то откроется 10 печатных форм с ценниками, что тоже не вариант.
А это уже как процедуру сделаешь печати.
Почему 10 форм ?
Передаешь массив объектов, по каждому из которых у тебя печатается ценник.

В самой процедуре печати, инициализируешь табюличный документ,
потов в цикле заполняешь макет, и впечатываешь горизонтальный разделитель страниц.
и снова выводишь ценник в тот же табличный документ.

Как цикл закончится, возвращаешь наружу 1 ин, табличный документ с много-много ценниками
---
вот для того что бы так получилось, нужно как то передать все данные в модуль менеджера, что бы там сформировать табличный документ. т.е. передать все за один раз, в противном случае потребуется цикл и тогда процедура в модуле менеджера выполнится несколько раз. или подскажи, где я не прав.
---
все что в кноке печать1 на клиенте,
сделай в процедуре печать на сервере

те
там у тебя должно остаться

```1c
    &НаКлиенте
    Процедура Печать1(Команда)
    ТабДок = Новый ТабличныйДокумент;
    Печать(ТабДок);

    ТабДок.Показать();

    КонецПроцедуры
```

&НаСервере
Процедура Печать(Табдок)
тут обходишь строки в цикле,
выводишь ценник,
и выводишь горизонтальный разделитель страниц.
КонецЦикла

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