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

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Конвертация, перенос дополнительных реквизитов номенклатуры ☑ 0

mxs089

24.12.14

14:54

при переносе дополнительных реквизитов (свойств) как перенести тип значения свойства?

1

Dionis Sergeevich

24.12.14

14:56

доп реквизиты в рс хранятся на сколько я помню. его и переноси

2

mxs089

24.12.14

14:59

в ут 11.1

3

mxs089

24.12.14

15:01

значения хранятся в таблице номенклатуры

4

mxs089

24.12.14

15:01

тип определяется в плане видов характеристик

5

mxs089

24.12.14

15:01

конвертации как сказать, в метаданных нет поля типданных

6

Dionis Sergeevich

24.12.14

15:08

(3) Да ладно. Да не верю

7

Dionis Sergeevich

24.12.14

15:09

СвойстваОбъектов рс не?

8

mxs089

24.12.14

15:10

не, сейчас это табличная часть справочника номенклатура

9

mxs089

24.12.14

15:11

суть вопроса, не значения перетянуть а тип значения свойства

10

mxs089

24.12.14

15:11

тип значения элемента плана вида характеристик

11

Dionis Sergeevich

24.12.14

15:12

(8) ПКО для ПВХ есть?

12

mxs089

24.12.14

15:13

да, есть

13

Dionis Sergeevich

24.12.14

15:14

ТипЗначения является стандартным реквизитом ПВХ, в ПКО для ПВХ есть ПКС «ТипЗначения»?

14

mxs089

24.12.14

15:22

нет

15

mxs089

24.12.14

15:23

в том то все и дело, в упор не вижу, а в запросе это поле присутствует (консольЗапросов)

16

Dionis Sergeevich

24.12.14

15:23

(14) Ты знаешь что делать)

17

Dionis Sergeevich

24.12.14

15:24

или не знаешь?

18

mxs089

24.12.14

15:24

как нить через параметр?

19

Dionis Sergeevich

24.12.14

15:28

(18) фуфуфу. нельзя так измываться.

Добавляй ПКС «ТипЗначения». Если в свойствах не видишь такого — загрузи структуру конфигурации (если ты загрузил только правила то структуры конфигураций создались только в части используемых в правилах объектов и свойств а не полностью)

20

mxs089

24.12.14

15:58

структуру конфигурации загружал

21

mxs089

24.12.14

15:58

ничего не изменилось

22

vicof

24.12.14

15:59

В ПКЗ заглядывал?

23

Бригада бронепоезда

24.12.14

16:02

делай для пвх отдельное пко и подсовывай его реквизиты ТЧ

24

Dionis Sergeevich

24.12.14

16:04

(20) нет свойства «ТипЗначения»?

25

mxs089

24.12.14

16:06

нет, скрин прислать?

26

mxs089

24.12.14

16:07

(23) что? какой ТЧ?

27

mxs089

24.12.14

16:08

(22) да, на стороне источника только Контрагент

28

mxs089

24.12.14

16:08

выгрузка из УТ 10.2 в УТ 11.1

29

Dionis Sergeevich

24.12.14

16:09

(25) В правилах самих указаны 2 конфигурации, ты их перезагрузил (предварительно выгрузив из базы УТ обработкой)? Что-то мне подсказывает что нет, ни фига ты не сделал этого.

30

mxs089

24.12.14

16:09

тип значения удалось передать через параметр таким способом:

Значение = ЗначениеВСтрокуВнутр(Источник.ТипЗначения.Типы());

после загрузки при присвоении ошибка

ОписаниеОшибки         =  Ошибка при установке значения атрибута контекста (ТипЗначения): Тип не является подмножеством типа значений плана видов характеристик

31

mxs089

24.12.14

16:10

(29) изначально у меня не было правил, делал выгрузку метаданных

32

mxs089

24.12.14

16:10

(30) тип строка, разная длина …

33

Бригада бронепоезда

24.12.14

16:12

(26) табличная часть, где свойства хранятся

34

Бригада бронепоезда

24.12.14

16:13

а по-хорошему — берешь типовые правила УТ11 — БП 3.0, смотришь как там и не паришься

35

Dionis Sergeevich

24.12.14

16:18

ЩАс загружу у себя — посмотрю

36

Dionis Sergeevich

24.12.14

16:35

да, не выгружает. сейчас посмотрю

37

Dionis Sergeevich

24.12.14

16:54

все, сделал. ЩАс покажу

38

Dionis Sergeevich

24.12.14

16:56

В обработках MD82Exp и MD83Exp в модуле объекта в процедуре ВыгрузитьОбъекты:

после

«Для каждого Объект из Метаданные[ИмяОбъекта] Цикл

        
        ВыгрузитьОбъект(Объект, ПрефиксИмени);»

добавляешь следующий код:

«Если Объект.Имя = «СвойстваОбъектов» Тогда

        
            Родитель = «00000000-0000-0000-0000-000000000000»;

            
            Свойство = Новый Структура(«Имя, Синоним, Комментарий, Тип»);

        
            Свойство.Имя = «ТипЗначения»;

            Свойство.Синоним = «»;

            Свойство.Комментарий = «»;

            Свойство.Тип = Новый ОписаниеТипов(«Тип»);

            
            ВыгрузитьСвойство(Свойство, «Свойство», Родитель);

        
        КонецЕсли;»

39

mxs089

24.12.14

17:00

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

40

mxs089

24.12.14

17:00

но большое спасибо за помощь!

41

Dionis Sergeevich

24.12.14

17:03

Сделано это т.к. не было необходимости. Стандартные реквизиты выгружаются в процедуре «ВыгрузитьОсновныеСвойства(Объект)» — туда можно было бы вставить и это свойство. Но я не стал разбираться — все жде разовая потребность. У меня после загрузки конфигурации обновленной обработкой появилось свойство «ТипЗначения». Саму выгрузку не проверял. Отпишись как сделаешь — интересно просто

42

ИсчадиеADO

24.12.14

17:04

(30) все правильно. через параметр. а устанавливаешь его при загрузке объекта пвх. он же орет, что в пвх такрй тип недоступен

43

Dionis Sergeevich

24.12.14

17:13

(40) Я проверил. Грузится все хорошо)

44

Dionis Sergeevich

24.12.14

17:52

(40) Получилось?

Добрый день! При выгрузке в УТ 11 выдает ошибку: Ошибка при загрузке данных: ЗАГРУЗКА В ПРИЕМНИКЕ: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1567)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта    ИмяПКО                 =  СвойстваОбъектов_ДополнительныеРеквизитыИСведения    ТипОбъекта             =  Дополнительный реквизит / сведение    Объект                 =  Ответная часть договора   ОписаниеОшибки         =  Ошибка при установке значения атрибута контекста (ТипЗначения): Тип не является подмножеством типа значений плана видов характеристик Как решали данную проблему?

Гляди в отладчике на чём валиться.

#3
by MatrosoV AleXXXand_R

Открой правила в отладчике, ПКО — СвойстваОбъектов_ДополнительныеРеквизитыИСведения, обработчик ПослеЗагрузки и смотри 13 строку Если не поймешь в чем дело — скопируй сюда ее, может кто чем подскажет

#4
by MatrosoV AleXXXand_R

+ хотел написать «открой правила в КД» :) А вообще можно и отладкой пройтись

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Содержание:

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

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

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

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

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

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

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

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

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

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

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

ТабличноеПоле — данные

Я

  

МаленькийВопросик

19.07.10 — 07:19

Народ есть вопрос по конфигурированию:

На форме есть элемент ТабличноеПоле — по умолчанию — принимает данные такие : СправочникСписок.Банки.

Возможно ли при нажатие кнопки — сделать, чтобы тип занчения был другой — например СправочникСписок.Контрагенты???

Подозреваю, что это делать как-то так, но не получается пока что???

ЭлементыФормы.ТабличноеПоле1.ТипЗначения =…..

Подскажите как сделать?

  

chelentano

1 — 19.07.10 — 07:21

(0) зачем?

  

МаленькийВопросик

2 — 19.07.10 — 07:24

чтобы в одном поле получать разные таблицы.

  

МимохожийОднако

3 — 19.07.10 — 07:33

Составной тип получается указать?

  

DmitrO

4 — 19.07.10 — 08:21

да вообще не вопрос, есть даже два способа.

1.Через свойство ТП Данные

1.1. делаем два реквизита формы:

Банки тип: СправочникСписок.Банки

Контрагенты тип: СправочникСписок.Контрагенты

1.2 когда надо включить банки такой код:

ЭлементыФормы.ТабличноеПоле1.Данные = «Банки»;

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

когда надо включить контрагентов такой код:

ЭлементыФормы.ТабличноеПоле1.Данные = «Контрагенты»;

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

все.

2.Через свойство ТипЗначения. В этом случае у ТП реквизит Данные должен быть пустой (что можно сделать как программно так и в конфигураторе):

2.1 когда надо включить банки такой код:

ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.Банки»);

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

когда надо включить контрагентов такой код:

ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.Контрагенты»);

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

все.

Метод СоздатьКолонки вызывается для наглядности, в реальной задаче может быть заменен кодом создания колонок. Возможно сочетание двух способов.

  

МаленькийВопросик

5 — 19.07.10 — 09:34

(4) во спасибо! оно!!!

  

Aprobator

6 — 19.07.10 — 09:35

(0) баян — уже несколько раз на мисте было.

  

МаленькийВопросик

7 — 19.07.10 — 16:11

{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(11)}: Ошибка при установке значения атрибута контекста (ТипЗначения): Нельзя изменять тип связанного с данными элемента формы

   ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.СерииНоменклатуры»);

по причине:

Нельзя изменять тип связанного с данными элемента формы

  

Aprobator

8 — 19.07.10 — 16:14

да —  там в СП прописано, если связано с данными, то ТипЗначения — тока чтение. Используй первый способ.

  

МаленькийВопросик

9 — 19.07.10 — 16:20

ЭлементыФормы.ТабличноеПоле1.ТипЗначения = Новый ОписаниеТипов(«СправочникСписок.СерииНоменклатуры»);

ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();

я вот так делаю…

  

Aprobator

10 — 19.07.10 — 16:23

(9) это второй способ, а не первый.

  

МаленькийВопросик

11 — 19.07.10 — 16:31

(10) первый тоже выдал ошибку :(

{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(13)}: Ошибка при установке значения атрибута контекста (Данные): Неправильный путь к данным

ЭлементыФормы.ТабличноеПоле1.Данные = «СерииНоменклатуры»;

по причине:

Неправильный путь к данным

  

Aprobator

12 — 19.07.10 — 17:16

(11) ну дык реквизита формы с таким именем нету.

  

МаленькийВопросик

13 — 19.07.10 — 19:34

(12) в том то и дело, что есть Дата  = СправочникСписок.СерииНоменклатуры

  

Dmitrii

14 — 19.07.10 — 19:51

(7) Читай внимательно (4): «В этом случае у ТП реквизит Данные должен быть ПУСТОЙ»

А он у тебя явно заполнен.

  

Dmitrii

15 — 19.07.10 — 19:52

(11) в строке

ЭлементыФормы.ТабличноеПоле1.Данные = «СерииНоменклатуры»;

ковычки не нужны. СерииНоменклатуры — это имя реквизита формы, тип которого должен быть СправочникСписок.СерииНоменклатуры.

  

МаленькийВопросик

16 — 19.07.10 — 20:15

{Обработка.РабочийСтол.Форма.ФормаРабочегоСтола(13)}: Ошибка при установке значения атрибута контекста (Данные): Неправильный путь к данным

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

по причине:

Неправильный путь к данным

  

DmitrO

17 — 19.07.10 — 20:26

Свойство ТП Данные имеет тип Строка. Ковычки нужны. В (15) написан правильный код. Если он не работает, значит нет реквизита формы с таким именем.

  

МаленькийВопросик

18 — 19.07.10 — 20:33

блин, я уже несколько часов бьюсь — кто-нить может дать вменяемый ответ? или ссылочку на пример???

  

Dmitrii

19 — 19.07.10 — 20:40

(17) Извиняюсь. Был не прав :)

(18) >> кто-нить может дать вменяемый ответ?

Уже целых два дали в (4)….

  

DmitrO

20 — 19.07.10 — 20:41

А у меня работает. Какой тебе надо еще пример? Ты знаешь что такое реквизит формы?

  

DmitrO

21 — 19.07.10 — 20:43

(18) прокомментируй подробнее что ты имел в виду в (13). Я вот не могу понять что ты хотел сказать.

  

МаленькийВопросик

22 — 19.07.10 — 21:00

Конечно! Закладка «Реквизиты» — по 13 — создаю Реквизит Дата с типом «СправочникСписок.СерииНоменклатуры»

  

DmitrO

23 — 19.07.10 — 22:31

:) вот ведь а..

Ну тогда и записывай имя реквизита в данные ТП:

ЭлементыФормы.ТабличноеПоле1.Данные = «Дата»;

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Код 1C v 8.3

 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;

Gectar

0 / 0 / 0

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

Сообщений: 18

1

1C 8.x (тонкий)

Ошибка при указании ПутьКДанным в программно созданной таблице

10.08.2016, 13:34. Показов 58100. Ответов 7

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


Студворк — интернет-сервис помощи студентам

Переделываю форму документа КорректировкаЗаписейРегистров под управляемое приложение. Если вручную из реквизитов на форму документа перетащить нужное движение по регистру никаких проблем не возникает: создается таблица, добавляются колонки. Для таблицы регистра бухгалтерии Хозрасчетный свойство ПутьКДанным заполняется значением «Объект.Движения.Хозрасчетный». Но если я программно создаю таблицу и пытаюсь присвоить этому свойству это же значение,

1C
1
2
НоваяТЧ = Элементы.Добавить("Таблица"+СтрокаТаблицыРегистров.Имя,Тип("ТаблицаФормы"), НоваяСтраница); //НоваяСтраница - элем. формы на котором создаю таблицу
НоваяТЧ.ПутьКДанным = "Объект.Движения.Хозрасчетный";

то выскакивает «ошибка при установке значения атрибута контекста (ПутьКДанным)» по причине Недопустимое значение. Из-за чего тут ошибка?

Пробовал привязывать к созданной таблице табличную часть документа ТаблицаРегистровНакопления — свойству ПутьКДанным присвоил значение «Объект.ТаблицаРегистровНакопления», потом программно же создал колонки таблице, указал ПутьКДанным для них и все отработало без нареканий.

0

Dethmontt

Модератор

Эксперт 1С

3724 / 2918 / 575

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

Сообщений: 11,491

Записей в блоге: 1

11.08.2016, 01:57

2

По моему Движения это свойство типа ДокументОбъект и оно не конвертируется на клиента

Добавлено через 13 минут
И программно получить доступ на форме к свойству движения не получиться ибо они ни где не хранятся.

Добавлено через 1 минуту
Нужно создавать свой НаборЗаписей (реквизит формы) устанавливать отбор и к нему привязывать ТаблицуФормы

Добавлено через 58 секунд
Примерчик

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
&НаСервере
Процедура СоздатьРеквизитыФормыНаборовЗаписейРегистров()
 
    ДобавляемыеРеквизиты = Новый Массив;
    УдаляемыеРеквизиты   = Новый Массив;
    
    Для каждого СтрокаРегистра Из СписокРегистров Цикл
        
        ИмяРеквизита = СтрокаРегистра.ИмяРегистра + "НаборЗаписей";
        ТипРеквизита  = Новый ОписаниеТипов(СтрокаРегистра.ВидРегистра + "НаборЗаписей." + СтрокаРегистра.ИмяРегистра);
        НовыйРеквизит = Новый РеквизитФормы(ИмяРеквизита, ТипРеквизита, , , Истина);
        ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
        
    КонецЦикла;
    
    Если ДобавляемыеРеквизиты.Количество() > 0 Тогда
        ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты);
    КонецЕсли;
 
КонецПроцедуры
 
&НаСервере
Процедура АктивироватьНаборыЗаписей()
    Для Каждого СтрокаРегистра Из СписокРегистров Цикл 
        ИмяРеквизита = СтрокаРегистра.ИмяРегистра + "НаборЗаписей";
        НаборЗаписей = РеквизитФормыВЗначение(ИмяРеквизита);
        НаборЗаписей.Отбор.Регистратор.Установить(Документ);
        НаборЗаписей.Прочитать();
        ЗначениеВРеквизитФормы(НаборЗаписей, ИмяРеквизита);
    КонецЦикла;
КонецПроцедуры

0

0 / 0 / 0

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

Сообщений: 18

11.08.2016, 10:56

 [ТС]

3

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Движения это свойство типа ДокументОбъект и оно не конвертируется на клиента

