Имя: Пароль:
1C
 
Как программно установить основной договор контрагента?
0 ilin
 
17.01.08
12:47
Перебираю все договоры контрагента,нахожу нужный,а вот сделать его основным не получается:
//нужный контрагент
фио=Справочники.Контрагенты.НайтиПоНаименованию(текущаястрока.Контрагент);
//его  договоры
выборка = Справочники.ДоговорыКонтрагентов.Выбрать( ,фио);
Пока выборка.Следующий() = 1 Цикл
           
Если (выборка.Наименование="Договор поставки") и (выборка.ВидДоговора=перечисления.ВидыДоговоровКонтрагентов.СПоставщиком) тогда
                   
                    фио.ОсновнойДоговорКонтрагента=выборка.ссылка;
иначе
сообщить("нет договора поставки!");
конецесли;
КонецЦикла;
1 Джинн
 
17.01.08
12:49
Записывать не пробовал?
2 Cthulhu
 
17.01.08
12:50
переходи на снеговика -- там это всё реализовано. (с)
3 ilin
 
17.01.08
12:51
ну можно и так,только толку нету:
//нужный контрагент

фио=Справочники.Контрагенты.НайтиПоНаименованию(текущаястрока.Контрагент);
//его  договоры

выборка = Справочники.ДоговорыКонтрагентов.Выбрать( ,фио);
Пока выборка.Следующий() = 1 Цикл
           
Если (выборка.Наименование="Договор поставки") и (выборка.ВидДоговора=перечисления.ВидыДоговоровКонтрагентов.СПоставщиком) тогда
                   
фио.ОсновнойДоговорКонтрагента=выборка.ссылка;
фио.запистаь();
иначе
сообщить("нет договора поставки!");
конецесли;
КонецЦикла;
4 ilin
 
17.01.08
12:54
Что,никто не может подсказать,как мне это реализовать?
5 Barmaglot
 
17.01.08
13:00
(4) А что отладчик показывает?
6 ado
 
17.01.08
13:02
Казалось бы, при чем здесь v7 ...?
7 ilin
 
17.01.08
13:05
в режиме предприятия поле объекта недоступно для записи (основнойдоговорконтрагента),а в отладчике сразу перепрыгивает на конец цикла,как тока пытаюсь присвоить
8 ilin
 
17.01.08
13:07
ну да,нечаянно,получилось v7 ))),на самом деле,конечно же v8
9 ilin
 
17.01.08
13:11
уф,всегда так,обратишься за помошью,никто не отвечает!
10 Barmaglot
 
17.01.08
13:11
Контрагента находит?
11 ilin
 
17.01.08
13:12
да,контрагента находит,и договор тоже
12 Barmaglot
 
17.01.08
13:14
А потом с "Если" на КонецЦикла?
13 ilin
 
17.01.08
13:15
после строки:
фио.ОсновнойДоговорКонтрагента=выборка.ссылка;
14 ilin
 
17.01.08
13:16
точнее на конец следующего цикла,который в конце модуля,здесь я его не прописала
15 Barmaglot
 
17.01.08
13:17
Это внешняя обработка?
16 ilin
 
17.01.08
13:17
да
17 Barmaglot
 
17.01.08
13:18
Может, она не сохранена?
18 ilin
 
17.01.08
13:19
сохранена
19 Barmaglot
 
17.01.08
13:23
Странно. А в скопированной строке ошибка сознательно поставлена?
20 Pasha
 
17.01.08
13:24
(0) Если мне не изменяет склероз, там договора в регистре сведений хранятся. и основной договор - это не ссылка на справочник, а ссылка на регистр или чтото эдакое
21 Barmaglot
 
17.01.08
13:25
(20) Если УТ, то изменяет...
22 ilin
 
17.01.08
13:27
это УПП
23 Barmaglot
 
17.01.08
13:29
Все равно ссылка.
24 Barmaglot
 
17.01.08
13:33
Что показывает после прохождения строки
фио.ОсновнойДоговорКонтрагента=выборка.ссылка;
25 ilin
 
17.01.08
13:35
ладно,спасибо,с этой проблемой я справмлась.Теперь не получается сделать контрагента поставщиком.т.е. у контрагента есть  булевый реквизит "Поставщик",так вот не присваивается истина
26 Barmaglot
 
17.01.08
13:36
Объект надо получить.
27 Barmaglot
 
17.01.08
13:37
И что там было?
28 ilin
 
17.01.08
13:37
фио=Справочники.Контрагенты.НайтиПоНаименованию(текущаястрока.Контрагент);
если фио.Поставщик=Ложь тогда
попытка
фио.Поставщик=Истина;
исключение
конецпопытки;
конецесли;
29 Barmaglot
 
17.01.08
13:42
ФИО1 = ФИО.ПолучитьОбъект();
ФИО1.Поставщик = Истина;
ФИО1.Записать();
30 ilin
 
17.01.08
13:47
неа,так тоже не получается
31 Barmaglot
 
17.01.08
13:48
Что говорит?
32 ilin
 
17.01.08
13:50
что,нельзя редактировать это поле
33 ilin
 
17.01.08
13:51
поле объекта недоступно для записи(поставщик)
34 Barmaglot
 
17.01.08
13:52
Объект удалось получить?
35 ilin
 
17.01.08
13:55
да
36 hhhh
 
17.01.08
13:56
код в студию
37 ilin
 
17.01.08
13:59
наверху
38 hhhh
 
17.01.08
14:01
там нет получения объекта
39 ilin
 
17.01.08
14:02
это где нужно написать?
40 hhhh
 
17.01.08
14:06
фио=Справочники.Контрагенты.НайтиПоНаименованию(текущаястрока.Контрагент);
если фио.Поставщик=Ложь тогда
попытка
 ФиоОбъект = фио.ПолучитьОбъект();
фиоОбъект.Поставщик=Истина;        //Здесь должен быть объект !!!!!!!!!!!
фиоОбъект.Записать();
исключение
конецпопытки;
конецесли;
41 ilin
 
17.01.08
14:14
все равно не записывается((
42 hhhh
 
17.01.08
14:18
а что такое "ТекущаяСтрока.Контрагент"?? Ведь это не наименование.
43 Barmaglot
 
17.01.08
14:19
ФИО не пустая ссылка?
44 hhhh
 
17.01.08
14:19
+ скорее всего должно быть

фио = ТекущаяСтрока.Контрагент;
45 ilin
 
17.01.08
14:20
текущаястрока-это я перебираю таблицу значений?
46 ilin
 
17.01.08
14:21
фио-не пустая ссылка,фио определяется
47 hhhh
 
17.01.08
14:24
(45) Откуда там у тебя наименования? используй ссылки.
48 ilin
 
17.01.08
14:30
все спасиб,получилось.Осталось тока узнать какие значения должны принимать реквизиты контрагента,чтоб значиться поставщиком
49 Barmaglot
 
17.01.08
15:20
(49) Галку "Поставщик" надо поставить.
50 Barmaglot
 
17.01.08
15:20
(49) к (48)