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

Построитель-Ошибка -(Текст)

Я
   НатальяК

11.08.06 — 18:22

Постановка:

1. Текст запроса Построителя в модуле объекта

2. В модуле формы наращиваю запрос (условия)

При ПОВТОРНОМ «Сформировать» имею:

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

Помогите….дереву дремучему

   PR

1 — 11.08.06 — 18:25

Неправильный код значит, в коде ищи ошибку

   НатальяК

2 — 11.08.06 — 18:47

Краткость не удалась(таланту нет)

ТЕКСТ В модуле

Построитель.Текст =

       «ВЫБРАТЬ

       |    Продажи.Номенклатура,

       |    Продажи.Регистратор,

       |    Продажи.Количество КАК Количество,

       |    Продажи.Стоимость КАК СУММА,

       |    Продажи.ДокументПродажи.Контрагент,

       |    Продажи.ДокументПродажи.Дата,

       |    Продажи.ДокументПродажи.Номер

       |ИЗ

       |    РегистрНакопления.Продажи КАК Продажи

       |ГДЕ

       |    Продажи.ДокументПродажи.Проведен

       |    И Продажи.Период > &НачПериода

       |    И Продажи.Период < &КонПериода

       |»;

текст в форме:

Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда

       Предупреждение («НЕ указана Номенклатура»);    

   Иначе    

       Построитель.Текст = Построитель.Текст + »    

           |    И Продажи.Номенклатура = &Номенклатура

           |ИТОГИ

           |    СУММА(Количество)

           |ПО

           |    ОБЩИЕ

           |»;

при первом «Сформировать» очень хорошо выполняет

а при ПОВТОРНОМ

тыкает в форму на строчку

Построитель.Текст = Построитель.Текст + »    

           |    И Продажи.Номенклатура = &Номенклатура

воть…

ЗЫ. Это я про 8-ку писала, но ловкость рук…… можно перенести?

   PR

3 — 11.08.06 — 18:55

И сколько раз ты собираешься наращивать текст построителя?

   НатальяК

4 — 11.08.06 — 19:00

Есть ограничения?

когда я делала этот отчет НЕ Построителем… вопроса не возникала…

а мне Построитель нравится… как обойти ошибку, а?

   PR

5 — 11.08.06 — 19:02

Что, ты больше одного раза добавляла
           |    И Продажи.Номенклатура = &Номенклатура
           |ИТОГИ
           |    СУММА(Количество)
           |ПО
           |    ОБЩИЕ
           |»;
и у тебя все работало?!

   НатальяК

6 — 11.08.06 — 19:10

да

текст запроса был в форме

и в начале стояло

Процедура КнопкаСформироватьНажатие(Кнопка)

   Запрос = Новый Запрос;

…..

чудненьк Фсё получалось…

   PR

7 — 11.08.06 — 19:23

Мда, может я конечно ошибаюсь, но все-таки женщинам как правило лучше не заниматься программированием, мозг у них как-то по другому устроен :o)

Строка
Запрос = Новый Запрос;
создает НОВЫЙ объект, у которого НИКАКОГО текста еще нет, поэтому текст запроса ессно НЕ наращивается
а Построитель.Текст = …
НЕ создает нового объекта, а поэтому его текст после первого прибавления второй раз уже работать не будет :o)

   НатальяК

8 — 11.08.06 — 19:27

Это ты, конечно, верно подметил… про мозги… ЗАЧЕМ по твоему я тебе эту строчку написала?!

переведу вопрос

КАК  ТАКОЕ НАПИСАТЬ С ПОСТРОИТЕЛЕМ

   PR

9 — 11.08.06 — 19:30

(8) Очень просто. Например так.

Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда
       Предупреждение («НЕ указана Номенклатура»);    
       Возврат;
КонецЕсли;

Построитель.Текст =
       «ВЫБРАТЬ
       |    Продажи.Номенклатура,
       |    Продажи.Регистратор,
       |    Продажи.Количество КАК Количество,
       |    Продажи.Стоимость КАК СУММА,
       |    Продажи.ДокументПродажи.Контрагент,
       |    Продажи.ДокументПродажи.Дата,
       |    Продажи.ДокументПродажи.Номер
       |ИЗ
       |    РегистрНакопления.Продажи КАК Продажи
       |ГДЕ
       |    Продажи.ДокументПродажи.Проведен
       |    И Продажи.Период > &НачПериода
       |    И Продажи.Период < &КонПериода
       |    И Продажи.Номенклатура = &Номенклатура
       |ИТОГИ
       |    СУММА(Количество)
       |ПО
       |    ОБЩИЕ
       |»;

   НатальяК

