Вход | Регистрация


1С:Предприятие ::

Метки: 

Поможите люди добрые с КД2.. Как строку в свойстваизначения запихать

Я
   AddinAQ
 
24.12.12 - 16:55
Коротко о себе:
Чуть-чуть ковыряю 8.2 платформу (УТ), первый раз в глаза вижу КД, семерку знаю неплохо.

Коротко о задаче:
Переношу данные из самописной ТиС 7.7 в УТ типовую. Справочник Контрагенты в 7 имеет реквизит тип "Строка", в типовой УТ такого реквизита нет, и поэтому данные решено перенести в свойства с таким же названием, как и название реквизита в 7.

Перерыл кучу материала, но толи я какой-то отсталый, толи еще какие-то проблемы в развитии были, но не могу я победить эту шайтан-машину (КД), если кто пошагово объяснит, буду много благодарен.
 
 
   leonidkorolev
 
1 - 24.12.12 - 17:04
Вариантов много можно предложить. Я предложу один как бы я сделал.

Добавляем ПКО для РС ЗначенияСвойств (или как он там называется). У этого ПКО также необходимо настроить ПКС для всех измерений и ресурсов. У них может тоже потребуется указать ПКО.  У ПКС строкового типа указываем это ПКО (для РС ЗначенияСвойств). Там еще придется создать в ПКС исходящие данные или значению присвоить структуру.

Если КД не видел, то наверно не поймешь что я написал. Но проще некуда. Читай основы, потом вернись на форум.
   AddinAQ
 
2 - 24.12.12 - 17:16
(1) Читаю, обложился кучей методичек. Но почему-то такой вопрос не осветили, думаю он слишком прост, а я просто туплю :)

Реквизит в 7 называется CASID (8знаковая строка), в УТ в в карточке контрагента(в режиме предприятия) на закладке свойства добавил свойство CASID.

В КД создаю ПКО для этого реквизита - источник CASID. В получателе непонятно что выставлять, там можно только конкретный реквизит указать.
   AddinAQ
 
3 - 24.12.12 - 18:01
Кажется начинаю понимать (1) :)
Создал вручную ПКО "СвойстваКонтрагентов"

ОбъектИсточник: СправочникСсылка.Контрагенты
ОбъектПриемник: РегистрСведенийЗапись.ЗначенияСвойствОбъектов

Добавил три свойства этого регистра:

Источник (получить из входящих), Приемник - Объект, ПКО Контрагенты
Источник CASID, Приемник - Значение, безПко.
Источник (получить из входящих), Приемник - Свойство, без ПКО (тут фиксированная строка CASID, хз пока как ее воткнуть)

Правильно иду?
   Aleksey
 
4 - 24.12.12 - 20:01
(3) Нет, Лучше выгрузку по правилу заюзать. ЗАчем тебе каждый раз ВСЕ контрагенты?
   ilpar
 
5 - 24.12.12 - 20:05
Если УТ 10.3, то возможно лучший вариант сделать -таки реквизит )
   ilpar
 
6 - 24.12.12 - 20:06
УТ 11 уже можно доп. реквизитами.
   AddinAQ
 
7 - 24.12.12 - 23:39
(5) (6) Почему в 10.3 лучше реквизит ? Там их просто много, не хочется захламлять форму как в 7.7.

У них несколько обменов с разными поставщиками у каждого свои ID на наших контрагентов и товары. Хранилось раньше в реквизитах, но в 8 решил запихать в Свойства
   acsent
 
8 - 24.12.12 - 23:45
выгрузитьпоправилу(структурасданными,,,,,,имяпкорегистрсведений)
   acsent
 
9 - 24.12.12 - 23:46
хотя (3) тоже вариант
   AddinAQ
 
10 - 24.12.12 - 23:51
а (5) кто-нибудь прокомментирует? А то может зря себе мозг сношаю :) ?
 
 Рекламное место пустует
   AddinAQ
 
11 - 25.12.12 - 02:38
Текс.. С вариантом (3) разобрался, получилось, спасибо всем.

Для другой задачи решил попробовать (4) и (8), показалось меньше геморроя. В 7.7 есть строковый реквизит контрагента - Юридический адрес, в УТ соответственно снова РС.

Создал ПКО КонтактнаяИнформация для значений регистра сведений, выставил свойства без источника, создал ПВД с произвольным алгоритмом выборки
ВыборкаДанных=СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Объект");
ВыборкаДанных.НоваяКолонка("Представление");
ВыборкаДанных.НоваяКолонка("Вид");
ВыборкаДанных.НоваяКолонка("Тип");

