Текущие данные (управляемая форма) |
Я |
28.09.17 — 17:00
Подскажите пожалуйста. Перевожу базу с обычной на управляемую форму. в одной из обработок, на обычной форме при нажатие кнопки данные брались с табличной части таким образом:
ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;
Теперь на управляемой выводит ошибку:
( Ошибка при получении значения атрибута контекста (ТекущиеДанные)
ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;
по причине:
Текущие данные таблицы недоступны на сервере )
ВходящиеПартии — табличная часть
Вроде не сложно. Но как исправить не пойму
1 — 28.09.17 — 17:01
На клиенте выполняю, пишет: … поле не является объектным типом
2 — 28.09.17 — 17:02
получить по идентификатору
3 — 28.09.17 — 17:03
ВходящиеПартии не только имя табличной часть, но и имя элемента формы. Одна доступна на сервере, второй на клиенте.
4 — 28.09.17 — 17:03
части*
5 — 28.09.17 — 17:07
Интересно, а всё же что быстрее, в конфигураторе поставить точку останова на проблемной строке и посмотреть в режиме отладки, что там есть и что можно использовать, или создать тута темку и узнать много нового, чаще всего не о вопросе, а о себе (неичего личного, просто интересно))))))
6 — 28.09.17 — 17:08
(3) ну так и как быть?
выполняю вот на сервере
ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;
Enterprise = ТекущиеДанные.Площадка;
Ошибка! Площадка одно из полей
7 — 28.09.17 — 17:11
ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;
выполняй на клиенте
8 — 28.09.17 — 17:11
(6) у тч нет тек. данных…передавай их с клиента.
9 — 28.09.17 — 17:14
(7) (8) — (1) прочитайте
10 — 28.09.17 — 17:15
хотя задаю переменную
Перем ТекущиеДанные;
11 — 28.09.17 — 17:15
(9) что показывает отладка???
12 — 28.09.17 — 17:15
и вообще, строка какая-нибудь выделена?
13 — 28.09.17 — 17:16
«…поле не является объектным типом»
какое?
14 — 28.09.17 — 17:17
(12) т.к. при невыделенном ТекущиеДанные = Неопределено
15 — 28.09.17 — 17:18
(11) как я могу проверить отладчиком если этой строке выходит ошибка?
16 — 28.09.17 — 17:19
(12) (14) стоит условие
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
17 — 28.09.17 — 17:20
(13) ну естественно первое которое выбирается в коде.
я же объясняю в обычном приложение всё работало
18 — 28.09.17 — 17:23
(15) дык на этой строке точку останова поставить, и смотреть, что там………
19 — 28.09.17 — 17:27
(18) текущиеданные — не является полем объектного типа
20 — 28.09.17 — 17:30
(19) До текущих данных смотрим, что там есть
в Элементах смотрим что есть
в Объекте смотрим, что есть
ищем, где собака порылась, тьфу, блин, где есть то, что нам нужно…у Вас шансов намного больше, чем у советчиков тут — потому как всё перед глазами — нужно только найти, что хочется)))))
21 — 28.09.17 — 17:31
(19) Во общем, вам надо изменить в своей голове парадигму программирования. То что было разрешено в толстом клиенте на обычных формах — ниразу не разрешено в тонком. текущие данные у табличной части доступны только на клиенте
22 — 29.09.17 — 09:12
(15) блин, ну ты же прямо ПЕРЕД выполнением этой строки можешь посмотреть на значения всех используемых в ней сущностей!!!
23 — 29.09.17 — 11:06
Просто объясните. Как в управляемой форме получить значение по выбранной строке
24 — 29.09.17 — 11:09
Значение чего?
25 — 29.09.17 — 11:18
(0) Все должно работать, попробуй переименовать табличное поле, скорей всего проблема в (3)
ТекущиеДанные = Элементы.ТабличноеПоле1.ТекущиеДанные;
(на клиенте)
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;
КонецФункции
27 — 29.09.17 — 11:40
поэтому значение текущиеданные не находит
28 — 29.09.17 — 12:47
ну значит на сервере получай нужную строку Объект.ВходящиеПартии[НомерТекСтроки] и обрабатывай
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 |
|
||
---|---|---|---|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Где происходит их инициализация? |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
bless18 |
|
||
---|---|---|---|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
E_Migachev |
|
||
---|---|---|---|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса) В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
E_Migachev |
|
||
---|---|---|---|
Пожалуйста |
Подсказка: Для выделения Кода используйте (в редакторе). |
Ошибка в 1С 8. Ошибка при получении значения атрибута контекста (ОсновнаяРоль), Недопустимо использование свойства ОсновнаяРоль
Описание ошибки:
Проблема стала возникать после того, как в серверную базу УТ 10.3 был добавлен функционал Библиотеки МДЛП. Ошибка не проявляла себя явно при работе в режиме 1С: Предприятие, но негативно влияла на выполнение некоторых регламентных заданий, так что они аварийно прерывались.
Найденные решения:
{ОбщийМодуль.Пользователи.Модуль(116)}: Ошибка при получении значения атрибута контекста (ОсновнаяРоль)
по причине:
Недопустимо использование свойства «ОсновнаяРоль»
Проблема стала заметна случайно лишь тогда, когда в частности регламентное фоновое задание «Наличие новых ЭД» стало прерываться в процессе своего выполнения из за ошибки.
Рис. 1. Пример ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» в регламентном задании «Наличие новых эд в сервисе ЭДО«
Так же и в другом регламентном задании стала проявляться ошибка «Ошибка при получении значения атрибута контекста (ОсновнаяРоль) по причине: Недопустимо использование свойства «ОсновнаяРоль».
Рис. 2. Пример ошибки «Недопустимо использование свойства «ОсновнаяРоль» в регламентном задании «Выполнение обмена по сценарию…»
Удивителен тот факт, что код «Метаданные.ОсновнаяРоль» вполне нормальный. Т.е. конструкция вызывается в конфигураторе при конфигурировании как свойство объекта «Метаданные». Так же не возникает ошибок при проверка кода при сохранении изменений конфигурации.
Нажатие на изображении увеличит его
Рис. 3. Причина ошибки в коде, конструкция «Метаданные.ОсновнаяРоль = Неопределено».
Релиз используемой платформы 1С в базе, в которой возникла проблема — 8.3.18.1741
Рис. 4. Сведения о конфигурации, версии платформы и параметры конфигурации.
Удивительно, что описание данного свойства «ОсновнаяРоль» отсутствует в Синтакс-помощнике. Хотя, как уже было коротко упомянуто, свойство «ОсновнаяРоль» глобального свойства «Метеданные» используется в библиотеке МДЛП. Исходно основное назначение библиотеки — для конфигураций, работающих в режиме управляемого приложения. Конфигурация 1С: Управление торговлей 10.3 работает в другом режиме — обычного приложения. Поэтому получается, что конструкция кода эксплуатируется в редко используемой библиотеке и ее работоспособность не совсем понятна в текущем релизе платформы.
В сети оказалось достаточно мало вспомогательной информации об этой ошибке. Из найденного, что может кому-то помочь — это обсуждение на форуме forum.1c.ru «После обновления на 2.0.15.8 выпадает ошибка: Недопустимо использование свойства «ОсновнаяРоль».
Поэтому возможно, но это только неподтвержденное предположение, что метод работает только в конфигурациях, работающих в режиме управляемого приложения, т.к. о нем отсутствует какая-либо информация в официальной методике — «Синтакс-помощнике». Поскольку упоминание проблемы с «ОсновнаяРоль» и ее актуальное решение по приведенной выше ссылке действует для конфигурации 1С: Деньги, которая работает исключительно в режиме обычного приложения (интерфейса).
Рис. 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 Метки нет (Все метки)
Сначала выполняется удалет строки из первого документа потом на втором документе вылетает ошибка,что это значит помогите плиииз ничего не пойму
__________________ 0 |
Тест 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 |
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)
Поиск
Ошибка при получении значения атрибута контекста (ТекущийПользователь)
bless18 |
|
||
---|---|---|---|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь; по причине: Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х
Где происходит их инициализация? |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо: Код 1C v 8.х
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
bless18 |
|
||
---|---|---|---|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
E_Migachev |
|
||
---|---|---|---|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
E_Migachev |
|
||
---|---|---|---|
Пожалуйста |
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или . |
Доброго времени суток уважаемый!
Прошу помочь определится с правильным решением задачи по расходу штукатурки. Это самый сложный расчет и по его примеру, я без проблем, смогу реализовать расчет других материалов, которые считаются исходя из площади поверхности… Проблема заключается вот в чем…
В случае со штукатуркой, у одного и того же элемента справочника, допустим Rotband (30кг)
меняется расход в зависимости от способа нанесения.
То есть существует 3 способа штукатурки, под плинтус, под правило и под маяк, в порядке увеличения.
Допустим расходы равны 6, 8,5 и 12кг на квадратный метр соответственно.
Напомню, что в предыдущих обсуждениях Вы помогли мне рассчитать и переносить в таблицу «работы со стенами» значения для определенных помещений при их добавлении… То есть теперь, моя задача, организовать расчет материала при различных видах работ. Поэтому я создаю таблицу следующего содержания..
Помещение — ссылка на справочник «Помещения» где хранятся названия «помещений»
Вид работы — ссылка на справочник «ВидыРаботСтены» где хранятся наименования возможных видов работ. Сделал справочник, что бы можно было дополнять в режиме Предприятие, если стоит сделать перечисление, и заранее указать все виды работ, прошу сообщить об этом..
Материал — ссылка на справочник «Номенклатура» где по умолчанию должен подставлятся определенный материал, в зависимости от выбраного вида работ. Тут стоит отметить, что доступный материал для выбора должен быть только подходящий, то есть только штукатурка.. Вы уже советовали мне хранить эти значения в константе, однако как это использовать я не понимаю.. Поверьте, очень неудобно просить разжевать этот, видимо элементарный момент..
РабочаяПлощадь — Число, которое уже благодаря Вам, подставляется из соседней таблицы и доступно для редактирования, на случай комбинированых поверхностей (Допустим на 20и метровой кухне 12 ламинат и 8 плитка).
Расход — Число, которое я планировал брать из реквизита элемента справочника. Допустим для обойного клея это 0,8кг на кв.м, а длчя краски 1,5кг на кв.м, эти значения, я планировал заносить в справочник номенклатура и подставлять их в эту таблицу… Но вот тут то и встал вопрос о том, как быть со штукотуркой… Варианты, которые я смог подумать.. Это создание в справочнике 3х реквизитов, но востребованы они будут только в случае со штукатуркой, что хоть отджельный справочник для штукатурки создавай… Создал именно 3 разных ВидаРаботы ШтукатуркаПлинтус, ШтукатуркаПравило, ШтукатуркаМаяк. И подумал, что самое логичное, внедрить в расчет коэфициенты в духе 0,8, 1, 1,2… Но опять же возможно для других видов штукатурки, данный коэфициент будет не корректен. И как быть в этом случае, я совсем запутался в мыслях и не представляю. Самое логичное получается, на самом деле, создать отдельный справочник с 3мя необходимыми реквизитами?
Количество основного материала — число, которое будет получатся в результате умножения «рабочей площади в строке, на расход.
Стоимость работ — число, которое по плану будет братся из справочника и получатся в результате умножения на «рабочуюПлощадь» в зависимости от выбраного ВидаРаботы
Следующим шагом в разработке данного документа, планирую создать аналогичную таблицу для работ с полом. И после этого создать итоговую таблицу, которая должна будет суммировать материалы из обоих таблиц и выдать список необходимых материалов.. Но это уже другой вопрос… На данный момент я встал мертвой точкой на вышеописаной проблеме и что делать даже теоритически не знаю…
Прошу поправить, если где то моя логика и выдуманый механизм, по Вашему мнению не правильны и помочь в реализации этого механизма на примере штукатурки, дальнейшие материалы я думаю без проблем смогу посчитать на этом примере!
Заранее благодарю вас Уважаемый СенСей! МирТрудМай! С наступающим праздником победы! Всех благ Вам и Вашим близким!
PS Не знал как более корректно назвать тему данного обсуждения..