8.х аналоги операциям в 7.7

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем wertklop, 14 окт 2009.

  1. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    А причем тут константы? Предлагаю сначала изучить матчасть, прежде чем бросаться обвинениями.
    На моем счету десятки подобных обработок и они все работоспособны. Может быть проблема в другом месте? :)

    В Константе храниться ЗНАЧЕНИЕ (Sic!)
    Получая его, мы получаем ссылку вида СправочникСсылка. А не КонстантаСсылка.
    Начинай копать отсюда и поймешь, в чем разница.

    ЗЫ.
    Код:
    База81ФайлИсточник.Метаданные().константы.Получить(3);
    
    Посмотри, что ты получаешь этим кодом...

    Не всегда в конфу можно лезть...
  2. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    я ни в коем случае никого не обвиняю, просто есть конкретная задача, мне её надо решить и по возможности наиболее универсальным способом
    ну а раз у тебя на счету десятки подобных обработок, так поделись хотя бы некоторыми, наиболее подходящими под мою задачу, дабы наглядно я понял свою ошибку или узнал новые возможности для решения моей задачи. был бы оч признателен
    База81ФайлИсточник.Метаданные().константы.Получить(3); - этим я получаю объект метаданных со всеми возможными его свойствами при сом-соединении, разве нет?
    а по поводу матчасти, что конкретно ты имеешь ввиду?

    в том то вся и идея......нельзя дорабатывать конфу, к которой подключаешься!
  3. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Когда можно - лучше писать функции возвращающие данные в нужном виде - легче отлаживать.

    Иногда я писал функции которым передавал какие-нибудь параметры отбора или запросы. А они возвращали нужные значения, структуры, таблицы.

    А так - стоит посмотреть процедуры глобального контекста, которые можно использовать и встроенные 1Совские. Просто получение объекта иногда сопряжено с тем, что по OLE он виден как просто COMObject, а не "Справочник.Номенклатура" :)
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ты получаешь следующее:
    А нужно:
    Разница есть, не так ли? Вот это и есть матчасть!
  5. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    я не пойму, зачем ты мне справку переписываешь??????????????и какие толстые клиенты в 8.1????????????!!!!!!!!!!!!!!! в справке этого вообще нет!лучше бы пару обработок скинул.
    и вообще, часть этих свойств и методов не работают при сом-соединении, уже проверял и не раз.

    вот именно, мне то и нужно, чтобы считать из базы, что он имеет тип "Справочник.Номенклатура", а не COMObject.
    может подскажешь, есть ли какие нибудь специфические и стандартные функции в 1С, кроме тех, которые перечислены в данной теме?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    wertklop, ты писатель, но не читатель?

    Ты даже не пытаешься понять РАЗНИЦУ, в которую я уже ткнул пальцем, приведя справку, которую можно было открыть и прочитать!
    Подумай, что ТЫ получаешь и что ты ХОТЕЛ получить - тебе не кажется, что это совсем РАЗНЫЕ вещи?
    Также, тебе уже объяснили, что из другой базы/приложения ты получишь COM-объект, как ни крути - это не причуда 1С - это так работает сама идеология. Это тоже матчасть, кстати.

    А вот строчка, которая давно должна была прийти тебе в голову, если бы ты ЧИТАЛ, что тебе пишут:
    Код:
    ГУИД = База81ФайлИсточник.Константы.<ИмяКонстанты>.Получить().УникальныйИдентификатор();
    
  7. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    ну и что по твоему эта переменная мне даст?
    COMОбъект - вот что она даёт. и что мне с ней делать???
    я хорошо читал и между прочим пробовал. я уже много раз писал, что конкретно мне нужно в конце концов получить, но такое чувство, что вы сами, кто мне пишете, не проверяли. все те ссылки на справку, которую ты приводил, НЕ РАБОТАЮТ ПРИ СОМ-СОЕДИНЕНИИ!!!! ну или некоторые, которые мне как раз и нужны.
    ну а раз мою задачу стандартными методами невозможно решить, то так и напишите
    между прочим, не надо меня обвинять в том, кем я не являюсь, я, цитируя твои сообщения, писал в ответ вполне конкретно, но видимо это читалось сквозь пальцы, иначе я давно бы увидел обработки, не так ли?
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вот конкретный кусок кода, написанный "на коленке" для срочного переноса, если уж и это тебе не поможет - я сдаюсь. Ты не обучаем.
    Код:
    СтрокаУУИД =СокрЛП(База16.String(Объект.УникальныйИдентификатор()));
    УУИД = Новый УникальныйИдентификатор(СтрокаУУИД );
    ИмяМенеджера = Объект.Метаданные().ПолноеИмя();
    Если Найти(ИмяМенеджера,"Документ") > 0 Тогда
    ОбъектМенеджер = Документы[Объект.Метаданные().Имя];
    ИначеЕсли Найти(ИмяМенеджера,"Справочник") > 0 Тогда
    ОбъектМенеджер = Справочники[Объект.Метаданные().Имя];
    КонецЕсли;
    Ссылка = ОбъектМенеджер.ПолучитьСсылку(УУИД);
    Если Найти(СокрЛП(Ссылка),"Объект не найден") > 0  Тогда
    ОбъектНовый = Документы[Объект.Метаданные().Имя].СоздатьДокумент();
    ОбъектНовый.УстановитьСсылкуНового(Ссылка);
    ОбъектНовый.Дата = Объект.Дата;
    Если Объект.Метаданные().Имя = "ПоступлениеТоваровУслуг" Тогда
    //контрагента нужно искать по коду и наименованию
    Если База16.ValueIsFilled(Объект.Контрагент) Тогда
    КонтрагентGUID = База16.String(Объект.Контрагент.УникальныйИдентификатор());
    Контрагент = Справочники.Контрагенты;
    СсылкаКонтрагент = Контрагент.ПолучитьСсылку(Новый УникальныйИдентификатор(КонтрагентGUID));
    ОбъектНовый.Контрагент = СсылкаКонтрагент;
    КонецЕсли;
    КонецЕсли;
    ОбъектНовый.Комментарий = "///"+База16.String(Объект);
    ОбъектНовый.Записать(РежимЗаписиДокумента.Запись);
    ОбработкаПрерыванияПользователя();
    КонецЕсли;
    
  9. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    [warn=Читайте правила!]Оверквоттинг не поощряется![/warn]

    вот теперь мне всё понятно, сразу нельзя ли было привести пример?зачем оскор***** друг друга????
    вот что в конце концов я хотел получить:
    Код:
    Идентификатор=Новый COMОбъект("V81.COMConnector");
    Попытка
    СтрокаСоединения = "File=""C:\InfoBase"";Usr="""";Pwd="""";";
    Сообщить(СтрокаСоединения);
    ИдентификаторПодключения=Идентификатор.Connect(СтрокаСоединения);
    Исключение
    Предупреждение("Подключение не выполнено. " + ОписаниеОшибки(), 0);
    КонецПопытки;
    количество=ИдентификаторПодключения.Метаданные().Константы.Количество();
    СтрокаУУИД =Сокрлп(Открыто.String(ИдентификаторПодключения.константы.Константа4.получить().УникальныйИдентификатор()));
    УУИД = Новый УникальныйИдентификатор(СтрокаУУИД );
    ИмяМенеджера = ИдентификаторПодключения.метаданные().константы.Константа4.полноеимя();
    ОбъектМенеджер = Константы[ИдентификаторПодключения.метаданные().Константы.константа4.Имя];
    Ссылка = ОбъектМенеджер.Получить().Ссылка;
    Сообщить(ТипЗнч(ссылка)); // то, что нужно было получить
    
    вот что в итоге появится на экран:
    Справочник ссылка: Справочник1
    это тот тип значения, который находится в константа4
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    :unsure:
    Перечитал топик - сообщение №4 и №8 являются ответом.
    Остальное уже просто цитаты из справки, что можно было прочитать самому и получить ответ.

    За сим оффтопик в теме будет удаляться и наказываться.
  11. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    Вношу корректировочку:
    СтрокаУУИД =Сокрлп(Открыто.String(ИдентификаторПодключения.константы.Константа4.получить().УникальныйИдентификатор()));
    вместо "Открыто" необходимо вставить "ИдентификаторПодключения"
    BabySG, при решении данной задачи мы видимо использовали разные методы подключения к БД, от того у нас были разногласия.

    [warn=Читайте правила!]
    VII. • В случае, если Вы не согласны с действиями модератора/координатора, не устраивайте публичных дискуссий по этому поводу. Все вопросы можно решить через Личные сообщения или E-Mail.
    [/warn]
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В моем примере
    Код:
    ИдентификаторПодключения.константы.Константа4.получить()
    
    равно
    Код:
    Объект
    
    Вот и вся разница :)
  13. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    не согласен

Поделиться этой страницей