Печать ценников

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

можно конечно по простому в "модуле формы" сделать цикл, и передавать данные как параметры. Этот способ справится если печатать ценник для одной номенклатуры, а вот если их десять, то откроется 10 печатных форм с ценниками, что тоже не вариант.
+
По теме из базы знаний
Найденные решения
6. YannikAlx 43 06.12.18 11:23 Сейчас в теме
(4)
ТаблицаЗначений

Должна быть реквизитом Объекта обработки, и вы прекрасно будете к ней обращаться из формы и из модуля формы
+
8. Boneman 298 06.12.18 11:31 Сейчас в теме
(7) все что в кноке печать1 на клиенте,
сделай в процедуре печать на сервере

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

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


КонецПроцедуры
Показать


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

или заморациваешься с таблицей значений, на сервере она сработает
КонецПроцедуры
+
9. YannikAlx 43 06.12.18 11:43 Сейчас в теме
(7) Не прав в том, что создаешь свою таблицу в модуле формы...
Сначала насоздавал себе трудностей - теперь ломаешь голову как с этим бороться...
Я еще раз рекомендую - создай табличную часть у объекта Обработка и обращайся потом к ней откуда угодно и из формы и из модуля объекта
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 06.12.18 10:49 Сейчас в теме
(1) какой код для печати ты разместил в модуле формы ?
Запросы все равно на сервере делать придется.
Поэтому все формирование нужно делать в какой то процедуре на сервере, ну или в менеджере.
Туда только входные параметры передавай, например массив ссылок на нужные объекты, а вернуть она должна готовый табличный документ.

Посмотри в типовых конфигурациях, как в менеджерах печатные формы делаются. именно так.
А на форме, остается только какая-то интерактивная работа, минимально необходимая для выбора данных.
+
4. user992694 06.12.18 11:16 Сейчас в теме
(2)На самом деле кода на форме минимум.
&НаКлиенте
Процедура Печать1(Команда)
	ТабДок = Новый ТабличныйДокумент;
	ТаблицаДанных=Новый ТаблицаЗначений;
	ТаблицаДанных.Колонки.Добавить("Номенклатура");
	ТаблицаДанных.Колонки.Добавить("Цена");
	Для Каждого ТекСтрока ИЗ Объект.ЗИП Цикл
		Номенклатура=ТекСтрока.Номенклатура;
		Цена=ТекСтрока.ЦенаОтгрузки;
		НоваяСтрока=ТаблицаДанных.Добавить();
		НоваяСтрока["Номенклатура"]=Номенклатура;
		НоваяСтрока["Цена"]=Цена;		 		
	КонецЦикла;
	
	Печать(ТабДок,ТаблицаДанных);
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.Показать();


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


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

КонецПроцедуры
Показать

Но он не работает, т.к. "ТаблицаЗначений;" не доступна на тонком клиенте
+
5. Boneman 298 06.12.18 11:21 Сейчас в теме
(4)
Но он не работает, т.к. "ТаблицаЗначений;" не доступна на тонком клиенте

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

Да и на сервере, у тебя процедура с контекстом формы, а значит что строки ты перебирать можешь и там.
+
6. YannikAlx 43 06.12.18 11:23 Сейчас в теме
(4)
ТаблицаЗначений

Должна быть реквизитом Объекта обработки, и вы прекрасно будете к ней обращаться из формы и из модуля формы
+
3. Boneman 298 06.12.18 10:52 Сейчас в теме
(1)
можно конечно по простому в "модуле формы" сделать цикл, и передавать данные как параметры. Этот способ справится если печатать ценник для одной номенклатуры, а вот если их десять, то откроется 10 печатных форм с ценниками, что тоже не вариант.

А это уже как процедуру сделаешь печати.
Почему 10 форм ?
Передаешь массив объектов, по каждому из которых у тебя печатается ценник.

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

Как цикл закончится, возвращаешь наружу 1 ин, табличный документ с много-много ценниками
+
7. user992694 06.12.18 11:24 Сейчас в теме
(3)вот для того что бы так получилось, нужно как то передать все данные в модуль менеджера, что бы там сформировать табличный документ. т.е. передать все за один раз, в противном случае потребуется цикл и тогда процедура в модуле менеджера выполнится несколько раз. или подскажи, где я не прав.
+
8. Boneman 298 06.12.18 11:31 Сейчас в теме
(7) все что в кноке печать1 на клиенте,
сделай в процедуре печать на сервере

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

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


КонецПроцедуры
Показать


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

или заморациваешься с таблицей значений, на сервере она сработает
КонецПроцедуры
+
9. YannikAlx 43 06.12.18 11:43 Сейчас в теме
(7) Не прав в том, что создаешь свою таблицу в модуле формы...
Сначала насоздавал себе трудностей - теперь ломаешь голову как с этим бороться...
Я еще раз рекомендую - создай табличную часть у объекта Обработка и обращайся потом к ней откуда угодно и из формы и из модуля объекта
+
10. user992694 06.12.18 11:45 Сейчас в теме
Все, получилось. спасибо за консультацию!
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот