|
Необходимо заполнить таблицу значений программно с программно добавленными колонками 🠗 (Волшебник 12.03.2025 16:20) | ☑ | ||
---|---|---|---|---|
0
dkalin
12.03.25
✎
15:54
|
Добрый день!Необходимо заполнить таблицу значений программно с программно добавленными колонками.Я добавила рекизит формы Таблицазначений.Программно добавила колонки и описала их тип в процедуре
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Не Объект.пн.Пустая() Тогда МассивТипа = Новый Массив; МассивТипа.Добавить(Тип("ТаблицаЗначений")); ОписаниеТипа = Новый ОписаниеТипов(МассивТипа); МассивРеквизитовФормы = Новый Массив; МассивРеквизитовФормы.Добавить(Новый РеквизитФормы("ТЗ", ОписаниеТипа, "", "Т")); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Номер",Новый ОписаниеТипов("Число"),"№",3); ТЗ.Колонки.Добавить("Код",Новый ОписаниеТипов("Строка"),"Код",9); ТЗ.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"),"Номенклатура",28); ТЗ.Колонки.Добавить("Цена",Новый ОписаниеТипов("Число"),"Цена",7); ЗначениеВРеквизитФормы(ТЗ, "Тп"); КонецПроцедуры Теперь мне нужно на форме выбрать приходную накладную и заполнить эти колонки данными из приходнойнпкладной пишу &НаСервере Процедура пнПриИзмененииНаСервере() Если Не Объект.пн.Пустая() Тогда ТДп = Новый ТаблицаЗначений; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяЗапасы.Номенклатура КАК Номенклатура, | ПриходнаяНакладнаяЗапасы.Номенклатура.Код КАК НоменклатураКод |ИЗ | Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Строка = ТДп.Добавить(); Строка.Код = ВыборкаДетальныеЗаписи.НоменклатураКод; Строка.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; КонецЦикла; ЗначениеВРеквизитФормы(ТДп, "Тп"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура пнПриИзменении(Элемент) пнПриИзмененииНаСервере(); КонецПроцедуры |
|||
1
dkalin
12.03.25
✎
15:55
|
Пишет Поле объекта не обнаружено (Код)
{ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(141)}:Строка.Код = ВыборкаДетальныеЗаписи.НоменклатураКод; {ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(152)}:пнПриИзмененииНаСервере(); [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка] |
|||
2
dkalin
12.03.25
✎
15:55
|
Что я не так делаю?
|
|||
3
arsik
гуру
12.03.25
✎
15:57
|
ТДп = Новый ТаблицаЗначений;
Не смущает? |
|||
4
maxab72
12.03.25
✎
15:59
|
(2) Вижу ТДп = Новый ТаблицаЗначений;, а где описание полей?
|
|||
5
dkalin
12.03.25
✎
16:00
|
(3) Что не так?
|
|||
6
dkalin
12.03.25
✎
16:01
|
(3) Я поняла,это в полях дело или нетолько?
|
|||
7
Fedor-1971
12.03.25
✎
16:06
|
(2) так попутала, почти берега
реквизит формы: ТЗ (вот это " ТЗ = Новый ТаблицаЗначений;" лишнее, т.к. он уже создан с нужным типом) А исправляешь: ТДп = Новый ТаблицаЗначений; а где колонки оной? |
|||
8
dkalin
12.03.25
✎
16:13
|
(7) Я добавила колонки,теперь вторая ошибка
Тут &НаСервере Процедура пнПриИзмененииНаСервере() Если Не Объект.пн.Пустая() Тогда ТДп = Новый ТаблицаЗначений; ТДп.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка")); ТДп.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяЗапасы.Номенклатура КАК Номенклатура, | ПриходнаяНакладнаяЗапасы.Номенклатура.Код КАК НоменклатураКод |ИЗ | Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Строка = ТДп.Добавить(); Строка.Код = ВыборкаДетальныеЗаписи.НоменклатураКод; Строка.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; КонецЦикла; ЗначениеВРеквизитФормы(ТДп, "Тп"); КонецЕсли; КонецПроцедуры Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы) {ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(138)}:ЗначениеВРеквизитФормы(ТДп, "Тп"); {ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(144)}:пнПриИзмененииНаСервере(); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Недопустимое значение параметра (параметр номер '2') [ОшибкаИспользованияВстроенногоЯзыка] |
|||
9
Волшебник
12.03.25
✎
16:18
|
Какой позор!
|
|||
10
Волшебник
12.03.25
✎
16:19
|
Поле объекта не обнаружено...
Недопустимое значение параметра... |
|||
11
Волшебник
12.03.25
✎
16:20
|
При чём тут форум?! Иди, работай в отладчике! Копай синтакс-помощник! При чём тут форум?!
|
|||
12
Мультук
гуру
12.03.25
✎
16:20
|
(8)
Нужно менять, пока ошибки не исчезнут Очень действенный способ "времен до ChatGPT". Кстати, "пн" это вероятно реквизит "выбранная ПриходнаяНакладная" А запрос, телепатически должен догадаться, что нужен отбор только по этой накладной или нет? P.S. Скучно и печально. |
|||
13
Fedor-1971
12.03.25
✎
16:25
|
(8) Заполняй сразу ТЗ, а не всякие левые таблицы
Ну и посмотри, надо её чистить или нет перед заполнением |
|||
14
maxab72
12.03.25
✎
16:26
|
(12) не, "пн" - это понедельник, потом добавятся процедуры с префиксами "вт", "ср", "чт", "пт" и "вс".
(8) видимо это реквизиты разных типов или с разным составом полей. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |