Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Реквизит объекта не найден

Реквизит объекта не найден
Я
   SnowBarsCloud
 
08.01.22 - 22:01
Столкнулся с ситуацией, есть конфигурация УНФ 1.6.25.236
Платформа 8.3.20.1613

Клиент перенес конфигурацию в чистую базу, заполнил первоначальными данными

При выборе номенклатуры, например в документе "Заказ покупателя" выходит ошибка "Поле объекта не найдено (Длина)". Поле такое есть.
Дело в том, что в оригинале каким то образом в клиентской функции (и даже в чисто клиентском модуле) работает констукция
"СтрокаТабличнойЧасти.Номенклатура.Длина". В перенесенной копии само собой не отрабатывает. Я чет вообще в растеряности)) Помогите)
   Amra
 
1 - 08.01.22 - 22:04
Работали в старой базе в толстом клиенте
   AlvlSpb
 
2 - 08.01.22 - 22:08
Не нашел в Заказе покупателя в коде конструкцию СтрокаТабличнойЧасти.Номенклатура.Длина. Случаем не доработка? В какой процедуре?
   SnowBarsCloud
 
3 - 08.01.22 - 22:08
Доработка

Поле объекта не обнаружено (Длина)
{ОбщийМодуль.УправлениеНебольшойФирмойКлиент.Модуль(66)}:    Если СтрокаТабличнойЧасти.Номенклатура.Длина > 0 И СтрокаТабличнойЧасти.Номенклатура.Объем = 0 Тогда
{Документ.ЗаказПоставщику.Форма.ФормаДокумента.Форма(2231)}:    УправлениеНебольшойФирмойКлиент.РассчитатьСуммыВСтрокеТЧПоступление(СтрокаТабличнойЧасти, ПараметрыРасчета);
{Документ.ЗаказПоставщику.Форма.ФормаДокумента.Форма(1057)}:    РассчитатьСуммуВСтрокеТабличнойЧасти();
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(1021)}:            ОповеститьОВыборе(СтруктураПараметров);

//ФУНКЦИЯ

Если СтрокаТабличнойЧасти.Номенклатура.Длина > 0 И СтрокаТабличнойЧасти.Номенклатура.Объем = 0 Тогда
        СтрокаТабличнойЧасти.Куб1 = СтрокаТабличнойЧасти.Номенклатура.Длина * СтрокаТабличнойЧасти.Количество;
    Иначе    
        СтрокаТабличнойЧасти.Куб1 = СтрокаТабличнойЧасти.Номенклатура.Объем * СтрокаТабличнойЧасти.Количество;
    КонецЕсли; 
           
    Если НЕ ПараметрыРасчета.Свойство("РассчитатьСуммуСкидки") И НЕ ПараметрыРасчета.Свойство("РассчитатьПроцентСкидки") Тогда
        ПараметрыРасчета.Вставить("РассчитатьСуммуСкидки", Истина);
    КонецЕсли;
    Если НЕ ПараметрыРасчета.Свойство("РассчитатьСумму") И НЕ ПараметрыРасчета.Свойство("РассчитатьЦену") Тогда
        ПараметрыРасчета.Вставить("РассчитатьСумму", Истина);
    КонецЕсли;
    
    Если СтрокаТабличнойЧасти.Свойство("Кратность") И СтрокаТабличнойЧасти.Свойство("Коэффициент") Тогда
        
        КоличествоСтроки = СтрокаТабличнойЧасти.Куб1 * СтрокаТабличнойЧасти.Кратность * СтрокаТабличнойЧасти.Коэффициент;         
    Иначе
        КоличествоСтроки = СтрокаТабличнойЧасти.Куб1;
      
    КонецЕсли; 
    
    Если ПараметрыРасчета.Свойство("СброситьФлагСкидкиРассчитаны") И ПараметрыРасчета.СброситьФлагСкидкиРассчитаны
        И СтрокаТабличнойЧасти.Свойство("ПроцентАвтоматическойСкидки")
        Тогда
        СтрокаТабличнойЧасти.ПроцентАвтоматическойСкидки = 0;
        СтрокаТабличнойЧасти.СуммаАвтоматическойСкидки = 0;
    КонецЕсли;
    
    Если СтрокаТабличнойЧасти.Свойство("ПроцентСкидкиНаценки") Тогда
        
        ЕстьСкидкаБонусом = СтрокаТабличнойЧасти.Свойство("СуммаСкидкиОплатыБонусом");
        
        Если ПараметрыРасчета.Свойство("РассчитатьЦену") И ПараметрыРасчета.РассчитатьЦену=Истина Тогда//Введена сумма строки, нужно пересчитать цену и сумму скидки

            Если КоличествоСтроки <> 0 Тогда
                СтрокаТабличнойЧасти.Цена = (СтрокаТабличнойЧасти.Сумма - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0))/((1 - СтрокаТабличнойЧасти.ПроцентСкидкиНаценки/100)*КоличествоСтроки);
                СтрокаТабличнойЧасти.СуммаСкидкиНаценки = Окр((КоличествоСтроки * СтрокаТабличнойЧасти.Цена - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0)) * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100, 2);
            КонецЕсли;
        ИначеЕсли ПараметрыРасчета.Свойство("РассчитатьПроцентСкидки") И ПараметрыРасчета.РассчитатьПроцентСкидки И СтрокаТабличнойЧасти.Сумма > 0 Тогда//Введена сумма скидки, нужно пересчитать процент скидки

            Если СтрокаТабличнойЧасти.СуммаСкидкиНаценки >= СтрокаТабличнойЧасти.Сумма Тогда
                СтрокаТабличнойЧасти.СуммаСкидкиНаценки = СтрокаТабличнойЧасти.Сумма;
                СтрокаТабличнойЧасти.Сумма = 0;
                СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = 100;
            Иначе
                СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Окр(100*СтрокаТабличнойЧасти.СуммаСкидкиНаценки / (КоличествоСтроки * СтрокаТабличнойЧасти.Цена - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0)), 2);
            КонецЕсли;
            СтрокаТабличнойЧасти.Сумма = КоличествоСтроки * СтрокаТабличнойЧасти.Цена - СтрокаТабличнойЧасти.СуммаСкидкиНаценки - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0);
        Иначе  //Если введен процент скидки, или если указаны и процент, и сумма, пересчитываем сумму скидки из процента, указанного в строке

            СтрокаТабличнойЧасти.СуммаСкидкиНаценки = Окр((КоличествоСтроки * СтрокаТабличнойЧасти.Цена - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0)) * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100, 2);
            СтрокаТабличнойЧасти.Сумма = КоличествоСтроки * СтрокаТабличнойЧасти.Цена - СтрокаТабличнойЧасти.СуммаСкидкиНаценки - ?(ЕстьСкидкаБонусом, СтрокаТабличнойЧасти.СуммаСкидкиОплатыБонусом, 0);
        КонецЕсли;
    Иначе     
        Если ПараметрыРасчета.Свойство("РассчитатьЦену") И ПараметрыРасчета.РассчитатьЦену=Истина Тогда//Введена сумма строки, нужно пересчитать цену с сумму скидки

            СтрокаТабличнойЧасти.Цена = ?(КоличествоСтроки=0, 0, СтрокаТабличнойЧасти.Сумма / КоличествоСтроки);
        Иначе
            СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * КоличествоСтроки;
        КонецЕсли;
    КонецЕсли;
    
    Если СтрокаТабличнойЧасти.Свойство("СуммаСкидки") Тогда
        СтрокаТабличнойЧасти.СуммаСкидки = СтрокаТабличнойЧасти.СуммаСкидкиНаценки;
    КонецЕсли; 
    
    РассчитатьСуммуНДСИВсего(СтрокаТабличнойЧасти, ПараметрыРасчета);
   SnowBarsCloud
 
4 - 08.01.22 - 22:09
При этом оно работает как то в боевой базе, а в новой нет..
   SnowBarsCloud
 
5 - 08.01.22 - 22:10
Думал может расширения, все расширения выключены
   SnowBarsCloud
 
6 - 08.01.22 - 22:12
Как прирепить фото в сообщении?
   SnowBarsCloud
 
7 - 08.01.22 - 22:13
Насчет толстого клиента, сейчас попробовал запустить отладку в режиме толстого клиента, все так же. Может я что не так понял
   AlvlSpb
 
8 - 08.01.22 - 22:16
Не так перенесли доработку. Поставь тоску останова и посмотри что у тебя в СтрокаТабличнойЧасти
   AlvlSpb
 
9 - 08.01.22 - 22:16
(6) Выложи на любой сайт с фото, например https://radikal.ru/ а ссылку сюда
   SnowBarsCloud
 
10 - 08.01.22 - 22:17
СтрокаТабличнойЧасти.Номенклатура - ссылка, но не могу обработиться к свойствам, ибо &НаКлиенте

В это же время в боевой даже в клиентском модуле спокойно обращаются к свойствам..
   AlvlSpb
 
11 - 08.01.22 - 22:21
(10) Ну так получи на сервере функцией и верни на клиент, пять-шесть строк кода, какая проблема?
   SnowBarsCloud
 
12 - 08.01.22 - 22:22
   SnowBarsCloud
 
13 - 08.01.22 - 22:23
Какая проблема, не могу я из клиенского модуля обработиться к серверу, например "ОбщегоНазначения". Переменная не определена
   AlvlSpb
 
14 - 08.01.22 - 22:24
(12) Ссылки правильно выложи
   SnowBarsCloud
 
15 - 08.01.22 - 22:25
   SnowBarsCloud
 
16 - 08.01.22 - 22:29
   AlvlSpb
 
17 - 08.01.22 - 22:40
(16) Чтобы Радикал давал норм картинки, убирай галку Уменьшить картинки до.... и достаточно jpg
По вопросу вижу только одно: Толстый и тонкий клиент. Надо искать другое решение. Или ставить галку сервер у общего модуля (все-равно конфа без замка), но мое бы решение - не трогать общий модуль конфы, а сделать все в расширении
   SnowBarsCloud
 
18 - 08.01.22 - 22:44
Так а что сделать? Почему оно в одной работает, в копии (чисто перенесли конфу, та же платформа, то же все) не работает?

Как вообще на УФ возможно получить свойство объекта на клиенте? Разве на клиенте может быть что-то кроме ссылки?
   AlvlSpb
 
19 - 08.01.22 - 22:47
Попробуй в конфигураторе Сервис-Параметры-Общие установить Управляемое и обычное приложение и запустить в толстом клиенте
   SnowBarsCloud
 
20 - 08.01.22 - 22:49
Пробовал, без измений.
Плюс в параметрах запуска рабочей базы стоит "Толстый клиент", в копии стояло "Автоматически". Поставил руками "Толстый клиент". Без изменений, там работает, тут нет. Пробовал чистить данные КЭША и тд, ничего не менятся
   AlvlSpb
 
21 - 08.01.22 - 22:49
"Как вообще на УФ возможно получить свойство объекта на клиенте?" Только запросив данные с сервера
"Разве на клиенте может быть что-то кроме ссылки?" Все прямые реквизиты присутствуют.
   AlvlSpb
 
22 - 08.01.22 - 22:51
(20) Свои предложения высказал в (17) Другого, извини, не приходит в голову
   SnowBarsCloud
 
23 - 08.01.22 - 22:52
"Все прямые реквизиты присутствуют."
Разве Номенклатура.РеквизитНоменклатуры можно получить на клиенте как "прямой реквизит"?
   Сергиус
 
24 - 08.01.22 - 22:53
(20)Какие галки у модуля УправлениеНебольшойФирмойКлиент в рабочей и в копии?
   SnowBarsCloud
 
25 - 08.01.22 - 22:53
Спасибо, что помогаешь) Попробую другой вариант, возьму дт и удалю все данные, если никто больше не предложит варианты.
   SnowBarsCloud
 
26 - 08.01.22 - 22:54
(24) Одна галочка Клиент, как на скриншоте в обеих базах, конфигурации полностью идентичные
   AlvlSpb
 
27 - 08.01.22 - 22:55
(23) Нет не получишь, речь шла о СтрокаТабличнойЧасти. Все что после точки недоступно
   AlvlSpb
 
28 - 08.01.22 - 22:55
(26) Где-то разница в параметрах запуска базы
   SnowBarsCloud
 
29 - 08.01.22 - 22:56
(27) Ты об этом, это понятно, на "СтрокаТабличнойЧасти.Количество" оно не ругается. Ругается на обращение через точку
   SnowBarsCloud
 
30 - 08.01.22 - 22:57
(28) ярылк запуска один, в параметрах запуска 1с стоят идентичные настройки "Толстый клиент", 8.3. Базы обе файловые
 
 
   SnowBarsCloud
 
31 - 08.01.22 - 23:02
Завтра попробую выгрузить дт и загрузить в другую базу, после чего обрезать данные. Отпишусь, это должно заработать. Если есть какие то варианты, предлагайте, попробую, буду рад. Опыт важная штука)
   Сергиус
 
32 - 08.01.22 - 23:20
(26)Ну тогда явный глюк. На Клиенте в режиме Управляемого приложения, нет возможности получить реквизиты ссылки(если только где то перед этим не делается серверный вызов)
   Сергиус
 
33 - 08.01.22 - 23:22
+(32)И передавать в переменной СтрокаТабличнойЧасти не строку ТЧ, а ссылку на номенклатуру, тоже как то не совсем правильно..по крайней мере с точки зрения названий точно) Возможно надо весь стек вызовов раскручивать и смотреть что там. Но если вы говорите, что там все одинаково, тогда точно загадка.
   Сергиус
 
34 - 08.01.22 - 23:24
+(33)Отбой, не туда глянул, всё нормально с этим)
   SnowBarsCloud
 
35 - 09.01.22 - 13:45
(32) Что глюк это понятно, но как его решить и почему он происходит
   ДедМорроз
 
36 - 09.01.22 - 13:55
А там длина для любой номенклатуры проверяется?
Просто,может быть,вид номенклатуры нужно выбрать такой,чтобы это условие не проверялось.
Опять же,для запуска толстого клиента необходимо,чтобы у пользователя было поаво его запуска.
   ДедМорроз
 
37 - 09.01.22 - 14:14
Кроме того,если у модуля поставить галочки Сервер и ВызовСервера,но не ставить галочку Клиент,тг с клиента функции такого модуля можно вызвать - будет безконтекстный серверный вызов и будет работать доступ через точку.
   Сергиус
 
38 - 09.01.22 - 14:25
(35)Если кэш очищен, у модуля стоит только одна галка Клиент и режим запуска Управляемое приложение, то отображать свойства элемента справочника никак не может в этот момент. Значит одно из этих условий нарушено, либо имеется некий глюк платформы в этом месте.
   SnowBarsCloud
 
39 - 10.01.22 - 15:18
(36) Любой номенклатуры, видно что-то с настойками запуска. Взял ДТ, обрезал, все стало работать гуд. но если ставлю в запуске "Автоматически", то ничего не работает. На копии, выгруженную через ЦФ и так и так ошибка. В дт пока работает.... Так, а что значит права запуска тонкого клиента, это в настойках прав? Вот эти галочки на закладке основного дерева конфигурации?
   SnowBarsCloud
 
40 - 10.01.22 - 15:19
(38) Платформа новая, вышла в середине декабря, так что не исключено, что все же глюк платформы
   Сергиус
 
41 - 10.01.22 - 21:41
(40)Обе базы работают на этой версии платформы?
   Bad_Aleks
 
42 - 11.01.22 - 08:23
(20) Был похожий глюк на Рознице 2.3 упр.формы.
Была добавлена база(копия рабочей), стояла галка "Автоматически". Так же не работало обращение к реквизиту, который точно был.
При установки галки "Толстый клиент" - всё равно не работало.
А вот если удалить базу из списка и опять добавить и установить сразу при добавлении - "Толстый клиент", тогда всё работало как и в основной рабочей базе.
   ДедМорроз
 
43 - 11.01.22 - 08:58
(42)можно базу не удалять,а просто кеш почистить.
На некоторых платформах кеш при смене клиента не обновляется,и толстый ведет себя как тонкий.
   Kassern
 
44 - 11.01.22 - 09:27
(15) а вам словосочетания толстый и тонкий клиент что-то говорят? Скорее всего нет. В базе источнике вы работаете в толстом клиенте, поэтому вам свойства номенклатуры доступны, а в новой базе вы работаете в тонком клиенте и процедура выполняется у вас &НаКлиенте, поэтому вам свойства номенклатуры через точку не доступны...
   Kassern
 
45 - 11.01.22 - 09:28
(43) причем тут кэш?) Вы скрины посмотрите, там видно в каких клиентах ТС работает


Список тем форума
 
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.