Имя: Пароль:
1C
 
Изменение реквизита документа из формы списка
,
0 maptbln
 
26.04.18
10:27
Всем добрый день, задача заключается в том , что бы можно было из формы списка менять реквизит документа
У поля в форме есть свойства БыстрыйВыбор,РежимВыбораИзСпискак,
но судя по тому,что никакой выбор при нажатие на поле не появляется,разговор не об этом
Перелопатил гугл, рекомендуют добавить кнопку на форму , в ней получить ссылку и там менять реквизит.Написал следующий код

&НаКлиенте
Процедура ПриоритетНажатие(Элемент)
    Строки=ЭлементыФормы.Список.ТекущиеДанные;
    Если НЕ Строки.Ссылка.Пустая() Тогда
        ВыполненНаСервере(Строки.Ссылка);
        ЭлементыФормы.Список.Обновить();
    КонецЕсли;  

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполненНаСервере(Ссылка)
    Объект=Ссылка.ПолучитьОбъект();
    Объект.ПриоритетПлатежа=ОченьВажный;
    Объект.Записать();
КонецПроцедуры

но при попытке зайти в форму , выдаёт что
Ошибка инициализации модуля: Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма
по причине:
{Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма(42,9)}: Процедура или функция с указанным именем не определена (ВыполненНаСервере)
        <<?>>ВыполненНаСервере(Стр.Ссылка);
странно , ведь всё определено

подскажите,что я делаю не так , или всё таки возможно менять реквизит документа из формы списка иным способом?

Заранее спасибо.
1 unregistered
 
26.04.18
10:49
(0) На что-то другое ругается.
У тебя вызов ВыполненНаСервере(Строки.Ссылка), а ругеается на ВыполненНаСервере(Стр.Ссылка). В месте вызова СТРОКИ, а там, где ругается - СТР.

Ты где-то еще вызов этой процедуры воткнул.
2 maptbln
 
26.04.18
10:57
(1) да это я просто переименовал переменную после того как ошибка вылезла,так то же самое
Ошибка инициализации модуля: Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма
по причине:
{Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма(42,9)}: Процедура или функция с указанным именем не определена (ВыполненНаСервере)
        <<?>>ВыполненНаСервере(Строки.Ссылка);
3 Mankubus
 
26.04.18
11:02
(2) убери безконтекста
4 maptbln
 
26.04.18
11:21
(3) не помогло
5 maptbln
 
26.04.18
11:35
забыл сказать,что форма обычная..в этом может быть дело?
6 Mankubus
 
26.04.18
11:36
(5) разумеется. в обычных формах нельзя использовать директивы компиляции
7 maptbln
 
26.04.18
11:42
(6) понял , засунул всё в одну процедуру без директив
но теперь вопрос в следующем ,
ОченьВажный - это значение перечисления , правильно ли я ссылаюсь на него , или нужно через Перечисления. итд
потому что сейчас ошибка
{Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма(43,34)}: Переменная не определена (ОченьВажный)
    докОбъект.ПриоритетПлатежа = <<?>>ОченьВажный;
8 1Сергей
 
26.04.18
11:43
(7) неправильно
9 maptbln
 
26.04.18
12:53
(8)
Процедура Кнопка1Нажатие(Элемент)
     текДанныеСписок = ЭлементыФормы.ДокументСписок.ТекущиеДанные;
    
    если текДанныеСписок <> Неопределено тогда
        докОбъект = текДанныеСписок.ПолучитьОбъект();
        
    докОбъект.ПриоритетПлатежа = Перечисления.ИС_Приоритеты.ОченьВажный;
        
    попытка
        докОбъект.Записать();
    исключение
        Сообщить("Что-то не так при записи!");  
    конецпопытки;  

    конецесли;

КонецПроцедуры

переписал,жалуется на {Документ.ИС_ЗаявкаНаРасходДС.Форма.ФормаСписка.Форма(41)}: Метод объекта не обнаружен (ПолучитьОбъект)
        докОбъект = текДанныеСписок.ПолучитьОбъект();
это ведь стандартный метод,что может не нравится?
10 Сти
 
26.04.18
13:34
(0) не нравится то, что текДанныеСписок это строка данных и у нее нет метода ПолучитьОбъект. Объект надо получать из текДанныеСписок.Ссылка
11 maptbln
 
26.04.18
13:46
(10)
всем огромное спасибо , чтобы я делал без вас и волшебного форума!
а где можно подробнее об этих нюансах почитать , разработка управляемого приложения?
12 maptbln
 
26.04.18
13:48
а если я хочу чтоб изменялось не в одной строке,а в нескольких
получать необходимо массив?
13 Михаил Козлов
 
26.04.18
13:55
(12) Если эту операцию нужно проделать со всеми документами из списка (могут быть фильтры), то Вам нужно получить список документов.
Список документов - это не коллекция, поэтому обойти ее (как массив) не удастся.
Сделать можно так:
построитель = Новый ПосторительОтчета;
построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
выборка = Построитель.Выбрать();
ПОКА выборка.Следующий() Цикл
// в выборка.Ссылка будет документ - вызвать нужную процедуру
КонецЦикла;
14 maptbln
 
26.04.18
13:58
(13)
не со всеми хочу проделать , а с выбранными при множественном выделении,фильтры не годятся , такое возможно?
условно пользователь через ctrl выбирает нужные в списке.и там меняется реквизит в каждом
15 Михаил Козлов
 
26.04.18
14:01
(14) Попробуйте получить выделенные строки.