|
Конвертация данных. Программное создание элемента справочника | ☑ | ||
---|---|---|---|---|
0
Никулин Леонид
22.05.13
✎
18:25
|
Здравствуйте!
Такой вопрос. Конфигурация "Конвертация данных". Создаю правила. Есть у меня документ (ТребовениеНакладная) с ТЧ (Материалы). В ней есть ПКС для реквизита табличной части (НоменклатурнаяГруппа). И при переносе документов часто бывает, что моя НоменклатурнаяГруппа не заполнена. Такие моменты нужно отловить и при переносе заполнить НоменклатурнуюГруппу программно созданным элементом с наименованием (к примеру) "Не заполнено в УПП" |
|||
1
Mitriy
22.05.13
✎
18:31
|
в обработчике события ПослеЗагрузки ПКО документа анализируй табчасть и подставляй-создавай, что хочешь...
|
|||
2
Никулин Леонид
22.05.13
✎
18:31
|
В самом ПКО для НоменклатурныхГрупп в событии "Перед выгрузкой пишу":
Если Не Источник.ЭтоГруппа Тогда Сообщить(Источник); Если Не ЗначениеЗаполнено(Источник.Код) Тогда Сообщить("попал"); КонецЕсли; КонецЕсли; но не попадаю в условие ("попал" не пробегает) |
|||
3
Никулин Леонид
22.05.13
✎
18:33
|
ПКО спр"НоменклатурныхГрупп" или док"ТребованиеНакладная"?
|
|||
4
Mitriy
22.05.13
✎
18:34
|
см. (1), там у тебя будет параметр Объект - это уже созданный, но еще не записанный документ, который ты и можешь дозаполнить...
|
|||
5
Никулин Леонид
22.05.13
✎
18:34
|
(1) а можно кусочек кода?
|
|||
6
Mitriy
22.05.13
✎
18:34
|
ТребованиеНакладная
|
|||
7
Mitriy
22.05.13
✎
18:35
|
в форме ПКО есть кнопка "Информация по обработчикам"... рекомендую...
|
|||
8
Никулин Леонид
22.05.13
✎
18:37
|
а как там создать новый элемент справочника?
|
|||
9
zladenuw
22.05.13
✎
18:39
|
за тебя все делает универсальныйобменданными. а ты создаешь только правила. что откуда и куда.
|
|||
10
Никулин Леонид
22.05.13
✎
18:39
|
нашел место... ща попробую...
|
|||
11
zladenuw
22.05.13
✎
18:41
|
есть свойство объектнайден.
ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе и сделай то тебе рекомендуют в (7) |
|||
12
Волчара2010
22.05.13
✎
18:42
|
(0) создай в бд предопределенный элемент справочника, в модуле объекта перед записью проверяй свойство ОбменДанными и заполняй предопределенным значением.
|
|||
13
Никулин Леонид
22.05.13
✎
18:45
|
(12) нельзя. Заказчик будет ругаться
|
|||
14
Никулин Леонид
22.05.13
✎
18:46
|
Если пользоваться ОбъектНайден, то наверное лучше в ПКО спр "НоменклатурныеГруппы" после загрузки
|
|||
15
Mitriy
22.05.13
✎
18:48
|
ахренеть...
|
|||
16
Волчара2010
22.05.13
✎
18:49
|
(13) заказчик будет проверять код?
|
|||
17
Mitriy
22.05.13
✎
18:50
|
(16) не учи плохому, он и сам научится... на фига делать фигню, если гораздо быстрее можно сделать хорошо?
|
|||
18
Никулин Леонид
22.05.13
✎
18:51
|
нет, но явно увидит предопределенный элемент. Нет. Этого делать не стоит.
|
|||
19
zladenuw
22.05.13
✎
18:52
|
после загрузки.
если пустая группа тогда Объект.НоменклатурнаяГруппа = ПустаяНоменклатурнаяГруппаУПП |
|||
20
Волчара2010
22.05.13
✎
18:54
|
(19) а почему решение в (12) - это плохо? Обоснуй!
|
|||
21
zladenuw
22.05.13
✎
18:55
|
лТЧПриемник = Объект.Товары;
Для каждого СтрокаТовары из лТЧПриемник цикл Если СтрокаТовары.НоменклатурнаяГруппа.Пустая() Тогда СтрокаТовары.НоменклатурнаяГруппа =Справочники.НоменклатурнаяГруппа.НайтипоНаименованию("Не заполнено в УПП"); КонецЕсли; КонецЦикла; (20) а я тут при чем. не я спрашивал :) |
|||
22
Волчара2010
22.05.13
✎
18:55
|
+(20) это вопрос к (17)
|
|||
23
Mitriy
22.05.13
✎
18:56
|
(20) щас... больше мне заняться нечем...
|
|||
24
Никулин Леонид
22.05.13
✎
18:58
|
щас попробую как в (21)...
|
|||
25
Волчара2010
22.05.13
✎
18:58
|
(23) раз обосновать не можешь, то не гони понапраслину!
|
|||
26
zladenuw
22.05.13
✎
18:59
|
а вообще лучше в ПКО после загрузки если не объектнайден
подсовуй ему объект твоей группы. кароче миллион вариантов. |
|||
27
zladenuw
22.05.13
✎
18:59
|
(26) в номенклатурные группе
|
|||
28
Mitriy
22.05.13
✎
19:01
|
(25) слушай, ты меня разыгрываешь, или на самом деле не видишь разницу?
|
|||
29
Никулин Леонид
22.05.13
✎
19:05
|
В ПКО "ТребованиеНакладная" в событии "После загрузки" пишу:
лТЧПриемник = Объект.Материалы; Для каждого СтрокаТовары из лТЧПриемник цикл Если СтрокаТовары.НоменклатурнаяГруппа.Пустая() Тогда СтрокаТовары.НоменклатурнаяГруппа = Справочники.НоменклатурнаяГруппа.НайтипоНаименованию("Не заполнено в УПП"); КонецЕсли; КонецЦикла; Почему-то не видит мою "номенклГруппу" (поле объекта не обнаружено)... |
|||
30
Волчара2010
22.05.13
✎
19:07
|
(28) ну и в чем неоспоримые достоинства?
|
|||
31
Mitriy
22.05.13
✎
19:07
|
Справочники.НоменклатурнЫЕГруппЫ...
|
|||
32
Mitriy
22.05.13
✎
19:08
|
только поиск номенклатурной группы я хотя бы за цикл вынес...
|
|||
33
Никулин Леонид
22.05.13
✎
19:11
|
В ПКС у меня именно "НоменклатурнАЯГруппА".
А так пишу отрабатывает без ошибок. Пробегает "попал" лТЧПриемник = Объект.Материалы; Для каждого СтрокаТовары из лТЧПриемник цикл Если СтрокаТовары.НоменклатурнаяГруппа.Пустая() Тогда //СтрокаТовары.НоменклатурнаяГруппа = Справочники.НоменклатурнаяГруппа.НайтипоНаименованию("Не заполнено в УПП"); Сообщить("попал"); КонецЕсли; КонецЦикла; |
|||
34
Волчара2010
22.05.13
✎
19:11
|
(29) а если я потом переименую "не заполнено в УПП" во "франч УДАК". Где концы искать будешь?
|
|||
35
Никулин Леонид
22.05.13
✎
19:26
|
Теперь так пишу:
НовЭлемент = Справочники.НоменклатурныеГруппы.СоздатьЭлемент(); НовЭлемент.Наименование = "_Не заполнено в УПП"; НовЭлемент.Записать(); лТЧПриемник = Объект.Материалы; Для каждого СтрокаТовары из лТЧПриемник цикл Если СтрокаТовары.НоменклатурнаяГруппа.Пустая() Тогда //СтрокаТовары.НоменклатурнаяГруппа = Справочники.НоменклатурнаяГруппа.НайтипоНаименованию("_Не заполнено в УПП"); //Сообщить("попал"); СтрокаТовары.НоменклатурнаяГруппа = НовЭлемент; Сообщить(СтрокаТовары.НоменклатурнаяГруппа); КонецЕсли; КонецЦикла; че-то опять нифига |
|||
36
Никулин Леонид
22.05.13
✎
19:39
|
Взлетело!!
Вот так написал: лТЧПриемник = Объект.Материалы; Для каждого СтрокаТовары из лТЧПриемник цикл Если СтрокаТовары.НоменклатурнаяГруппа.Пустая() Тогда СтрокаТовары.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("_Не заполнено в УПП"); Сообщить(Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("_Не заполнено в УПП")); КонецЕсли; КонецЦикла; |
|||
37
Никулин Леонид
22.05.13
✎
19:47
|
А че никто не кобзонит?
|
|||
38
Aprobator
22.05.13
✎
20:00
|
(37) боятся что чела с такой фамилией не перекобзонить :-)
|
|||
39
Cujoko
22.05.13
✎
20:01
|
А мог бы в обработчике (пишу по памяти) "Перед выгрузкой" ПКС "НоменклатурнаяГруппа" написать что-нибудь вроде:
Если Не ЗначениеЗаполнено(Значение) Тогда Значение = "охтыжёжик"; КонецЕсли; А в обработчике "Перед выгрузкой" ПКС "Наименование" ПКО "НоменклатурныеГруппы": Если Источник = "охтыжёжик" Тогда Значение = "_Не заполнено в УПП"; КонецЕсли; Ну что-то в таком виде. |
|||
40
Никулин Леонид
22.05.13
✎
20:18
|
(37) Спасибо большое. Теперь можно идти домой:)
|
|||
41
Никулин Леонид
22.05.13
✎
20:20
|
(39) Спасибо за активность. Ухожу.
|
|||
42
Никулин Леонид
22.05.13
✎
20:21
|
(40) не то написал. Конечно же спасибо за (38)
|
|||
43
Никулин Леонид
22.05.13
✎
22:41
|
(39) Кстати, я так пробовал. Че-то у меня не завелось.
Если Не ЗначениеЗаполнено(Значение) Тогда Значение = "охтыжёжик"; КонецЕсли; Надо создавать программно: НовЭлемент = Справочники.НоменклатурныеГруппы.СоздатьЭлемент(); НовЭлемент.Наименование = "_Не заполнено в УПП"; НовЭлемент.Записать(); Только если это делать в ПКО, то будет создано столько элементов, сколько будет пройдено инераций. Если нужен только один элемент, то надо добавлять условие... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |