Имя: Пароль:
1C
 
бп3:Программное изменение значения реквизита формы.
0 bambucho
 
22.10.15
07:48
Ребяты,подскажите,как имея ссылку на документ "Поступление на расчетный счет" программно изменить значение реквизита формы "Счет авансов"?
Получаю объект документа по ссылке,но как обратится с этому реквизиту не пойму?
1 kosts
 
22.10.15
07:51
(0) Если конечно он так называется

Объект.СчетАвансов = СчетСсылка;


Только надо не забыть установить субконто в соответствии с новым счетом.
2 bambucho
 
22.10.15
07:54
Не будет работать так,я такде прописал,через табло поглядел,его в списке нет.
3 bambucho
 
22.10.15
07:56
Через модель необьектного запрса,чтобы добраться до этого реквизита,следует проникнуть в таблицу формы,но как это сделать с целью изменения в цикле...?
4 asady
 
22.10.15
07:57
(0) ты это хочешь сделать где?
в модуле этой самой формы? или где.
5 bambucho
 
22.10.15
07:59
суть:вн.обработка,которая изменяет значение "Счер расчетов" и "Счет авансов" у всех или выбранных доков.
6 asady
 
22.10.15
07:59
(5) тогда причем здесь реквизит формы?
7 bambucho
 
22.10.15
07:59
Запросом все легко читается:
...
"ВЫБРАТЬ
          |     ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом,
          |     ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СчетУчетаРасчетовПоАвансам КАК СчетУчетаРасчетовПоАвансам,
...
8 bambucho
 
22.10.15
08:00
(6) ок,тогда ка изменить содержимое этого реквизита дока?))
9 kosts
 
22.10.15
08:01
(5) Возможно счет находится в ТЧ.
Тогда так как-то

Для каждого т из Объект.РасшифровкаПлатежа Цикл
    т.СчетУчетаРасчетовПоАвансам = СчетСсылка;
10 bambucho
 
22.10.15
08:04
(9) Попробую еще раз,но таким способом обращения не получилось...
11 asady
 
22.10.15
08:10
(8) надо узнать идентификаторы реквизитов этого дока
(как они точно называются допустим СчетРасчетовСКонтрагентом и СчетРасчетовПоАвансам) и
выполнить следующий код:

тОбъект = СсылкаНаОбъект.ПолучитьОбъект();
тОбъект.СчетРасчетовСКонтрагентом = СсылкаНаТвойСчетРасчетовСКонтрагентом;
тОбъект.СчетРасчетовПоАвансам = СсылкаНаТвойСчетРасчетовПоАвансам;
Если тОбъект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
РежимЗаписи = РежимЗаписиДокумента.Запись;
КонецЕсли;
тОбъект.Записать(РежимЗаписи);
12 asady
 
22.10.15
08:13
(11)+

судя по (7) у тебя эти реквизиты в ТЧ тогда
так:

тОбъект = СсылкаНаОбъект.ПолучитьОбъект();
Для каждого стр из тОбъект.РасшифровкаПлатежа Цикл
стр.СчетРасчетовСКонтрагентом = СсылкаНаТвойСчетРасчетовСКонтрагентом;
стр.СчетРасчетовПоАвансам = СсылкаНаТвойСчетРасчетовПоАвансам;
КонецЦикла;
Если тОбъект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
РежимЗаписи = РежимЗаписиДокумента.Запись;
КонецЕсли;
тОбъект.Записать(РежимЗаписи);
13 bambucho
 
22.10.15
08:16
Я пробовал так,не хочет:

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
          ДокОбъект = Ссылка.ПолучитьОбъект();
          ДокОбъект.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
          ДокОбъект.Записать();
     КонецЦикла;
14 bambucho
 
22.10.15
08:18
Я пробовал так,не хочет:

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
          ДокОбъект = Ссылка.ПолучитьОбъект();
          ДокОбъект.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
          ДокОбъект.Записать();
     КонецЦикла;
15 asady
 
22.10.15
08:19
(13)-(14) см (12)
16 bambucho
 
22.10.15
08:28
Не догоняю)
1)ссылку на -  "СсылкаНаТвойСчетРасчетовСКонтрагентом" сформировал запрос?
17 asady
 
22.10.15
08:31
(16) в твоем случае это ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
18 bambucho
 
22.10.15
08:55
)))
лучше так:
1.Есть у.форма вн.обработки,в элементах/реквизитах которой я задаю "Счет расчетов" и "Счет авансов" по средством обращения к "ПлануСчетовСсылка"-т.е. выбирая нужный счет/субсчет,(минуя нюансы деректив препроцессора) далее передаю их в цикл,который может обратиться к доку  по ссылке ну и еще получить сами СчетУчетаРасчетовСКонтрагентом и СчетУчетаРасчетовПоАвансам  (полученные запросом),подскажите как должен выглядеть код цикла:

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
          ДокОбъект = Ссылка.ПолучитьОбъект();
          ДокОбъект.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
          ДокОбъект.Записать();
     КонецЦикла;

зы:сложно пока я ориентируюсь в нюансах)
19 asady
 
22.10.15
08:58
(18) в (12) код практически уже тебе написан ....
20 bambucho
 
22.10.15
08:59
(19)
))
21 bambucho
 
22.10.15
08:59
пойду в метро втыкать)
22 asady
 
22.10.15
09:00
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
          ДокОбъект = Ссылка.ПолучитьОбъект();
Для каждого стр из ДокОбъект.РасшифровкаПлатежа Цикл

стр.СчетРасчетовСКонтрагентом = СсылкаНаТвойСчетРасчетовСКонтрагентом;
стр.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
КонецЦикла;
Если тОбъект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
РежимЗаписи = РежимЗаписиДокумента.Запись;
КонецЕсли;
          ДокОбъект.Записать(РежимЗаписи);
     КонецЦикла;
23 ibreiter
 
22.10.15
09:04
(18) А вы на форме счета задаете и их же ищете потом еще по коду?
24 vladko
 
22.10.15
09:09
(18) тебе же пишут, что надо не только реквизит документа, но ещё поправить табличную часть РасшифровкаПлатежа. Только тогда всё изменится
25 bambucho
 
22.10.15
09:23
(23) нет,это для теста я искал в коде,а задавать через ф. Буду
26 bambucho
 
22.10.15
09:25
(24) именно на расшифровке я и забуксавал...
27 bambucho
 
22.10.15
09:29
Тока понять механизм ее могу,зачем создавать вооденный цикл для Расш.Плат.,почему нелься сразу обратится к к реквизитам счетов на форме,в чем хитрость?
28 bambucho
 
22.10.15
09:30
Тока понять механизм ее не могу,зачем создавать вооденный цикл для Расш.Плат.,почему нелься сразу обратится к к реквизитам счетов на форме,в чем хитрость?
29 asady
 
22.10.15
09:32
(27) потому что это табличная часть и она может содержать несколько строк.
30 Kiks
 
22.10.15
09:32
Проще воспользоваться общей процедурой СчетаУчетаПоУмолчанию.
31 bambucho
 
22.10.15
09:32
Простите с телефона пишу...дебильный браузер...
32 ibreiter
 
22.10.15
09:33
(27) Нету у вас формы, тем более ее реквизитов, забудьте про нее...об объекте речь идет
33 bambucho
 
22.10.15
09:37
(32) ок,буду пробовать
34 bambucho
 
22.10.15
10:52
ругается бп3:

{Форма.Форма.Форма(44)}: Поле объекта не обнаружено (СчетРасчетовСКонтрагентом)                стр.СчетРасчетовСКонтрагентом = СчетАвансов;
35 bambucho
 
22.10.15
10:55
в цикл ТЧ "ДокОбъект.РасшифровкаПлатежа" в табло нормально раскрываетм реквизиты,но по следующим строчкам:

Так:
стр.СчетРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
стр.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");

или так:
стр.СчетРасчетовСКонтрагентом = СчетАвансов; //выб.счета с формы обраб.                стр.СчетУчетаРасчетовПоАвансам = СчетРасчетов; //выб.счета с формы обраб.

не идет...
36 bambucho
 
22.10.15
10:57
точнее,в табло "СчетРасчетовСКонтрагентом" выглядит как группа (плисик,раскрывающий дерево),может в этом дереве нужно выбрать что то?
37 bambucho
 
22.10.15
10:58
точнее,в табло "СчетРасчетовСКонтрагентом" выглядит как группа (плюсик,раскрывающий дерево),может в этом дереве нужно выбрать что то?
38 bambucho
 
22.10.15
11:11
как я зол..))

ребяты где опять я буксую?




Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
          ДокОбъект = Ссылка.ПолучитьОбъект();
          
              Для каждого стр из ДокОбъект.РасшифровкаПлатежа Цикл
                стр.СчетРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
                стр.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");

            КонецЦикла;
            
        Если ДокОбъект.Проведен Тогда
            РежимЗаписи = РежимЗаписиДокумента.Проведение;
        Иначе
            РежимЗаписи = РежимЗаписиДокумента.Запись;
        КонецЕсли;
          ДокОбъект.Записать(РежимЗаписи);
          
     КонецЦикла;
39 bambucho
 
22.10.15
11:25
Подскажите кто,почему не записывается значение в:

стр.СчетРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");

бьет ошибку:

{Форма.Форма.Форма(40)}: Поле объекта не обнаружено (СчетРасчетовСКонтрагентом)
                стр.СчетРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
40 bambucho
 
22.10.15
11:32
вроде поехало...
41 asady
 
22.10.15
11:34
(40) я тебе специально оставил некоторые несоответствия имен реквизитов чтобы ты не просто так коопипастил а чуточку хоть подумал
42 bambucho
 
22.10.15
11:38
все ок получилось)
СПАСИБО ВАМ!)
(41) имеенооо))) в них и нашел косяк)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.