|
Простая задача - вывод реквизита документа в печатную форму slafor, Мультук, osa1C, Доминошник, Смотрящий, Ногаминебить, СвинТуз, YDen, privetik, mikecool, alkras, zzz_zzz_zzz, Волшебник, Флориан, Eiffil123, Хряк, Группа неравнодушных, Галахад, skysamum, svmix, МаленькийВопросик, JohnGilbert, fbear, alexxx961503, DiMel_77, Irbis, Шурик71, KJlag, ass1c, АгентБезопаснойНацио, DimR_71, Prog_man, yurikmellon2, saaken, SleepyHead, глазковыколупыватель, mmg, Fynjy, arsik, Климов Сергей, PLUT, MWWRuza, boozin, formista2000, ГдеСобакаЗарыта, Ivanich
| ☑ | ||
---|---|---|---|---|
0
YDen
01.10.24
✎
16:12
|
Здравствуйте.
Подскажите пожалуйста. В свое время писал на 7.7, потом большой перерыв был. Сейчас сел за 8.3. Задача простая, но не вдупляю. Заведено Перечисление.КалендарьДень, в нем установлены значения (1, 2 , 3... 10). Заведен документ. В его реквизитах заведен объект НомерДень, имеющий тип ПеречислениеСсылка.КалендарьДень. В форму документа добавлено поле, путькданным Объект.КалендарьДень. Здесь все ок, в форме документа можно выбрать в нужном поле значение из перечисления (1, 2, 3...). Нужно, чтобы в печатной форме выводилось значение этого поля. Что сделал. В печатной форме в ячейку добавил Заполнение Параметр с параметром КалендарьДень. Запускаю печатную форму - нужная ячейка пуста. Плиз, где моя ошибка? благодарю |
|||
1
mikecool
01.10.24
✎
16:13
|
надо заполнить значение параметра кодом
посмотри, как рядом написано |
|||
2
YDen
01.10.24
✎
16:18
|
(1) Конфигурация с нуля написана. Нет образца.
|
|||
3
Волшебник
01.10.24
✎
16:19
|
(2) Ну написана же
|
|||
4
Волшебник
01.10.24
✎
16:19
|
Почему дней всего 10 ?
|
|||
5
YDen
01.10.24
✎
16:21
|
(4) Взял простую задачу, чтобы понять 8.3. Я не студент :)
Это десятидневное меню (столовая). |
|||
6
YDen
01.10.24
✎
16:23
|
(3) Вывел в печатную форму реквизит Организация, имеющий тип Строка. Но с другим реквизитом с типом Перечисление туплю.
|
|||
7
formista2000
01.10.24
✎
16:23
|
(5) А если в месяце 31 день или 28?
|
|||
8
Волшебник
01.10.24
✎
16:24
|
(5) Заведите справочник "Меню" с реквизитом "НомерДня"
|
|||
9
YDen
01.10.24
✎
16:24
|
Может так понятнее :)
|
|||
10
YDen
01.10.24
✎
16:26
|
(7) Столовая, сегодня меню первого дня, завтра второго, послезавтра 3 .... десятого дня и потом по новой 1, 2, 3...
|
|||
11
DiMel_77
01.10.24
✎
16:28
|
(0) https://its.1c.ru/db/metod8dev/content/2466/hdoc
Как получить имя значения перечисления заданное в метаданных? Чтобы определить имя значения перечисления заданное в метаданных, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя. Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления. Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления. Например: ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя; ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления); ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; |
|||
12
Климов Сергей
01.10.24
✎
16:29
|
(0) Процедура печати документа должна в качестве параметра получить ссылку на печатаемый документ. Или массив ссылок, если используется БСП. Предположу, что БСП не используется. Тогда в коде должна быть конструкция примерно такого вида:
ОбластьОтчета.Параметры.НомерДень = ДокСсылка.НомерДень; |
|||
13
Prog_man
01.10.24
✎
16:30
|
(0) покажи уже код где заполняются параметры
|
|||
14
YDen
01.10.24
✎
16:32
|
(8) Сделал, изменил на него ссылку в реквизите документа. Заполнил справочник. Выбираю нужный элемент его в форме документа - ок. В печатной форме пустая ячейка.
|
|||
15
Волшебник
01.10.24
✎
16:33
|
(9) Нет скриншота
|
|||
16
YDen
01.10.24
✎
16:33
|
Я пробую по лекалам версии 7.7. В 8.3 это не взлетает.
|
|||
17
YDen
01.10.24
✎
16:34
|
(15)
|
|||
18
Волшебник
01.10.24
✎
16:36
|
(17) А что такое "Выход"?
|
|||
19
YDen
01.10.24
✎
16:38
|
(18) Масса. Числовые значения в полях - от фонаря.
|
|||
20
Смотрящий
01.10.24
✎
16:39
|
Покаж что у тебя между
МакетОбласть = Макет.ПолучитьОбласть("Шапка"); .... и ... ТабличныйДокумент.Вывести(МакетОбласть); |
|||
21
YDen
01.10.24
✎
16:39
|
(18)
|
|||
22
Ногаминебить
01.10.24
✎
16:40
|
Строка(КалендарьДень) не взлетает?
|
|||
23
YDen
01.10.24
✎
16:41
|
(20) В модуле документа это:
// служебная функция получения значения реквизита объекта (выполняется на сервере) &НаСервере Функция ЗначениеРеквизита(Объект,ИмяРеквизита); Возврат Объект[ИмяРеквизита]; сообщить("вася"); КонецФункции // обработчик события "ПриИзменении" поля "Контрагент" в табличном поле "Контрагенты" &НаКлиенте Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент) ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные; //сообщить("ТекДанные"); ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Рецепт,"Блюдо"); ТекДанные.Выход = ЗначениеРеквизита(ТекДанные.Рецепт,"Выход"); ТекДанные.Цена = ЗначениеРеквизита(ТекДанные.Рецепт,"Цена"); ТекДанные.Калорийность = ЗначениеРеквизита(ТекДанные.Рецепт,"Калорийность"); ТекДанные.Белки = ЗначениеРеквизита(ТекДанные.Рецепт,"Белки"); ТекДанные.Жиры = ЗначениеРеквизита(ТекДанные.Рецепт,"Жиры"); ТекДанные.Углеводы = ЗначениеРеквизита(ТекДанные.Рецепт,"Углеводы"); //ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда"); КонецПроцедуры // служебная процедура для заполнения колонки "ИНН" табличного поля "Контрагенты" &НаСервере Процедура ОбновитьДанныеКолонкиБлюдо() Запрос = Новый Запрос( "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТабличнаяЧасть1.Ссылка КАК Контрагент, | ТабличнаяЧасть1.НазваниеБлюда |ИЗ | Справочник.НомерРецепта КАК Блюдо |ГДЕ | НомерРецепта.Ссылка В(&СписокБлюд)" ); сообщить("вася"); Запрос.УстановитьПараметр("СписокБлюд",Объект.НомерРецепта.Выгрузить().ВыгрузитьКолонку("НазваниеБлюда")); Выборка = Запрос.Выполнить().Выбрать(); Для Каждого Стр Из Объект.НомерРецепта Цикл Если Выборка.НайтиСледующий(Стр.Блюдо,"НазваниеБлюда") Тогда Стр.Блюдо = Выборка.НазваниеБлюда; Иначе Стр.Блюдо = ""; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) ОбновитьДанныеКолонкиБлюдо(); сообщить("вася"); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) ОбновитьДанныеКолонкиБлюдо(); сообщить("вася"); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Объект.Ссылка.Пустая() Тогда Объект.Организация = Константы.Организация.Получить(); КонецЕсли; КонецПроцедуры &НаСервере Процедура СохранитьНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ТабДок.Вывести(ОбластьМакета); //МестоположениеФайла = "G:\ProverkaZapisi\Тест.pdf"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.PDF); //Запись в Excel МестоположениеФайла = "C:\Тест.XLSX"; ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.XLSX); Сообщить("Вася"); //Запись в Word //МестоположениеФайла = "G:\ProverkaZapisi\Тест.docx"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.DOCX); //Прочие форматы //ТипФайлаТабличногоДокумента поддерживает множество форматов //html5, mxl, txt, ods, можете поэксперементировать с различными форматами Сообщить("Файл успешно сохранен"); КонецПроцедуры &НаСервере Процедура ОбработкаДвижений(Отказ, Режим) СохранитьНаСервере() КонецПроцедуры ////&НаКлиенте ////Процедура ПриОткрытии() //Объект.Организация = СокрЛП(Константы.Организация.Получить()); // //Сообщить("Форма обновилась"); //КонецПроцедуры ////chatgpd //&НаКлиенте //Процедура РецептПриИзменении(Элемент, Событие) // // Получаем ссылку на выбранный элемент справочника // Справочник = Элемент.СправочникСсылка("НомерРецепта").ВыбранныйЭлемент(); // // // Получаем необходимые значения из выбранного элемента справочника // Блюдо = Справочник.Блюдо; // Выход = Справочник.Выход; // Цена = Справочник.Цена; // Калорийность = Справочник.Калорийность; // Белки = Справочник.Белки; // Жиры = Справочник.Жиры; // Углеводы = Справочник.Углеводы; // // // Устанавливаем значения полученных полей в соответствующие реквизиты ТЧ документа // Элемент.НазваниеБлюда = Блюдо; // Элемент.Выход = Выход; // Элемент.Цена = Цена; // Элемент.Калорийность = Калорийность; // Элемент.Белки = Белки; // Элемент.Жиры = Жиры; // Элемент.Углеводы = Углеводы; //КонецПроцедуры |
|||
24
YDen
01.10.24
✎
16:43
|
(22) Если вы про это, то видна:
|
|||
25
Смотрящий
01.10.24
✎
16:45
|
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметр.КалендарьДень = "нихрена"; ТабДок.Вывести(ОбластьМакета); |
|||
26
Доминошник
01.10.24
✎
16:47
|
(23) Всё же - после того, как мы получили область и перед тем, как её вывести - хорошо бы заполнить параметры.
|
|||
27
Волшебник
01.10.24
✎
16:47
|
(23) //chatgpd
??? |
|||
28
YDen
01.10.24
✎
16:48
|
(25) "нихрена" не выводит.
|
|||
29
YDen
01.10.24
✎
16:49
|
(27) Я С полгода назад пробовал нейронку :)
|
|||
30
Смотрящий
01.10.24
✎
16:49
|
.Параметры.
пардон |
|||
31
YDen
01.10.24
✎
16:51
|
(30) Пусто.
Процедура СохранитьНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.КалендарьДень = "нихрена"; ТабДок.Вывести(ОбластьМакета); //МестоположениеФайла = "G:\ProverkaZapisi\Тест.pdf"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.PDF); //Запись в Excel МестоположениеФайла = "C:\Тест.XLSX"; ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.XLSX); Сообщить("Вася"); //Запись в Word //МестоположениеФайла = "G:\ProverkaZapisi\Тест.docx"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.DOCX); //Прочие форматы //ТипФайлаТабличногоДокумента поддерживает множество форматов //html5, mxl, txt, ods, можете поэксперементировать с различными форматами Сообщить("Файл успешно сохранен"); КонецПроцедуры |
|||
32
Доминошник
01.10.24
✎
16:53
|
Вообще, судя по тексту в (23) и картинке в (28) - либо не та база, либо не тот документ...
|
|||
33
Ногаминебить
01.10.24
✎
16:54
|
Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет");
А можно вот именно этот макет посмотреть? А то на картинке другой, который в документе. |
|||
34
YDen
01.10.24
✎
16:55
|
(32) У меня он единственный документ.
|
|||
35
YDen
01.10.24
✎
16:57
|
(33) так у меня конфигурация из нескольких справочников, одного перечисления и документа. Никаких обработок.
|
|||
36
YDen
01.10.24
✎
17:01
|
В столовой на каждый день формируется меню. Его нужно выложить на сайт в xlsx формате по определенному шаблону (именно поэтому есть поле не Масса, а Выход - требования.
Вручную задолбался править эту таблицу после рук завстоловой. Сделал на 7.7 простую конфигурацию. Но 7.7 умеет только xls, в xlsx через костыли - проще руками. Поэтому решил с нуля на 8.3. |
|||
37
Доминошник
01.10.24
✎
17:02
|
(35) Тогда что делает строка:
Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет");
??? Вообще - базу в облако, ссылку сюда... Иначе я, к примеру, вообще не вижу связи показываемых "картинок" и "текстов" |
|||
38
osa1C
01.10.24
✎
17:02
|
(35) Как же ты берешь макет из обработки, которой нет?
Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет"); Тут обращение к обработке ТабличныйДокументСохранитьВPDF |
|||
39
YDen
01.10.24
✎
17:06
|
||||
40
Волшебник
01.10.24
✎
17:07
|
Надо переделать структуру конфигурации
|
|||
41
Доминошник
01.10.24
✎
17:09
|
(39) Печать - в модуле менеджера твоего документа
|
|||
42
YDen
01.10.24
✎
17:12
|
(41) Сюда вставить?
|
|||
43
Волшебник
01.10.24
✎
17:13
|
Переименуйте ТабличнаяЧасть1, наконец... В глазах рябит
|
|||
44
Доминошник
01.10.24
✎
17:15
|
(42) Это всё уже есть в модуле менеджера твоего документа!
Видно - и запрос, которым получаются данные, далее вставляемые в макет, и заполнение параметров макета.
|
|||
45
osa1C
01.10.24
✎
17:14
|
(42) Это модуль формы, а тебе говорят про модуль менеджера
|
|||
46
СвинТуз
01.10.24
✎
17:16
|
(0)
Что видно по вашему коду? Вы на 7.7 с лету стали писать? Может не стоит морочить голову благородным донам и прочесть букварь по 8.3? Радченко есть в свободном доступе, особенно при проплаченном ИТС. |
|||
47
СвинТуз
01.10.24
✎
17:16
|
||||
48
YDen
01.10.24
✎
17:21
|
(41) Гугл в помощь, нашел этот менеджер.
В печатной форме в нужном поле пусто.
|
|||
49
YDen
01.10.24
✎
17:23
|
(46) Я же не требую помощи.
Если есть желание помочь - приму. |
|||
50
Доминошник
01.10.24
✎
17:28
|
(48) Если последнее предложение "В печатной форме в нужном поле пусто." это вопрос, то ответ - "Да, пусто!"
Что сделать, чтобы не было пусто? Достаточно изменить запрос. Как? Ну, хотя бы с этим-то нужно самому разобраться (или заново запустить конструктор) |
|||
51
YDen
01.10.24
✎
17:30
|
(50) +
|
|||
52
YDen
01.10.24
✎
17:31
|
(50) Благодарю.
|
|||
53
YDen
01.10.24
✎
17:31
|
(43) Благодарю.
|
|||
54
YDen
01.10.24
✎
17:31
|
(45) Благодарю.
|
|||
55
osa1C
01.10.24
✎
17:33
|
(49) тут сложно чем-то помочь. Потому что, уж простите, неправильно всё, или почти всё. Конкретно сейчас вам нужно запрос исправить, но для этого надо понимать язык запросов 1С 8х
|
|||
56
YDen
01.10.24
✎
17:34
|
Ок, начинаю понимать.
Удачного дня\вечера всем.
|
|||
57
СвинТуз
01.10.24
✎
17:46
|
(56)
Если коротко, то сервер сам по себе ничего не знает о контексте формы. Может не знать. ____________________________________ В модуле документа это: (выполняется на сервере) &НаСервере Функция Не ожиданно. |
|||
58
СвинТуз
01.10.24
✎
17:47
|
+ Параметры в выводимой области нужно заполнять ручками.
Контекст табличного документа живет сам по себе. |
|||
59
СвинТуз
01.10.24
✎
17:50
|
То что Вы там что-то на форме изобразили со своим именем,
это одна история. Параметры в выводимой области с теми же именами, это уже другая история. Если хотите, то разные объекты, разных классов. Хотя куда им? |
|||
60
СвинТуз
01.10.24
✎
17:51
|
Прочтите букварь ...
|
|||
61
osa1C
01.10.24
✎
17:56
|
(58) то что он хотел он добился. Код хоть и кривой, но рабочий
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |