|   |   | 
| 
 | Простая задача - вывод реквизита документа в печатную форму | ☑ | ||
|---|---|---|---|---|
| 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) то что он хотел он добился. Код хоть и кривой, но рабочий     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |