|
v7: Запись элемента справочника | ☑ | ||
---|---|---|---|---|
0
andrew231
05.06.13
✎
11:00
|
Добрый день! Не могу разобраться как записать элементы справочника. ниже код и есть комментарий что нужно записать:
СпрТМЦ=СоздатьОбъект("Справочник.ТМЦ"); ДБ.Первая(); Пока ДБ.Вконце() = 0 Цикл Если СпрТМЦ.НайтиПоРеквизиту("ПДМ_ИДДПрод", ДБ.IDPRODUCT_,1)=1 Тогда ТекЭлТК=СпрТМЦ.ТекущийЭлемент(); Если Лев(ТекЭлТК.ПолноеНаименование(),10)="Из Лоцмана" Тогда Если ПустоеЗначение(ТекЭлТК.ПродукцияБУ)=1 Тогда Сообщить("По тех. комплекту: """+ТекЭлТК+""" продукция БУ не существует!"); Иначе Если СпрТМЦ.НайтиПоРеквизиту("ПДМ_ИДДПрод", ДБ.IDPRODUCT,1)=1 Тогда ТекЭлП=СпрТМЦ.ТекущийЭлемент(); Если Лев(ТекЭлП.ПолноеНаименование(),10)<>"Из Лоцмана" Тогда Сообщить("Строка "+ДБ.НомерЗаписи()+": продукция """+ТекЭлП+""" находится вне группы ""Из Лоцмана"""); КонецЕсли; ТекЭлП.ПродукцияБУ=ТекЭлТК.ПродукцияБУ; ТекЭлТК.КвоБУ=1; //как записать элемент ТекЭлП //как записать элемент ТекЭлТК Иначе НовоеТМЦ=глНайтиТМЦ(Число(ДБ.IDPRODUCT), Число(ДБ.ID)); Если ПустоеЗначение(НовоеТМЦ.ПродукцияБУ)=1 Тогда НовоеТМЦ.ПродукцияБУ=ТекЭлТК.ПродукцияБУ; КонецЕсли; Сообщить("Созданна новая номенклатура """+НовоеТМЦ+""" и заполнена графа ""ПродукцияБУ"""); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; ПроцентВыполнения=ДБ.НомерЗаписи()*100/ВсегоСтрок; Состояние("Обработано "+Окр(ПроцентВыполнения,0,1)+"%"); Если ДБ.Следующая() = 0 Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
1
Ёпрст
05.06.13
✎
11:02
|
(0)
// ТекЭлТК=СпрТМЦ.ТекущийЭлемент(); ТекЭлТК=СпрТМЦ; |
|||
2
FlashC
05.06.13
✎
11:04
|
СпрТМЦ.записать()
|
|||
3
andrew231
05.06.13
✎
11:09
|
(2) ИЗ СпрТМЦ позиционируется на два элемента (ТекЭлП, ТекЭлТК). какой из них будет записан или будут записаны оба?
|
|||
4
andrew231
05.06.13
✎
11:12
|
(1) мне не совсем понятно: присвоить текущему элементу ссылку на справочник, а потом записать. а как быть с ТекЭлП? Его тоже нужно записать
|
|||
5
Ковычки
05.06.13
✎
11:17
|
(1) +
|
|||
6
Ёпрст
05.06.13
✎
11:19
|
(3)
Записывать ТекущийЭлемент() нельзя, это ссылка на "чтение". |
|||
7
andrew231
05.06.13
✎
11:22
|
дело в том что при первом поиске по реквизиту система позиционируется на техкомплекте, при втором поиске - на продукции и если продукция найдена записать в техкомплект.квоБУ=1, а в продукция.продБУ записать Техкомплект.ПродБУ. И эти 2 элемента справочника записать.
|
|||
8
andrew231
05.06.13
✎
11:23
|
(6) это понятно. прочитайте пожалуйста (7)
|
|||
9
Ёпрст
05.06.13
✎
11:26
|
(7) заводи 2 переменные с СоздатьОбъект, их и записывай.
|
|||
10
Ковычки
05.06.13
✎
11:26
|
создай два объекта и не майся
|
|||
11
andrew231
05.06.13
✎
11:26
|
(6) ага, т.е. ТекЭлТК=СпрТМЦ; потом
ТекЭлТК.Записать() тоже самое с ТекЭлП ??? |
|||
12
andrew231
05.06.13
✎
11:27
|
(10) а что одним обойтись нельзя?
|
|||
13
Ёпрст
05.06.13
✎
11:30
|
(12) можно
|
|||
14
Ковычки
05.06.13
✎
11:30
|
Что бы не думалось
|
|||
15
andrew231
05.06.13
✎
11:34
|
(13) вот так катить будет?
Если СпрТМЦ.НайтиПоРеквизиту("ПДМ_ИДДПрод", ДБ.IDPRODUCT_,1)=1 Тогда ТекЭлТК=СпрТМЦ; Если Лев(ТекЭлТК.ПолноеНаименование(),10)="Из Лоцмана" Тогда Если ПустоеЗначение(ТекЭлТК.ПродукцияБУ)=1 Тогда Сообщить("По тех. комплекту: """+ТекЭлТК+""" продукция БУ не существует!"); Иначе Если СпрТМЦ.НайтиПоРеквизиту("ПДМ_ИДДПрод", ДБ.IDPRODUCT,1)=1 Тогда ТекЭлП=СпрТМЦ; Если Лев(ТекЭлП.ПолноеНаименование(),10)<>"Из Лоцмана" Тогда Сообщить("Строка "+ДБ.НомерЗаписи()+": продукция """+ТекЭлП+""" находится вне группы ""Из Лоцмана"""); КонецЕсли; ТекЭлП.ПродукцияБУ=ТекЭлТК.ПродукцияБУ; ТекЭлТК.КвоБУ=1; // запись ТекЭлП.Записать(); ТекЭлТК.Записать(); |
|||
16
Ковычки
05.06.13
✎
11:35
|
нет
|
|||
17
andrew231
05.06.13
✎
11:35
|
(14) с двумя в принципе понятно, но зачем использовать 2 ссылки если можно применить только одну. ;) Не так ли?
|
|||
18
andrew231
05.06.13
✎
11:37
|
(16) почему?
|
|||
19
andrew231
05.06.13
✎
11:37
|
в чем ошибка?
|
|||
20
Ковычки
05.06.13
✎
11:37
|
попробуй
|
|||
21
Ёпрст
05.06.13
✎
11:38
|
(18) подумай.
|
|||
22
andrew231
05.06.13
✎
11:38
|
ща...
|
|||
23
andrew231
05.06.13
✎
11:49
|
не записывает :
ТекЭлП.ПродукцияБУ=ТекЭлТК.ПродукцияБУ; ТекЭлТК.КвоБУ=1; видимо потому что объект а не элемент. а если так? ТекЭлП.ТекущийЭлемент().ПродукцияБУ=ТекЭлТК.ПродукцияБУ; ТекЭлТК.ТекущийЭлемент().КвоБУ=1; или записать Текущий элемент в отдельную переменную? в чем ошибка? |
|||
24
andrew231
05.06.13
✎
11:50
|
ЭлементПродукция=ТекЭлП.ТекущийЭлемент();
ЭлементТехкомплект=ТекЭлТК.ТекущийЭлемент(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |