|
УФ: текущая строка таблицы формы на сервере | ☑ | ||
---|---|---|---|---|
0
OnePrg
18.07.22
✎
10:19
|
Есть таблица значений на форме (не табличная часть). Как на сервере получить данные текущей строки?
|
|||
1
OnePrg
18.07.22
✎
10:20
|
Сори - поторопился, не в ту ветку отправил. Админы переместите пожалуйста в 1С8.
|
|||
2
vicof
18.07.22
✎
10:20
|
Передать их с клиента
|
|||
3
Kassern
18.07.22
✎
10:21
|
Элементы.ТЗ.ТекущиеДанные/ТекущаяСтрока
|
|||
4
СеменовСемен
18.07.22
✎
10:23
|
Тз.найтипоиндентификатору(текущаястрока)
|
|||
5
unenu
18.07.22
✎
10:23
|
&НаКлиенте
Функция ПолучитьДанныеФормыЭлементКоллекцииКлиент(ТаблицаИмя) Дфк = Объект[ТаблицаИмя]; // Данные формы коллекция ДфкЭл = Неопределено; Если Дфк.Количество() Тогда тИд = Элементы[ТаблицаИмя].ТекущаяСтрока; Если НЕ тИд = Неопределено Тогда ДфкЭл = Дфк.НайтиПоИдентификатору(тИд); КонецЕсли; КонецЕсли; Возврат ДфкЭл; КонецФункции |
|||
6
OnePrg
18.07.22
✎
10:26
|
(4) нет такого метода у таблицы формы
|
|||
7
Kassern
18.07.22
✎
10:27
|
ТекущаяСтрока=ТЗ.НайтиПоИдентификатору(Элементы.ТЗ.ТекущаяСтрока);
|
|||
8
Kassern
18.07.22
✎
10:27
|
(6) Да лааадно)))
|
|||
9
Kassern
18.07.22
✎
10:28
|
(6) Как раз таки для коллекций формы данный метод и есть.
|
|||
10
Kassern
18.07.22
✎
10:30
|
А вот если бы вы написали так:
ТЗ=Новый ТаблицаЗначений; То да, такой бы метод не канал. Когда вы работаете с ТЗ на форме, то это не ТЗ, а ДанныеФормыКоллекция и у нее свои методы. |
|||
11
unenu
18.07.22
✎
10:30
|
(8) У ТаблицыФормы действительно нет. Просто автор не может понять, что есть ТФ и ДФК.
меня тоже поначалу коробило от этих "матрешек" |
|||
12
OnePrg
18.07.22
✎
10:32
|
(8) На сервере нет.
С формы нельзя передать на сервер ДанныеФормыЭлементКоллекции |
|||
13
OnePrg
18.07.22
✎
10:32
|
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Сообщ = Новый СообщениеПользователю; Сообщ.Текст = СоздатьЗаказПокупателя(Заказы.НайтиПоИдентификатору(Элементы.Заказы.ТекущаяСтрока)); <---- ошибка Сообщ.Сообщить(); КонецПроцедуры |
|||
14
Kassern
18.07.22
✎
10:34
|
(12) Да лааадно)))
Создайте простенькую обработку с ТЗ на форме и одним реквизитом (реквизит1) и попробуйте этот код выполнить &НаКлиенте Процедура Команда1(Команда) Команда1НаСервере(); КонецПроцедуры &НаСервере Процедура Команда1НаСервере() ТекущаяСтрока=ТЗ.НайтиПоИдентификатору(Элементы.тз.ТекущаяСтрока); Сообщить(ТекущаяСтрока.Реквизит1); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) НовСтрока=ТЗ.Добавить(); НовСтрока.Реквизит1=10; НовСтрока=ТЗ.Добавить(); НовСтрока.Реквизит1=20; КонецПроцедуры |
|||
15
Kassern
18.07.22
✎
10:35
|
(13) Да вы издеваетесь!
"Как на сервере получить данные текущей строки?" и потом, что я вижу? &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт |
|||
16
OnePrg
18.07.22
✎
10:35
|
Другой вариант:
&НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Сообщ = Новый СообщениеПользователю; Сообщ.Текст = СоздатьЗаказПокупателя(); Сообщ.Сообщить(); КонецПроцедуры &НаСервере Функция СоздатьЗаказПокупателя() Отказ = Ложь; пЗаказы = РеквизитФормыВЗначение("Заказы"); Данные = Элементы.Заказы.НайтиПоИдентификатору(Элементы.Заказы.ТекущаяСтрока); <-- Метод объекта не найден (НайтиПоИдентификатору) |
|||
17
OnePrg
18.07.22
✎
10:36
|
(15) СоздатьЗаказПокупателя серверная функция
|
|||
18
Kassern
18.07.22
✎
10:37
|
(16) Вы хоть понимаете, что это за метод такой? РеквизитФормыВЗначение? Он возвращает ТЗ, это уже не реквизит формы, а просто ТЗ!
|
|||
19
Kassern
18.07.22
✎
10:37
|
Зачем вы используете РеквизитФормыВЗначение, объясните мне?
|
|||
20
OnePrg
18.07.22
✎
10:37
|
Таблица "Заказы" в конфигураторе отсутствует на форме. Создаётся программно. (18)
|
|||
21
OnePrg
18.07.22
✎
10:38
|
(19) это потом ниже по коду, в этом месте нужно получить данные текущей строки на форме
|
|||
22
unenu
18.07.22
✎
10:39
|
Тз может быть пуста или пуста по отбору, вообщем лучше так не делать:
СоздатьЗаказПокупателя(Заказы.НайтиПоИдентификатору(Элементы.Заказы.ТекущаяСтрока)) Я получаю ДфкЭк (строку тз функцией), а потом уже есть есть строка, то условно можно что-то делать. Особенно заказ мучить безусловнно - 11-й великий грех! Если ДфкЭк <> Неопределено Тогда СоздатьЗаказПокупателя(Заказы.НайтиПоИдентификатору(Элементы.Заказы.ТекущаяСтрока)) КонецЕсли; |
|||
23
Kassern
18.07.22
✎
10:41
|
(13)
&НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Сообщ = Новый СообщениеПользователю; Сообщ.Текст = СоздатьЗаказПокупателя(Элементы.Заказы.ТекущаяСтрока); <---- Так не будет ошибки Сообщ.Сообщить(); КонецПроцедуры &НаСервере Функция СоздатьЗаказПокупателя(ИндификаторСтроки) Отказ = Ложь; Данные = Заказы.НайтиПоИдентификатору(ИндификаторСтроки); |
|||
24
OnePrg
18.07.22
✎
10:46
|
Сделал так
&НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Сообщ = Новый СообщениеПользователю; Сообщ.Текст = СоздатьЗаказПокупателя(Элементы.Заказы.ТекущиеДанные.id); <--- уникальное значение в ТЗ Сообщ.Сообщить(); КонецПроцедуры &НаСервере Функция СоздатьЗаказПокупателя(id) Отказ = Ложь; пЗаказы = РеквизитФормыВЗначение("Заказы"); Данные = пЗаказы.Найти(id,"id"); <---- находим строку по уникальному id Всем спасибо. |
|||
25
Kassern
18.07.22
✎
10:47
|
(24) пробовали (23) ?
|
|||
26
OnePrg
18.07.22
✎
13:36
|
(23) нет, завтра попробую - отпишусь
|
|||
27
OnePrg
25.07.22
✎
22:09
|
(25) Это получаются данные формы, а потом же нужно изменить их и на форму обратно передать - что-то не получается.
Вернул как было. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |