Ошибка при получении значения атрибута контекста текущиеданные

Текущие данные (управляемая форма)

Я
   gaur777

28.09.17 — 17:00

Подскажите пожалуйста. Перевожу базу с обычной на управляемую форму. в одной из обработок, на обычной форме при нажатие кнопки данные брались с табличной части таким образом:

ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;

Теперь на управляемой выводит ошибку:

( Ошибка при получении значения атрибута контекста (ТекущиеДанные)

    ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;

по причине:

Текущие данные таблицы недоступны на сервере )

ВходящиеПартии — табличная часть

Вроде не сложно. Но как исправить не пойму

   gaur777

1 — 28.09.17 — 17:01

На клиенте выполняю, пишет: … поле не является объектным типом

   mxs089

2 — 28.09.17 — 17:02

получить по идентификатору

   vicof

3 — 28.09.17 — 17:03

ВходящиеПартии не только имя табличной часть, но и имя элемента формы. Одна доступна на сервере, второй на клиенте.

   vicof

4 — 28.09.17 — 17:03

части*

   ribuh

5 — 28.09.17 — 17:07

Интересно, а всё же что быстрее, в конфигураторе поставить точку останова на проблемной строке и посмотреть в режиме отладки, что там есть и что можно использовать, или создать тута темку и узнать много нового, чаще всего не о вопросе, а о себе (неичего личного, просто интересно))))))

   gaur777

6 — 28.09.17 — 17:08

(3) ну так и как быть?

выполняю вот на сервере

ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

Enterprise    =  ТекущиеДанные.Площадка;

Ошибка! Площадка одно из полей

   vicof

7 — 28.09.17 — 17:11

ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

выполняй на клиенте

   dezss

8 — 28.09.17 — 17:11

(6) у тч нет тек. данных…передавай их с клиента.

   gaur777

9 — 28.09.17 — 17:14

(7) (8) — (1) прочитайте

   gaur777

10 — 28.09.17 — 17:15

хотя задаю переменную

Перем ТекущиеДанные;

   dezss

11 — 28.09.17 — 17:15

(9) что показывает отладка???

   dezss

12 — 28.09.17 — 17:15

и вообще, строка какая-нибудь выделена?

   vicof

13 — 28.09.17 — 17:16

«…поле не является объектным типом»

какое?

   dezss

14 — 28.09.17 — 17:17

(12) т.к. при невыделенном ТекущиеДанные = Неопределено

   gaur777

15 — 28.09.17 — 17:18

(11) как я могу проверить отладчиком если этой строке выходит ошибка?

   gaur777

16 — 28.09.17 — 17:19

(12) (14) стоит условие

Если ТекущиеДанные = Неопределено Тогда

        Возврат;

КонецЕсли;

   gaur777

17 — 28.09.17 — 17:20

(13) ну естественно первое которое выбирается в коде.

я же объясняю в обычном приложение всё работало

   ribuh

18 — 28.09.17 — 17:23

(15) дык на этой строке точку останова поставить, и смотреть, что там………

   gaur777

19 — 28.09.17 — 17:27

(18) текущиеданные — не является полем объектного типа

   ribuh

20 — 28.09.17 — 17:30

(19) До текущих данных смотрим, что там есть

в Элементах смотрим что есть

в Объекте смотрим, что есть

ищем, где собака порылась, тьфу, блин, где есть то, что нам нужно…у Вас шансов намного больше, чем у советчиков тут — потому как всё перед глазами — нужно только найти, что хочется)))))

   YAGolova

21 — 28.09.17 — 17:31

(19) Во общем, вам надо изменить в своей голове парадигму программирования. То что было разрешено в толстом клиенте на обычных формах — ниразу не разрешено в тонком. текущие данные у табличной части доступны только на клиенте

   dezss

22 — 29.09.17 — 09:12

(15) блин, ну ты же прямо ПЕРЕД выполнением этой строки можешь посмотреть на значения всех используемых в ней сущностей!!!

   gaur777

23 — 29.09.17 — 11:06

Просто объясните. Как в управляемой форме получить значение по выбранной строке

   vicof

24 — 29.09.17 — 11:09

Значение чего?

   oslokot

25 — 29.09.17 — 11:18

(0) Все должно работать, попробуй переименовать табличное поле, скорей всего проблема в (3)

ТекущиеДанные = Элементы.ТабличноеПоле1.ТекущиеДанные;

(на клиенте)

   gaur777

26 — 29.09.17 — 11:40

(25) дело в том, что текущиеданные отладчик показывает нормально. тоесть все поля табличной части там есть.

но дело такое, что поля которые я заполняю отрабатываются на сервере:

Функция ПодготовитьОбъект_ConsignorXDTO(ФабрикаВЕТИС,ПараметрыЗапроса)

    
    Consignor        = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «BusinessMember»);

    Enterprise         = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «Enterprise»);

    BusinessEntity     = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «BusinessEntity»);

        
    Enterprise.uuid            = ТекущиеДанные.UUIDПлощадкиОтправителя;

    BusinessEntity.uuid        = ТекущиеДанные.UUIDХСОтправителя;

    
    Consignor.enterprise        = Enterprise;

    Consignor.businessEntity    = BusinessEntity;    

    
    Возврат Consignor;

    
КонецФункции

   gaur777

27 — 29.09.17 — 11:40

поэтому значение текущиеданные не находит

   oslokot

28 — 29.09.17 — 12:47

ну значит на сервере получай нужную строку  Объект.ВходящиеПартии[НомерТекСтроки] и обрабатывай

   gaur777

29 — 29.09.17 — 14:05

(28) мне нужно не по номеру строки

а по выбранной строки

  

famnam

30 — 29.09.17 — 14:09

%НаКлиенте

ТекДанные = Элементы.ТЧ.ТекущиеДанные;

ОбработатьНаСервере(ТекДанные.ПолучитьИдентификатор());

&НаСервере

Процедура ОбработатьНаСервере(Идентификатор)

ТекДанные = Объект.ТЧ.НайтиПоИдентификатору(Идентификатор);

ТекДанные.Площадка = …;

Конецпроцедуры

Текущие данные (управляемая форма)

Я

  

gaur777

28.09.17 — 17:00

Подскажите пожалуйста. Перевожу базу с обычной на управляемую форму. в одной из обработок, на обычной форме при нажатие кнопки данные брались с табличной части таким образом:

ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;

Теперь на управляемой выводит ошибку:

( Ошибка при получении значения атрибута контекста (ТекущиеДанные)

    ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;

по причине:

Текущие данные таблицы недоступны на сервере )

ВходящиеПартии — табличная часть

Вроде не сложно. Но как исправить не пойму

  

gaur777

1 — 28.09.17 — 17:01

На клиенте выполняю, пишет: … поле не является объектным типом

  

mxs089

2 — 28.09.17 — 17:02

получить по идентификатору

  

vicof

3 — 28.09.17 — 17:03

ВходящиеПартии не только имя табличной часть, но и имя элемента формы. Одна доступна на сервере, второй на клиенте.

  

vicof

4 — 28.09.17 — 17:03

части*

  

ribuh

5 — 28.09.17 — 17:07

Интересно, а всё же что быстрее, в конфигураторе поставить точку останова на проблемной строке и посмотреть в режиме отладки, что там есть и что можно использовать, или создать тута темку и узнать много нового, чаще всего не о вопросе, а о себе (неичего личного, просто интересно))))))

  

gaur777

6 — 28.09.17 — 17:08

(3) ну так и как быть?

выполняю вот на сервере

ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

Enterprise    =  ТекущиеДанные.Площадка;

Ошибка! Площадка одно из полей

  

vicof

7 — 28.09.17 — 17:11

ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

выполняй на клиенте

  

dezss

8 — 28.09.17 — 17:11

(6) у тч нет тек. данных…передавай их с клиента.

  

gaur777

9 — 28.09.17 — 17:14

(7) (8) — (1) прочитайте

  

gaur777

10 — 28.09.17 — 17:15

хотя задаю переменную

Перем ТекущиеДанные;

  

dezss

11 — 28.09.17 — 17:15

(9) что показывает отладка???

  

dezss

12 — 28.09.17 — 17:15

и вообще, строка какая-нибудь выделена?

  

vicof

13 — 28.09.17 — 17:16

«…поле не является объектным типом»

какое?

  

dezss

14 — 28.09.17 — 17:17

(12) т.к. при невыделенном ТекущиеДанные = Неопределено

  

gaur777

15 — 28.09.17 — 17:18

(11) как я могу проверить отладчиком если этой строке выходит ошибка?

  

gaur777

16 — 28.09.17 — 17:19

(12) (14) стоит условие

Если ТекущиеДанные = Неопределено Тогда

        Возврат;

КонецЕсли;

  

gaur777

17 — 28.09.17 — 17:20

(13) ну естественно первое которое выбирается в коде.

я же объясняю в обычном приложение всё работало

  

ribuh

18 — 28.09.17 — 17:23

(15) дык на этой строке точку останова поставить, и смотреть, что там………

  

gaur777

19 — 28.09.17 — 17:27

(18) текущиеданные — не является полем объектного типа

  

ribuh

20 — 28.09.17 — 17:30

(19) До текущих данных смотрим, что там есть

в Элементах смотрим что есть

в Объекте смотрим, что есть

ищем, где собака порылась, тьфу, блин, где есть то, что нам нужно…у Вас шансов намного больше, чем у советчиков тут — потому как всё перед глазами — нужно только найти, что хочется)))))

  

YAGolova

21 — 28.09.17 — 17:31

(19) Во общем, вам надо изменить в своей голове парадигму программирования. То что было разрешено в толстом клиенте на обычных формах — ниразу не разрешено в тонком. текущие данные у табличной части доступны только на клиенте

  

dezss

22 — 29.09.17 — 09:12

(15) блин, ну ты же прямо ПЕРЕД выполнением этой строки можешь посмотреть на значения всех используемых в ней сущностей!!!

  

gaur777

23 — 29.09.17 — 11:06

Просто объясните. Как в управляемой форме получить значение по выбранной строке

  

vicof

24 — 29.09.17 — 11:09

Значение чего?

  

oslokot

25 — 29.09.17 — 11:18

(0) Все должно работать, попробуй переименовать табличное поле, скорей всего проблема в (3)

ТекущиеДанные = Элементы.ТабличноеПоле1.ТекущиеДанные;

(на клиенте)

  

gaur777

26 — 29.09.17 — 11:40

(25) дело в том, что текущиеданные отладчик показывает нормально. тоесть все поля табличной части там есть.

но дело такое, что поля которые я заполняю отрабатываются на сервере:

Функция ПодготовитьОбъект_ConsignorXDTO(ФабрикаВЕТИС,ПараметрыЗапроса)

    

    Consignor        = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «BusinessMember»);

    Enterprise         = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «Enterprise»);

    BusinessEntity     = ФабрикаВЕТИС.Создать(«http://api.vetrf.ru/schema/cdm/cerberus/enterprise»;,  «BusinessEntity»);

        

    Enterprise.uuid            = ТекущиеДанные.UUIDПлощадкиОтправителя;

    BusinessEntity.uuid        = ТекущиеДанные.UUIDХСОтправителя;

    

    Consignor.enterprise        = Enterprise;

    Consignor.businessEntity    = BusinessEntity;    

    
    Возврат Consignor;

    
КонецФункции

  

gaur777

27 — 29.09.17 — 11:40

поэтому значение текущиеданные не находит

  

oslokot

28 — 29.09.17 — 12:47

ну значит на сервере получай нужную строку  Объект.ВходящиеПартии[НомерТекСтроки] и обрабатывай

  

gaur777

29 — 29.09.17 — 14:05

(28) мне нужно не по номеру строки

а по выбранной строки

  

famnam

30 — 29.09.17 — 14:09

%НаКлиенте

ТекДанные = Элементы.ТЧ.ТекущиеДанные;

ОбработатьНаСервере(ТекДанные.ПолучитьИдентификатор());

&НаСервере

Процедура ОбработатьНаСервере(Идентификатор)

ТекДанные = Объект.ТЧ.НайтиПоИдентификатору(Идентификатор);

ТекДанные.Площадка = …;

Конецпроцедуры

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.  

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

Специалист компании «Кодерлайн»

Александр Суворов

Доброго времени суток уважаемый!

Прошу помочь определится с правильным решением задачи по расходу штукатурки. Это самый сложный расчет и по его примеру, я без проблем, смогу реализовать расчет других материалов, которые считаются исходя из площади поверхности… Проблема заключается вот в чем…

В случае со штукатуркой, у одного и того же элемента справочника, допустим Rotband (30кг)

меняется расход в зависимости от способа нанесения.

То есть существует 3 способа штукатурки, под плинтус, под правило и под маяк, в порядке увеличения.

Допустим расходы равны 6, 8,5 и 12кг на квадратный метр соответственно.

Напомню, что в предыдущих обсуждениях Вы помогли мне рассчитать и переносить в таблицу «работы со стенами» значения для определенных помещений при их добавлении… То есть теперь, моя задача, организовать расчет материала при различных видах работ. Поэтому я создаю таблицу следующего содержания..

Помещение — ссылка на справочник «Помещения» где хранятся названия «помещений»

Вид работы — ссылка на справочник «ВидыРаботСтены» где хранятся наименования возможных видов работ. Сделал справочник, что бы можно было дополнять в режиме Предприятие, если стоит сделать перечисление, и заранее указать все виды работ, прошу сообщить об этом..

Материал — ссылка на справочник «Номенклатура»  где по умолчанию должен подставлятся определенный материал, в зависимости от выбраного вида работ. Тут стоит отметить, что доступный материал для выбора должен быть только подходящий, то есть только штукатурка.. Вы уже советовали мне хранить эти значения в константе, однако как это использовать я не понимаю.. Поверьте, очень неудобно просить разжевать этот, видимо элементарный момент.. :(

РабочаяПлощадь — Число, которое уже благодаря Вам, подставляется из соседней таблицы и доступно для редактирования, на случай комбинированых поверхностей (Допустим на 20и метровой кухне 12 ламинат и 8 плитка).

Расход — Число, которое я планировал брать из реквизита элемента справочника. Допустим для обойного клея это 0,8кг на кв.м, а длчя краски 1,5кг на кв.м, эти значения, я планировал заносить в справочник номенклатура и подставлять их в эту таблицу… Но вот тут то и встал вопрос о том, как быть со штукотуркой… Варианты, которые я смог подумать.. Это создание в справочнике 3х реквизитов, но востребованы они будут только в случае со штукатуркой, что хоть отджельный справочник для штукатурки создавай… Создал именно 3 разных ВидаРаботы ШтукатуркаПлинтус, ШтукатуркаПравило, ШтукатуркаМаяк. И подумал, что самое логичное, внедрить в расчет коэфициенты в духе 0,8, 1, 1,2… Но опять же возможно для других видов штукатурки, данный коэфициент будет не корректен. И как быть в этом случае, я совсем запутался в мыслях и не представляю. Самое логичное получается, на самом деле, создать отдельный справочник с 3мя необходимыми реквизитами?

Количество основного материала — число, которое будет получатся в результате умножения «рабочей площади в строке, на расход.

Стоимость работ — число, которое по плану будет братся из справочника и получатся в результате умножения на «рабочуюПлощадь» в зависимости от выбраного ВидаРаботы

Следующим шагом в разработке данного документа, планирую создать аналогичную таблицу для работ с полом. И после этого создать итоговую таблицу, которая должна будет суммировать материалы из обоих таблиц и выдать список необходимых материалов.. Но это уже другой вопрос… На данный момент я встал мертвой точкой на вышеописаной проблеме и что делать даже теоритически не знаю… :(

Прошу поправить, если где то моя логика и выдуманый механизм, по Вашему мнению не правильны и помочь в реализации этого механизма на примере штукатурки, дальнейшие материалы я думаю без проблем смогу посчитать на этом примере!

Заранее благодарю вас Уважаемый СенСей! МирТрудМай! С наступающим праздником победы! Всех благ Вам и Вашим близким!

PS  Не знал как более корректно назвать тему данного обсуждения..

Ошибка при получении значения атрибута контекста (ТекущийПользователь)

bless18
06.04.2010 09:32 Прочитано: 49822

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х

 Процедура ПриНачалеРаботыСистемы()
Пользователь = ПараметрыСеанса.ТекущийПользователь;
Если обЗначениеНеЗаполнено(Пользователь.Сотрудник) Тогда
ИмяПользователя = СокрЛП(Пользователь.Наименование);
Иначе
ИмяПользователя = СокрЛП(Пользователь.Сотрудник.Наименование);
КонецЕсли;
Предупреждение("Здравствуйте уважаемый пользователь """+ИмяПользователя+"""
|Система готова к работе.", 3);
КонецПроцедуры

Где происходит их инициализация?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
06.04.2010 09:48 Ответ № 1

Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо:
Код 1C v 8.х

 ИмяПользователя = ИмяПользователя();
Если Не ПустаяСтрока(ИмяПользователя) Тогда
ТекущийПользователь = Справочники.Пользователи.НайтиПоКоду(ИмяПользователя);
КонецЕсли;
ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь;

Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код

bless18
06.04.2010 09:56 Ответ № 2

А если не совпадают, можно как-нибудб привязать пользователя к сотруднику?

E_Migachev
06.04.2010 09:57 Ответ № 3

А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)

В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают:

Код 1C v 8.х

 Процедура УстановкаПараметровСеанса()
Спр = Справочники.Сотрудники;
ПараметрыСеанса.ТекущийПользователь=Спр.НайтиПоРеквизиту("Пользователь1С", ИмяПользователя());
КонецПроцедуры
//где Пользователь1С, это реквизит справочника сотрудники, и именем как вбито в конфигураторе

Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы.

Ну а дальше подставлять сопоставленное значение при создании соответствующего документа:

Код 1C v 8.х

  Док.Пользователь=ПараметрыСеанса.Пользователь;   

События модуля сеанса:
Глобальный контекст
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса(<Требуемые параметры>)
Параметры:
<Требуемые параметры>
Тип: Массив; Неопределено. Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой или при захвате соединения с информационной базой из пула до вызова всех остальных обработчиков. Значение параметра «Параметры сеанса» — Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра «Параметры сеанса» является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то возникает исключение.

bless18
06.04.2010 12:13 Ответ № 4

Спасибо вам огромное! Вы мне очень помогли!

bless18
06.04.2010 12:15 Ответ № 5

Спасибо вам огромное! Вы мне очень помогли!

E_Migachev
06.04.2010 15:44 Ответ № 6

Пожалуйста )

Подсказка: Для выделения Кода используйте (в редакторе).

Ошибка в 1С 8. Ошибка при получении значения атрибута контекста (ОсновнаяРоль), Недопустимо использование свойства ОсновнаяРоль

Описание ошибки:
Проблема стала возникать после того, как в серверную базу УТ 10.3 был добавлен функционал Библиотеки МДЛП. Ошибка не проявляла себя явно при работе в режиме 1С: Предприятие, но негативно влияла на выполнение некоторых регламентных заданий, так что они аварийно прерывались.

Найденные решения:

{ОбщийМодуль.Пользователи.Модуль(116)}: Ошибка при получении значения атрибута контекста (ОсновнаяРоль)
по причине:
Недопустимо использование свойства «ОсновнаяРоль»

Проблема стала заметна случайно лишь тогда, когда в частности регламентное фоновое задание «Наличие новых ЭД» стало прерываться в процессе своего выполнения из за ошибки.

1С 8 как исправить ошибку при получении значения атрибута контекста ОсновнаяРоль
Рис. 1. Пример ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» в регламентном задании «Наличие новых эд в сервисе ЭДО« 

Так же и в другом регламентном задании стала проявляться ошибка «Ошибка при получении значения атрибута контекста (ОсновнаяРоль) по причине: Недопустимо использование свойства «ОсновнаяРоль».


Рис. 2. Пример ошибки «Недопустимо использование свойства «ОсновнаяРоль» в регламентном задании «Выполнение обмена по сценарию…»

Удивителен тот факт, что код «Метаданные.ОсновнаяРоль» вполне нормальный. Т.е. конструкция вызывается в конфигураторе при конфигурировании как свойство объекта «Метаданные». Так же не возникает ошибок при проверка кода при сохранении изменений конфигурации. 

Нажатие на изображении увеличит его

Рис. 3. Причина ошибки в коде, конструкция «Метаданные.ОсновнаяРоль = Неопределено».

Релиз используемой платформы 1С в базе, в которой возникла проблема — 8.3.18.1741


Рис. 4. Сведения о конфигурации, версии платформы и параметры конфигурации.

Удивительно, что описание данного свойства «ОсновнаяРоль» отсутствует в Синтакс-помощнике. Хотя, как уже было коротко упомянуто, свойство «ОсновнаяРоль» глобального свойства «Метеданные» используется в библиотеке МДЛП. Исходно основное назначение библиотеки — для конфигураций, работающих в режиме управляемого приложения. Конфигурация 1С: Управление торговлей 10.3 работает в другом режиме — обычного приложения. Поэтому получается, что конструкция кода эксплуатируется в редко используемой библиотеке и ее работоспособность не совсем понятна в текущем релизе платформы.

В сети оказалось достаточно мало вспомогательной информации об этой ошибке. Из найденного, что может кому-то помочь — это обсуждение на форуме forum.1c.ru «После обновления на 2.0.15.8 выпадает ошибка: Недопустимо использование свойства «ОсновнаяРоль».

Поэтому возможно, но это только неподтвержденное предположение, что метод работает только в конфигурациях, работающих в режиме управляемого приложения, т.к. о нем отсутствует какая-либо информация в официальной методике — «Синтакс-помощнике». Поскольку упоминание проблемы с «ОсновнаяРоль» и ее актуальное решение по приведенной выше ссылке действует для конфигурации 1С: Деньги, которая работает исключительно в режиме обычного приложения (интерфейса).

1С 8 свойство метода метаданные конфигурации ОсновнаяРоль
Рис. 5. Отсутствие в «Синтакс-помощнике» описания метода «ОсновнаяРоль»

Поэтому решением данной проблемы стало изменение кода на конструкцию: Метаданные.ОсновныеРоли.Количество()

Нажатие на изображении увеличит его

Рис. 6. Устранение ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» заменой текста кода.

Таким образом код стал актуальным для исполнения и в дальнейшем не вызывал ошибку.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

21-07-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Konstantan

1 / 1 / 1

Регистрация: 11.05.2015

Сообщений: 74

1

Ошибка при получении атрибута значения контекста (Номенклатура)

11.10.2018, 12:33. Показов 5662. Ответов 3

Метки нет (Все метки)


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Процедура УдалениеСтрокНажатие(Элемент)
    
    Запрос = Новый Запрос;  
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
    Запрос.Текст =
    "ВЫБРАТЬ
    |   РеализацияТоваровУслугТовары.Ссылка
    |ИЗ
    |   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |   РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура";
    
    Выборка = Запрос.Выполнить();
    МассивТоваров=новый Массив; 
    Значения= Выборка.Выбрать();
    Пока Значения.Следующий() Цикл
        ссылка = Значения.ссылка ;
        ДокументОбъект = ссылка.ПолучитьОбъект();
        i=0;
        Для каждого ТекСтрока Из ДокументОбъект.Товары Цикл
            Если ТекСтрока.Номенклатура = Номенклатура Тогда
                МассивТоваров.Добавить(ТекСтрока);
                Сообщить("Значение: "+ ТекСтрока.Номенклатура +" подходит!"); 
                i=i+1
            Иначе
                Сообщить("Значение: "+ТекСтрока.Номенклатура+ " не подходит!");
            КонецЕсли
        КонецЦикла;
        Для  каждого ТекСтрокаМас Из    МассивТоваров Цикл
            Если Вопрос("Удалить строку со значением  " + ТекСтрокаМас.Номенклатура + "?" ,РежимДиалогаВопрос.ДаНет,15)=КодВозвратаДиалога.Да Тогда
                
                
                ДокументОбъект.Товары.Удалить(ТекСтрокаМас);
                
                
                Сообщить("Строка удалена!");
            Иначе
                Сообщить("Отмена удаления!");
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    
КонецПроцедуры

Сначала выполняется удалет строки из первого документа потом на втором документе вылетает ошибка,что это значит помогите плиииз ничего не пойму

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

11.10.2018, 12:44

2

В каком месте то ошибка происходит?

0

856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

11.10.2018, 13:36

3

Полный текст ошибки выложите

0

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

11.10.2018, 20:10

4

Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

Konstantan, МассивТоваров не очищается перед обработкой следующего документа.

2

Не работает с 1с 8.2 Бухгалтерия

Модераторы: Дмитрий Юхтимовский, Лысиков Денис

Не работает с 1с 8.2 Бухгалтерия

Не работает с 1с 8.2 Бухгалтерия Версия 3.0, а 2.0 работает. После объедения выдает ошибку {ОбщийМодуль.ПользователиКлиентСервер.Модуль(22)}: Ошибка при получении значения атрибута контекста (ТекущийПользователь)
Возврат ?(ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь),
по причине:
Попытка получения неинициализированного значения параметров

tanksod
 
Сообщений: 9
Зарегистрирован: 24 фев 2014, 12:38

Re: Не работает с 1с 8.2 Бухгалтерия

Сообщение Лысиков Денис » 27 фев 2014, 13:16

Здравствуйте! Проверьте каким образом Вы объединили модуль сеанса. Не удалили ли Вы оттуда типовые процедуры по инициализации параметров сеансов.

Лысиков Денис
 
Сообщений: 86
Зарегистрирован: 11 фев 2013, 21:46

Re: Не работает с 1с 8.2 Бухгалтерия

Сообщение tanksod » 27 фев 2014, 14:42

теперь вышла ошибка.
МодульСеанса(11,7)}: Переменная не определена (ТребуемыеПараметры)
Если <<?>>ТребуемыеПараметры = Неопределено ИЛИ ТребуемыеПараметры.Найти(«APDEX_НастройкиЗамеров»)<>Неопределено Тогда (Проверка: Сервер)
{МодульСеанса(11,45)}: Переменная не определена (ТребуемыеПараметры)
Если ТребуемыеПараметры = Неопределено ИЛИ <<?>>ТребуемыеПараметры.Найти(«APDEX_НастройкиЗамеров»)<>Неопределено Тогда (Проверка: Сервер)
сам модуль сеанса
// СтандартныеПодсистемы
СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
// Конец СтандартныеПодсистемы
// АПДЕКС

Если ТребуемыеПараметры = Неопределено ИЛИ ТребуемыеПараметры.Найти(«APDEX_НастройкиЗамеров»)<>Неопределено Тогда
ХранилищеЗначения = Новый ХранилищеЗначения(Новый Соответствие);
ПараметрыСеанса.APDEX_ТекущийЗамерВремени = ХранилищеЗначения;

APDEX_Настройки = APDEX_ОценкаПроизводительностиСерверВызовСервера.ПолучитьНастройки();
APDEX_НастройкиЗамеров = Новый Структура;
APDEX_НастройкиЗамеров.Вставить(«APDEX_ОтключитьЗамер»,APDEX_Настройки.APDEX_ОтключитьЗамер);
APDEX_НастройкиЗамеров.Вставить(«APDEX_МинимальноеВремяЗамера»,APDEX_Настройки.APDEX_МинимальноеВремяЗамера);
APDEX_НастройкиЗамеров.Вставить(«APDEX_ИдентификаторБазыAPDEX»,APDEX_Настройки.APDEX_ИдентификаторБазыAPDEX);
APDEX_НастройкиЗамеров.Вставить(«APDEX_СпособЗаписиЗамеров»,APDEX_Настройки.APDEX_СпособЗаписиЗамеров);

ПараметрыСеанса.APDEX_НастройкиЗамеров = Новый ФиксированнаяСтруктура(APDEX_НастройкиЗамеров);
КонецЕсли;

tanksod
 
Сообщений: 9
Зарегистрирован: 24 фев 2014, 12:38

Re: Не работает с 1с 8.2 Бухгалтерия

Сообщение Лысиков Денис » 28 фев 2014, 09:11

Если в типовой процедуре модуля сеансов не используется переменная ТребуемыеПараметры. тогда вообще удалите условие «Если ТребуемыеПараметры = Неопределено ИЛИ ТребуемыеПараметры.Найти(«APDEX_НастройкиЗамеров»)<>Неопределено Тогда» оставьте только следующий код:

ХранилищеЗначения = Новый ХранилищеЗначения(Новый Соответствие);
ПараметрыСеанса.APDEX_ТекущийЗамерВремени = ХранилищеЗначения;

APDEX_Настройки = APDEX_ОценкаПроизводительностиСерверВызовСервера.ПолучитьНастройки();
APDEX_НастройкиЗамеров = Новый Структура;
APDEX_НастройкиЗамеров.Вставить(«APDEX_ОтключитьЗамер»,APDEX_Настройки.APDEX_ОтключитьЗамер);
APDEX_НастройкиЗамеров.Вставить(«APDEX_МинимальноеВремяЗамера»,APDEX_Настройки.APDEX_МинимальноеВремяЗамера);
APDEX_НастройкиЗамеров.Вставить(«APDEX_ИдентификаторБазыAPDEX»,APDEX_Настройки.APDEX_ИдентификаторБазыAPDEX);
APDEX_НастройкиЗамеров.Вставить(«APDEX_СпособЗаписиЗамеров»,APDEX_Настройки.APDEX_СпособЗаписиЗамеров);

ПараметрыСеанса.APDEX_НастройкиЗамеров = Новый ФиксированнаяСтруктура(APDEX_НастройкиЗамеров);

Лысиков Денис
 
Сообщений: 86
Зарегистрирован: 11 фев 2013, 21:46

Re: Не работает с 1с 8.2 Бухгалтерия

Сообщение tanksod » 03 мар 2014, 09:46

спасибо большое. помагло :)

tanksod
 
Сообщений: 9
Зарегистрирован: 24 фев 2014, 12:38


Вернуться в APDEX — статистика длительности операций

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Автор aboba174, 30 апр 2023, 17:11

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

Здравствуйте.

У меня есть 2 регистра сведений: 1) ЦеныУслуга (независимый) 2) ЦеныНоменклатура (Подчинение регистратору).

При записи в документ «ОказаниеУслуги» я хочу чтобы при выборе в «Номенклатура» табличной части «ПереченьНоменклатуры» для услуги выставлялись цены из регистра «ЦеныУслуга», а для номенклатуры из «ЦеныНоменклатура».

У меня есть следующие код, но он не работает, прикреплю во вложении и ниже:

Документ ОказаниеУслуги: ФормаДокумента

&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
  СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные; //получаем тек. строку табл. части
//для номенклатуры
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
//для услуги
СтрокаТабличнойЧасти.Цена = РаботаСРегистрами.НоменклатураЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

Общий модуль РаботаСРегистрами: Модуль

Функция НоменклатураЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

// Получаем значения ресурсов регистра
ЗначенияРесурсов = РегистрыСведений.ЦеныНоменклатура.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции

Функция УслугаЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

// Получаем значения ресурсов регистра
ЗначенияРесурсов = РегистрыСведений.ЦеныУслуга.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции


Цитата: aboba174 от 30 апр 2023, 17:11Здравствуйте.

У меня есть 2 регистра сведений: 1) ЦеныУслуга (независимый) 2) ЦеныНоменклатура (Подчинение регистратору).

При записи в документ «ОказаниеУслуги» я хочу чтобы при выборе в «Номенклатура» табличной части «ПереченьНоменклатуры» для услуги выставлялись цены из регистра «ЦеныУслуга», а для номенклатуры из «ЦеныНоменклатура».

У меня есть следующие код, но он не работает, прикреплю во вложении и ниже:

Документ ОказаниеУслуги: ФормаДокумента

&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
  СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные; //получаем тек. строку табл. части
//для номенклатуры
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
//для услуги
СтрокаТабличнойЧасти.Цена = РаботаСРегистрами.НоменклатураЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

вы сначала цены находіте считая номенклатуру — товаром а затем ее переопределяете

вам нужно делать условие

если номенклатра = товар тогда первый вариант иначе второй


Afinogen, Я сделал вот так, но у меня выбивает ошибку:

Ошибка при получении значения атрибута контекста (ТекущиеДанные)
{Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(30)}: СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
{Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(22)}: ДляРегистраНаСервере();
по причине:
Текущие данные таблицы недоступны на сервере
Текущие данные таблицы недоступны на сервере

Мой код:

&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
  СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные; //получаем тек. строку табл. части
//для номенклатуры
//СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
//для услуги
//СтрокаТабличнойЧасти.Цена = РаботаСРегистрами.НоменклатураЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
ДляРегистраНаСервере();


КонецПроцедуры

&НаСервере
Процедура ДляРегистраНаСервере()

СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
Услуга1 = Перечисления.ВидыНоменклатуры.Услуга;
Если Услуга1 Тогда
СтрокаТабличнойЧасти.Цена = РаботаСРегистрами.НоменклатураЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
Иначе
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
КонецЕсли;
КонецПроцедуры


aboba174, ну так у вас все четко написано — текущие данные таблицы недоступны на сервере

вы на сервер не можете передать ТекущиеДанные, особенности управляемой формы,  вам надо для передачи на сервер из объекта Текущиеданные сделать например структуру

типа такого

Структура = Новый структура;
Стркутура.Вставить(«ключ — имя колонки», значение — значение)

и только потом прописать  РаботаСДокументами.РассчитатьСумму(Структура);

в результате ваша цена будет равна значению в соответствующем ключе структуры


Теги:

  • Форум База

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • 2 регистра сведений.

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Ошибка при получении значения атрибута контекста (ТекущийПользователь)

bless18
06.04.2010 09:32 Прочитано: 51548

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х

 Процедура ПриНачалеРаботыСистемы()
Пользователь = ПараметрыСеанса.ТекущийПользователь;
Если обЗначениеНеЗаполнено(Пользователь.Сотрудник) Тогда
ИмяПользователя = СокрЛП(Пользователь.Наименование);
Иначе
ИмяПользователя = СокрЛП(Пользователь.Сотрудник.Наименование);
КонецЕсли;
Предупреждение("Здравствуйте уважаемый пользователь """+ИмяПользователя+"""
|Система готова к работе.", 3);
КонецПроцедуры

Где происходит их инициализация?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
06.04.2010 09:48 Ответ № 1

Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо:
Код 1C v 8.х

 ИмяПользователя = ИмяПользователя();
Если Не ПустаяСтрока(ИмяПользователя) Тогда
ТекущийПользователь = Справочники.Пользователи.НайтиПоКоду(ИмяПользователя);
КонецЕсли;
ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь;

Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код

bless18
06.04.2010 09:56 Ответ № 2

А если не совпадают, можно как-нибудб привязать пользователя к сотруднику?

E_Migachev
06.04.2010 09:57 Ответ № 3

А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)

В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают:

Код 1C v 8.х

 Процедура УстановкаПараметровСеанса()
Спр = Справочники.Сотрудники;
ПараметрыСеанса.ТекущийПользователь=Спр.НайтиПоРеквизиту("Пользователь1С", ИмяПользователя());
КонецПроцедуры
//где Пользователь1С, это реквизит справочника сотрудники, и именем как вбито в конфигураторе

Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы.

Ну а дальше подставлять сопоставленное значение при создании соответствующего документа:

Код 1C v 8.х

  Док.Пользователь=ПараметрыСеанса.Пользователь;   

События модуля сеанса:
Глобальный контекст
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса(<Требуемые параметры>)
Параметры:
<Требуемые параметры>
Тип: Массив; Неопределено. Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой или при захвате соединения с информационной базой из пула до вызова всех остальных обработчиков. Значение параметра «Параметры сеанса» — Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра «Параметры сеанса» является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то возникает исключение.

bless18
06.04.2010 12:13 Ответ № 4

Спасибо вам огромное! Вы мне очень помогли!

bless18
06.04.2010 12:15 Ответ № 5

Спасибо вам огромное! Вы мне очень помогли!

E_Migachev
06.04.2010 15:44 Ответ № 6

Пожалуйста )

Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .

Доброго времени суток уважаемый!

Прошу помочь определится с правильным решением задачи по расходу штукатурки. Это самый сложный расчет и по его примеру, я без проблем, смогу реализовать расчет других материалов, которые считаются исходя из площади поверхности… Проблема заключается вот в чем…

В случае со штукатуркой, у одного и того же элемента справочника, допустим Rotband (30кг)

меняется расход в зависимости от способа нанесения.

То есть существует 3 способа штукатурки, под плинтус, под правило и под маяк, в порядке увеличения.

Допустим расходы равны 6, 8,5 и 12кг на квадратный метр соответственно.

Напомню, что в предыдущих обсуждениях Вы помогли мне рассчитать и переносить в таблицу «работы со стенами» значения для определенных помещений при их добавлении… То есть теперь, моя задача, организовать расчет материала при различных видах работ. Поэтому я создаю таблицу следующего содержания..

Помещение — ссылка на справочник «Помещения» где хранятся названия «помещений»

Вид работы — ссылка на справочник «ВидыРаботСтены» где хранятся наименования возможных видов работ. Сделал справочник, что бы можно было дополнять в режиме Предприятие, если стоит сделать перечисление, и заранее указать все виды работ, прошу сообщить об этом..

Материал — ссылка на справочник «Номенклатура»  где по умолчанию должен подставлятся определенный материал, в зависимости от выбраного вида работ. Тут стоит отметить, что доступный материал для выбора должен быть только подходящий, то есть только штукатурка.. Вы уже советовали мне хранить эти значения в константе, однако как это использовать я не понимаю.. Поверьте, очень неудобно просить разжевать этот, видимо элементарный момент.. :(

РабочаяПлощадь — Число, которое уже благодаря Вам, подставляется из соседней таблицы и доступно для редактирования, на случай комбинированых поверхностей (Допустим на 20и метровой кухне 12 ламинат и 8 плитка).

Расход — Число, которое я планировал брать из реквизита элемента справочника. Допустим для обойного клея это 0,8кг на кв.м, а длчя краски 1,5кг на кв.м, эти значения, я планировал заносить в справочник номенклатура и подставлять их в эту таблицу… Но вот тут то и встал вопрос о том, как быть со штукотуркой… Варианты, которые я смог подумать.. Это создание в справочнике 3х реквизитов, но востребованы они будут только в случае со штукатуркой, что хоть отджельный справочник для штукатурки создавай… Создал именно 3 разных ВидаРаботы ШтукатуркаПлинтус, ШтукатуркаПравило, ШтукатуркаМаяк. И подумал, что самое логичное, внедрить в расчет коэфициенты в духе 0,8, 1, 1,2… Но опять же возможно для других видов штукатурки, данный коэфициент будет не корректен. И как быть в этом случае, я совсем запутался в мыслях и не представляю. Самое логичное получается, на самом деле, создать отдельный справочник с 3мя необходимыми реквизитами?

Количество основного материала — число, которое будет получатся в результате умножения «рабочей площади в строке, на расход.

Стоимость работ — число, которое по плану будет братся из справочника и получатся в результате умножения на «рабочуюПлощадь» в зависимости от выбраного ВидаРаботы

Следующим шагом в разработке данного документа, планирую создать аналогичную таблицу для работ с полом. И после этого создать итоговую таблицу, которая должна будет суммировать материалы из обоих таблиц и выдать список необходимых материалов.. Но это уже другой вопрос… На данный момент я встал мертвой точкой на вышеописаной проблеме и что делать даже теоритически не знаю… :(

Прошу поправить, если где то моя логика и выдуманый механизм, по Вашему мнению не правильны и помочь в реализации этого механизма на примере штукатурки, дальнейшие материалы я думаю без проблем смогу посчитать на этом примере!

Заранее благодарю вас Уважаемый СенСей! МирТрудМай! С наступающим праздником победы! Всех благ Вам и Вашим близким!

PS  Не знал как более корректно назвать тему данного обсуждения..

Понравилась статья? Поделить с друзьями:
  • Ошибка при получении значения атрибута контекста сумма
  • Ошибка при получении значения атрибута контекста строки
  • Ошибка при получении значения атрибута контекста результат
  • Ошибка при получении значения атрибута контекста рабочееместоклиента
  • Ошибка при получении значения атрибута контекста путькданным