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

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

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

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

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