Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 03:14

1С 8.3.4 Событие ПередЗаписью()

Автор Snaky, 25 июн 2014, 08:33

0 Пользователей и 1 гость просматривают эту тему.

Snaky

Доброго дня всем! Возникла следующая проблема, не могу понять где косячу, есть Справочник "Номенклатура", у него Табличная часть характеристики (ID, Характеристика, Активна), перед записью обращаюсь к SOAP сервису сайта и передаю ему данные справочника, сайт возвращает ID, записываю реквизит, далее обхожу характеристики так же отправляю на сайт, он возвращает ID характеристики, но при попытке установить у табчасти этот ID, получаю ошибку что поле недоступно для записи.
З.Ы. Уверен ошибка элементарная и нужен просто незамыленный взгляд, всем заранее спасибо!

mixqn

а зачем вы ID пытаетесь записать, если по нему обмен идет?
или я что-то не так понял?
при обмене всегда должен быть первичный ключ - простой или составной (ну то есть либо одно поле, либо их комбинация). по этому ключу и идет синхронизация.

или вы пытаетесь записать ID при добавлении нового?

Snaky

Цитата: mixqn от 25 июн 2014, 08:40
а зачем вы ID пытаетесь записать, если по нему обмен идет?
или я что-то не так понял?
при обмене всегда должен быть первичный ключ - простой или составной (ну то есть либо одно поле, либо их комбинация). по этому ключу и идет синхронизация.

или вы пытаетесь записать ID при добавлении нового?
ID мне возвращает сайт после создания Номенклатуры у себя, это нужно для последующего поиска на сайте и т.п.

mixqn

то есть номенклатура создается на сайте и грузится в 1С, правильно я понял?
в 1С ID - это что? реквизит? какого типа?

Snaky

Цитата: mixqn от 25 июн 2014, 08:50
то есть номенклатура создается на сайте и грузится в 1С, правильно я понял?
в 1С ID - это что? реквизит? какого типа?
Я задаю все реквизиты кроме ID, причем ID в объекте записывается нормально, а вот в табчасти ругается, по сути это реализация он-лайн синхронизации, т.е. создалось в 1С - создалось на сайте.

mixqn

никак понять не могу, где первоисточник - в 1С или на сайте???
если создается номенклатура в 1С, вопрос зачем вы ID пишите. если номенклатура создается на сайте, вопрос что есть ИД - какого типа реквизит, в идеале увидеть скриншот структуры данных.
пока мало понятно, что конкретно у вас происходит.
дайте скриншоты и выдержки из кода. ну и объясните толком от и до а не урывками - что где создается, куда уходит и каким образом

Snaky

Цитата: mixqn от 25 июн 2014, 09:33
никак понять не могу, где первоисточник - в 1С или на сайте???
если создается номенклатура в 1С, вопрос зачем вы ID пишите. если номенклатура создается на сайте, вопрос что есть ИД - какого типа реквизит, в идеале увидеть скриншот структуры данных.
пока мало понятно, что конкретно у вас происходит.
дайте скриншоты и выдержки из кода. ну и объясните толком от и до а не урывками - что где создается, куда уходит и каким образом
Прокси = WSСсылки.Каталоги.СоздатьWSПрокси("http://адрессервиса/exchange/server.php?wsdl", "exchange", "exchangePort");
            ТипКаталог = Прокси.ФабрикаXDTO.Тип("http://адрессервиса/exchange/server.php?wsdl", "Catalog");
            Каталог = Прокси.ФабрикаXDTO.Создать(ТипКаталог);
            Каталог.Name = ОбщиеФункции.UTF8(Наименование);
            Каталог.Active = ?(Active, "Y", "N");
            Каталог.Code = НРег(BitrixCode);
            BitrixCode = НРег(BitrixCode);
            ID = Прокси.exchangeCatalogAdd(Каталог);
            Если ID = "false" Тогда
               Отказ = Истина;
            Иначе
               Отказ = Ложь;
            КонецЕсли;
            Если ЭтоКаталог Тогда
               Для Каждого Характеристика Из Характеристики Цикл
                  ТипХарактеристика = Прокси.ФабрикаXDTO.Тип("http://адрессервиса/exchange/server.php?wsdl", "Property");
                  XDTOХарактеристика = Прокси.ФабрикаXDTO.Создать(ТипХарактеристика);
                  XDTOХарактеристика.Catalog = ID;
                  XDTOХарактеристика.Active = ?(Характеристика.Активна, "Y", "N");
                  XDTOХарактеристика.Name = ОбщиеФункции.UTF8(Строка(Характеристика.Характеристика));
                  XDTOХарактеристика.Type = "S";
                  XDTOХарактеристика.Code = Характеристика.Характеристика.BitrixCode;
                  PropertyID = Прокси.exchangePropertyAdd(XDTOХарактеристика);
                     Если PropertyID = "false" Тогда
                        Отказ = Истина;
                     Иначе
                        Отказ = Ложь;
                     КонецЕсли;
                  Характеристика.ID = PropertyID;//ошибка вот тут
               КонецЦикла;
            КонецЕсли;

mixqn

то есть, если я правильно понял, вы откуда-то (не совсем понятно, откуда именно) получили ИД, далее этот ИД пытаетесь присвоить некому объекту в 1С и его же передаете через веб-сервис на сайт - правильно?
если честно, логики не уловил вообще, ну да ладно.
попробуем разобраться в конкретной проблеме, а не в логике в целом.
Цитата: Snaky от 25 июн 2014, 09:59Для Каждого Характеристика Из Характеристики Цикл
Характеристики - это что? Табличная часть? Владелец этой табличной части какой тип имеет - это ссылка или это объект? Подозреваю, что вы пытаетесь записывать данные в ссылку, а это действительно невозможно.

Snaky

Цитата: mixqn от 25 июн 2014, 10:33
то есть, если я правильно понял, вы откуда-то (не совсем понятно, откуда именно) получили ИД, далее этот ИД пытаетесь присвоить некому объекту в 1С и его же передаете через веб-сервис на сайт - правильно?
если честно, логики не уловил вообще, ну да ладно.
попробуем разобраться в конкретной проблеме, а не в логике в целом.
Цитата: Snaky от 25 июн 2014, 09:59Для Каждого Характеристика Из Характеристики Цикл
Характеристики - это что? Табличная часть? Владелец этой табличной части какой тип имеет - это ссылка или это объект? Подозреваю, что вы пытаетесь записывать данные в ссылку, а это действительно невозможно.
Разобрался, спасибо большое, тему можно закрывать, действительно в модуле объекта нельзя менять табчасть, перенес процедуру в модуль формы все сработало.

mixqn

Цитата: Snaky от 25 июн 2014, 11:14действительно в модуле объекта нельзя менять табчасть
что за ерунда? как так нельзя?


Похожие темы (5)

Рейтинг@Mail.ru

Поиск