1. user992694 06.12.18 10:44 Сейчас в теме

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

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

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

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

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

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


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


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

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

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


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


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

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

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

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

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

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

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

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

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

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

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


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


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

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

Вакансии

Старший Программист 1С НОВОСИБИРСК
Новосибирск
зарплата до 130 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 75 000 руб.
Полный день



Руководитель проектов 1С
Санкт-Петербург
По совместительству