10 — 11.08.06 — 19:33

если не задана Номенклатура нужно вывести ВСЁ а если задана, то по конкретной позиции…

   PR

11 — 11.08.06 — 19:36

Наташа, вы меня извините, но я бы вам порекомендовал срочно подучиться или чем-нить другим заняться :o)
Без обид, просто констатация факта :o)

Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда

               Предупреждение («НЕ указана Номенклатура»);    

               Построитель.Текст =
       «ВЫБРАТЬ
       |    Продажи.Номенклатура,
       |    Продажи.Регистратор,
       |    Продажи.Количество КАК Количество,
       |    Продажи.Стоимость КАК СУММА,
       |    Продажи.ДокументПродажи.Контрагент,
       |    Продажи.ДокументПродажи.Дата,
       |    Продажи.ДокументПродажи.Номер
       |ИЗ
       |    РегистрНакопления.Продажи КАК Продажи
       |ГДЕ
       |    Продажи.ДокументПродажи.Проведен
       |    И Продажи.Период > &НачПериода
       |    И Продажи.Период < &КонПериода
       |»;
Иначе
       Построитель.Текст =
       «ВЫБРАТЬ
       |    Продажи.Номенклатура,
       |    Продажи.Регистратор,
       |    Продажи.Количество КАК Количество,
       |    Продажи.Стоимость КАК СУММА,
       |    Продажи.ДокументПродажи.Контрагент,
       |    Продажи.ДокументПродажи.Дата,
       |    Продажи.ДокументПродажи.Номер
       |ИЗ
       |    РегистрНакопления.Продажи КАК Продажи
       |ГДЕ
       |    Продажи.ДокументПродажи.Проведен
       |    И Продажи.Период > &НачПериода
       |    И Продажи.Период < &КонПериода
       |    И Продажи.Номенклатура = &Номенклатура
       |ИТОГИ
       |    СУММА(Количество)
       |ПО
       |    ОБЩИЕ
       |»;
КонецЕсли;

   НатальяК

12 — 11.08.06 — 19:37

Я как раз учусь

   PR

13 — 11.08.06 — 19:39

(12) Тогда вы рано начали задавать вопросы на форуме, такую элементарщину нужно читать в ЖКК (документация) и на дисках ИТС.
А вообще лучшая школа — это 1С франчайзи, устройтесь в какой-нить, там научат :o)

   НатальяК

14 — 11.08.06 — 19:42

малиновые штаны? ну тогда

КУуууу

   PR

15 — 11.08.06 — 19:48

(14) Нет, просто подсказки на форуме как правило ничему не учат, люди через минуту забывают то, что им сказали, потому что они НЕ ПОНИМАЮТ этого, они просто тупо переписывают код, который им написали :o)

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

   НатальяК

16 — 11.08.06 — 19:52

Я форум очень внимательно читаю (и перечитываю) и ссылку твою по Построителю распечатала и N-ского захода прониклась

но другой литературы кроме ПС и твоей статьи где бы для «особенных Ламеров» ( к коим я себя отношу) нет.

поэтому решила спросить

   НатальяК

17 — 11.08.06 — 20:00

и это……

ТВОЙ ПРИМЕР не работает

и не потому, что я чего то не понимаю….

   PR

18 — 11.08.06 — 20:05

(17) Если он не работает, то он не у меня не работает, так как я всего лишь показал принцип, верность текста запроса я ессно не проверял, как я могу его проверить :o)

   НатальяК

19 — 14.08.06 — 12:13

Прочитав еще раз ТВОЙ трактат таки сдела..

НО (учитывая, что мозг мой женский) не стала плодить как ты предлагал запросы а упрямо нарашиваю имеющийся

всё работает. ты был прав (конечно прав) не имеет значение где в модуле или в форме.

   dimoff

20 — 14.08.06 — 12:16

Про женщин в (7) не согласен. Видел множество мужских примеров, куда более вопиющих.

   PR

21 — 14.08.06 — 14:10

(20) Из всякого правила…

   PR

22 — 14.08.06 — 14:12

(19) Поздравляю.
Хотя, если запрос не наращивается, а один раз делается либо таким, либо таким (а так и есть, судя по твоим постам), то мне кажется более логичным задание его одним блоком, хотя бы потому, что его можно редактировать в конструкторе ;)

   acsent

23 — 14.08.06 — 14:14

        Построитель.Текст =
        "ВЫБРАТЬ
        |    Продажи.Номенклатура,
        |    Продажи.Регистратор,
        |    Продажи.Количество КАК Количество,
        |    Продажи.Стоимость КАК СУММА,
        |    Продажи.ДокументПродажи.Контрагент,
        |    Продажи.ДокументПродажи.Дата,
        |    Продажи.ДокументПродажи.Номер
        |ИЗ
        |    РегистрНакопления.Продажи КАК Продажи
        |ГДЕ
        |    Продажи.ДокументПродажи.Проведен
        |    И Продажи.Период > &НачПериода
        |    И Продажи.Период < &КонПериода
        |{
        |ГДЕ
        |    Продажи.Номенклатура КАК Номенклатура
        |}
        |ИТОГИ
        |    СУММА(Количество)
        |ПО
        |    ОБЩИЕ
        |";
        ЭлОтбора = Построитель.Отбор.Добавить("Номенклатура");
        ЭлОтбора.Значение = ВводНоменклатура;
        ЭлОтбора.Использование = НЕ ЗначениеНеЗаполнено(ВводНоменклатура);
   НатальяК

24 — 14.08.06 — 20:33

(23)

Красиво как получается.

Спасибо.

   НатальяК

25 — 16.08.06 — 14:08

Эх…. признаю…. туплю…. ну туплю! Что тут сказать?

По порядку.

ПостроительОтчета является реквизитом отчета

На форме сделала табличное поле

Данные:ПостроительОтчета.Порядок

тип значения: Порядок

(тест запроса находится в Форме)

не работает (не добавить, не изменить)

Построитель = Новый ПостроительОтчета;

   Построитель.Текст =

   «ВЫБРАТЬ

   |    Продажи.Номенклатура,

   |    Продажи.Регистратор,

   |    Продажи.Количество КАК Количество,

   |    Продажи.Стоимость КАК СУММА,

   |    Продажи.ДокументПродажи.Контрагент,

   |    Продажи.ДокументПродажи.Дата,

   |    Продажи.ДокументПродажи.Номер,

   |    Продажи.Регистратор.Ответственный.Ссылка

   |{ВЫБРАТЬ

   |    Номенклатура.*,

   |    Регистратор.*,

   |    Количество,

   |    СУММА,

   |    ДокументПродажиКонтрагент.*,

   |    ДокументПродажиДата КАК ДокументПродажиДата,

   |    ДокументПродажиНомер,

   |    РегистраторОтветственныйСсылка.*}

   |ИЗ

   |    РегистрНакопления.Продажи КАК Продажи

   |ГДЕ

   |    Продажи.ДокументПродажи.Проведен

   |    И Продажи.Период > &НачПериода

   |    И Продажи.Период < &КонПериода

   |{ГДЕ

   |    Продажи.Номенклатура КАК Номенклатура,

   |    Продажи.Регистратор.Ответственный.Ссылка КАК Менеджер}

   |{УПОРЯДОЧИТЬ ПО

   |    ДокументПродажиНомер,

   |    ДокументПродажиДата,

   |    ДокументПродажиКонтрагент.*,

   |    СУММА,

   |    Количество}

   |ИТОГИ

   |    СУММА(Количество)

   |ПО

   |    ОБЩИЕ

   |{ИТОГИ ПО

   |    СУММА}»;

       
       
       
   Построитель.ЗаполнитьНастройки();

   
   Построитель.Параметры.Вставить(«НачПериода», НачПериода );

   Построитель.Параметры.Вставить(«КонПериода», КонПериода );

   Построитель.Параметры.Вставить(«Номенклатура», ВНоменклатура);

    ЭлОтбора = Построитель.Отбор.Добавить(«Номенклатура»);

    ЭлОтбора.Значение = ВНоменклатура;

    ЭлОтбора.Использование = НЕ ЗначениеНеЗаполнено(ВНоменклатура);