Это так, но я же не с этим свойством связываю таблицу. Тип свойства Движения — КоллекцияДвижений. Содержит эта коллекция наборы записей регистров. С одним из таких наборов я и пытаюсь связать таблицу, ведь наборы вполне себе конвертируются на клиенте.

Добавлено через 7 минут

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Нужно создавать свой НаборЗаписей (реквизит формы) устанавливать отбор и к нему привязывать ТаблицуФормы

Как вариант я тоже думал так сделать, но хотелось бы как-то напрямую к данным, чтобы потом не заморачиваться с обработкой добавления/удаления/изменения записей. В обычном приложении именно напрямую к данным и идет привязка, вот и в управляемом надеялся сделать также.

Добавлено через 19 минут

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

И программно получить доступ на форме к свойству движения не получиться ибо они ни где не хранятся.

Вот тут я может и не до конца понял вашу мысль, но движения по конкретной номенклатуре хранятся в документе, форму которого я и пытаюсь открыть.

0

Модератор

Эксперт 1С

3724 / 2918 / 575

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

Сообщений: 11,491

Записей в блоге: 1

11.08.2016, 11:01

4

Gectar, форма и документ это разные сущности!

Добавлено через 2 минуты
Как появляется реквизит ОБЪЕКТ в форме документа

1. На сервере происходит чтение из БД документа (ДокументОбъект)
2. Свойства ДокументОбъект,а копируются в реквизит Объект формы
3. ДокументОбъект уничтожается

Добавлено через 49 секунд

Цитата
Сообщение от Gectar
Посмотреть сообщение

Как вариант я тоже думал так сделать, но хотелось бы как-то напрямую к данным, чтобы потом не заморачиваться с обработкой добавления/удаления/изменения записей.

Придется именно так и сохранение тоже придется делать самому

1

0 / 0 / 0

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

Сообщений: 18

11.08.2016, 11:11

 [ТС]

5

Я может сейчас и ступлю с этим вопросом, но почему же тогда все работает при ручном перетаскивании того же самого набора записей регистра из движений на форму — таблица создается, колонки добавляются, ПутьКДанным прописывается, работет все чин чинарем и не нужно никаких промежуточных реквизитов?

0

Модератор

Эксперт 1С

3724 / 2918 / 575

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

Сообщений: 11,491

Записей в блоге: 1

11.08.2016, 11:25

6

Цитата
Сообщение от Gectar
Посмотреть сообщение

работет все чин чинарем и не нужно никаких промежуточных реквизитов?

потому что платформа все делает за НАС многе оскрывая от наших глазок =)))

0

0 / 0 / 0

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

Сообщений: 18

25.08.2016, 17:38

 [ТС]

7

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

Миниатюры

Ошибка при указании ПутьКДанным в программно созданной таблице
 

0

0 / 0 / 0

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

Сообщений: 18

25.08.2016, 17:40

 [ТС]

8

Тогда приведенный в самом начале код работает без проблем.

0

ошибка при входе для нового пользователя

Автор annaStar, 31 авг 2017, 04:29

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

при запуске нового пользователя с базовыми правами выводится ошибка: {ОбщийМодуль.ВДГБ_ОбщийМодульСЛКСервер.Модуль(38)}: Ошибка при установке значения атрибута контекста (ВДГБ_ЗапущенМенеджерЛицензий)
   ПараметрыСеанса.ВДГБ_ЗапущенМенеджерЛицензий = МенеджерЛицензийЗапущен;
по причине:
Нарушение прав доступа!
как поступить?
1С:Предприятие 8.3 (8.3.8.2027)


Это означает, что в ролях, доступных пользователю нет доступа на установку значения в параметр сеанса «ВДГБ_ЗапущенМенеджерЛицензий».
Либо дорабатывайте роль, либо найдите ту, в которой будет установлен доступ.

Ничего не знаю, но иногда могу произнести праведную чушь)


Очевидно что ругается у пользователя, что нет прав, на то что делается при запуске программы.
Необходимо дать нужные права пользователю

Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google


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

Она применяется в дополнение и в сочетании с другими ролями


Содержание:

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

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

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

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

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

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

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

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

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

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

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



1 февраля, 2017
21 апреля, 2017

Дано

  • 1С конфигурация бухгалтерия предприятия 2.0
  • Ошибка печати ПКО (приходный кассовый ордер):

{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста

   ЭлементыФормы.ПолеДокумента.ПолеСверху

по причине:

Несоответствие типов

Анализ проблемы

На первый взгляд все ужасно:

  • в конфигураторе видно, что система пытается выполнить строчку кода:

ЭлементыФормы.ПолеДокумента.ПолеСверху          = ПечатныйДокумент.ПолеСверху;

  • в отладке видно, что обе переменные типа “Число”,
  • синтакс-помощник говорит что:

ТабличныйДокумент (SpreadsheetDocument)

ПолеСверху (TopMargin)

Использование:

Чтение и запись.

То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.

Решение

На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.

Дополнено 2017.04.10

Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.

Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Михаил80

Дата регистрации: 31.01.2012
Сообщений: 3

«Ну подскажите как исправить ошибку?<br>{Документ.ИК_БезвозмездноеПолучение.Форма.ФормаДокумента(300)} : Ошибка при установке значения атрибута контекста (Видимость)<br>ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость= ВестиПоАналитике;<br>по причине: Несоответствие типов»

ZhAmAn

Дата регистрации: 23.12.2010
Сообщений: 1333

«Яблоко=Апельсин;<br>Вот что у вас,а должно быть яблоко=истина;»

Михаил80

Дата регистрации: 31.01.2012
Сообщений: 3

«И где ошибка?<br> <br>Процедура ДоступностьЭлементов()<br> Если ПоступлениеМЗ Тогда<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Истина;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Ложь;<br> Иначе<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Ложь;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Истина;<br> Если УчетНПА Тогда<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость                   = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость       = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость                   = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость             = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость             = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость       = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость             = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость            = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость       = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость      = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость             = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость            = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость            = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость            = Ложь;<br> Иначе<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость                   = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость       = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость                   = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость      = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость             = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость             = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость       = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость       = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость            = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость             = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость             = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость            = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость            = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость            = НачислятьАмортизациюКазны;<br> КонецЕсли;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ДатаВводаВЭксплуатацию.Видимость       = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ФактическийСрокЭкспл.Видимость            = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ИнвНомер.Видимость                        = ВестиПоАналитике;<br> КонецЕсли;»

ZhAmAn

Дата регистрации: 23.12.2010
Сообщений: 1333

Что такое ВестиПоАналитике?отладчиком смотрел что там?

Михаил80

Дата регистрации: 31.01.2012
Сообщений: 3

к счету добовляется аналитика, так как у счета может быть несколько аналитик. Скорей всего чтото в праметрах аналитики. Например для 01 счета справочник сотрудников может быть подключен как аналитика, но называться он будет материально ответственное лицо.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

ZhAmAn

Дата регистрации: 23.12.2010
Сообщений: 1333

я знаю что такое аналитика,конкретно скажи что за переменная!

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

А что это за документ такой «ИК_БезвозмездноеПолучение» и откуда он взялся в БП?

ZhAmAn

Дата регистрации: 23.12.2010
Сообщений: 1333

Показывать по
10
20
40
сообщений

Heltarion

2 / 2 / 0

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

Сообщений: 57

1

02.12.2011, 11:18. Показов 8369. Ответов 11

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


Добрый день!
Посмотрите пожалуйста. Есть в обработке таблица значений, в которую я выгружаю данные их XML, после этого я корректирую таблицу и хочу чтобы программа сохранила ее в новый документ эксель. Для этого я создал процедуру «Процедура СохранитьНажатие(Элемент) Экспорт». При сохранении выскакивает: «Ошибка при установке значения атрибута контекста (Value)». Насколько я понимаю, программе не нравится тип значения, который я передаю.
Переменные:

ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML
НоменклатураЗагрузки, НоменклатураБазы — имена столбцов ТПП
СтолбЗагр, СтолбБаз — столбцы в экселе

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

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
СтолбЗагр = 1;
СтолбБаз = 2;
 
Если ИнициализацияЭкселя() Тогда
      Книга = Excel.WorkBooks.Add();
      Sheet = Книга.Sheets(1);
    
      Для каждого стр из ТПП Цикл
              Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
              Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы;
      КонецЦикла;
 
      Попытка
              Книга.SaveAs("F:1CBaseВнешнии обработкиправила.xls");
      Исключение
              Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
              Возврат;
      КонецПопытки;
КонецЕсли;
Сообщить("Готово");

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

0

308 / 308 / 1

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

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

02.12.2011, 11:32

2

СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();

1

2 / 2 / 0

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

Сообщений: 57

02.12.2011, 11:56

 [ТС]

3

СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();

В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт»
Прописал в ней тотже код, что выше. В событии формы написал: ЭтотОбъект.СохранитьВЭксель(ТПП);
Выскочила ошибка: Ошибка при вызове метода контекста (Cells)
Что я нетак сделал?

0

308 / 308 / 1

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

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

02.12.2011, 12:10

4

процедуру ИнициализацияЭкселя() тоже закинь в модуль объекта
СохранитьВЭксель(ТПП), параметр ТПП скорее всего не нужен

1

2 / 2 / 0

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

Сообщений: 57

02.12.2011, 12:19

 [ТС]

5

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

Добавлено через 4 минуты
Проблема вот в чем:
Sheet.Cells(стр,СтолбЗагр).Value=1;
Sheet.Cells(стр,СтолбБаз).Value=2;

Так работает, но если я поставлю
Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБа зы;
Выдает ошибку «Ошибка при установке значения атрибута контекста (Value)».

Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.

0

19 / 18 / 1

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

Сообщений: 54

02.12.2011, 12:22

6

чет вы мудрено делаете.
У вас не правильно указывается адресс ячейки в cell. Если стр — это коллекция или массив записей, то он не может нести в себе номер ячейки.
Не знаком с 1C, но програмлю в Excel и делаю выгрузки из других систем.

1

2 / 2 / 0

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

Сообщений: 57

02.12.2011, 12:28

 [ТС]

7

В данный момент ему не нравится присваемое значение к ячейке экселя (если я правильно понимаю сообщение «Ошибка при установке значения атрибута контекста (Value)» )

Причем если тип значения строка, то он его получает без вопросо, если тип значения СправочникССсылка, то он руегается на «Ошибка при установке значения атрибута контекста (Value)».

Я просто не понимаю как обратиться к такому типу переменных чтобы получить значение типа строка.

0

19 / 18 / 1

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

Сообщений: 54

02.12.2011, 12:30

8

а принудительно все значения в текст перевести нельзя?

1

308 / 308 / 1

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

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

02.12.2011, 12:30

9

стр.НоменклатураБазы.Наименование например

1

2 / 2 / 0

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

Сообщений: 57

02.12.2011, 12:32

 [ТС]

10

стр.НоменклатураБазы — это уже есть наименование интересующего меня поля (имя столбца), в некотрых случаях можно писать: стр.НоменклатураБазы.Значение, но это нетот случай

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

0

308 / 308 / 1

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

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

02.12.2011, 12:34

11

значение из Excel?

1

Heltarion

2 / 2 / 0

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

Сообщений: 57

02.12.2011, 12:43

 [ТС]

12

Рабочий код:

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
Функция ИнициализацияЭкселя()
 
    //Пытаемся подключиться к Excel
    Попытка
        Excel = новый COMОбъект("Excel.Application");
        Сообщить("=====> Загрузка производится через MS Excel...");
        Возврат Истина;
    Исключение
        Возврат Ложь                
    КонецПопытки;     
    
КонецФункции
 
 
Процедура СохранитьНажатие(Элемент) Экспорт
    СтолбЗагр = 1; // задаю номер столбца№1 в эксель
    СтолбБаз = 2;  // задаю номер столбца№2 в эксель
    
    Если ИнициализацияЭкселя() Тогда
        Книга = Excel.WorkBooks.Add(); // создал новый документ
        Sheet = Книга.Sheets(1);          // открыл страницу 1
   
// цикл для заполнения таблицы эксель данными из табличного поля (по двум полям)     
        Для каждого стр из ТПП Цикл
            Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
            Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы.Наименование;
        КонецЦикла;
 
//выполняю сохранение документа       
        Попытка
            Книга.SaveAs("F:1CBaseВнешнии обработкиправила12.xlsx");
        Исключение
            Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
            Возврат;
        КонецПопытки;
    КонецЕсли;
    Книга.Application.Quit();
    Сообщить("Готово");
КонецПроцедуры

0

Код 1C v 8.3

 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;

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