|
Поможите люди добрые с КД2.. Как строку в свойстваизначения запихать | ☑ | ||
---|---|---|---|---|
0
AddinAQ
24.12.12
✎
16:55
|
Коротко о себе:
Чуть-чуть ковыряю 8.2 платформу (УТ), первый раз в глаза вижу КД, семерку знаю неплохо. Коротко о задаче: Переношу данные из самописной ТиС 7.7 в УТ типовую. Справочник Контрагенты в 7 имеет реквизит тип "Строка", в типовой УТ такого реквизита нет, и поэтому данные решено перенести в свойства с таким же названием, как и название реквизита в 7. Перерыл кучу материала, но толи я какой-то отсталый, толи еще какие-то проблемы в развитии были, но не могу я победить эту шайтан-машину (КД), если кто пошагово объяснит, буду много благодарен. |
|||
1
leonidkorolev
24.12.12
✎
17:04
|
Вариантов много можно предложить. Я предложу один как бы я сделал.
Добавляем ПКО для РС ЗначенияСвойств (или как он там называется). У этого ПКО также необходимо настроить ПКС для всех измерений и ресурсов. У них может тоже потребуется указать ПКО. У ПКС строкового типа указываем это ПКО (для РС ЗначенияСвойств). Там еще придется создать в ПКС исходящие данные или значению присвоить структуру. Если КД не видел, то наверно не поймешь что я написал. Но проще некуда. Читай основы, потом вернись на форум. |
|||
2
AddinAQ
24.12.12
✎
17:16
|
(1) Читаю, обложился кучей методичек. Но почему-то такой вопрос не осветили, думаю он слишком прост, а я просто туплю :)
Реквизит в 7 называется CASID (8знаковая строка), в УТ в в карточке контрагента(в режиме предприятия) на закладке свойства добавил свойство CASID. В КД создаю ПКО для этого реквизита - источник CASID. В получателе непонятно что выставлять, там можно только конкретный реквизит указать. |
|||
3
AddinAQ
24.12.12
✎
18:01
|
Кажется начинаю понимать (1) :)
Создал вручную ПКО "СвойстваКонтрагентов" ОбъектИсточник: СправочникСсылка.Контрагенты ОбъектПриемник: РегистрСведенийЗапись.ЗначенияСвойствОбъектов Добавил три свойства этого регистра: Источник (получить из входящих), Приемник - Объект, ПКО Контрагенты Источник CASID, Приемник - Значение, безПко. Источник (получить из входящих), Приемник - Свойство, без ПКО (тут фиксированная строка CASID, хз пока как ее воткнуть) Правильно иду? |
|||
4
Aleksey
24.12.12
✎
20:01
|
(3) Нет, Лучше выгрузку по правилу заюзать. ЗАчем тебе каждый раз ВСЕ контрагенты?
|
|||
5
ilpar
24.12.12
✎
20:05
|
Если УТ 10.3, то возможно лучший вариант сделать -таки реквизит )
|
|||
6
ilpar
24.12.12
✎
20:06
|
УТ 11 уже можно доп. реквизитами.
|
|||
7
AddinAQ
24.12.12
✎
23:39
|
(5) (6) Почему в 10.3 лучше реквизит ? Там их просто много, не хочется захламлять форму как в 7.7.
У них несколько обменов с разными поставщиками у каждого свои ID на наших контрагентов и товары. Хранилось раньше в реквизитах, но в 8 решил запихать в Свойства |
|||
8
acsent
24.12.12
✎
23:45
|
выгрузитьпоправилу(структурасданными,,,,,,имяпкорегистрсведений)
|
|||
9
acsent
24.12.12
✎
23:46
|
хотя (3) тоже вариант
|
|||
10
AddinAQ
24.12.12
✎
23:51
|
а (5) кто-нибудь прокомментирует? А то может зря себе мозг сношаю :) ?
|
|||
11
AddinAQ
25.12.12
✎
02:38
|
Текс.. С вариантом (3) разобрался, получилось, спасибо всем.
Для другой задачи решил попробовать (4) и (8), показалось меньше геморроя. В 7.7 есть строковый реквизит контрагента - Юридический адрес, в УТ соответственно снова РС. Создал ПКО КонтактнаяИнформация для значений регистра сведений, выставил свойства без источника, создал ПВД с произвольным алгоритмом выборки ВыборкаДанных=СоздатьОбъект("ТаблицаЗначений"); ВыборкаДанных.НоваяКолонка("Объект"); ВыборкаДанных.НоваяКолонка("Представление"); ВыборкаДанных.НоваяКолонка("Вид"); ВыборкаДанных.НоваяКолонка("Тип"); Клиенты=СоздатьОбъект("Справочник.Контрагенты"); Клиенты.ВыбратьЭлементы(); Пока Клиенты.ПолучитьЭлемент()=1 Цикл Если Клиенты.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; ВыборкаДанных.НоваяСтрока(); ВыборкаДанных.Объект=Клиенты.ТекущийЭлемент(); ВыборкаДанных.Представление=Клиенты.ЮридическийАдрес; ВыборкаДанных.Вид="ЮридическийАдрес"; ВыборкаДанных.Тип="ПеречислениеСсылка.ТипыКонтактнойИнформации.Адрес"; КонецЦикла; ВыгрузитьПоПравилу(ВыборкаДанных,,,,"КонтактнаяИнформация"); Пытаюсь выгрузить - висим :( Шо не так, подскажите, пожалуйста? |
|||
12
AddinAQ
25.12.12
✎
02:40
|
Кажется понял - в после выгрузки надо было :)
|
|||
13
AddinAQ
25.12.12
✎
02:46
|
не хочет блин ничего выгружать - 0 объектов :(
Лан, пойду спать утро вечеро мудренее |
|||
14
AddinAQ
25.12.12
✎
02:47
|
Или вместо
ВыборкаДанных.Объект=Клиенты.ТекущийЭлемент(); попробовать ВыборкаДанных.Объект=Клиенты.Наименование; ? |
|||
15
vicof
25.12.12
✎
05:08
|
(14) Это ты в семерке перекодировал
|
|||
16
ilpar
25.12.12
✎
07:17
|
Все просто, типовые отчеты в 10.3 написаны без учета свойств.
А если реквизит у справочника, отобрать по нему затруднений ни в одном отчете не возникнет. |
|||
17
ilpar
25.12.12
✎
07:18
|
2) Выкинутый на форму реквизит значительно нагляднее где-то там спрятанного свойства.
|
|||
18
ilpar
25.12.12
✎
07:20
|
по структуре в (7) возможно и стоит свойства использовать.
|
|||
19
AddinAQ
25.12.12
✎
10:14
|
(15) так если выгрузка из 7ки же и идет.. Соответственно на семерошном языке пишу в после выгрузки. Или не так?
|
|||
20
cw014
25.12.12
✎
10:44
|
Я тут наверное припозднился, да и не всю ветку осилил... А что за реквизит такой с типом "Строка", что он так остро необходим в УТ?
|
|||
21
Йохохо
25.12.12
✎
10:45
|
ВыборкаДанных.Тип="Адрес";
// ВыгрузитьПоПравилу(ВыборкаДанных,,,,"КонтактнаяИнформация"); не нужно "У них несколько обменов с разными поставщиками у каждого свои ID на наших контрагентов и товары. Хранилось раньше в реквизитах, но в 8 решил запихать в Свойства" - регистр сведений НоменклатураКонтрагентов почему типовые не возьмешь правила? |
|||
22
Йохохо
25.12.12
✎
10:47
|
(20) коды синхронизации с поставщиками
|
|||
23
AddinAQ
25.12.12
✎
15:26
|
(21) не подойдут типовые никак .. Исходная база можно сказать самописная, настолько сильные отличия от типовой (крутится постоянно с 2000 года)..
|
|||
24
AddinAQ
25.12.12
✎
15:27
|
(21) если укажу
ВыборкаДанных.Тип="Адрес"; Нужно ПКО создавать для этого перечисления, с поиском по наименованию. |
|||
25
AddinAQ
25.12.12
✎
15:28
|
(24) Знак вопроса забыл :)
|
|||
26
Йохохо
25.12.12
✎
15:38
|
под рукой только ТИС-КА 1.1, там контактная информация есть
кцкв Таб = СоздатьОбъект("таблицаЗначений"); Таб.НоваяКолонка("Объект"); Таб.НоваяКолонка("Вид"); Таб.НоваяКолонка("Тип"); Таб.НоваяКолонка("Представление"); //контрагенты СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтрагенты.ВыбратьЭлементы(); Пока СпрКонтрагенты.ПолучитьЭлемент()=1 Цикл Если СпрКонтрагенты.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Если пустоеЗначение(СпрКонтрагенты.юрФизЛицо)=1 Тогда продолжить; КонецЕсли; Если ПустоеЗначение(СпрКонтрагенты.юрФизЛицо.ЮрАдрес)=0 Тогда Таб.НоваяСтрока(); Таб.Объект = СпрКонтрагенты.ТекущийЭлемент(); Таб.Вид = "ЮрАдресКонтрагента"; Таб.Тип = "Адрес"; Таб.Представление = глПредставлениеАдреса(СпрКонтрагенты.ЮрФизЛицо.ЮрАдрес); КонецЕсли; Если ПустоеЗначение(СпрКонтрагенты.юрФизЛицо.ФактАдрес)=0 Тогда Таб.НоваяСтрока(); Таб.Объект = СпрКонтрагенты.ТекущийЭлемент(); Таб.Вид = "ФактАдресКонтрагента"; Таб.Тип = "Адрес"; Таб.Представление = глПредставлениеАдреса(СпрКонтрагенты.ЮрФизЛицо.ФактАдрес); КонецЕсли; Если ПустоеЗначение(СпрКонтрагенты.юрФизЛицо.Телефоны)=0 Тогда Таб.НоваяСтрока(); Таб.Объект = СпрКонтрагенты.ТекущийЭлемент(); Таб.Вид = "ТелефонКонтрагента"; Таб.Тип = "Телефон"; Таб.Представление = СпрКонтрагенты.ЮрФизЛицо.Телефоны; КонецЕсли; КонецЦикла; |
|||
27
Йохохо
25.12.12
✎
15:41
|
(24) нет
еще кусок тебе нужен ) Таб.ВыбратьСтроки(); Пока Таб.ПолучитьСтроку()=1 Цикл ВходящиеДанные = СоздатьОбъект("СписокЗначений"); ВходящиеДанные.Установить("Объект",Таб.Объект); ВходящиеДанные.Установить("Тип",Таб.Тип); ВходящиеДанные.Установить("Вид",Таб.Вид); ВходящиеДанные.Установить("Представление",Таб.Представление); ВыгрузитьПоПравилу(,, ВходящиеДанные,, "КонтактнаяИнформация"); КонецЦикла; |
|||
28
AddinAQ
25.12.12
✎
15:57
|
(26), (27) все вставить в после выгрузки ?
в ПКС на всех четырех получить из входящих данных? |
|||
29
Йохохо
25.12.12
✎
16:13
|
это пвд
да |
|||
30
AddinAQ
25.12.12
✎
16:40
|
(29) Блин я наверное туплю.. Выручайте плиз, с этим разберусь и по аналогии остальное сделаю.
1. Сделал ПКО "Контактная информация", источник - пусто, приемник - РегистрСведенийЗапись.КонтактнаяИнформация 2. В нем сделал 4 ПВС: Объект, Представление, Вид, Тип, источник пусто, приемник соответствующий РС. Везде поставил галку получать из входящих данных. 3.Создал ПВД "Адреса" по правилу "Контактная информация", объект выборки - пусто, способ отбора данных - Произвольный алгоритм. 4. В этом ПВД в "Перед выгрузкой" вставил код слив (26) + (27), и исправил имена реквизитов как в моей базе + поставил перед выбратьстроки() выбратьстроку() чтобы увидеть что там набирается. 5. Сохранил правила и исправил ert выгрузки на предложенный. 6. Начинаю выгружать из 7ки поставив галочку выгрузки только напротив этого правила. 7. Получаю ответ: Начало выгрузки: 25.12.12 16:30:02 Выгружено объектов: 0 Окончание выгрузки: 25.12.12 16:30:02 8. ТЗ не вылезло, т.е. обработчик не вызвал эту процедуру. Что может быть не так?.. Ну кроме того что руки не оттуда :) |
|||
31
Йохохо
25.12.12
✎
16:50
|
ПередОбработкой
"2. .. приемник соответствующий РС" - описка? дай почту, отправлю типовые правила ТИС-КА, будет, что посмотреть хоть. КА ~= УТ 10 |
|||
32
AddinAQ
25.12.12
✎
16:53
|
||||
33
AddinAQ
25.12.12
✎
17:01
|
(31) не совсем вопрос понял.
Наверное я неправильно сформулировал: Приемник - измерения РС |
|||
34
Йохохо
25.12.12
✎
17:05
|
ушло ^^
в кд на удивление хорошая справка, кнопни "Информация по обработчикам" в форме ПВД |
|||
35
AddinAQ
25.12.12
✎
17:16
|
(34) Спасибо :)
Действительно удобная кнопка .. Пихать надо было в перед обработкой, а не перед выгрузкой :)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |