Имя: Пароль:
1C
1С v8
Кнопка сохранения ПФ
,
0 YDen
 
07.11.24
15:31
Здравствуйте.
Подскажите пожалуйста. 8.3 версия. Самописная конфигурация.
Документ. Формируется печатная форма:
Процедура Печать(ТабДок, Ссылка) Экспорт
	//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)
	Макет = Документы.Меню.ПолучитьМакет("Печать");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Меню.Дата,
	|	Меню.КалендарьДень,
	|	Меню.Номер,
	|	Меню.Организация,
	|	Меню.ТабличнаяЧасть1.(
	|		НомерСтроки,
	|		ПриемПищи,
	|		Раздел,
	|		Рецепт,
	|		НазваниеБлюда,
	|		Выход,
	|		Цена,
	|		Калорийность,
	|		Белки,
	|		Жиры,
	|		Углеводы
	|	)
	|ИЗ
	|	Документ.Меню КАК Меню
	|ГДЕ
	|	Меню.Ссылка В (&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();

	//ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьТабличнаяЧасть1Шапка = Макет.ПолучитьОбласть("ТабличнаяЧасть1Шапка");
	ОбластьТабличнаяЧасть1 = Макет.ПолучитьОбласть("ТабличнаяЧасть1");
	ТабДок.Очистить();
	
	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		//ТабДок.Вывести(ОбластьЗаголовок);

		Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(Шапка, Выборка.Уровень());
		
		ОбластьТабличнаяЧасть1Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(ОбластьТабличнаяЧасть1Шапка,Выборка.Уровень());

		//ТабДок.Вывести(ОбластьТабличнаяЧасть1Шапка);
		ВыборкаТабличнаяЧасть1 = Выборка.ТабличнаяЧасть1.Выбрать();
		Пока ВыборкаТабличнаяЧасть1.Следующий() Цикл
			ОбластьТабличнаяЧасть1.Параметры.Заполнить(ВыборкаТабличнаяЧасть1);
			ТабДок.Вывести(ОбластьТабличнаяЧасть1, ВыборкаТабличнаяЧасть1.Уровень());
		КонецЦикла;

		ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;
	
	Сообщить("Привет, Мир 3!");	
	
	//}}
КонецПроцедуры

В форме документа:

&НаКлиенте
Процедура МЦО(Команда)
	МЦОНаСервере();
	Сообщить("Привет, Мир!");
	
	
	ТабДок = СформироватьТабДок();
	СтандартнаяОбработка = Ложь;
	РежимДиалога = РежимДиалогаВыбораФайла.Сохранение;
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
	ДиалогВыбораФайла.МножественныйВыбор = Ложь;
	ДиалогВыбораФайла.Заголовок = "Выберите папку, где необходимо сохранить файл";  
	ДиалогВыбораФайла.ПолноеИмяФайла = Объект.ЗаказКлиента.Номер+объект.Покупатель;
	ДиалогВыбораФайла.Фильтр = "Формат выгрузки(*xlsx)|*.xlsx";
	Если ДиалогВыбораФайла.Выбрать() Тогда
	   ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
	КонецЕсли;
	
	КонецПроцедуры

 &НаСервере
 Функция СформироватьТабДок()
	 
	 Сообщить("Привет, Мир4!");

	ТабДок = Новый ТабличныйДокумент;
	//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)
	Макет = Документы.Меню.ПолучитьМакет("Печать");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Меню.Дата,
	|	Меню.КалендарьДень,
	|	Меню.Номер,
	|	Меню.Организация,
	|	Меню.ТабличнаяЧасть1.(
	|		НомерСтроки,
	|		ПриемПищи,
	|		Раздел,
	|		Рецепт,
	|		НазваниеБлюда,
	|		Выход,
	|		Цена,
	|		Калорийность,
	|		Белки,
	|		Жиры,
	|		Углеводы
	|	)
	|ИЗ
	|	Документ.Меню КАК Меню
	|ГДЕ
	|	Меню.Ссылка В (&Ссылка)";
	//Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();

	//ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьТабличнаяЧасть1Шапка = Макет.ПолучитьОбласть("ТабличнаяЧасть1Шапка");
	ОбластьТабличнаяЧасть1 = Макет.ПолучитьОбласть("ТабличнаяЧасть1");
	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		//ТабДок.Вывести(ОбластьЗаголовок);

		Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(Шапка, Выборка.Уровень());
		
		ОбластьТабличнаяЧасть1Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(ОбластьТабличнаяЧасть1Шапка,Выборка.Уровень());

		//ТабДок.Вывести(ОбластьТабличнаяЧасть1Шапка);
		ВыборкаТабличнаяЧасть1 = Выборка.ТабличнаяЧасть1.Выбрать();
		Пока ВыборкаТабличнаяЧасть1.Следующий() Цикл
			ОбластьТабличнаяЧасть1.Параметры.Заполнить(ВыборкаТабличнаяЧасть1);
			ТабДок.Вывести(ОбластьТабличнаяЧасть1, ВыборкаТабличнаяЧасть1.Уровень());
		КонецЦикла;

		ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;

	
КонецФункции


На форме документа разместил кнопку. При ее нажатии хочу чтобы появлялось окно сохранения ПФ. Сейчас при ее нажатии указанные выше процедуры отрабатывают.
Но ошибка:
{Документ.Меню.Форма.ФормаДокумента.Форма(335,38)}: Переменная не определена (Ссылка)
    Запрос.Параметры.Вставить("Ссылка", <<?>>Ссылка); (Проверка: Сервер)


Я в верном направлении двигаюсь?

Благодарю
1 Галахад
 
гуру
07.11.24
15:28
Привет, Мир5!
2 Волшебник
 
07.11.24
15:31
(0) Не пользуйтесь конструкторами.
3 Звездец
 
07.11.24
15:33
20 лет на форуме и конструктор печатных форм? о май гад
4 Garykom
 
гуру
07.11.24
15:34
(3) Типа надо было СКД да?
5 YDen
 
07.11.24
15:35
(3) На клюшках сидел.
6 Волшебник
 
07.11.24
15:35
(3) Он в прошлом году v7 программировал
7 Волшебник
 
07.11.24
15:37
В Вашем программном коде процедура Печать(ТабДок, Ссылка) не вызывается.

А вторая строка, где могла бы быть эта ошибка, вообще закомментирована:

//Запрос.Параметры.Вставить("Ссылка", Ссылка);
8 Волшебник
 
07.11.24
15:38
Кто-то где-то врёт...
9 YDen
 
07.11.24
15:41
(8) При отладке закомметировал строки - на них ругань была.
10 Волшебник
 
07.11.24
15:42
(9) Покажите актуальный программный код и настоящий текст ошибки.
11 Волшебник
 
07.11.24
15:43
Как можно комментировать передачу важнейшего параметра в запрос?

12 Волшебник
 
07.11.24
15:45
Если человек это делает, значит он тупо Ёжик в тумане и программирование не для него.
13 YDen
 
07.11.24
15:47
(12) Если мы перешли на личность, то вы давно выгнали из себя этого ежика?
14 Stepashkin
 
07.11.24
15:47
Нужно в параметр запроса передать ссылку на документ. ЭтотОбъект.Ссылка, например.
15 Волшебник
 
07.11.24
15:49
(13) Ещё вякни что-то подобное и выпилю с форума.
16 YDen
 
07.11.24
15:49
(14) Сенк.
Можете в моем коде показать что куда вставить?
17 Мультук
 
гуру
07.11.24
15:51
(0)

1) Функция, даже в 7.7 что-от возвращает. А у вас - нет.

		ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;

	Возврат ТабДок;
КонецФункции



2) Вероятно 1С хочет всё же "Объект.Ссылка",  а не "хрен пойми откуда возьмись" реквизит "ссылка"

Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
18 Stepashkin
 
07.11.24
15:52
(16) см. (17) второе.
19 Волшебник
 
07.11.24
15:52
Я думаю, это сгенерированный программный код. Имеем дело с тупым ботом.
20 Stepashkin
 
07.11.24
15:53
(19) Как вы это определили?)
21 Волшебник
 
07.11.24
15:54
(20) Синтаксические ошибки, препятствующие компиляции и выполнению.
Боты генерят программы, а не запускают их.
22 Stepashkin
 
07.11.24
15:55
(21) А, вы имеете ввиду, что YDen использовал генерацию?
23 Волшебник
 
07.11.24
15:56
(22) Я ему про имя "ТабличнаяЧасть1" говорил ещё в прошлой ветке. Ему похуй
Простая задача - вывод реквизита документа в печатную форму#43
24 YDen
 
07.11.24
15:56
(19) Мимо. Код собран с разных сайтов. На данный момент его работа меня устраивает. Вывел его (клиента) в веб. Можно сохранять форму через 4 действия, хочу разобратся как это сделать в 2.
25 Волшебник
 
07.11.24
15:56
(24) Идите нахуй
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший