как программно добавлять строки(колонки) в таблицуЗначений? |
Я |
13.05.15 — 18:50
Привет всем, уважаемые. Прошу помочь. Управляемые формы.
Есть реквизит формы ТаблицаЗначений. Колонок у нее нет, будут добавляться программно в зависимости от типа добавляемых данных.
В процедуре формы получаю ТЗзапроса = Запрос.выполнить().выгрузить().
Как теперь мне ТЗзапроса запихать в таблицу значений формы (реквизит формы)?
1 — 13.05.15 — 18:51
Формы управляемые?
2 — 13.05.15 — 18:57
(1) Да
3 — 13.05.15 — 19:05
(2) Не узнаю вас в гриме.
ЗначениеВРеквизитФормы или долго и нудно добавлять построчно.
4 — 13.05.15 — 19:07
(3) Это не ТС, просто внимательно прочитал (0) «Привет всем, уважаемые. Прошу помочь. Управляемые формы. » )
5 — 13.05.15 — 19:08
(4) Ну вы батенька даете! надо же, внимательно читать то, что пишет топикстартер! Так и до чтения документации недалеко )
6 — 13.05.15 — 19:10
(5) И не лодырничать )
7 — 13.05.15 — 19:12
(3) Сделал так:
ЗначениеВРеквизитФормы(ТЗзапроса, «ТаблицаЗначенийФормы»);
В итоге на форме ничего не отображается… или отображается пустая таблица значений, без колонок и строк
8 — 13.05.15 — 19:13
Код условный. Поудалл наспех лишнее:
Процедура ДобавитьКолонки(ТабЗначений, ТаблицаФормы) НужныйТип = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0)); СтарыеКолонки = Новый Массив; НовыеКолонки = Новый Массив; ЖирныйШрифт = Новый Шрифт(,,Истина); ТекРеквизитыФормы = ПолучитьРеквизиты(ТаблицаФормы); Для каждого ТекРеквизит из ТекРеквизитыФормы Цикл Если Лев(ТекРеквизит.Имя, 1) = "_" Тогда СтарыеКолонки.Добавить(ТаблицаФормы+"."+ТекРеквизит.Имя); КонецЕсли; КонецЦикла; ОснГруппаЭлемент = Элементы.грПрограммныйхКОлонок; ШиринаКолонки = 3; ПрефиксРек = "_Рек_"; ТекКуб = ""; ТекНом = 1; Для Каждого Стр Из ТабЗначений Цикл ИмяРеквизита = ПрефиксФМ+ТекНомФормата; НовыйРеквизитТЧ = Новый РеквизитФормы(ИмяРеквизита, НужныйТип, ТаблицаФормы,, Истина); НовыеКолонки.Добавить(НовыйРеквизитТЧ); ТекНом = ТекНом+1; КонецЦикла; Пока ОснГруппаЭлемент.ПодчиненныеЭлементы.Количество()>0 цикл Элементы.Удалить(ОснГруппаЭлемент.ПодчиненныеЭлементы[0]); КонецЦикла; ИзменитьРеквизиты(НовыеКолонки,СтарыеКолонки); ТекНом = 1; Для Каждого Стр Из Таб Цикл ИмяРеквизитаРП = Стр.ИмяКолонки; ТекЭлемент = Элементы.Добавить(ИмяРеквизитаРП, Тип("ПолеФормы"),ТекГруппа); ТекЭлемент.Вид = ВидПоляФормы.ПолеВвода; ТекЭлемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право; ТекЭлемент.РастягиватьПоГоризонтали = Ложь; ТекЭлемент.БыстрыйВыбор = Истина; ТекЭлемент.ТолькоПросмотр = Истина; ТекЭлемент.ОтображатьВШапке = Ложь; ТекЭлемент.Заголовок = ""; ТекЭлемент.Шрифт = ЖирныйШрифт; ТекЭлемент.Ширина = ШиринаКолонки; ТекЭлемент.ОтображатьВПодвале = Ложь; ТекЭлемент.ПутьКДанным = ТаблицаФормы +"."+ИмяРеквизитаРП; ТекНом = ТекНом+1; КонецЦикла; КонецПроцедуры
9 — 13.05.15 — 19:13
(7) Так вам на форме отображается или залить данные в таблицу — реквизит формы? Это знаете ли, разные задачи.
10 — 13.05.15 — 19:15
(8) суть простая: сначала создаешь реквизиты формы программно, потом создаешь элементы формы по ним. Можно еще условное оформление создавать по желанию.
11 — 14.05.15 — 17:19
(9) вообще мне нужно отобразить на форме полученную ТЗзапроса, затем пользователь выберет нужную строку и программа начнет обрабатывать введенные пользователем данные дальше
12 — 14.05.15 — 17:20
(11) я полагал, чтобы отобразить на форме таблицу значений с некоторыми данными, то сначала эти данные (ТЗзапроса) нужно залить в таблицуЗначений-реквизит формы.
13 — 14.05.15 — 17:21
(12) Тебе уже пример дал, чего не хватает для реализации?
14 — 14.05.15 — 18:00
(12)
ТЗзапроса = Запрос.Выполнить().Выгрузить(); тут одна колонка ФизЛицо.
НужныйТип = Новый ОписаниеТипов(«СправочникСсылка.ФизическиеЛица»);
НовыеКолонки = Новый Массив;
НовыйРеквизитТЧ = Новый РеквизитФормы(«ФизЛицо», НужныйТип, ТаблицаЗначенийФормы,, Истина);
НовыеКолонки.Добавить(НовыйРеквизитТЧ);
ИзменитьРеквизиты(НовыеКолонки);
после этого кода выходит ошибка:
Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(НовыеКолонки);
по причине:
Недопустимый путь к реквизиту. Путь: «ДанныеФормыКоллекция»
15 — 14.05.15 — 18:01
ТаблицаЗначенийФормы — в кавычках нужно
16 — 14.05.15 — 18:06
(15). исправил. Теперь создается на форме новый реквизит с заголовком «ФизЛицо», тип = «ПолеВвода». А мне нужно в реквизит формы «ТаблицаЗначенийФормы» добавить новый реквизит(колонку) «ФизЛицо», заполнить ее значениями из строк ТЗзапроса и отобразить на форме
17 — 14.05.15 — 18:13
(16) значит, где то ошибка. В моем примере происходит именно создание колонок таблицы.
18 — 14.05.15 — 19:23
делаю так:
ТЗзапроса = Запрос.Выполнить().Выгрузить();
ЗначениеВРеквизитФормы(ТЗЗапроса , «ТаблицаЗначенийФормы»);
после этого ТаблицаЗначенийФормы.Количепство()=4, т.е. из ТЗЗапроса данные загрузились вроде как… Осталось как-то к этим данным обратиться и вывести их на форму. Как?
19 — 14.05.15 — 20:20
таблицу значений на форму вывел. А как ее вывести не после всех элементов, а в определенную группу на форме?
20 — 14.05.15 — 20:42
(19) если одна колонка, то тупо ее создать у реквизита, не программно.
21 — 14.05.15 — 20:44
(20) колонок будет несколько
22 — 14.05.15 — 20:46
если имена заранее известны, тупо все создайте и не парьтесь.
23 — 14.05.15 — 20:50
(22) не известны имена заранее
Drac0
24 — 14.05.15 — 21:15
(19) саму таблицу размести на форме заранее. К новым реквизитам создавай элементы формы в этом элементе таблицы.
Добрый день! Столкнулся с проблемой. Пишу обработчик считывания .csv файла, создание и заполнение на его основе таблицы и её вывод на форму.
Идея реализации такова:
- На форме создаётся реквизит и связанный с ним элемент формы (ТабРеквизит и ТабНаФорме соответственно)
- В коде создаётся таблица ТабВКоде
- Сначала заполняется ТабВКоде, после чего на её основе создаются колонки в ТабРеквизит
- Далее в ТабНаФорме создаются колонки таблицы из ТабВКоде
- После чего из ТабВКоде передаются данные в ТабРеквизит
Реквизит и соответствующий ему элемент формы имеют тип «Таблица Значений»
Но при отладке выскакивает ошибка:
Кликните здесь для просмотра всего текста
{Обработка.Файлики.Форма.Форма.Форма(73)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(НовыеРеквизиты, );
по причине:
Недопустимый путь к реквизиту. Путь: «ДанныеФормыКоллекция»
Не могли бы подсказать, что делать и в каком направлении двигаться, потому что с 1С пока что на «Вы»
Код процедуры загрузки файла:
1C | ||
|
Код процедуры считывания файла:
1C | ||
|
Привет всем, уважаемые. Прошу помочь. Управляемые формы. Есть реквизит формы ТаблицаЗначений. Колонок у нее нет, будут добавляться программно в зависимости от типа добавляемых данных. В процедуре формы получаю ТЗзапроса = Запрос.выполнить.выгрузить. Как теперь мне ТЗзапроса запихать в таблицу значений формы (реквизит формы)?
Не узнаю вас в гриме. ЗначениеВРеквизитФормы или долго и нудно добавлять построчно.
Это не ТС, просто внимательно прочитал «Привет всем, уважаемые. Прошу помочь. Управляемые формы. » )
Ну вы батенька даете! надо же, внимательно читать то, что пишет топикстартер! Так и до чтения документации недалеко )
Сделал так: ЗначениеВРеквизитФормы(ТЗзапроса, «ТаблицаЗначенийФормы»); В итоге на форме ничего не отображается… или отображается пустая таблица значений, без колонок и строк
Код условный. Поудалл наспех лишнее:
Так вам на форме отображается или залить данные в таблицу — реквизит формы? Это знаете ли, разные задачи.
суть простая: сначала создаешь реквизиты формы программно, потом создаешь элементы формы по ним. Можно еще условное оформление создавать по желанию.
вообще мне нужно отобразить на форме полученную ТЗзапроса, затем пользователь выберет нужную строку и программа начнет обрабатывать введенные пользователем данные дальше
я полагал, чтобы отобразить на форме таблицу значений с некоторыми данными, то сначала эти данные (ТЗзапроса) нужно залить в таблицуЗначений-реквизит формы.
Тебе уже пример дал, чего не хватает для реализации?
ТЗзапроса = Запрос.Выполнить.Выгрузить; тут одна колонка ФизЛицо. после этого кода выходит ошибка: Ошибка при вызове метода контекста (ИзменитьРеквизиты) ИзменитьРеквизиты(НовыеКолонки); по причине: Недопустимый путь к реквизиту. Путь: «ДанныеФормыКоллекция»
ТаблицаЗначенийФормы — в кавычках нужно
. исправил. Теперь создается на форме новый реквизит с заголовком «ФизЛицо», тип = «ПолеВвода». А мне нужно в реквизит формы «ТаблицаЗначенийФормы» добавить новый реквизит(колонку) «ФизЛицо», заполнить ее значениями из строк ТЗзапроса и отобразить на форме
значит, где то ошибка. В моем примере происходит именно создание колонок таблицы.
делаю так: после этого ТаблицаЗначенийФормы.Количепство=4, т.е. из ТЗЗапроса данные загрузились вроде как… Осталось как-то к этим данным обратиться и вывести их на форму. Как?
таблицу значений на форму вывел. А как ее вывести не после всех элементов, а в определенную группу на форме?
если одна колонка, то тупо ее создать у реквизита, не программно.
если имена заранее известны, тупо все создайте и не парьтесь.
не известны имена заранее
саму таблицу размести на форме заранее. К новым реквизитам создавай элементы формы в этом элементе таблицы.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Войти или зарегистрироваться
8.х Не могу обратиться к реквизиту при программном создании
Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем skv_79, 31 май 2017.
-
0/5,
Голосов: 0
-
Offline
skv_79
Опытный в 1С- Регистрация:
- 10 июл 2013
- Сообщения:
- 379
- Симпатии:
- 6
- Баллы:
- 29
Добрый день!
Создаю реквизит, потом поле формы, а дальше пытаюсь установить значение реквизита через Выполнить() и выдается ошибка: «Недопустимый путь к реквизиту». Через табло тоже обращаюсь к созданному реквизиту: «Поле объекта недоступно для записи».Код:ДобавляемыеРеквизиты = Новый Массив; МассивТипов = новый Массив; МассивТипов.Добавить(Тип("Строка")); Реквизит = Новый РеквизитФормы("Картинка"+Строка(Итер),новый ОписаниеТипов(МассивТипов),, "Картинка"+Строка(Итер), Истина); ДобавляемыеРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); ЭлементФормы = ЭтаФорма.Элементы.Добавить("Картинка"+Строка(Итер), Тип("ПолеФормы"), ЭтаФорма); ЭлементФормы.ПутьКДанным = "Картинка"+Строка(Итер); ЭлементФормы.Вид = ВидПоляФормы.ПолеКартинки; МояКартинка = Новый Картинка(ФайлНайденный.ПолноеИмя); Адрес = ПоместитьВоВременноеХранилище(МояКартинка); Выполнить("Картинка"+Строка(Итер)+" = Адрес"); Выполнить("Элементы.Картинка"+Строка(Итер)+".РазмерКартинки = РазмерКартинки.АвтоРазмер");
skv_79,
31 май 2017
#1 -
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.156
- Симпатии:
- 217
- Баллы:
- 104
К программно добавленным реквизитам формы обращаться необходимо через ЭтаФорма (в последних версиях платформы ЭтотОбъект).
Код:ЭтотОбъект["Картинка" + Строка(Итер)] = Адрес;
Последнее редактирование: 31 май 2017
1cUserAndrew,
31 май 2017
#2
skv_79 нравится это.
-
Offline
skv_79
Опытный в 1С- Регистрация:
- 10 июл 2013
- Сообщения:
- 379
- Симпатии:
- 6
- Баллы:
- 29
Благодарю!
skv_79,
1 июн 2017
#3
- Похожие темы
-
7.7
как обратиться к периодическому реквизиту
She,
17 мар 2011, в разделе: Конфигурирование на платформе «1С:Предприятие 7.7»
- Ответов:
- 1
- Просмотров:
- 1.135
- Requin
- 17 мар 2011
-
8.х
Глюки при программном создании документов.
BuhTorZar,
27 апр 2012, в разделе: Установка платформы «1С:Предприятие 8»
- Ответов:
- 9
- Просмотров:
- 1.252
- uza
- 28 апр 2012
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
-
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
-
- Искать только в этой теме
- Искать только в этом разделе
- Отображать результаты в виде тем
-
Быстрый поиск
- Последние сообщения
Больше…
Здравствуйте Уважаемые! В 1С я дилетант, могу конечно резерв баз сделать, обмен по инструкции настроить возможно, что то еще.
На работе установлена 1С: Предприятие 8.3 (8.3.8.1964)/Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.43.263).
Сегодня обнаружилась ошибка (Недопустимый путь к реквизиту. Путь: «Объект. Физические лица»), при попытке изменить, или просто зайти в карточку контрагента, при проведении документов ругается на не установленный склад, хотя склад один основной и он прописан.
Что было сделано, с конфигуратора проверил базу, так же проверил базу через утилиту chdbfl, ошибки были, они были исправлены, но результата не дало.
До этого дня была обновлена конфигурация, сама оболочка, сделан плановый обмен (выгружен и загружен период порядка 2-х месяцев) с УТ 10.3 (базовая) редакция (10.3.37.4).
Бэкап до обмена работает прекрасно, впрочем, как и все остальное, это уже при том, что до обмена все было обновлено до свежих релизов.
Вопрос, что ей нужно? И как это исправить чтобы на бэкап не переходить, уж больно много она сегодня в этой базе работы выполнила!
ps Понимаю, что, что то прилетело с обменом, но как? Обмен работал всегда прекрасно. Бухгалтер в панике, я в печали, жду ваших мыслей.
С Уважением!
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
- Pick a username
- Email Address
- Password
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;