…..

   НатальяК

26 — 17.08.06 — 12:48

УРА!!!!!!!!!!

сняла с тормоза!!!

(26) Поздравляю :))

Содержание:

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

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

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

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

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

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

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

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

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

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

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

>
8.2 Проблема с временной таблицей в постоителе

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему



Сообщ.
#1

,
16.08.12, 06:55

    Делаю запрос для построителя:

    ExpandedWrap disabled

      ТаблицаПервичныхДанных = Новый ТаблицаЗначений;

      ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», Новый ОписаниеТипов(«Строка»));

      УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить(«ТаблицаПервичныхДанных», ТаблицаПервичныхДанных);

      ТекстЗапроса = «

      |ВЫБРАТЬ

      |   *

      |ПОМЕСТИТЬ

      |   ПервичнаяТаблица

      |ИЗ

      |   &ТаблицаПервичныхДанных КАК ТаблицаПервичныхДанныхВрем

      |;

      |

      |…….»;

      УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

    Вываливается сообщение:
    Ошибка при установке значения атрибута контекста (Текст)
    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
    по причине:
    {(7, 2)}: Неверные параметры «ТаблицаПервичныхДанных»
    <<?>>&ТаблицаПервичныхДанных КАК ТаблицаПервичныхДанныхВрем

    Что делать не соображу, нужно поместить данные в первичную таблицу из таблицы значений для выполнения запроса, как это ещё можно сделать?


    Outlander



    Сообщ.
    #2

    ,
    22.08.12, 14:25

      Таблица Первичных данных должна быть жестко типизирована


      lastlogic



      Сообщ.
      #3

      ,
      23.08.12, 11:03

        Цитата Outlander @ 22.08.12, 14:25

        должна быть жестко типизирована

        Сделал так:

        ExpandedWrap disabled

          КС = Новый КвалификаторыСтроки(10);

          Массив = Новый Массив;

          Массив.Добавить(Тип(«Строка»));

          ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);

          ТаблицаПервичныхДанных = Новый ТаблицаЗначений;

          ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», ОписаниеТиповС, «ДатаВизитаМесяцСтрокой», 10);

        Не помогло, также ошибка.


        Outlander



        Сообщ.
        #4

        ,
        24.08.12, 07:12

          Выбрать * в этом случае тоже не катит :( надо явно именовать поля

          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

          0 пользователей:

          • Предыдущая тема
          • 1С: Проблемы и решения
          • Следующая тема

          [ Script execution time: 0,0572 ]   [ 15 queries used ]   [ Generated: 6.06.23, 03:15 GMT ]  

          Anhel

          Постоялец

          ru
          Offline Offline


          Доброго времени суток! Не могу понять что делаю не так, подскажите что не правильно:

          ТаблицаДанных = ТЗ.Скопировать();

          ТекстЗапроса = «ВЫБРАТЬ
                         | ВЫРАЗИТЬ(ТаблицаДанных.ДокументОснование КАК Документ.ПеремещениеТоваров) КАК ДокументОснование,
                         | ВЫРАЗИТЬ(ТаблицаДанных.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
                         | ВЫРАЗИТЬ(ТаблицаДанных.Количество КАК ЧИСЛО) КАК Количество,
                         | ВЫРАЗИТЬ(ТаблицаДанных.ЦенаТранспорта КАК ЧИСЛО) КАК ЦенаТранспорта,
                         | ВЫРАЗИТЬ(ТаблицаДанных.ЦенаНоменклатуры КАК ЧИСЛО) КАК ЦенаНоменклатуры,
                         | ВЫРАЗИТЬ(ТаблицаДанных.СуммаНоменклатуры КАК ЧИСЛО) КАК СуммаНоменклатуры,
                         | ВЫРАЗИТЬ(ТаблицаДанных.ЦенаБезТранспорта КАК ЧИСЛО) КАК ЦенаСТрРасходами,
                         | ВЫРАЗИТЬ(ТаблицаДанных.СуммаБезТранспорта КАК ЧИСЛО) КАК СуммаСТрРасходами,
                         | ВЫРАЗИТЬ(ТаблицаДанных.ЦенаЗатратНаКуб КАК ЧИСЛО) КАК ЦенаЗатратНаМ3,
                         | ВЫРАЗИТЬ(ТаблицаДанных.СкладПолучатель КАК Справочник.Склады) КАК СкладПолучатель
                         |ПОМЕСТИТЬ Таблица
                         |{ВЫБРАТЬ
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}
                         |ИЗ
                         | &ТаблицаДанных КАК ТаблицаДанных
                         |{ГДЕ
                         | (ВЫРАЗИТЬ(ТаблицаДанных.ДокументОснование КАК Документ.ПеремещениеТоваров)).* КАК ДокументОснование,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.Номенклатура КАК Справочник.Номенклатура)).* КАК Номенклатура,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.Количество КАК ЧИСЛО)) КАК Количество,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.ЦенаТранспорта КАК ЧИСЛО)) КАК ЦенаТранспорта,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.ЦенаНоменклатуры КАК ЧИСЛО)) КАК ЦенаНоменклатуры,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.СуммаНоменклатуры КАК ЧИСЛО)) КАК СуммаНоменклатуры,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.ЦенаБезТранспорта КАК ЧИСЛО)) КАК ЦенаСТрРасходами,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.СуммаБезТранспорта КАК ЧИСЛО)) КАК СуммаСТрРасходами,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.ЦенаЗатратНаКуб КАК ЧИСЛО)) КАК ЦенаЗатратНаМ3,
                         | (ВЫРАЗИТЬ(ТаблицаДанных.СкладПолучатель КАК Справочник.Склады)).* КАК СкладПолучатель}
                         |{УПОРЯДОЧИТЬ ПО
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}
                         |{ИТОГИ ПО
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         | Таблица.ДокументОснование КАК ДокументОснование,
                         | Таблица.Номенклатура,
                         | Таблица.Количество КАК Количество,
                         | Таблица.ЦенаТранспорта КАК ЦенаТранспорта,
                         | Таблица.ЦенаНоменклатуры КАК ЦенаНоменклатуры,
                         | Таблица.СуммаНоменклатуры КАК СуммаНоменклатуры,
                         | Таблица.ЦенаСТрРасходами КАК ЦенаСТрРасходами,
                         | Таблица.СуммаСТрРасходами КАК СуммаСТрРасходами,
                         | Таблица.ЦенаЗатратНаМ3 КАК ЦенаЗатратНаМ3,
                         | Таблица.СкладПолучатель
                         |{ВЫБРАТЬ
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}
                         |ИЗ
                         | Таблица КАК Таблица
                         |{ГДЕ
                         | Таблица.ДокументОснование.*,
                         | Таблица.Номенклатура.*,
                         | Таблица.Количество,
                         | Таблица.ЦенаТранспорта,
                         | Таблица.ЦенаНоменклатуры,
                         | Таблица.СуммаНоменклатуры,
                         | Таблица.ЦенаСТрРасходами,
                         | Таблица.СуммаСТрРасходами,
                         | Таблица.ЦенаЗатратНаМ3,
                         | Таблица.СкладПолучатель.*}
                         |
                         |УПОРЯДОЧИТЬ ПО
                         | Таблица.ДокументОснование.Дата
                         |{УПОРЯДОЧИТЬ ПО
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}
                         |ИТОГИ
                         | СУММА(Количество),
                         | СУММА(ЦенаТранспорта),
                         | СУММА(ЦенаНоменклатуры),
                         | СУММА(СуммаНоменклатуры),
                         | СУММА(ЦенаСТрРасходами),
                         | СУММА(СуммаСТрРасходами),
                         | СУММА(ЦенаЗатратНаМ3)
                         |ПО
                         | ОБЩИЕ,
                         | ДокументОснование
                         |{ИТОГИ ПО
                         | ДокументОснование.*,
                         | Номенклатура.*,
                         | Количество,
                         | ЦенаТранспорта,
                         | ЦенаНоменклатуры,
                         | СуммаНоменклатуры,
                         | ЦенаСТрРасходами,
                         | СуммаСТрРасходами,
                         | ЦенаЗатратНаМ3,
                         | СкладПолучатель.*}»;

          Параметры = УниверсальныйОтчет.ПостроительОтчета.Параметры;
          Параметры.Вставить(«ТаблицаДанных», ТаблицаДанных);
          УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

          Выдает ошибку: {ВнешнийОтчет.Доставки.МодульОбъекта(253)}: Ошибка при установке значения атрибута контекста (Текст)
             УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
          по причине:

          по причине:
          {(25, 2)}: Неверные параметры «ТаблицаДанных»
          <<?>>&ТаблицаДанных КАК ТаблицаДанных


          Записан
          Kivals


          По-моему так делать нельзя — нужно идти через МенеджерВременныхТаблиц. Вот пример для простого запроса (без построителя):

          // Сформируем запрос
          МенеджерВТ = Новый МенеджерВременныхТаблиц();
          Запрос=Новый Запрос();
          Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

          // Текущие препараты в документе
          ТекстЗапроса =
            «ВЫБРАТЬ
            | Препарат, Кво, Период
            |ПОМЕСТИТЬ ПрепаратыДокумента
            |ИЗ
            | &Препараты КАК Препараты
            |ГДЕ Препараты.Кво<>0
            |»;
          Запрос.Текст=ТекстЗапроса;
          Запрос.Параметры.Очистить();
          Запрос.Параметры.Вставить(«Препараты», Препараты.Выгрузить()); // Препараты — это табличная часть
          Запрос.Выполнить();
          // …
          // Сведем количество в одну таблицу
          ТекстЗапроса =
            «ВЫБРАТЬ
            | ЕСТЬNULL(ПрепаратыДокумента.Период, ЕСТЬNULL(ПрепаратыДокументаПлан.Период, ПрепаратыРегистра.Период)) КАК Период,
            | ЕСТЬNULL(ПрепаратыДокумента.Препарат, ЕСТЬNULL(ПрепаратыДокументаПлан.Препарат, ПрепаратыРегистра.Препарат)) КАК Препарат,
            | ЕСТЬNULL(ПрепаратыДокумента.Кво, ПрепаратыРегистра.Кво) КАК Кво,
            | ЕСТЬNULL(ПрепаратыДокументаПлан.ПлановоеКво, ПрепаратыРегистра.ПлановоеКво) КАК ПлановоеКво
            |ПОМЕСТИТЬ Препараты
            |ИЗ
            | ПрепаратыРегистра КАК ПрепаратыРегистра
            | ПОЛНОЕ СОЕДИНЕНИЕ ПрепаратыДокумента КАК ПрепаратыДокумента
            | ПО ПрепаратыРегистра.Препарат = ПрепаратыДокумента.Препарат
            | И ПрепаратыРегистра.Период = ПрепаратыДокумента.Период
            | ПОЛНОЕ СОЕДИНЕНИЕ ПрепаратыДокументаПлан КАК ПрепаратыДокументаПлан
            | ПО ПрепаратыРегистра.Препарат = ПрепаратыДокументаПлан.Препарат
            | И ПрепаратыРегистра.Период = ПрепаратыДокументаПлан.Период»;
          Запрос.Текст=ТекстЗапроса;
          Запрос.Параметры.Очистить();
          Запрос.Выполнить();


          Записан
          Anhel

          Постоялец

          ru
          Offline Offline


          Спасибо за ответ. Получается что построитель не может использовать внешние таблицы как ТЗ?


          Записан
          Kivals


          Да нет — мне кажется может. Просто сначала их нужно поместить во временную таблицу простым запросом (ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &ТаблицаДанных КАК ТаблицаДанных), а уже потом использовать ее (временную таблицу) в основном запросе.


          Записан
          Anhel

          Постоялец

          ru
          Offline Offline


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


          Записан
          Anhel

          Постоялец

          ru
          Offline Offline


          Сделал отчет через макет табличного документа.


          Записан

          Ошибка при установке значения атрибута контекста (СписокВыбора)

          Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено. 

          Полная ошибка

          Ошибка при установке значения атрибута контекста (СписокВыбора)
          ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
          по причине:
          Несоответствие типов

          Скриншот:oshibka-ustanovki-spiska-vybora

          Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.


          В экспериментальных целях:

          передал значение с типом «Массив»  — текст ошибки не поменялся.

          В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:

          ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));

          Нулевую рекламную идею можно помножить на миллион долларов – все равно получится нуль.

          Форум консультаций по прикладным решениям и программам фирмы «1С».

          Онлайн консультации, вопросы и ответы, бесплатная регистрация, личная страница, twitter и facebook каналы и многое другое ждут Вас здесь.

          Зарегистрироваться ← Ваш выбор → Войти на форум

          1. Помогите пожалуйста начинающему пользователю Платформы 1С 8.2.
            Вот такая проблемка
            Процедура ОбработкаПроведения(Отказ, Режим)

            Движения.ОстаткиМатериалов.Записывать = Истина;
            Движения.СтоимостьМатериалов.Записывать = Истина;
            Движения.Продажи.Записывать = Истина;
            Движения.Управленческий.Записывать = Истина;

            //Создать менеджер временных таблиц.
            МенеджерВТ = Новый МенеджерВременныхТаблиц;

            Запрос = Новый Запрос;

            //Укажем, какойменеджер временных таблиц использует этот запрос.
            Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

            Запрос.Текст =
            «ВЫБРАТЬ
            |ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
            |ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
            |ОказаниеУслугиПереченьНоменклатуры.НаборСвойств,
            |СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
            |СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
            |ПОМЕСТИТЬ НоменклатураДокумента
            |ИЗ
            |Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
            |ГДЕ
            |ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
            |
            |СГРУППИРОВАТЬ ПО
            |ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
            |ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры,
            |ОказаниеУслугиПереченьНоменклатуры.НаборСвойств»;

            Запрос.УстановитьПараметр(«Ссылка», Ссылка);

            Результат = Запрос.Выполнить();

            Запрос2 = Новый Запрос;
            Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
            Запрос2.Текст = «ВЫБРАТЬ
            |НоменклатураДокумента.Номенклатура,
            |НоменклатураДокумента.ВидНоменклатуры,
            |НоменклатураДокумента.НаборСвойств,
            |НоменклатураДокумента.КоличествоВДокументе,
            |НоменклатураДокумента.СуммаВДокументе,
            |ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
            |ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
            |ИЗ
            |НоменклатураДокумента КАК НоменклатураДокумента
            |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
            |,
            |Материал В
            |(ВЫБРАТЬ
            |НоменклатураДокумента.Номенклатура
            |ИЗ
            |НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
            |ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
            |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
            |,
            |Материал В
            |(ВЫБРАТЬ
            |НоменклатураДокумента.Номенклатура
            |ИЗ
            |НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
            |ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал»;

            //Установим необходимость блокировки данных в регистрах
            //СтоимостьМатериалов и ОстаткиМатериалов.
            Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;
            Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;

            //Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе.
            Движения.СтоимостьМатериалов.Записать();
            Движения.ОстаткиМатериалов.Записать();

            Результат = Запрос2.Выполнить();

            //Если надо посмотреть результат запроса
            //ТЗ = Результат.Выгрузить();

            ВыборкаДетальныеЗаписи = Результат.Выбрать();

            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

            Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
            СтоимостьМатериала = 0;
            Иначе СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
            КонецЕсли;

            Если ВыборкаДетальныеЗаписи.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал Тогда
            //регистр ОстаткиМатериалов Расход
            Движение = Движения.ОстаткиМатериалов.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период = Дата;
            Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств;
            Движение.Склад = Склад;
            Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;

            // регистр СтоимостьМатериалов Расход
            Движение = Движения.СтоимостьМатериалов.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период = Дата;
            Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала;

            // Регистр Управленческий
            // Первая проводка:Д 62 (ДебиторскаяЗадолженность) — К 90 (Капитал) Розничная сумма
            Движение = Движения.Управленческий.Добавить();
            Движение.СчетДт = ПланыСчетов.Основной.ДебиторскаяЗадолженность;
            Движение.СчетКт = ПланыСчетов.Основной.Капитал;
            Движение.Период = Дата;
            Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаВДокументе;
            Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Клиенты] = Клиент;
            // Вторая проводка: Д 90 (Капитал) — К 41 (Товары) — себестоимость
            Движение = Движения.Управленческий.Добавить();
            Движение.СчетДт = ПланыСчетов.Основной.Капитал;
            Движение.СчетКт = ПланыСчетов.Основной.Товары;
            Движение.Период = Дата;
            Движение.Сумма = СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе;
            Движение.КоличествоКт = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
            Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ВыборкаДетальныеЗаписи.Номенклатура;
            КонецЕсли;

            // Регистр Продажи
            Движение = Движения.Продажи.Добавить();
            Движение.Период = Дата;
            Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.Клиент = Клиент;
            Движение.Мастер = Мастер;
            Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
            Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
            Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
            КонецЦикла;

            Движения.Записать();
            Если Режим = РежимПроведенияДокумента.Оперативный Тогда

            //Проверить отрицательные остатки.
            Запрос3 = Новый Запрос;
            Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
            Запрос3.Текст = «ВЫБРАТЬ
            |ОстаткиМатериаловОстатки.Материал,
            |ОстаткиМатериаловОстатки.НаборСвойств,
            |ОстаткиМатериаловОстатки.КоличествоОстаток
            |ИЗ
            |РегистрНакопления.ОстаткиМатериалов.Остатки(
            |,
            |(Материал, НаборСвойств) В
            |(ВЫБРАТЬ
            |НоменклатураДокумента.Номенклатура,
            |НоменклатураДокумента.НаборСвойств
            |ИЗ
            |НоменклатураДокумента)
            |И Склад = &Склад) КАК ОстаткиМатериаловОстатки
            |ГДЕ
            |ОстаткиМатериаловОстатки.КоличествоОстаток < 0″;
            Запрос3.УстановитьПараметр(«Склад», Склад);

            Результат = Запрос3.Выполнить();
            ВыборкаДетальныеЗаписи = Результат.Выбрать();

            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = «Лей» + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + » единиц материала Лей «»» + ВыборкаДетальныеЗаписи.Материал =»»»»;
            Сообщение.Сообщить();
            Отказ = Истина;

            КонецЦикла;
            КонецЕсли;
            КонецПроцедуры
            Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)

            Префикс = Обмен.ПолучитьПрефиксНомера();

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

            Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
            Если ТипЗнч(ДанныеЗаполнения) = Тип(«СправочникСсылка.Клиенты») Тогда
            // Заполнение шапки
            Клиент = ДанныеЗаполнения.Ссылка;
            ОбъектОснование = ДанныеЗаполнения.Ссылка;
            КонецЕсли;
            КонецПроцедуры
            Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

            ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти(«ПереченьНоменклатуры.НаборСвойств»));
            Индекс = 0;

            Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
            Индекс = Индекс + 1;

            Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда

            Если Не ЗначениеЗаполнено(ТекСтрокаПереченьНоменклатуры.НаборСвойств) Тогда
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = «В строке » + Индекс + » списка Перечень номенклатуры не заполнена колонка Набор свойств»;
            Сообщение.Поле = «ПереченьНоменклатуры[» + Строка(Индекс — 1) + «].НаборСвойств»;
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            Отказ = Истина;
            КонецЕсли;

            КонецЕсли;

            КонецЦикла;

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

            {Документ.ОказаниеУслуги.МодульОбъекта(166)}: Ошибка при установке значения атрибута контекста (Текст)
            Сообщение.Текст = «Лей» + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + » единиц материала Лей «»» + ВыборкаДетальныеЗаписи.Материал =»»»»;
            по причине:
            Несоответствие типов
            Несоответствие типов

          2. Реклама на форуме

            Чтобы убрать:

          3. «+», а не «=» после .Материал

          Похожие темы

          Heltarion

          2 / 2 / 0

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

          Сообщений: 57

          1

          02.12.2011, 11:18. Показов 9104. Ответов 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





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

          Дано

          • 1С конфигурация бухгалтерия предприятия 2.0
          • Ошибка печати ПКО (приходный кассовый ордер):
          {ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста
             ЭлементыФормы.ПолеДокумента.ПолеСверху
          по причине:
          Несоответствие типов

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

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

          • в конфигураторе видно, что система пытается выполнить строчку кода:
          ЭлементыФормы.ПолеДокумента.ПолеСверху          = ПечатныйДокумент.ПолеСверху;
          • в отладке видно, что обе переменные типа “Число”,
          • синтакс-помощник говорит что:
          ТабличныйДокумент (SpreadsheetDocument)
          ПолеСверху (TopMargin)
          Использование:
          
          Чтение и запись.

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

          Решение

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

          Дополнено 2017.04.10

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

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

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