8.х ОБМЕН COM соединение из базы-источника

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем LizaVETTA, 14 окт 2015.

  1. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток форумчане!
    Столкнулась с проблемой, что необходимо из одной базы ИСТОЧНИКА транслировать данные (элементы справочников) в разные базы ПРИЁМНИКИ. Когда была всего одна база приёмник все было замечательно и писала для переливки внешнюю обработку с сом-соединением, которая запускалась на стороне базы-приёмника. сейчас это крайне не удобно, и хотелось бы, что бы процедура запускалась автоматически на стороне базы-ИСТОЧНИКА при определенном событии (создании, изменении), т.к. я начинающий программист, не знаю как это сделать, что бы база-ИСТОЧНИК создавала элементы справочников в базах-ПРИЁМНИКАХ. подскажите пожалуйста как это можно реализовать?
    Раньше на стороне приёмников для внесения изменений пользовалась:
    объект=Справочники.Номенклатура.НайтиПоКоду(Результат.Код).ПолучитьОбъект();
    объект.Наименование = Результат.Наименование;
    ........
  2. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    Код:
    НовыйОбъект = Справочники.Валюты.СоздатьЭлемент();
    НовыйОбъект.Код = "840";
    НовыйОбъект.Наименование = "USD";
    НовыйОбъект.ПолноеНаименование = "Доллары США";
    НовыйОбъект.Записать();
    
  3. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Draco,у меня сейчас по такому принципу прописана обработка, но она то работает на стороне ПРИЁМНИКА!
    а как мне получить объект приёмника на стороне ИСТОЧНИКА для заполнения его данными?!
  4. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    Ну вы же подлючатесь к приемнику через этот конектор и создавайте
  5. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Т.е. получается, если я пропишу НоваяЗапись=Справочники.Номенклатура.СоздатьЭлемент(),
    то у меня объект будет создаваться все таки на стороне базе приёмника, а не на стороне источника?
  6. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    Ну у Вас должно быть что то вроде
    НоваяЗапись=V8Connector.Справочники.Номенклатура.СоздатьЭлемент(),
    Если тупо Справочники.Номенклатура.СоздатьЭлемент(), то в источнике создаст
    LizaVETTA нравится это.
  7. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    большое спасибо, сейчас попробую)))
  8. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Столкнулась с проблемой, что не могу записать значения булево и значения из подчиненных справочников((
    значения получаю в функции, которые вызываю в процедуре

    Вот отрывок из функции:

    Если Результат.Количество()>0 Тогда
    Если Результат.Свойство.Description= "Вести учет по сериям в НЗП" Тогда
    Возврат Результат.Значение;
    ИначеЕсли Результат.Свойство.Description="Вести оперативный учет остатков НЗП" Тогда
    Возврат Результат.Значение;
    ИначеЕсли Результат.Свойство.Description= "Вид номенклатуры" Тогда
    Возврат ВидНОМ =Результат.Значение.Наименование;
    ИначеЕсли Результат.Свойство.Description= "Ставка НДС" Тогда
    ИмяДанных = String(Результат.Значение);
    Возврат НайтиПоСинонимомуЗначениеПеречисления(V8,"СтавкиНДС", ИмяДанных);
    КонецЕсли;
    КонецЕсли;

    Значения из перечислений ( ставки НДС), проставляются на ура, зато не могу никак сохранить в базе приёмнике значения булево(например: Вести оперативный учет остатков НЗП) и подчиненного справочника (Вид номенклатуры).

    В процедуре прописываю:
    НоваяЗапись.ВидНоменклатуры = V8.Справочники.ВидыНоменклатуры.НайтиПоНаименованию(ПолучитьДопРеквизиты(Результат.Код, "Вид номенклатуры"));
    НоваяЗапись.СтавкаНДС = ПолучитьДопРеквизиты(Результат.Код, "Ставка НДС");
    НоваяЗапись.ВестиОперативныйУчетОстатковНЗП = ПолучитьДопРеквизиты(Результат.Код, "Вести оперативный учет остатков НЗП");
  9. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    просто он может не понимает какой тип возвращает процедура попробуй что то типа
    НоваяЗапись.ВестиОперативныйУчетОстатковНЗП =БУЛЕВО( ПолучитьДопРеквизиты(Результат.Код, "Вести оперативный учет остатков НЗП"));
    т.е приводить к типу перед тем как записывать
  10. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    большое спасибо, сейчас попробую)))
  11. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    к сожалению не помогло(((
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Можно дурной вопрос?
    Нафига так сложно?

    Конфигурация какая у источника и приемника?
  13. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    А что пишет то? просто при такой штуке часто бывает с типа загвоздка.попробуйте функцией какой то переменной сначало присвоить значенеи. а затем уже значение записывать в регистр так и для отладки удобно будет. при записи можно видеть какой тип у значения
  14. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Легче что то не получается, база приёмник - 1С УПП, а база источник - 1с:Предприятие MDM. и хранение некоторых данных кардинально отличается(((
    --- Объединение сообщений, 21 окт 2015 ---
    В общем-то ничего не пишет, ошибок никаких не дает, и по точке останова тоже не перескакивает, но тем не менее эти реквизиты не записывает((
  15. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Что внутри "ПолучитьДопРеквизиты()"? Как-то сомневаюсь я, что вызов ПолучитьДопРеквизиты(Результат.Код, "Вести оперативный учет остатков НЗП"); - правильный, скорее должно быть ПолучитьДопРеквизиты(Результат.Код, "ВестиОперативныйУчетОстатковНЗП");, но смысла в этом мало, т.к. примитивные типы по COM передаются напрямую, т.е. можно сделать так:

    НоваяЗапись.ВестиОперативныйУчетОстатковНЗП = Результат.ВестиОперативныйУчетОстатковНЗП; при условии, что в Результат находятся значения всех реквизитов элемента.
  16. TopicStarter Overlay
    LizaVETTA
    Offline

    LizaVETTA Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    нутри "ПолучитьДопРеквизиты()
  17. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Попробуйте обработать результат выполнения функции "ПолучитьДопРеквизиты" до передачи ее результата в "НоваяЗапись.ВестиОперативныйУчетОстатковНЗП" например :
    Код:
    ВестиОперативныйУчетОстатковНЗП = ПолучитьДопРеквизиты(Результат.Код, "Вести оперативный учет остатков НЗП");
    // При значении ВестиОперативныйУчетОстатковНЗП = Неопределено, СокрЛП(ВестиОперативныйУчетОстатковНЗП) дает пустую строку
    НоваяЗапись.ВестиОперативныйУчетОстатковНЗП = ?(СокрЛП(ВестиОперативныйУчетОстатковНЗП) = "", Ложь, ВестиОперативныйУчетОстатковНЗП);
    

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