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