Имя: Пароль:
1C
1С v8
Как изменить значение реквизита табличной части?
0 TheMan
 
11.06.14
09:44
Хэлп...есть справочник, у него есть табличная часть...как изменить значение реквизита этой табличной части? Стандартным механизмом обхода табличной части в цикле, нахождения нужной строки и изменением значения не прокатывает. Сообщить показывает, что значение поменялось, но на форме отображается старое значение...

&НаКлиенте
Процедура ПроектОснованиеПриИзменении(Элемент)                                              
    Структура=ИзменитьИсточникФинансирования();
    
    
    
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл
            
            Если Найти(строка.Свойство,"Источник финансирования")=Истина тогда  
                
                Сообщить(" ЗашЁЛ!!!"+ строка.Значение+" "+Структура.ИсточникФин+"");
                строка.Значение = Структура.ИсточникФин;
                
            КонецЕсли;    
        Конеццикла;
    
        

    
    
КонецПроцедуры
1 МойКодУныл
 
11.06.14
09:45
Записать()
2 TheMan
 
11.06.14
09:46
Не...Когда записываю записывает старое значение...
3 Fragster
 
гуру
11.06.14
09:47
Если Найти(строка.Свойство,"Источник финансирования")=Истина тогда  
- это АдЪ
4 Maxus43
 
11.06.14
09:47
ИзменитьИсточникФинансирования();

там то что?
5 TheMan
 
11.06.14
09:47
т.е. значение, которое на данный момент отображается
6 Fragster
 
гуру
11.06.14
09:48
делай на сервере с ТЧ объекта, а не с элементом формы
7 TheMan
 
11.06.14
09:48
ИзменитьИсточникФинансирования();

там то что?

Там на сервере получаю значения структурой..
8 TheMan
 
11.06.14
09:49
делай на сервере с ТЧ объекта, а не с элементом формы

на сервере тоже самое получается. Но я и тут делаю с табличной частью объекта...Дополнительные реквизиты это тч
9 Maxus43
 
11.06.14
09:49
(7) на сервере и меняй
10 TheMan
 
11.06.14
09:51
(7) на сервере и меняй

бесполезно... на форме значение реквизита не меняется
11 Maxus43
 
11.06.14
09:53
(10) читай книги, "разработка в управляемом приложении". Это азы...
12 TheMan
 
11.06.14
09:54
&НаСервере
Процедура ИзменитьИсточникФинансирования()                                                          
    ИсточникФин="";
    ТекПланТрудозатраты="";
    Запрос = Новый запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ВложенныйЗапрос.Значение,
                 |    Проекты.ТекущийПланТрудозатраты
                 |ИЗ
                 |    Справочник.Проекты КАК Проекты
                 |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                 |            ПроектыДополнительныеРеквизиты.Значение КАК Значение,
                 |            ПроектыДополнительныеРеквизиты.Ссылка КАК Ссылка
                 |        ИЗ
                 |            Справочник.Проекты.ДополнительныеРеквизиты КАК ПроектыДополнительныеРеквизиты
                 |        ГДЕ
                 |            ПроектыДополнительныеРеквизиты.Свойство.Наименование = ""Источник финансирования"") КАК ВложенныйЗапрос
                 |        ПО Проекты.Ссылка = ВложенныйЗапрос.Ссылка
                 |ГДЕ
                 |    Проекты.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка",Объект.ПроектОснование);
    
    Выборка=Запрос.Выполнить();
    Результат=Выборка.Выбрать();
    
    Если Результат.Следующий() тогда
        
    //Сообщить(" "+Результат.Значение+" ");
    //Сообщить(" "+Результат.ТекущийПланТрудозатраты+" ");
    
    Объект.ТекущийПланТрудозатраты=Результат.ТекущийПланТрудозатраты;
    
    ИсточникФин=Результат.Значение;
    КонецЕсли;

    
    
        
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл          
            Если строка.Свойство.Наименование = "Источник финансирования" тогда
                
                Сообщить(""+ строка.Значение+" "+Результат.Значение+"");
                строка.Значение = ИсточникФин;
                Сообщить(строка.Значение);
                
            КонецЕсли;    
        Конеццикла;
    
        ВыборкаОбъект.Записать();
    
КонецПроцедуры




&НаКлиенте
Процедура ПроектОснованиеПриИзменении(Элемент)                                  
    ИзменитьИсточникФинансирования();
    //Прочитать();
    
КонецПроцедуры


Так тоже не работает
13 salvator
 
11.06.14
09:55
(12) Чё за "ВыборкаОбъект"?
14 TheMan
 
11.06.14
09:58
(12) Чё за "ВыборкаОбъект"?

Упс..это я еще пробывал получитьобъект...там использовалась...сейчас комментарий
15 TheMan
 
11.06.14
10:00
Если Найти(строка.Свойство,"Источник финансирования")=Истина тогда  
- это АдЪ

Эт..да пробывал на клиенте...думал может в этом косяк...
16 salvator
 
11.06.14
10:01
(14) Так скинь нормальный код, ёлы-палы.
17 TheMan
 
11.06.14
10:20
(14) Так скинь нормальный код, ёлы-палы.

&НаСервере
Процедура ИзменитьИсточникФинансирования()                                                          
    ИсточникФин="";
    ТекПланТрудозатраты="";
    Запрос = Новый запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ВложенныйЗапрос.Значение,
                 |    Проекты.ТекущийПланТрудозатраты
                 |ИЗ
                 |    Справочник.Проекты КАК Проекты
                 |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                 |            ПроектыДополнительныеРеквизиты.Значение КАК Значение,
                 |            ПроектыДополнительныеРеквизиты.Ссылка КАК Ссылка
                 |        ИЗ
                 |            Справочник.Проекты.ДополнительныеРеквизиты КАК ПроектыДополнительныеРеквизиты
                 |        ГДЕ
                 |            ПроектыДополнительныеРеквизиты.Свойство.Наименование = ""Источник финансирования"") КАК ВложенныйЗапрос
                 |        ПО Проекты.Ссылка = ВложенныйЗапрос.Ссылка
                 |ГДЕ
                 |    Проекты.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка",Объект.ПроектОснование);
    
    Выборка=Запрос.Выполнить();
    Результат=Выборка.Выбрать();
    
    Если Результат.Следующий() тогда
        
    Объект.ТекущийПланТрудозатраты=Результат.ТекущийПланТрудозатраты;
    
    ИсточникФин=Результат.Значение;
    КонецЕсли;

    
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл          
            Если строка.Свойство.Наименование = "Источник финансирования" тогда
                
                Сообщить(""+ строка.Значение+" "+Результат.Значение+"");
                строка.Значение = ИсточникФин;
                                
            КонецЕсли;    
        Конеццикла;
    
        
    
КонецПроцедуры




&НаКлиенте
Процедура ПроектОснованиеПриИзменении(Элемент)                                  
    ИзменитьИсточникФинансирования();
КонецПроцедуры
18 TheMan
 
11.06.14
10:33
Профи ну вы хде?))) Хелп плиз...
19 TheMan
 
11.06.14
10:55
апп
20 YF
 
11.06.14
10:58
А на форме дополнительные реквизиты как отображаются? Табличная чать показана?
21 TheMan
 
11.06.14
11:02
А на форме дополнительные реквизиты как отображаются? Табличная чать показана?

Да показана...
22 Timon1405
 
11.06.14
11:06
Тип(Объект) в отладчике в студию
23 Fedor-1971
 
11.06.14
11:10
(21) Зайди в отладчик, поставь точку останова на строку:
Для каждого строка из Объект.ДополнительныеРеквизиты  цикл
и посмотри что есть в твоей "строка" сразу станет понятно что пытаешься сравнить и как нечто входящее в "строка" можно заполнять. Для интереса проделай сие НаКлиенте и НаСервере - прочувствуй разницу.

P.S. Последуй совету из (11).
24 TheMan
 
11.06.14
11:12
https://drive.google.com/file/d/0BwdwEcNLKh2deVRzSFpmdG1JNTQ/edit?usp=sharing

Вот скрин....Свойства это и есть табличная часть справочника
25 TheMan
 
11.06.14
11:16
(21) Зайди в отладчик, поставь точку останова на строку:
Для каждого строка из Объект.ДополнительныеРеквизиты  цикл
и посмотри что есть в твоей "строка" сразу станет понятно что пытаешься сравнить и как нечто входящее в "строка" можно заполнять. Для интереса проделай сие НаКлиенте и НаСервере - прочувствуй разницу.

P.S. Последуй совету из (11).

В строке все выходит что нужно...но не меняется на форме...

пишу Сообщить(""+ строка.Значение+" "+Результат.Значение+"");

строка.значение меняется, а на форме нет...
26 hhhh
 
11.06.14
11:16
(21) а где РеквизитФормыВЗначение() ??Детский сад.
27 TheMan
 
11.06.14
11:18
(21) а где РеквизитФормыВЗначение() ??Детский сад.

оп...а это куда надо?
28 hhhh
 
11.06.14
11:18
(21)


ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
  
        Для каждого строка из ОбъектНаСервере.ДополнительныеРеквизиты цикл          
            Если строка.Свойство.Наименование = "Источник финансирования" тогда
                
                Сообщить(""+ строка.Значение+" "+Результат.Значение+"");
                строка.Значение = ИсточникФин;
                                
            КонецЕсли;    
        Конеццикла;
    
ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект");
29 TheMan
 
11.06.14
11:19
Блин походу я туплю... прошу понять и простить))))
30 TheMan
 
11.06.14
11:25
(28) Ничего не поменялось все тоже самое...
Оч странно строка значение поменялось а на форме без изменений
31 salvator
 
11.06.14
11:27
(30) А записываешь где?
32 TheMan
 
11.06.14
11:32
(31) при записи значение пишется не то которое в строка.значение а то которое на форме...
33 TheMan
 
11.06.14
12:18
(31)
34 TheMan
 
11.06.14
13:05
(33)
35 TheMan
 
11.06.14
14:22
Задачка видимо оч сложная...
36 Timon1405
 
11.06.14
14:26
Так попкорн у всех с утра закончился, все ушли за новым ведром
37 TheMan
 
11.06.14
14:29
(36) Ну тады другое дело))))))
38 Fedor-1971
 
11.06.14
14:32
(35)Шутник блин.
Есть открытая форма элемента справочника, у него есть ТЧ ДополнительныеРеквизиты (например А, Б и ИсточникФинансирования)

&НаСервере
Процедура ЗаполнитьТЧ(Источник)
Для каждого стр из Объект.ДополнительныеРеквизиты цикл
   Если стр.А=1 тогда
     стр.ИсточникФинансирования=Источник;
   КонецЕсли;
КонецЦикла;
КонецПроцедуры

Тебе уже сказали читай книги!
39 Fedor-1971
 
11.06.14
14:35
(38)+ и не используй в названии переменных и ТЧ зарезервированные конструкции, потом сам моск вывихнеш пытаясь понять почему процедура что-то делает не так.
40 TheMan
 
11.06.14
14:46
(38) ДА НЕ РАБОТАЕТ ТАК!!!! НЕ ИЗМЕНЯЮТСЯ ДАННЫЕ НА ФОРМЕ!!!!
41 Fedor-1971
 
11.06.14
14:56
(40) ТЧ назови нормально, например, ДопДанные
100% работает и изменяется, проверено не один раз
Смотри отладчиком на стр - должен быть открывающийся список с реквизитами А, Б и ИсточникФинансирования.

Ты точно работаешь с управляемой формой?
42 Timon1405
 
11.06.14
14:58
(40) точку останова на конеццикла и ответь на (22)
43 TheMan
 
11.06.14
15:08
(41) Вот и мной было проверено не один раз...работало...
Только здесь по другому... строка.значение меняется...сообщить это показывает... а на форме результата 0.
44 TheMan
 
11.06.14
15:14
(42)
Объект    ДанныеФормыСтруктура    ДанныеФормыСтруктура
АвтоматическиРассчитыватьПланПроекта    Истина    Булево
ВерсияДанных    "AAAAAAFgcFs="    Строка
ВидПроекта    Общий    СправочникСсылка.ВидыПроектов
ГрафикРаботы        СправочникСсылка.ГрафикиРаботы
ГрифДоступа        СправочникСсылка.ГрифыДоступа
ДатаПоследнейЗагрузкиИзВнешнегоФайла    01.01.0001 0:00:00    Дата
ДополнительныеРеквизиты    ДанныеФормыКоллекция    ДанныеФормыКоллекция
ЕдиницаДлительностиЗадач    час    ПеречислениеСсылка.ЕдиницыДлительности
ЕдиницаТрудозатратЗадач    чел-час    ПеречислениеСсылка.ЕдиницыТрудозатрат
ЗагруженИзMSProject    Ложь    Булево
ЗадачаОснование        СправочникСсылка.ПроектныеЗадачи
Заказчик    Федеральное космическое агентство (Роскосмос)    СправочникСсылка.Корреспонденты
ЗапретитьАвтоматическоеДобавлениеУчастниковРабочейГруппы    Ложь    Булево
ИмяПредопределенныхДанных    ""    Строка
Код    "00000000221"    Строка
Комментарий    " "    Строка
Наименование    "ОКР "Элинвар""    Строка
Описание    """г/к от 17.04.2014 №783-К694/13/146
ОКР ""Разработка технологии создания унифицированных интегральных модулей датчиков механических величин, в том числе работоспособных в экстремальных условиях эксплуатации с применением технологии ультрапрецизионной мехобработки и прецизионной электроэрозионной обработки труднообрабатываемых инварных и элинварных сплавов на ультрапрецизионных станках с числовым программным управлением, технологии нанообразивного шлифования и полирования прецизионных деталей чувствительных элементов датчиков, с использованием технологии лазерной размерной обработки и модифицирования поверхности"", (шифр ОКР ""Элинвар"")"""    Строка
Организация        СправочникСсылка.Организации
ПометкаУдаления    Ложь    Булево
Предопределенный    Ложь    Булево
ПроектОснование    1тестирование    СправочникСсылка.Проекты
ПроектнаяКоманда    ДанныеФормыКоллекция    ДанныеФормыКоллекция
РедактируетсяВСтороннейСистеме    Ложь    Булево
Родитель    1ОКР тест    СправочникСсылка.Проекты
Руководитель    ннова Налья Владимировна (Ведущий инженер-программист)    СправочникСсылка.Пользователи
Состояние    Инициирован    ПеречислениеСсылка.СостоянияПроектов
СписыватьЗатратыНаПроект    Истина    Булево
СпособПланирования    От даты начала проекта    ПеречислениеСсылка.СпособыПланированияПроекта
Ссылка    ОКР "Элинвар"    СправочникСсылка.Проекты
СсылкаНаВнешнийФайл    ""    Строка
ТекущийПланНачало    01.01.2014 0:00:00    Дата
ТекущийПланОкончание    31.12.2014 0:00:59    Дата
ТекущийПланТрудозатраты    555    Число
УдалитьАвтоматическиВестиРабочуюГруппу    Ложь    Булево
Утвержден    Истина    Булево
ЭтоГруппа    Ложь    Булево
45 TheMan
 
11.06.14
15:14
типа это?
46 Timon1405
 
11.06.14
15:21
(44) зрителям с попкорном достаточно первой строчки