Имя: Пароль:
1C
1С v8
Недоступны объект и реквизиты номеклатуры
0 wizards
 
13.12.16
21:58
Добрый вечер. УТ 11.2, из формы документа мастер чека ККМ при обновлении данных информационной панели в общий модуль НоменклатураКлиентСервер передаются ТекущиеДанные.Номенклатура (Форма.Объект.Товары.НайтиПоИдентификатору(ТекущаяСтрока)) для формирования представления номенклатуры. Это происходит несколько раз, при первой передаче при выполнении Shift + F9 (Вычислить выражение) доступны реквизиты номенклатуры и соответственно в общем модуле я могу получить объект номенклатуры и добавить в представление например артикул. При последующих передачах реквизиты недоступны, как и метод ПолучитьОбъект(). Тип передаваемого значения ТекущиеДанные.Номенклатура во всех случаях "СправочникСсылка.номенклатура", на всякий случай в общем модуле поставил галку "Вызов сервера", не помогает. Кто знает, отпишитесь по сабжу.
1 Мимохожий Однако
 
13.12.16
22:02
Расшифруй " При последующих передачах". Отладчиком проверял, что по этой кнопке срабатывает?
2 wizards
 
13.12.16
22:08
В форме документа мастер чека ККМ несколько раз вызывается процедура
//////////////////
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДанныеИнформационнойПанели

ТекущиеДанные = Форма.Объект.Товары.НайтиПоИдентификатору(ТекущаяСтрока);

НаименованиеТовара = "";
    Если ТекущиеДанные <> Неопределено Тогда
        Если ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
            НаименованиеТовара = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(
                ТекущиеДанные.Номенклатура,
                ТекущиеДанные.Характеристика,
                ТекущиеДанные.Серия);

А в общем модуле
//////////////////////////////
Функция ПредставлениеНоменклатуры(НоменклатураПредставление, ХарактеристикаПредставление, СерияПредставление = "", НазначениеПредставление = "") Экспорт

    СтрПредставление = СокрЛП(НоменклатураПредставление);

    Если ТипЗнч(НоменклатураПредставление) = Тип("СправочникСсылка.Номенклатура") Тогда
        НоменклатураОбъект = НоменклатураПредставление.ПолучитьОбъект();
        СтрПредставление = СтрПредставление + " (" + СокрЛП(НоменклатураОбъект.Артикул) + ")";
    КонецЕсли;
3 Мимохожий Однако
 
13.12.16
22:09
Еще раз.. Отладчиком в эту процедуру попадаешь сколько раз?
4 wizards
 
13.12.16
22:10
3 раза. В первый раз доступен объект и реквизиты, в последующие нет, хотя тип значения одинаков
5 Мимохожий Однако
 
13.12.16
22:14
Какой смысл вызывать трижды? Если это при проведении, то возможно не успевает завершиться транзакция.
6 wizards
 
13.12.16
22:17
Это типовые процедуры. 1 раз при подборе, 2 раз при активизации строки, 3 раз при пересчете документа на клиенте
7 wizards
 
13.12.16
22:22
Кажется понял в чем проблема. В процедуру ОбновитьДанныеИнформационнойПанели каждый раз передается ЭтотОбъект, в 1 случае ЭтотОбъект идет с сервера (соотв-но доступны реквизиты), во 2 и 3 случаях - с клиента
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn