Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Добрый день, уважаемые форумчани. Прошу помощи 1С:Предприятие 8.3 (8.3.15.1869), "Управление производственным предприятием для Украины", редакция 1.3 (1.3.66.1) , формы обычные (не управляемые)
вопрос
был отчет каталог номенклатуры, который работал, но пользователю не подходил , так как пользователь захотел сам выбирать перечень характеристик для отображения в каталоге, тем самым уменьшая или увеличивая размер секции -строки каталога (т.е. чем меньше характеристик отображается по номенклатуре с права от картинки номенклатуры, тем больше строк каталога (вместе с картинкой) вмещается на лист)
[необходимо зарегистрироваться для просмотра ссылки]
согласно пожеланиям пользователя получается [необходимо зарегистрироваться для просмотра ссылки]
но такой макет не работает.
проблемма не виден параметр ИмяДопПоля и ЗначениеДопПоля
Задача сделать "динамический макет, чтобы пользователь сам управлял наполняемостью характеристик и величиной строки секции каталога" новый - не рабочий код
ТабДок = Новый ТабличныйДокумент; ТабДок.Очистить();
Для каждого свойства_мас из строка[0].свойства Цикл //1 єлемент левый Если свойства_мас.выбор=Истина Тогда ОбластьПараметр1.Параметры.ИмяДопПоля=свойства_мас.наименование; ОбластьПараметр1.Параметры.ЗначениеДопПоля=свойства_мас.значение; ТабДок.Вывести(ОбластьПараметр1); КонецЕсли;
конеццикла;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ХранилищеДополнительнойИнформации.Ссылка КАК Ссылка, |ХранилищеДополнительнойИнформации.ВерсияДанных КАК ВерсияДанных, |ХранилищеДополнительнойИнформации.ПометкаУдаления КАК ПометкаУдаления, |ХранилищеДополнительнойИнформации.Наименование КАК Наименование, |ХранилищеДополнительнойИнформации.ВидДанных КАК ВидДанных, |ХранилищеДополнительнойИнформации.ИмяФайла КАК ИмяФайла, |ХранилищеДополнительнойИнформации.Объект КАК Объект, |ХранилищеДополнительнойИнформации.Хранилище КАК Хранилище, |ХранилищеДополнительнойИнформации.ТекстФайла КАК ТекстФайла, |ХранилищеДополнительнойИнформации.Предопределенный КАК Предопределенный, |ХранилищеДополнительнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ |Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации |ГДЕ |ХранилищеДополнительнойИнформации.Ссылка = &ИмяФайла";
Запрос.УстановитьПараметр("ИмяФайла", строка[0].сылка_картинка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Изображение1 = Выборка.Хранилище.Получить(); КонецЦикла;
Для каждого свойства_мас из строка[1].свойства Цикл //1 єлемент правій Если свойства_мас.выбор=Истина Тогда ОбластьПараметр1.Параметры.ИмяДопПоля=свойства_мас.наименование; ОбластьПараметр1.Параметры.ЗначениеДопПоля=свойства_мас.значение; ТабДок.Присоединить(ОбластьПараметр2);
КонецЕсли; конеццикла;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ХранилищеДополнительнойИнформации.Ссылка КАК Ссылка, |ХранилищеДополнительнойИнформации.ВерсияДанных КАК ВерсияДанных, |ХранилищеДополнительнойИнформации.ПометкаУдаления КАК ПометкаУдаления, |ХранилищеДополнительнойИнформации.Наименование КАК Наименование, |ХранилищеДополнительнойИнформации.ВидДанных КАК ВидДанных, |ХранилищеДополнительнойИнформации.ИмяФайла КАК ИмяФайла, |ХранилищеДополнительнойИнформации.Объект КАК Объект, |ХранилищеДополнительнойИнформации.Хранилище КАК Хранилище, |ХранилищеДополнительнойИнформации.ТекстФайла КАК ТекстФайла, |ХранилищеДополнительнойИнформации.Предопределенный КАК Предопределенный, |ХранилищеДополнительнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ |Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации |ГДЕ |ХранилищеДополнительнойИнформации.Ссылка = &ИмяФайла";
Запрос.УстановитьПараметр("ИмяФайла", строка[1].сылка_картинка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Изображение2 = Выборка.Хранилище.Получить(); КонецЦикла;
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
sava1 @ Сегодня, 18:19
, не знаю как совместить в макете область картинки , которая содержит контейнер картинки, и построчный вывод параметров (число которых задаёт пользователь). я понимаю что макет на картинке 2 не верный, но как его можно было бы сделать рабочим?
проблемма не виден параметр ИмяДопПоля и ЗначениеДопПоля
Для сч =1 по количествоСвойств // виводим 1ю секцию // присоединяем вторую // заполняем параметры во 2й секции ...... конеццикла
// получаем координаты 1й секции верх, низ // получаем область, где будет лежать рисунок (1я секция, верх, низ) // полученная область.Объединить - получаем неприрывную область // вычисляем высоту этой области в пикселях // высоту рисунка делаем чуть меньше высоты области // задаем параметры масштабирования рисунка
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4564 раз
Рейтинг: 3693.4
Цитата(Svetas_2024 @ 03.01.24, 18:01)
Vofka - можете хоть что-то подсказать.
Мне сложно подсказать (и думаю, что не только мне), т.к. вы показываете много кода, который трудно понять. Не потому, что он плохой или неправильный, а потому что его много и это часть конкретно вашего контекста. Попробуйте при возникновении проблемы воспроизвести ее на каком-то абстрактном маленьком примере. Шансы получить ответ в таком случае сильно возрастают.
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Vofka а как можно получить координаты области? и "полученная область.Объединить"
Цитата
// получаем координаты 1й секции верх, низ // получаем область, где будет лежать рисунок (1я секция, верх, низ) // полученная область.Объединить - получаем неприрывную область // вычисляем высоту этой области в пикселях // высоту рисунка делаем чуть меньше высоты области // задаем параметры масштабирования рисунка
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
sava1 @ Вчера, 18:58
,
Цитата
Для сч =1 по количествоСвойств // виводим 1ю секцию // присоединяем вторую // заполняем параметры во 2й секции ...... конеццикла
// получаем координаты 1й секции верх, низ // получаем область, где будет лежать рисунок (1я секция, верх, низ) // полученная область.Объединить - получаем неприрывную область // вычисляем высоту этой области в пикселях // высоту рисунка делаем чуть меньше высоты области // задаем параметры масштабирования рисунка
Для каждого строка из аа Цикл //цикл по строкам массива элементов каталога
Запрос = "" .... Запрос.УстановитьПараметр("ИмяФайла", строка[0].сылка_картинка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Изображение1 = Выборка.Хранилище.Получить(); КонецЦикла;
ОбластьКартинка11.Рисунки.Картинка1.Картинка = Изображение1; Запрос = "" .... Запрос.УстановитьПараметр("ИмяФайла", строка[1].сылка_картинка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Изображение2 = Выборка.Хранилище.Получить(); КонецЦикла;
ОбластьКартинка22.Рисунки.Картинка2.Картинка = Изображение2; Для каждого свойства_мас из строка[0].свойства Цикл // элемент левый каталога Если свойства_мас.выбор=Истина Тогда ОбластьПараметр1.Параметры.ИмяДопПоля=свойства_мас.наименование; ОбластьПараметр1.Параметры.ЗначениеДопПоля=свойства_мас.значение; ТабДок.Вывести(ОбластьПараметр1); ТабДок.Присоединить(ОбластьКартинка11);
КонецЕсли; конеццикла;
Для каждого свойства_мас из строка[1].свойства Цикл // элемент правый каталога Если свойства_мас.выбор=Истина Тогда ОбластьПараметр2.Параметры.ИмяДопПоля=свойства_мас.наименование; ОбластьПараметр2.Параметры.ЗначениеДопПоля=свойства_мас.значение; ТабДок.Присоединить(ОбластьПараметр2); ТабДок.Присоединить(ОбластьКартинка22);
КонецЕсли; конеццикла; конеццикла;
ТабДок.Вывести(ТабДок); ТабДок.Показать();
Svetas_2024 @ Сегодня, 20:49
, картинка получилась за каждым параметром а должно быть как на 1 рисунке (как было) - большая картинка, а справа параметры и так в 2 столбика - правый и левый элемент каталога. А оно пошло вообще не так 1 цикл работает вниз по строкам 2 цикл в право по столбикам а было раньше синхронно вниз 2 цикла... вообще не понимаю.
писАл // получаем область, где будет лежать рисунок (1я секция, верх, низ) // полученная область.Объединить - получаем неприрывную область // вычисляем высоту этой области в пикселях // высоту рисунка делаем чуть меньше высоты области
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Svetas_2024 @ Вчера, 20:58
, как после объединения областей обратиться к картинке? Объединённая область по координатам не видит параметра Рисунки. Хотя до объединения каждая область выводила Рисунки
ТабДок.Вывести(ОбластьШапка1);
НомерСтроки=5;
Для каждого строка из аа Цикл
Запрос = Новый Запрос; Запрос.Текст =;
Запрос.УстановитьПараметр("ИмяФайла", строка[0].сылка_картинка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Изображение1 = Выборка.Хранилище.Получить(); КонецЦикла;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); ОбластьКарточки1 =ТабДок.Область(НомерСтроки_н+1,1,НомерСтроки_к,3); ОбластьКарточки1.Обвести(Линия, Линия, Линия, Линия);
Рисунок1 = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок1.Картинка = Изображение1; Рисунок1.Расположить(ОбластьКартинка01); если Рисунок1.Высота>ВысотаРисунка тогда Рисунок1.Высота=ВысотаРисунка; конецесли; если Рисунок1.Ширина>ШиринаРисунка тогда Рисунок1.Ширина=ШиринаРисунка; конецесли;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); ОбластьКарточки2 =ТабДок.Область(НомерСтроки_н+1,4,НомерСтроки_к,6); ОбластьКарточки2.Обвести(Линия, Линия, Линия, Линия);
Рисунок2 = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок2.Картинка = Изображение2; Рисунок2.Расположить(ОбластьКартинка02); если Рисунок2.Высота>ВысотаРисунка тогда Рисунок2.Высота=ВысотаРисунка; конецесли; если Рисунок2.Ширина>ШиринаРисунка тогда Рисунок2.Ширина=ШиринаРисунка; конецесли;
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(sava1 @ 03.01.24, 18:58)
Для сч =1 по количествоСвойств // виводим 1ю секцию // присоединяем вторую // заполняем параметры во 2й секции ...... конеццикла
// получаем координаты 1й секции верх, низ // получаем область, где будет лежать рисунок (1я секция, верх, низ) // полученная область.Объединить - получаем неприрывную область // вычисляем высоту этой области в пикселях // высоту рисунка делаем чуть меньше высоты области // задаем параметры масштабирования рисунка
Больше спасибо, скажите, только , пожалуйста, куда тут пристроить тут
Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда
а то рисунок на стыке страниц разрывается на части... Заранее спасибо.
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); ОбластьКарточки1 =ТабДок.Область(НомерСтроки_н+СчетчикШапки+1,1,НомерСтроки_к+СчетчикШапки,3); ОбластьКарточки1.Обвести(Линия, Линия, Линия, Линия);
Рисунок1 = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок1.Картинка = Изображение1; Рисунок1.Расположить(ОбластьКартинка01); если Рисунок1.Высота>ВысотаРисунка тогда Рисунок1.Высота=ВысотаРисунка; конецесли; если Рисунок1.Ширина>ШиринаРисунка тогда Рисунок1.Ширина=ШиринаРисунка; конецесли;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); ОбластьКарточки2 =ТабДок.Область(НомерСтроки_н+1+СчетчикШапки,4,НомерСтроки_к+СчетчикШапки,6); ОбластьКарточки2.Обвести(Линия, Линия, Линия, Линия);
Рисунок2 = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок2.Картинка = Изображение2; Рисунок2.Расположить(ОбластьКартинка02); если Рисунок2.Высота>ВысотаРисунка тогда Рисунок2.Высота=ВысотаРисунка; конецесли; если Рисунок2.Ширина>ШиринаРисунка тогда Рисунок2.Ширина=ШиринаРисунка; конецесли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!