Клиенты=СоздатьОбъект("Справочник.Контрагенты");
Клиенты.ВыбратьЭлементы();
Пока Клиенты.ПолучитьЭлемент()=1 Цикл
    Если Клиенты.ЭтоГруппа()=1 Тогда
        Продолжить;
    КонецЕсли;
ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Объект=Клиенты.ТекущийЭлемент();
ВыборкаДанных.Представление=Клиенты.ЮридическийАдрес;
ВыборкаДанных.Вид="ЮридическийАдрес";
ВыборкаДанных.Тип="ПеречислениеСсылка.ТипыКонтактнойИнформации.Адрес";
КонецЦикла;
ВыгрузитьПоПравилу(ВыборкаДанных,,,,"КонтактнаяИнформация");

Пытаюсь выгрузить - висим :( Шо не так, подскажите, пожалуйста?
   AddinAQ
 
12 - 25.12.12 - 02:40
Кажется понял - в после выгрузки надо было :)
   AddinAQ
 
13 - 25.12.12 - 02:46
не хочет блин ничего выгружать - 0 объектов :(
Лан, пойду спать утро вечеро мудренее
   AddinAQ
 
14 - 25.12.12 - 02:47
Или вместо
ВыборкаДанных.Объект=Клиенты.ТекущийЭлемент();
попробовать
ВыборкаДанных.Объект=Клиенты.Наименование;
?
   vicof
 
15 - 25.12.12 - 05:08
(14) Это ты в семерке перекодировал
   ilpar
 
16 - 25.12.12 - 07:17
Все просто, типовые отчеты в 10.3 написаны без учета свойств.

А если реквизит у справочника, отобрать по нему затруднений ни в одном отчете не возникнет.
   ilpar
 
17 - 25.12.12 - 07:18
2) Выкинутый на форму реквизит значительно нагляднее где-то там спрятанного свойства.
   ilpar
 
18 - 25.12.12 - 07:20
по структуре в (7) возможно и стоит свойства использовать.
   AddinAQ
 
19 - 25.12.12 - 10:14
(15) так если выгрузка из 7ки же и идет.. Соответственно на семерошном языке пишу в после выгрузки. Или не так?
   cw014
 
20 - 25.12.12 - 10:44
Я тут наверное припозднился, да и не всю ветку осилил... А что за реквизит такой с типом "Строка", что он так остро необходим в УТ?
   Йохохо
 
21 - 25.12.12 - 10:45
ВыборкаДанных.Тип="Адрес";

 // ВыгрузитьПоПравилу(ВыборкаДанных,,,,"КонтактнаяИнформация"); не нужно
 

"У них несколько обменов с разными поставщиками у каждого свои ID на наших контрагентов и товары. Хранилось раньше в реквизитах, но в 8 решил запихать в Свойства" - регистр сведений НоменклатураКонтрагентов
почему типовые не возьмешь правила?
   Йохохо
 
22 - 25.12.12 - 10:47
(20) коды синхронизации с поставщиками
   AddinAQ
 
23 - 25.12.12 - 15:26
(21) не подойдут типовые никак .. Исходная база можно сказать самописная, настолько сильные отличия от типовой (крутится постоянно с 2000 года)..
   AddinAQ
 
24 - 25.12.12 - 15:27
(21) если укажу
ВыборкаДанных.Тип="Адрес";

Нужно ПКО создавать для этого перечисления, с поиском по наименованию.
   AddinAQ
 
25 - 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 Цикл
    ВходящиеДанные = СоздатьОбъект("СписокЗначений");
    ВходящиеДанные.Установить("Объект",Таб.Объект);
    ВходящиеДанные.Установить("Тип",Таб.Тип);
    ВходящиеДанные.Установить("Вид",Таб.Вид);
    ВходящиеДанные.Установить("Представление",Таб.Представление);
    
    ВыгрузитьПоПравилу(,, ВходящиеДанные,, "КонтактнаяИнформация");
КонецЦикла;
   AddinAQ
 
28 - 25.12.12 - 15:57
(26), (27) все вставить в после выгрузки ?
в ПКС на всех четырех получить из входящих данных?
   Йохохо
 
29 - 25.12.12 - 16:13
это пвд
да
   AddinAQ
 
30 - 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
   AddinAQ
 
32 - 25.12.12 - 16:53
hkaway@yandex.ru
   AddinAQ
 
33 - 25.12.12 - 17:01
(31) не совсем вопрос понял.
Наверное я неправильно сформулировал:
Приемник - измерения РС
 
 
   Йохохо
 
34 - 25.12.12 - 17:05
ушло ^^
в кд на удивление хорошая справка, кнопни "Информация по обработчикам" в форме ПВД
   AddinAQ
 
35 - 25.12.12 - 17:16
(34) Спасибо :)
Действительно удобная кнопка .. Пихать надо было в перед обработкой, а не перед выгрузкой :))



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует