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

Andru

08.02.11 — 17:44

Excel = Новый COMОбъект(«Excel.Application»);

       Excel.Application.Workbooks.Add(1);

       Если МетодРасчета Тогда

           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;

       Иначе

           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;

       КонецЕсли;

       Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;

       Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

       КоличествоДней = Excel.Sheets(1).Cells(1,»A»).Value;

       Попытка

           Excel.ActiveWorkBook.SaveAs(КаталогВременныхФайлов() + «FailRascheta.xls»);    

       Исключение

           Сообщение = ОписаниеОшибки();

       КонецПопытки;

       Excel.Application.Quit();

Пишу вот такой код. Пользователи работают в терминале под одним пользователем отрабатывает отлично, у другого пользователя пишет ошибку «Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)» обошел все форумы, забивал формулу на английском. Все равно не работает.

izekia

1 — 08.02.11 — 17:54

а без буковок попробуй

Andru

2 — 08.02.11 — 17:57

Не совсем понял.

Tatitutu

3 — 08.02.11 — 17:58

Excel.Sheets(1).Cells(1,»A»)
=
Excel.Sheets(1).Cells(1,1)

Andru

4 — 08.02.11 — 17:58

без «А» в Cells(1,»A»)

Andru

5 — 08.02.11 — 17:59

понял, проблемка только завтра попробую.

dk

6 — 08.02.11 — 18:00

может там адреса в формате R1C1 забиты, хотя сумнительно
либо на англицком формулу забей в
….Formula = …

Andru

7 — 08.02.11 — 18:00

других вариантов нету?

Andru

8 — 08.02.11 — 18:01

«Formula =» пробовал не помогает, вообще неработало

Andru

9 — 08.02.11 — 18:02

«FormulaR1C1 =» тоже пробовал

Andru

10 — 08.02.11 — 18:03

могут быть какие-то настройки в самом EXL

Andru

11 — 08.02.11 — 18:03

???

Andru

12 — 08.02.11 — 18:05

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

dk

13 — 08.02.11 — 18:08

отладчик не предлагать?

Andru

14 — 08.02.11 — 18:12

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

dk

15 — 08.02.11 — 18:19

тест 1
поменять формула на «=1»

Andru

16 — 08.02.11 — 18:21

проверить схавает хоть что-то?

dk

17 — 08.02.11 — 18:28

ну да, отсекаешь 1 причину за другой

Andru

18 — 08.02.11 — 18:29

отлично, попробую.

Капюшон

19 — 08.02.11 — 18:29

(0)может быть разные версии Оффис у юзеров? у меня изза этого раньше в VBA проблемы возникали.

Andru

20 — 08.02.11 — 18:36

на моей машине 2010, у клиента на локальных машинах и сервере 2003, и везде работает кроме терминала.

Andru

21 — 08.02.11 — 18:37

может при установки админ не на всех пользователей VBA установил.

Andru

22 — 08.02.11 — 18:39

????

dk

23 — 08.02.11 — 18:39

(21) excel без vba не ставится )

Andru

24 — 08.02.11 — 18:39

может это быть причиной?

Andru

25 — 08.02.11 — 18:41

я уже готов поверить в любое не вероятное.

supremum

26 — 08.02.11 — 18:43

(21) Только что проверил код в (0) под терминалом — все работает. Проблема может быть с правами пользователей.

Andru

27 — 08.02.11 — 18:45

я под своим пользователем в терминал заходил, у меня не работало, под сисадмином заходил работает, назначил права сисадмина себе все равно не работает.

Andru

28 — 08.02.11 — 18:50

может мой пользователь не входит какую-то группу типа «Пользователи DCOM»

kambala

29 — 08.02.11 — 18:54

Права на папку КаталогВременныхФайлов() посмотри на запись

Andru

30 — 08.02.11 — 18:56

я убирал строки
       Если МетодРасчета Тогда
           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
       Иначе
           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
       КонецЕсли;
без них отрабатывало под всеми пользователями нормально.

Andru

31 — 08.02.11 — 18:58

так что права у всех на временный каталог есть.

dk

32 — 08.02.11 — 19:01

может там англицкий Excel у юзера, хотя сумнительно

Andru

33 — 08.02.11 — 19:04

Админ ставил под своим профелем и разрешил использовать всем пользователям, так что у всех один и тот же, но я проверю.

ХелпДеск

34 — 08.02.11 — 21:51

(0)
Подозрительное присвоение: Value = ДатаНачало
Соответствует ли тип значения и формат ячейки xls и тип переменной ДатаНачало
Потом надо подумать над присвоением: КоличествоДней = что-то
Возможно это что-то (Value) надо привести к строковому типу.
Для отладки можно присвоить строковые константы.

ХелпДеск

35 — 08.02.11 — 21:56

Лучше через setValue устанавливать значения, чем через прямое присвоение.

Andru

36 — 09.02.11 — 06:42

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

Andru

37 — 09.02.11 — 06:59

Это не сработало
Excel.Sheets(1).Cells(1,»A»)
=
Excel.Sheets(1).Cells(1,1)

dk

38 — 09.02.11 — 07:46

Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

Andru

39 — 09.02.11 — 08:43

Этот тест сработал
тест 1
поменять формула на «=1»

Andru

40 — 09.02.11 — 08:46

Не сработало.
Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

Andru

41 — 09.02.11 — 08:50

мне кажется это права, но не могу понять какие и на что

Rie

42 — 09.02.11 — 08:51

(40) Попробуй FormulaR1C1 — что скажет?

Andru

43 — 09.02.11 — 08:54

есть сдвиг
Excel.Sheets(1).Cells(1,1).FormulaLocal = «DAYS360(B1;C1;1)»
это сработало, но не посчитал.

Andru

44 — 09.02.11 — 08:54

Как правильно передать DAYS360(B1;C1;1) третий параметр в EXL истина или ложь

Rie

45 — 09.02.11 — 08:55

(43) А что должно было посчитать? И как именно «не посчитал»?

Andru

46 — 09.02.11 — 08:57

вернул неопределено

Andru

47 — 09.02.11 — 08:58

прошу прошения

Andru

48 — 09.02.11 — 08:58

я незаметил один знак

Andru

49 — 09.02.11 — 09:00

я написал вот так DAYS360(B1;C1;1), а надо было =DAYS360(B1;C1;1). И это не сработало. Извеняюсь.

dk

50 — 09.02.11 — 09:16

что есть «не сработало»?
Вылетела с ошибкой?
в файле что-нить сохранилось?

Aprobator

51 — 09.02.11 — 09:33

а под юзером у которого проблема в терминале эксель запустить слабо?

Andru

52 — 09.02.11 — 11:53

ошибка даже самая какая и была в начале

Andru

53 — 09.02.11 — 11:54

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

Andru

54 — 09.02.11 — 11:55

поэтому и говорю не понятный глюк.

Aprobator

55 — 09.02.11 — 12:19

Сервис — Параметры — Общие — Стиль ссылок R1C1 под проблемным пользователем стоит?

Andru

56 — 09.02.11 — 12:20

нет не стоит

dk

57 — 09.02.11 — 12:21

Excel.Sheets(1).Cells(1,1).Formula = «=B1»;

dk

58 — 09.02.11 — 12:21

может тупо в формуле C или B в кириллице заведены

Andru

59 — 09.02.11 — 12:30

еще раз все перепроверил B это английская B, С тоже.

Aprobator

60 — 09.02.11 — 12:33

хм — а точно вылетает на установке формулы, а не раньше на
Excel.Sheets(1)? Не помню, честно говоря там индексы с 0 или с 1?

  

Andru

61 — 09.02.11 — 12:40

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

dk

62 — 09.02.11 — 12:52

Яч = Excel.Sheets(1).Cells(1,1);
Яч.Formula = «=B1»;

Andru

63 — 09.02.11 — 12:59

почему Formula? у меня это не сработало.
я пишу FormulaLocal.
Так же я пробовал Formula = «=B1» и FormulaLocal = «=B1», все отработало.

dk

64 — 09.02.11 — 13:11

а не пробовал сначала данные в B1 и С1 заполнить, а уже потом формулу? )

Andru

65 — 09.02.11 — 13:20

Попробовал В1 и С1 заполнил, и все равно заткнулся на формуле.

Andru

66 — 09.02.11 — 13:20

Ради интереса изменил формулу

Andru

67 — 09.02.11 — 13:21

Excel.Sheets(1).Cells(1,2).Value = 10;
       Excel.Sheets(1).Cells(1,3).Value = 20;
       Excel.Sheets(1).Cells(1,1).FormulaLocal = «=Сумм(B1;C1)»;
И все равно ругается на присвоение формулы.

Aprobator

68 — 09.02.11 — 13:22

(67) лист не защищенный или ячейка?

Andru

69 — 09.02.11 — 13:23

я никаких защит не ставил. А как проверить?

Andru

70 — 09.02.11 — 13:24

новый лист создаю же.

dk

71 — 09.02.11 — 13:33

Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

Aprobator

72 — 09.02.11 — 13:35

Excel.Sheets(1).Cells(1,1).AllowEdit проверка на разрешение редактирования. Хотя можно проверить и просто попытвашись записать значение.
Еще можно формулу попытаться вписать так:

Excel.Sheets(1).Cells(1,1).RANGE.FormulaLocal = ...

Andru

73 — 09.02.11 — 13:44

Хоть что-то новенькое.
Ошибка.
Ошибка при получении значения атрибута контекста (Range): Неверное число параметров

Andru

74 — 09.02.11 — 13:45

А вот это посчитал
Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

Andru

75 — 09.02.11 — 13:48

я так понимаю проблема с использованием внутренних формул экселя, если простое сложение посчитал.

dk

76 — 09.02.11 — 13:50

Excel.Application.Workbooks.Add(1);
почему 1 в аргументе?
а если просто
Excel.Application.Workbooks.Add();

Andru

77 — 09.02.11 — 13:52

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

dk

78 — 09.02.11 — 13:53

корявый пример )

Andru

79 — 09.02.11 — 13:54

(76) Не помогло.Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)

Aprobator

80 — 09.02.11 — 14:06

покопался по хелпу, там формула присваивается только на актином листе (в примерах).
Может стоит попробовать так:

Excel.Sheets(1).Activate;
ActiveSheet.FormulaLocal = ....

Aprobator

81 — 09.02.11 — 14:09

вот еще пример из хелпы:

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

dk

82 — 09.02.11 — 14:27

Excel = Новый COMОбъект(«Excel.Application»);
Excel.Application.Workbooks.Add();
Excel.Visible = Истина;

Aprobator

83 — 09.02.11 — 15:14

(79) кстати — попробуй по деревянному — зайди в эксель, создай формулу, а потом с 1Сы ее считай и посмотри как она выглядит )

Andru

84 — 09.02.11 — 16:03

спасибо большое, попробую но только завтра.

Andru

85 — 12.02.11 — 03:39

ничего не сработало. буду искать другой выход.

Andru

86 — 12.02.11 — 03:43

Я тут встречал расчеты.
Европейский метод —
?(День(Дата2)=31,30,День(Дата2))-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

  Американский метод —
?(День(Дата2)=31 И День(Дата1)<30,31,30)-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

Европейский метод расчет еще боле менее, а вот американский не правильно считает, может кто нибудь уже пытался решить это в 1С.

Andru

87 — 12.02.11 — 03:52

к примеру задаеш период 26.08.2010-12.02.2011
Европейски метод дает 166
Американский метод дает 184

Andru

88 — 12.02.11 — 03:59

В экселе оба метода дают 166

azernot

89 — 12.02.11 — 05:30

В порядке бреда, попробуй поменять местами строки кода
       Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;
       Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

       Если МетодРасчета Тогда
           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
       Иначе
           Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
       КонецЕсли;

Т.е. сначала присвоить даты, а уже потом формулу ссылающуюся на даты..

Andru

90 — 12.02.11 — 06:38

пробовал не помогает.

  

Andru

91 — 12.02.11 — 07:22

кажись нашел
если кому интересно проверьте тоже, может я что-то не замечаю
Американский метод расчета
?(День(ДатаКон)=31,30,День(НачалоДня(ДатаКон)) — День(НачалоМесяца(ДатаКон)))+?(День(ДатаНач)=31,30,День(КонецМесяца(ДатаНач)) — День(НачалоДня(ДатаНач)))+30*(Год(ДатаКон)*12+(Месяц(ДатаКон)-1)-Год(ДатаНач)*12-Месяц(ДатаНач))

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Heltarion

2 / 2 / 0

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

Сообщений: 57

1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Код 1C v 8.х

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

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

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

Код 1C v 8.х

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

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

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

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

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

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

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

Пожалуйста )

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

Пишу вот такой код. Пользователи работают в терминале под одним пользователем отрабатывает отлично, у другого пользователя пишет ошибку «Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)» обошел все форумы, забивал формулу на английском. Все равно не работает.

= Excel.Sheets.Cells(1,1)

понял, проблемка только завтра попробую.

может там адреса в формате R1C1 забиты, хотя сумнительно либо на англицком формулу забей в ….Formula = …

«Formula =» пробовал не помогает, вообще неработало

«FormulaR1C1 =» тоже пробовал

могут быть какие-то настройки в самом EXL

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

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

тест 1 поменять формула на «=1»

проверить схавает хоть что-то?

ну да, отсекаешь 1 причину за другой

может быть разные версии Оффис у юзеров? у меня изза этого раньше в VBA проблемы возникали.

на моей машине 2010, у клиента на локальных машинах и сервере 2003, и везде работает кроме терминала.

может при установки админ не на всех пользователей VBA установил.

excel без vba не ставится )

я уже готов поверить в любое не вероятное.

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

я под своим пользователем в терминал заходил, у меня не работало, под сисадмином заходил работает, назначил права сисадмина себе все равно не работает.

может мой пользователь не входит какую-то группу типа «Пользователи DCOM»

Права на папку КаталогВременныхФайлов посмотри на запись

я убирал строки        КонецЕсли; без них отрабатывало под всеми пользователями нормально.

так что права у всех на временный каталог есть.

может там англицкий Excel у юзера, хотя сумнительно

Админ ставил под своим профелем и разрешил использовать всем пользователям, так что у всех один и тот же, но я проверю.

Подозрительное присвоение: Value = ДатаНачало Соответствует ли тип значения и формат ячейки xls и тип переменной ДатаНачало Потом надо подумать над присвоением: КоличествоДней = что-то Возможно это что-то (Value) надо привести к строковому типу. Для отладки можно присвоить строковые константы.

Лучше через setValue устанавливать значения, чем через прямое присвоение.

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

Это не сработало Excel.Sheets.Cells(1,»A») = Excel.Sheets.Cells(1,1)

Excel.Sheets.Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

Этот тест сработал тест 1 поменять формула на «=1»

мне кажется это права, но не могу понять какие и на что

Попробуй FormulaR1C1 — что скажет?

Excel.Sheets.Cells(1,1).FormulaLocal = «DAYS360(B1;C1;1)» это сработало, но не посчитал.

Как правильно передать DAYS360(B1;C1;1) третий параметр в EXL истина или ложь

А что должно было посчитать? И как именно «не посчитал»?

я написал вот так DAYS360(B1;C1;1), а надо было =DAYS360(B1;C1;1). И это не сработало. Извеняюсь.

что есть «не сработало»? Вылетела с ошибкой? в файле что-нить сохранилось?

а под юзером у которого проблема в терминале эксель запустить слабо?

ошибка даже самая какая и была в начале

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

поэтому и говорю не понятный глюк.

Сервис — Параметры — Общие — Стиль ссылок R1C1 под проблемным пользователем стоит?

Excel.Sheets.Cells(1,1).Formula = «=B1»;

может тупо в формуле C или B в кириллице заведены

еще раз все перепроверил B это английская B, С тоже.

хм — а точно вылетает на установке формулы, а не раньше на Excel.Sheets? Не помню, честно говоря там индексы с 0 или с 1?

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

почему Formula? у меня это не сработало. я пишу FormulaLocal. Так же я пробовал Formula = «=B1» и FormulaLocal = «=B1», все отработало.

а не пробовал сначала данные в B1 и С1 заполнить, а уже потом формулу? )

Попробовал В1 и С1 заполнил, и все равно заткнулся на формуле.

Ради интереса изменил формулу

И все равно ругается на присвоение формулы.

лист не защищенный или ячейка?

я никаких защит не ставил. А как проверить?

Excel.Sheets.Cells(1,1).FormulaLocal = «=B1 + C1»;

Excel.Sheets.Cells(1,1).AllowEdit проверка на разрешение редактирования. Хотя можно проверить и просто попытвашись записать значение. Еще можно формулу попытаться вписать так:

Хоть что-то новенькое. Ошибка. Ошибка при получении значения атрибута контекста (Range): Неверное число параметров

А вот это посчитал Excel.Sheets.Cells(1,1).FormulaLocal = «=B1 + C1»;

я так понимаю проблема с использованием внутренних формул экселя, если простое сложение посчитал.

Excel.Application.Workbooks.Add; почему 1 в аргументе? а если просто Excel.Application.Workbooks.Add;

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

Не помогло.Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)

покопался по хелпу, там формула присваивается только на актином листе (в примерах). Может стоит попробовать так:

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

спасибо большое, попробую но только завтра.

ничего не сработало. буду искать другой выход.

Я тут встречал расчеты. Европейский метод — ?(День(Дата2)=31,30,День(Дата2))-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))   Европейский метод расчет еще боле менее, а вот американский не правильно считает, может кто нибудь уже пытался решить это в 1С.

к примеру задаеш период 26.08.2010-12.02.2011 Европейски метод дает 166 Американский метод дает 184

В экселе оба метода дают 166

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

кажись нашел если кому интересно проверьте тоже, может я что-то не замечаю Американский метод расчета ?(День(ДатаКон)=31,30,День(НачалоДня(ДатаКон)) — День(НачалоМесяца(ДатаКон)))+?(День(ДатаНач)=31,30,День(КонецМесяца(ДатаНач)) — День(НачалоДня(ДатаНач)))+30*(Год(ДатаКон)*12+(Месяц(ДатаКон)-1)-Год(ДатаНач)*12-Месяц(ДатаНач))

Тэги:

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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




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

21-07-2022

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

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Ошибка при выборе листа эксель

Я

falselight

21.03.19 — 10:34

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

На форме появилось дерево, файла эксель и его листов. Выбираю лист.

Жму прочитать, в тз появляются данные.

Но если выбрать другой лист и нажать прочитать, то, выходит ошибка

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

То есть как её исключить? Что бы перечитывался другой выбранный лист?

falselight

1 — 21.03.19 — 10:39

Вижу ошибку, Excel — не определена в этом случае. Наверное в этом дело.

falselight

2 — 21.03.19 — 10:44

Все же ошибка идет, не подскажете почему?

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(329)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

Дмитрий

3 — 21.03.19 — 10:44

ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы чему равно?

falselight

4 — 21.03.19 — 10:51

Почему вот это бывает пустое?????

При первой загрузке там COMОбъект

(3) Названию выбранного листа.

falselight

5 — 21.03.19 — 10:51

(4+) Excel.Sheets

falselight

6 — 21.03.19 — 10:57

Точку останова ставлю, вроде как обновляются данные

без точки останова ошибка, как будто COMОбъект не успевает считаться, как тут быть?

falselight

7 — 21.03.19 — 10:58

как с этим быть? Что то не понятно!!!!

falselight

8 — 21.03.19 — 11:06

Почему не видна функция в 1с ТекущееВремя() ?

falselight

9 — 21.03.19 — 11:08

Хотел вот такую функцию использовать, паузу. но она не работает.

Процедура Пауза(Время)

чЧас=0; чМин=0; чСек=0;

ТекущееВремя(чЧас,чМин,чСек);

чТекВремя = чЧас*3600+чМин*60+чСек;

чВремяЗавершения = чТекВремя+Время;

Пока чТекВремя<чВремяЗавершения Цикл

ТекущееВремя(чЧас,чМин,чСек);

чТекВремя = чЧас*3600+чМин*60+чСек;

КонецЦикла;

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

falselight

10 — 21.03.19 — 12:17

Ставлю точку останова на этой строке.

// ЧТЕНИЕ ЛИСТА

Процедура КоманднаяПанель1ПрочитатьДанныеСЛиста(Кнопка)

    Если ОбрЗавершена = 1 Тогда

        Сообщить(«Данный файл уже был обработан. Перезапустите обработку и выберите новый файл для загрузки!»);

        Возврат;

    КонецЕсли;

    //

    // Необходимый лист

    Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), «xls») > 0 Тогда

        Предупреждение(«Выберите конкретный лист для загрузки, а не сам файл!»);

        Возврат;

    КонецЕсли;

    //

    Если Excel = неопределено Тогда

        Попытка

            Excel = новый COMОбъект(«Excel.Application»);

        Исключение

            Сообщить(«Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.»);

            Возврат;

        КонецПопытки;    

        //НашФайл = Excel.Workbooks.Open(ИмяФайла);

        Excel.Workbooks.Open(ИмяФайла);

    КонецЕсли;

    //

    //ПаузаПустымЦиклом(5);

    //

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

Читаю листы, у загруженного файла в дерево. Читается как и один так и другой.

Останавливаясь на точке останова. Как только я убираю точку останова, при этих же действиях вываливается ошибка.

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(333)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

Что нужно поправить? Подскажите пожалуйста!

  

falselight

11 — 21.03.19 — 12:21

Решил вопрос.

Нужно было сделать так, —

    Excel = Неопределено;

    //

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

Ошибка при выборе листа эксель

Я

falselight

21.03.19 — 10:34

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

На форме появилось дерево, файла эксель и его листов. Выбираю лист.

Жму прочитать, в тз появляются данные.

Но если выбрать другой лист и нажать прочитать, то, выходит ошибка

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

То есть как её исключить? Что бы перечитывался другой выбранный лист?

falselight

1 — 21.03.19 — 10:39

Вижу ошибку, Excel — не определена в этом случае. Наверное в этом дело.

falselight

2 — 21.03.19 — 10:44

Все же ошибка идет, не подскажете почему?

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(329)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   

по причине:

Произошла исключительная ситуация (0x800a03ec)

Дмитрий

3 — 21.03.19 — 10:44

ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы чему равно?

falselight

4 — 21.03.19 — 10:51

Почему вот это бывает пустое?????

При первой загрузке там COMОбъект

(3) Названию выбранного листа.

falselight

5 — 21.03.19 — 10:51

(4+) Excel.Sheets

falselight

6 — 21.03.19 — 10:57

Точку останова ставлю, вроде как обновляются данные

без точки останова ошибка, как будто COMОбъект не успевает считаться, как тут быть?

falselight

7 — 21.03.19 — 10:58

как с этим быть? Что то не понятно!!!!

falselight

8 — 21.03.19 — 11:06

Почему не видна функция в 1с ТекущееВремя() ?

falselight

9 — 21.03.19 — 11:08

Хотел вот такую функцию использовать, паузу. но она не работает.

Процедура Пауза(Время) 
чЧас=0; чМин=0; чСек=0; 
ТекущееВремя(чЧас,чМин,чСек); 
чТекВремя = чЧас*3600+чМин*60+чСек; 
чВремяЗавершения = чТекВремя+Время; 
Пока чТекВремя<чВремяЗавершения Цикл 
ТекущееВремя(чЧас,чМин,чСек); 
чТекВремя = чЧас*3600+чМин*60+чСек; 
КонецЦикла; 
КонецПроцедуры;

falselight

10 — 21.03.19 — 12:17

Ставлю точку останова на этой строке.

// ЧТЕНИЕ ЛИСТА

Процедура КоманднаяПанель1ПрочитатьДанныеСЛиста(Кнопка)
    Если ОбрЗавершена = 1 Тогда 
        Сообщить("Данный файл уже был обработан. Перезапустите обработку и выберите новый файл для загрузки!");
        Возврат;
    КонецЕсли;
    //

    // Необходимый лист

    Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), "xls") > 0 Тогда
        Предупреждение("Выберите конкретный лист для загрузки, а не сам файл!");
        Возврат;
    КонецЕсли;
    //

    Если Excel = неопределено Тогда 
        Попытка
            Excel = новый COMОбъект("Excel.Application");
        Исключение
            Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
            Возврат;
        КонецПопытки;     
        //НашФайл = Excel.Workbooks.Open(ИмяФайла);

        Excel.Workbooks.Open(ИмяФайла);
    КонецЕсли;
    //

    //ПаузаПустымЦиклом(5);

    //

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   


Читаю листы, у загруженного файла в дерево. Читается как и один так и другой.

Останавливаясь на точке останова. Как только я убираю точку останова, при этих же действиях вываливается ошибка.

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(333)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   
по причине:
Произошла исключительная ситуация (0x800a03ec)


Что нужно поправить? Подскажите пожалуйста!

  

falselight

11 — 21.03.19 — 12:21

Решил вопрос.

Нужно было сделать так, -

    Excel = Неопределено;
    //

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

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  • shtucer-igor 04.03.2009 at 12:54

    однозначно плюс !

    а можно тоже самое но чтобы грузило в установку цен номенклатуры контрагента ?

    Reply

  • softbear 11.03.2009 at 00:25

    однозначно плюс !

    Reply

  • COMPER 19.03.2009 at 11:51

    не работает. Но красиво

    Reply

  • COMPER 19.03.2009 at 11:53

  • Pim 19.03.2009 at 19:10

    не работает :-(. Самый главный минус всех подобных обработок в том, что они грузят только одну цену в УТ. По крайней мере, я других не видел. Эта обработка похоже тоже грузит только одну цену, да ещё и запоролена…

    А что делать, если мне надо загружать сразу четыре разных типов цен в один документ. (Не надо предлагать загружать по-одному — заказчик не хочет).

    Reply

  • egorover 20.03.2009 at 16:26

    внимательней, там загрузка идёт по всем типам цен в строку

    Reply

  • olee 23.03.2009 at 00:40

    У меня пишет:

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • egorover 23.03.2009 at 08:03

    всё времени нет, укажите имя листа excel Лист1

    Reply

  • olee 23.03.2009 at 10:39

    Создался пустой документ с комментарием из какого файла загружен.

    Пытаюсь снова загрузить цены — пишет в регистре есть такая строка.

    Захожу в регистр сведений — нет такой записи:(

    Reply

  • olee 25.03.2009 at 00:44

    Разобрался, все работает!

    Очень нужная обработка.

    Плюс.

    Reply

  • dev_gen 31.03.2009 at 13:35

    Ищу по всему инету такую разработку уже неделю.

    Огромное спасибище

    Reply

  • kozakm 11.04.2009 at 08:26

  • VikFx 28.04.2009 at 11:00

    то, что нужно, спасибо

    Reply

  • 4emodan 06.05.2009 at 01:22

    Большое спасибо! Давно искал.

    Reply

  • 4emodan 06.05.2009 at 01:39

    А можно сделать, чтоб находило товары не по артикулу, а по коду?

    Reply

  • petrash 06.06.2009 at 11:50

    Выручил! Спасибо большое!

    Reply

  • qwertylion@rambler.ru 07.06.2009 at 19:01

    Обработка хорошее но вот только документ пустой создается, не подскажите как быть?

    Reply

  • steelrat1976 20.06.2009 at 15:19

    нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:20

    при записи в ценообразование пустой лист

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:22

    все нормально разобрался нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял СПАСИБО steelrat1976

    Reply

  • Dimka74 21.07.2009 at 04:29

    Пожалуй повторюсь: «А можно сделать, чтоб находило товары не по артикулу, а по коду?»

    Reply

  • sly99 07.10.2009 at 21:25

    можно поподробнее, что где писать?

    выдает ошибку

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • cooldanie 06.11.2009 at 15:51

    Автор зачет! а можно по наименованию товара а не по артикулу? или сделайте универсально — по коду, по наименованию, по артикулу — и цены не будет вашей обработке. А если 2 колонки цены? опт и розница — 2я и 3я?

    Reply

  • helloworld 09.11.2009 at 14:31

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Это наверное когда страница Екселя названа не Лист1. Автор, выбрал бы просто первую страницу — Excel.Sheets(1).select();

    Reply

  • labuh 26.11.2009 at 03:38

    Автору респект и уважуха.

    А как быть с одинаковыми ценами номенклатуры? Обработка не читает одинаковые цены из экселя, — пишет «не нашли артикул ……..»

    Reply

  • labuh 27.11.2009 at 23:51

    Здесь что, больше никто не живет???

    Reply

  • meser 06.12.2009 at 22:22

    Спасибо, действительно обработка нужная, я бы добавил еще поиск не только по артиклу, но и по коду, наименованию.

    Reply

  • nikser 11.01.2010 at 18:40

    Ничего не понимаю . у кого она работает??? документ изменения цен то создался , но пустой .

    Reply

  • Epishko 14.02.2010 at 22:04

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

    Reply

  • Родная 14.04.2010 at 10:56

    изначально все получается, но при загрузке, выбранных цен в 1С выдается ошибка

    {ВнешняяОбработка.ЗагрузкаЦен(120)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : Закупочная : ******* (Регистр сведений: Цены номенклатуры; Номер строки: 43)

    по причине:

    Запись с такими ключевыми полями существует! : Закупочная :**********(Регистр сведений: Цены номенклатуры; Номер строки: 43)

    при том что справочник «Установка цен номенклатуры» пуст.

    Что я не так делаю?

    Reply

  • provnick 24.01.2011 at 21:39

    Да уж, было б описание, то немного времени потратить на заполнение формы, оказывается нужно файлик подготовить Excelский, страница Екселя названа должна Лист1 и артикул форматнуть в текстовой, а цены в числовой и заполняется таблица для передачи в документ. Но вопрос вот в чем: как две цены закинуть, поле то одно для выбора цены, у кого получилось? egorover пишет (6) «внимательней, там загрузка идёт по всем типам цен в строку» , но выходит только одна цена, что и как? Да еще пароль, понятно, а то…, что ж мышает второе поле для второй цены сделать, а? хоть бы приходную да расходную. В целом гуд и +, ще б поправить.

    Reply

  • Glenas 28.01.2011 at 14:46

    Здравсвуйте. Помогайте, очень надо. Версия 8,2, УТ 11. При открытии выдавал ошибку, поменял ТипыЦенНоменклатуры на ВидыЦен. Обработка открывается, загружает файл xls, корректно находит цены. При попытке загрузки выдаёт {ВнешняяОбработка.ЗагрузкаЦен.МодульОбъекта(90)}: Поле объекта не обнаружено (НеПроводитьНулевыеЗначения) А код модуля запаролен! Что делать, автор? Спасибо

    Reply

  • egorover 29.07.2011 at 10:03

  • lenka-nes@mail.ru 13.10.2011 at 10:19

    спасибо!пригодилось

    Reply

  • wwizard 01.11.2011 at 17:05

    Пишет Ошибка при вызове метода контекста (Sheets)

    Что делать?

    Reply

  • tgnike 08.11.2011 at 12:30

    Она со всеми екселями работате?

    Reply

  • w22u 21.11.2011 at 14:54

    Спасибо, протестируем Вашу обработку.

    Reply

  • Belka063 30.11.2011 at 09:30

    Работает.Спасибо.Помогло

    Reply

  • AruslanM 07.12.2011 at 10:41

    Спасибо за идею, пригодилось.

    Reply

  • Ibrogim 19.12.2011 at 10:51

    Спасибо за обработку, помогла как пример

    Reply

  • ASoft 18.01.2012 at 22:14

  • maratsat 21.01.2012 at 17:44

    Во-первых, хорошая обработка. Спасибо. Значительно сокращает время ввода документа.

    Во-вторых, предложения по улучшению

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

    Или как вариант сделать возможным добавлять разные типы цен к одному документу.

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

    Reply

  • wwizard 21.01.2012 at 23:25

    (35) так что делать то

    Reply

  • egorover 23.01.2012 at 21:18

    (42) так для этого и создавалось, колонки в таблице excel и есть различные типы цен

    Reply

  • egorover 23.01.2012 at 21:19

    (43) имя листа в книге excel

    Reply

  • FE_D_OR83 31.01.2012 at 15:11

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

    Кстати неплохо бы в неё добавить возможность указывать цены для номенклатуры с характеристиками.

    Reply

  • fonomo0 31.01.2012 at 15:24

    Автор С какими версиями Excel работает ваша отработка?

    Reply

  • AlexxxMksv 29.04.2012 at 12:17

    Скажите ваша обработка может проверять соответствие единицы измерения из файла не с базовой единицей, не с единицей хранения остатков, не с единицей для отчетов, не с единицей мест, а с единицами по классификатору?

    Reply

  • TitanLuchs 17.06.2012 at 13:20

    Замечательная штука, спасибо автору, помог сэкономить время на написание своего подобного «велосипеда»!

    Reply

  • MyPuK_OLD 19.11.2013 at 15:46

    Есть какое-то описание или инструкция по использованию данной обработки? Подойдет ли она для работы с Комплексной автоматизацией редакция 1.1?

    Reply

  • egorover 19.11.2013 at 21:23

    Пробуйте, не пробовал, код открыт

    Reply

  • Здравствуйте! Подскажите, пожалуйста! Загружаю из Excel данные, хочу обратиться к именованной области, выдает следующую ошибку: «Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)
    ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
    по причине:
    Произошла исключительная ситуация (0x800a03ec)»

    Процедура ОсновныеДействияФормыЗагрузить(Кнопка)

    НомерКолонкиАртикул = ЭлементыФормы.ТабличныйДокумент.Область(«R2C1»;
    НомерКолонкиНаименованияТовара = ЭлементыФормы.ТабличныйДокумент.Область(«R2C2»;
    НомерКолонкиЕдиницаИзмерения = ЭлементыФормы.ТабличныйДокумент.Область(«R2C3»;
    НомерКолонкиСтрана = ЭлементыФормы.ТабличныйДокумент.Область(«R2C4»;

    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Excel = новый COMОбъект(«Excel.Application»;

    Версия = Лев(Excel.Version,Найти(Excel.Version,».»-1);
    Если Версия = «8» тогда
    ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
    ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
    ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
    ФайлКолонок = Excel.Cells(2,1).SpecialCells(21).Column;
    Конецесли;

    // Выбираем данные из файла
    Для а = Excel.Cells(2,1).SpecialCells(21).Row по ФайлСтрок Цикл

    //Полуим данные из соответсвующих ячеек
    Артикул = СокрЛП(Excel.Cells(а,Артикул).Value);
    НаименованиеТовара = СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
    ЕдиницаИзмерения = СокрЛП(Excel.Cells(а,НомерКолонкиЕдиницаИзмерения).Value);

    Товар = Справочники.Номенклатура.ПустаяСсылка();

    // Ищем товар в справочнике по коду
    Товар = Справочники.Номенклатура.НайтиПоКоду.Артикул;

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

    //Если не нашли создаем новый
    Если Товар.Пустая() Тогда
    Товар = Справочники.Номенклатура.СоздатьЭлемент();
    Товар.Наименование = НаименованиеТовара;
    Товар.Артикул = Артикул;
    Товар.БазоваяЕдиницаИзмерения = ЕдиницаИзмерения;
    Товар.СтранаПроисхождения = НомерКолонкиСтрана;
    Товар.Записать();
    Конецесли;
    КонецЦикла;

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

    Народ, помогите, не могу понять почему на одном и том компе под разными пользователями работает и не работает, вываливает ошибку «Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)»? гуглом пользоваться умею, но ответа так и не нашел.

    поправка, ексель 2010, работаем на терминалах по РДП, есть домен.

    Sheets — лист книги. может обращается к несущствующему?

    коллекция листов вообще-то

    от этого сильно смысл последнего предложения поменялся? код покажи-то. и где именно валится

    в смысле, от того что ты неправильное определение свойству дала? кстати, автор, Sheets — это не метод

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

    Тэги: 1С 8

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

  • shtucer-igor 04.03.2009 at 12:54

    однозначно плюс !

    а можно тоже самое но чтобы грузило в установку цен номенклатуры контрагента ?

    Reply

  • softbear 11.03.2009 at 00:25

    однозначно плюс !

    Reply

  • COMPER 19.03.2009 at 11:51

    не работает. Но красиво

    Reply

  • COMPER 19.03.2009 at 11:53

  • Pim 19.03.2009 at 19:10

    не работает :-(. Самый главный минус всех подобных обработок в том, что они грузят только одну цену в УТ. По крайней мере, я других не видел. Эта обработка похоже тоже грузит только одну цену, да ещё и запоролена…

    А что делать, если мне надо загружать сразу четыре разных типов цен в один документ. (Не надо предлагать загружать по-одному — заказчик не хочет).

    Reply

  • egorover 20.03.2009 at 16:26

    внимательней, там загрузка идёт по всем типам цен в строку

    Reply

  • olee 23.03.2009 at 00:40

    У меня пишет:

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • egorover 23.03.2009 at 08:03

    всё времени нет, укажите имя листа excel Лист1

    Reply

  • olee 23.03.2009 at 10:39

    Создался пустой документ с комментарием из какого файла загружен.

    Пытаюсь снова загрузить цены — пишет в регистре есть такая строка.

    Захожу в регистр сведений — нет такой записи:(

    Reply

  • olee 25.03.2009 at 00:44

    Разобрался, все работает!

    Очень нужная обработка.

    Плюс.

    Reply

  • dev_gen 31.03.2009 at 13:35

    Ищу по всему инету такую разработку уже неделю.

    Огромное спасибище

    Reply

  • kozakm 11.04.2009 at 08:26

  • VikFx 28.04.2009 at 11:00

    то, что нужно, спасибо

    Reply

  • 4emodan 06.05.2009 at 01:22

    Большое спасибо! Давно искал.

    Reply

  • 4emodan 06.05.2009 at 01:39

    А можно сделать, чтоб находило товары не по артикулу, а по коду?

    Reply

  • petrash 06.06.2009 at 11:50

    Выручил! Спасибо большое!

    Reply

  • qwertylion@rambler.ru 07.06.2009 at 19:01

    Обработка хорошее но вот только документ пустой создается, не подскажите как быть?

    Reply

  • steelrat1976 20.06.2009 at 15:19

    нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:20

    при записи в ценообразование пустой лист

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:22

    все нормально разобрался нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял СПАСИБО steelrat1976

    Reply

  • Dimka74 21.07.2009 at 04:29

    Пожалуй повторюсь: «А можно сделать, чтоб находило товары не по артикулу, а по коду?»

    Reply

  • sly99 07.10.2009 at 21:25

    можно поподробнее, что где писать?

    выдает ошибку

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • cooldanie 06.11.2009 at 15:51

    Автор зачет! а можно по наименованию товара а не по артикулу? или сделайте универсально — по коду, по наименованию, по артикулу — и цены не будет вашей обработке. А если 2 колонки цены? опт и розница — 2я и 3я?

    Reply

  • helloworld 09.11.2009 at 14:31

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Это наверное когда страница Екселя названа не Лист1. Автор, выбрал бы просто первую страницу — Excel.Sheets(1).select();

    Reply

  • labuh 26.11.2009 at 03:38

    Автору респект и уважуха.

    А как быть с одинаковыми ценами номенклатуры? Обработка не читает одинаковые цены из экселя, — пишет «не нашли артикул ……..»

    Reply

  • labuh 27.11.2009 at 23:51

    Здесь что, больше никто не живет???

    Reply

  • meser 06.12.2009 at 22:22

    Спасибо, действительно обработка нужная, я бы добавил еще поиск не только по артиклу, но и по коду, наименованию.

    Reply

  • nikser 11.01.2010 at 18:40

    Ничего не понимаю . у кого она работает??? документ изменения цен то создался , но пустой .

    Reply

  • Epishko 14.02.2010 at 22:04

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

    Reply

  • Родная 14.04.2010 at 10:56

    изначально все получается, но при загрузке, выбранных цен в 1С выдается ошибка

    {ВнешняяОбработка.ЗагрузкаЦен(120)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : Закупочная : ******* (Регистр сведений: Цены номенклатуры; Номер строки: 43)

    по причине:

    Запись с такими ключевыми полями существует! : Закупочная :**********(Регистр сведений: Цены номенклатуры; Номер строки: 43)

    при том что справочник «Установка цен номенклатуры» пуст.

    Что я не так делаю?

    Reply

  • provnick 24.01.2011 at 21:39

    Да уж, было б описание, то немного времени потратить на заполнение формы, оказывается нужно файлик подготовить Excelский, страница Екселя названа должна Лист1 и артикул форматнуть в текстовой, а цены в числовой и заполняется таблица для передачи в документ. Но вопрос вот в чем: как две цены закинуть, поле то одно для выбора цены, у кого получилось? egorover пишет (6) «внимательней, там загрузка идёт по всем типам цен в строку» , но выходит только одна цена, что и как? Да еще пароль, понятно, а то…, что ж мышает второе поле для второй цены сделать, а? хоть бы приходную да расходную. В целом гуд и +, ще б поправить.

    Reply

  • Glenas 28.01.2011 at 14:46

    Здравсвуйте. Помогайте, очень надо. Версия 8,2, УТ 11. При открытии выдавал ошибку, поменял ТипыЦенНоменклатуры на ВидыЦен. Обработка открывается, загружает файл xls, корректно находит цены. При попытке загрузки выдаёт {ВнешняяОбработка.ЗагрузкаЦен.МодульОбъекта(90)}: Поле объекта не обнаружено (НеПроводитьНулевыеЗначения) А код модуля запаролен! Что делать, автор? Спасибо

    Reply

  • egorover 29.07.2011 at 10:03

  • lenka-nes@mail.ru 13.10.2011 at 10:19

    спасибо!пригодилось

    Reply

  • wwizard 01.11.2011 at 17:05

    Пишет Ошибка при вызове метода контекста (Sheets)

    Что делать?

    Reply

  • tgnike 08.11.2011 at 12:30

    Она со всеми екселями работате?

    Reply

  • w22u 21.11.2011 at 14:54

    Спасибо, протестируем Вашу обработку.

    Reply

  • Belka063 30.11.2011 at 09:30

    Работает.Спасибо.Помогло

    Reply

  • AruslanM 07.12.2011 at 10:41

    Спасибо за идею, пригодилось.

    Reply

  • Ibrogim 19.12.2011 at 10:51

    Спасибо за обработку, помогла как пример

    Reply

  • ASoft 18.01.2012 at 22:14

  • maratsat 21.01.2012 at 17:44

    Во-первых, хорошая обработка. Спасибо. Значительно сокращает время ввода документа.

    Во-вторых, предложения по улучшению

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

    Или как вариант сделать возможным добавлять разные типы цен к одному документу.

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

    Reply

  • wwizard 21.01.2012 at 23:25

    (35) так что делать то

    Reply

  • egorover 23.01.2012 at 21:18

    (42) так для этого и создавалось, колонки в таблице excel и есть различные типы цен

    Reply

  • egorover 23.01.2012 at 21:19

    (43) имя листа в книге excel

    Reply

  • FE_D_OR83 31.01.2012 at 15:11

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

    Кстати неплохо бы в неё добавить возможность указывать цены для номенклатуры с характеристиками.

    Reply

  • fonomo0 31.01.2012 at 15:24

    Автор С какими версиями Excel работает ваша отработка?

    Reply

  • AlexxxMksv 29.04.2012 at 12:17

    Скажите ваша обработка может проверять соответствие единицы измерения из файла не с базовой единицей, не с единицей хранения остатков, не с единицей для отчетов, не с единицей мест, а с единицами по классификатору?

    Reply

  • TitanLuchs 17.06.2012 at 13:20

    Замечательная штука, спасибо автору, помог сэкономить время на написание своего подобного «велосипеда»!

    Reply

  • MyPuK_OLD 19.11.2013 at 15:46

    Есть какое-то описание или инструкция по использованию данной обработки? Подойдет ли она для работы с Комплексной автоматизацией редакция 1.1?

    Reply

  • egorover 19.11.2013 at 21:23

    Пробуйте, не пробовал, код открыт

    Reply

  • Автор beztrud, 19 июн 2014, 23:26

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

    Цитировать
    1. Создаем реквизит формы Таблица
    2. Заполняем ее на клиенте (отключаемся от ADO)

    А если без реквизита Таблица — то я так понимаю можно использовать таблицу значений, а затем в табличную часть грузить из нее?


    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    Цитировать
    Все что надо это:
    1. Начальная строка
    2. Количество колонок
    3. Признак когда остановиться

    Можете привести код с пояснениями, пожалуйста.



    Попытка
    ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);
    Исключение
    ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке());
    Отказ = Истина;
    Возврат;
    КонецПопытки;

    СписокИмпорта.Очистить();

    счСтроки = НачальнаяСтрока;
    НомСтр = 0;

    Пока ИСТИНА Цикл 

    НомСтр = НомСтр + 1;

    ОбработкаПрерыванияПользователя();

    ПроверочнаяЯчейка = СокрЛП(ФайлЭксель.Sheets(1).Cells(СчСтроки,1).Value);

    Если ПроверочнаяЯчейка = "#" Тогда

    Прервать;

    КонецЕсли;

    Если ПроверочнаяЯчейка = "" Тогда

    Прервать;

    КонецЕсли;

    Состояние("Загрузка: строка №"+счСтроки);

    НоваяСтрока = СписокИмпорта.Добавить();

    НоваяСтрока.НомерСтроки = НомСтр;

    Для Ш=1 По СписокИмпорта.Колонки.Количество()-1 Цикл

    мКолонка = СписокИмпорта.Колонки.Получить(Ш);

    ЗначениеЯчейки = ФайлЭксель.Sheets(1).Cells(СчСтроки,Ш).Value;

    ЗаполнитьЗначениеПоТипуКолонки(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], мКолонка);

    ОтформатироватьЗначениеПоля(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], Ш); //очистим от ненужных символов и пр.

    КонецЦикла;

    счСтроки = счСтроки + 1;

    КонецЦикла;

    ФайлЭксель.Application.Quit();

    Получил помощь — скажи СПАСИБО.
    Разобрался сам — расскажи другим.


    ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);

    Если выбираем xls, то всё нормально, ну а если xlsx — то
    {Обработка.ВычислениеПластика.Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
          ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);
    по причине:
    Ошибка получения объекта COM: -2147467259(0x80004005): Неопознанная ошибка

    Добавлено: 20 июн 2014, 21:31


    Кстати эта ошибка появляется при повторном выборе файла. При первом выборе ошибки нет, хоть и подгружает дольше, чем xls. Может быть проблема в

    ФайлЭксель.Application.Quit();

    Добавлено: 20 июн 2014, 21:59


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


    Да такое поведение нормальное для конструкции

    ПолучитьCOMОбъект(ИмяФайла); если открыть файл закрыть и тут же снова открыть, на медленных компах процесс не успевает завершиться и ПолучитьCOMОбъект() подключается к существующему процессу снова, ну а процесс то уже не рабочий…

    СП
    Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода:
    Таб = ПолучитьCOMОбъект(«C:DATADATA.XLS»);
    создает объект Excel.Application и открывает с его помощью файл документа «C:DATADATA.XLS». Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
    Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.

    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    cska-fanat-kz

    ПроверочнаяЯчейка = СокрЛП(ФайлЭксель.Sheets(1).Cells(СчСтроки,1).Value);
    Выдает
    {Обработка.ВычислениеПластика.Форма.Форма.Форма(72)}: Ошибка при вызове метода контекста (Cells)
          ПроверочнаяЯчейка = Эксель.Sheets(1).Cells(СчСтроки,2).Value;   
    по причине:
    Произошла исключительная ситуация (0x800a03ec)

    Dethmontt

    ЦитироватьДля файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.

    Это как?


    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    cska-fanat-kz

    ЗаполнитьЗначениеПоТипуКолонки(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], мКолонка);

    А это что за функция?

    Добавлено: 21 июн 2014, 08:43


    Вернемся все-таки к ADO. Уважаемый Dethmontt просьба помочь. У меня на форме есть ТабличнаяЧасть.Вычисления. Реквизиты этой табличной части — ЧастьИзделия, ВысотаФасада, ШиринаФасада, КоличествоФасадов. Есть файл эксель без наименования столбцов в первой строке, т.е в первой строке уже находятся данные. Структура файла эксель всегда одинакова во второй колонке файла эксель всегда содержится ЧастьИзделия, в четвертой колонке всегда ВысотаФасада, в пятой — ШиринаФасада и в шестой — КоличествоФасадов. Вы писали — 1. Создаем реквизит формы Таблица — т.е нужно создать на форме ТабличныйДокумент с именем Таблица и грузить в него? Или как?
    Все что пришло мне в голову это выбрать файл на клиенте а на сервере считать с него данные и передать на клиент. Но вот моя функция с переменной СтрокаТабличнойЧасти ругается, хоть и грузит данные. У меня к Вам просьба, если не сложно, выложите пожалуйста клиентскую и серверную процедуры для загрузки файла, применимо к моим реквизитам.


    Получил помощь — скажи СПАСИБО.
    Разобрался сам — расскажи другим.


    Heltarion

    2 / 2 / 0

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

    Сообщений: 57

    1

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

      

    Andru

    08.02.11 — 17:44

    Excel = Новый COMОбъект(«Excel.Application»);

           Excel.Application.Workbooks.Add(1);

           Если МетодРасчета Тогда

               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;

           Иначе

               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;

           КонецЕсли;

           Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;

           Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

           КоличествоДней = Excel.Sheets(1).Cells(1,»A»).Value;

           Попытка

               Excel.ActiveWorkBook.SaveAs(КаталогВременныхФайлов() + «FailRascheta.xls»);    

           Исключение

               Сообщение = ОписаниеОшибки();

           КонецПопытки;

           Excel.Application.Quit();

    Пишу вот такой код. Пользователи работают в терминале под одним пользователем отрабатывает отлично, у другого пользователя пишет ошибку «Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)» обошел все форумы, забивал формулу на английском. Все равно не работает.

      

    izekia

    1 — 08.02.11 — 17:54

    а без буковок попробуй

      

    Andru

    2 — 08.02.11 — 17:57

    Не совсем понял.

      

    Tatitutu

    3 — 08.02.11 — 17:58

    Excel.Sheets(1).Cells(1,»A»)
    =
    Excel.Sheets(1).Cells(1,1)

      

    Andru

    4 — 08.02.11 — 17:58

    без «А» в Cells(1,»A»)

      

    Andru

    5 — 08.02.11 — 17:59

    понял, проблемка только завтра попробую.

      

    dk

    6 — 08.02.11 — 18:00

    может там адреса в формате R1C1 забиты, хотя сумнительно
    либо на англицком формулу забей в
    ….Formula = …

      

    Andru

    7 — 08.02.11 — 18:00

    других вариантов нету?

      

    Andru

    8 — 08.02.11 — 18:01

    «Formula =» пробовал не помогает, вообще неработало

      

    Andru

    9 — 08.02.11 — 18:02

    «FormulaR1C1 =» тоже пробовал

      

    Andru

    10 — 08.02.11 — 18:03

    могут быть какие-то настройки в самом EXL

      

    Andru

    11 — 08.02.11 — 18:03

    ???

      

    Andru

    12 — 08.02.11 — 18:05

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

      

    dk

    13 — 08.02.11 — 18:08

    отладчик не предлагать?

      

    Andru

    14 — 08.02.11 — 18:12

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

      

    dk

    15 — 08.02.11 — 18:19

    тест 1
    поменять формула на «=1»

      

    Andru

    16 — 08.02.11 — 18:21

    проверить схавает хоть что-то?

      

    dk

    17 — 08.02.11 — 18:28

    ну да, отсекаешь 1 причину за другой

      

    Andru

    18 — 08.02.11 — 18:29

    отлично, попробую.

      

    Капюшон

    19 — 08.02.11 — 18:29

    (0)может быть разные версии Оффис у юзеров? у меня изза этого раньше в VBA проблемы возникали.

      

    Andru

    20 — 08.02.11 — 18:36

    на моей машине 2010, у клиента на локальных машинах и сервере 2003, и везде работает кроме терминала.

      

    Andru

    21 — 08.02.11 — 18:37

    может при установки админ не на всех пользователей VBA установил.

      

    Andru

    22 — 08.02.11 — 18:39

    ????

      

    dk

    23 — 08.02.11 — 18:39

    (21) excel без vba не ставится )

      

    Andru

    24 — 08.02.11 — 18:39

    может это быть причиной?

      

    Andru

    25 — 08.02.11 — 18:41

    я уже готов поверить в любое не вероятное.

      

    supremum

    26 — 08.02.11 — 18:43

    (21) Только что проверил код в (0) под терминалом — все работает. Проблема может быть с правами пользователей.

      

    Andru

    27 — 08.02.11 — 18:45

    я под своим пользователем в терминал заходил, у меня не работало, под сисадмином заходил работает, назначил права сисадмина себе все равно не работает.

      

    Andru

    28 — 08.02.11 — 18:50

    может мой пользователь не входит какую-то группу типа «Пользователи DCOM»

      

    kambala

    29 — 08.02.11 — 18:54

    Права на папку КаталогВременныхФайлов() посмотри на запись

      

    Andru

    30 — 08.02.11 — 18:56

    я убирал строки
           Если МетодРасчета Тогда
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
           Иначе
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
           КонецЕсли;
    без них отрабатывало под всеми пользователями нормально.

      

    Andru

    31 — 08.02.11 — 18:58

    так что права у всех на временный каталог есть.

      

    dk

    32 — 08.02.11 — 19:01

    может там англицкий Excel у юзера, хотя сумнительно

      

    Andru

    33 — 08.02.11 — 19:04

    Админ ставил под своим профелем и разрешил использовать всем пользователям, так что у всех один и тот же, но я проверю.

      

    ХелпДеск

    34 — 08.02.11 — 21:51

    (0)
    Подозрительное присвоение: Value = ДатаНачало
    Соответствует ли тип значения и формат ячейки xls и тип переменной ДатаНачало
    Потом надо подумать над присвоением: КоличествоДней = что-то
    Возможно это что-то (Value) надо привести к строковому типу.
    Для отладки можно присвоить строковые константы.

      

    ХелпДеск

    35 — 08.02.11 — 21:56

    Лучше через setValue устанавливать значения, чем через прямое присвоение.

      

    Andru

    36 — 09.02.11 — 06:42

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

      

    Andru

    37 — 09.02.11 — 06:59

    Это не сработало
    Excel.Sheets(1).Cells(1,»A»)
    =
    Excel.Sheets(1).Cells(1,1)

      

    dk

    38 — 09.02.11 — 07:46

    Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

      

    Andru

    39 — 09.02.11 — 08:43

    Этот тест сработал
    тест 1
    поменять формула на «=1»

      

    Andru

    40 — 09.02.11 — 08:46

    Не сработало.
    Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

      

    Andru

    41 — 09.02.11 — 08:50

    мне кажется это права, но не могу понять какие и на что

      

    Rie

    42 — 09.02.11 — 08:51

    (40) Попробуй FormulaR1C1 — что скажет?

      

    Andru

    43 — 09.02.11 — 08:54

    есть сдвиг
    Excel.Sheets(1).Cells(1,1).FormulaLocal = «DAYS360(B1;C1;1)»
    это сработало, но не посчитал.

      

    Andru

    44 — 09.02.11 — 08:54

    Как правильно передать DAYS360(B1;C1;1) третий параметр в EXL истина или ложь

      

    Rie

    45 — 09.02.11 — 08:55

    (43) А что должно было посчитать? И как именно «не посчитал»?

      

    Andru

    46 — 09.02.11 — 08:57

    вернул неопределено

      

    Andru

    47 — 09.02.11 — 08:58

    прошу прошения

      

    Andru

    48 — 09.02.11 — 08:58

    я незаметил один знак

      

    Andru

    49 — 09.02.11 — 09:00

    я написал вот так DAYS360(B1;C1;1), а надо было =DAYS360(B1;C1;1). И это не сработало. Извеняюсь.

      

    dk

    50 — 09.02.11 — 09:16

    что есть «не сработало»?
    Вылетела с ошибкой?
    в файле что-нить сохранилось?

      

    Aprobator

    51 — 09.02.11 — 09:33

    а под юзером у которого проблема в терминале эксель запустить слабо?

      

    Andru

    52 — 09.02.11 — 11:53

    ошибка даже самая какая и была в начале

      

    Andru

    53 — 09.02.11 — 11:54

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

      

    Andru

    54 — 09.02.11 — 11:55

    поэтому и говорю не понятный глюк.

      

    Aprobator

    55 — 09.02.11 — 12:19

    Сервис — Параметры — Общие — Стиль ссылок R1C1 под проблемным пользователем стоит?

      

    Andru

    56 — 09.02.11 — 12:20

    нет не стоит

      

    dk

    57 — 09.02.11 — 12:21

    Excel.Sheets(1).Cells(1,1).Formula = «=B1»;

      

    dk

    58 — 09.02.11 — 12:21

    может тупо в формуле C или B в кириллице заведены

      

    Andru

    59 — 09.02.11 — 12:30

    еще раз все перепроверил B это английская B, С тоже.

      

    Aprobator

    60 — 09.02.11 — 12:33

    хм — а точно вылетает на установке формулы, а не раньше на
    Excel.Sheets(1)? Не помню, честно говоря там индексы с 0 или с 1?

      

    Andru

    61 — 09.02.11 — 12:40

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

      

    dk

    62 — 09.02.11 — 12:52

    Яч = Excel.Sheets(1).Cells(1,1);
    Яч.Formula = «=B1»;

      

    Andru

    63 — 09.02.11 — 12:59

    почему Formula? у меня это не сработало.
    я пишу FormulaLocal.
    Так же я пробовал Formula = «=B1» и FormulaLocal = «=B1», все отработало.

      

    dk

    64 — 09.02.11 — 13:11

    а не пробовал сначала данные в B1 и С1 заполнить, а уже потом формулу? )

      

    Andru

    65 — 09.02.11 — 13:20

    Попробовал В1 и С1 заполнил, и все равно заткнулся на формуле.

      

    Andru

    66 — 09.02.11 — 13:20

    Ради интереса изменил формулу

      

    Andru

    67 — 09.02.11 — 13:21

    Excel.Sheets(1).Cells(1,2).Value = 10;
           Excel.Sheets(1).Cells(1,3).Value = 20;
           Excel.Sheets(1).Cells(1,1).FormulaLocal = «=Сумм(B1;C1)»;
    И все равно ругается на присвоение формулы.

      

    Aprobator

    68 — 09.02.11 — 13:22

    (67) лист не защищенный или ячейка?

      

    Andru

    69 — 09.02.11 — 13:23

    я никаких защит не ставил. А как проверить?

      

    Andru

    70 — 09.02.11 — 13:24

    новый лист создаю же.

      

    dk

    71 — 09.02.11 — 13:33

    Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

      

    Aprobator

    72 — 09.02.11 — 13:35

    Excel.Sheets(1).Cells(1,1).AllowEdit проверка на разрешение редактирования. Хотя можно проверить и просто попытвашись записать значение.
    Еще можно формулу попытаться вписать так:

    Excel.Sheets(1).Cells(1,1).RANGE.FormulaLocal = ...

      

    Andru

    73 — 09.02.11 — 13:44

    Хоть что-то новенькое.
    Ошибка.
    Ошибка при получении значения атрибута контекста (Range): Неверное число параметров

      

    Andru

    74 — 09.02.11 — 13:45

    А вот это посчитал
    Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

      

    Andru

    75 — 09.02.11 — 13:48

    я так понимаю проблема с использованием внутренних формул экселя, если простое сложение посчитал.

      

    dk

    76 — 09.02.11 — 13:50

    Excel.Application.Workbooks.Add(1);
    почему 1 в аргументе?
    а если просто
    Excel.Application.Workbooks.Add();

      

    Andru

    77 — 09.02.11 — 13:52

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

      

    dk

    78 — 09.02.11 — 13:53

    корявый пример )

      

    Andru

    79 — 09.02.11 — 13:54

    (76) Не помогло.Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)

      

    Aprobator

    80 — 09.02.11 — 14:06

    покопался по хелпу, там формула присваивается только на актином листе (в примерах).
    Может стоит попробовать так:

    Excel.Sheets(1).Activate;
    ActiveSheet.FormulaLocal = ....

      

    Aprobator

    81 — 09.02.11 — 14:09

    вот еще пример из хелпы:

    Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

      

    dk

    82 — 09.02.11 — 14:27

    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.Application.Workbooks.Add();
    Excel.Visible = Истина;

      

    Aprobator

    83 — 09.02.11 — 15:14

    (79) кстати — попробуй по деревянному — зайди в эксель, создай формулу, а потом с 1Сы ее считай и посмотри как она выглядит )

      

    Andru

    84 — 09.02.11 — 16:03

    спасибо большое, попробую но только завтра.

      

    Andru

    85 — 12.02.11 — 03:39

    ничего не сработало. буду искать другой выход.

      

    Andru

    86 — 12.02.11 — 03:43

    Я тут встречал расчеты.
    Европейский метод —
    ?(День(Дата2)=31,30,День(Дата2))-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

      Американский метод —
    ?(День(Дата2)=31 И День(Дата1)<30,31,30)-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

    Европейский метод расчет еще боле менее, а вот американский не правильно считает, может кто нибудь уже пытался решить это в 1С.

      

    Andru

    87 — 12.02.11 — 03:52

    к примеру задаеш период 26.08.2010-12.02.2011
    Европейски метод дает 166
    Американский метод дает 184

      

    Andru

    88 — 12.02.11 — 03:59

    В экселе оба метода дают 166

      

    azernot

    89 — 12.02.11 — 05:30

    В порядке бреда, попробуй поменять местами строки кода
           Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;
           Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

           Если МетодРасчета Тогда
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
           Иначе
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
           КонецЕсли;

    Т.е. сначала присвоить даты, а уже потом формулу ссылающуюся на даты..

      

    Andru

    90 — 12.02.11 — 06:38

    пробовал не помогает.

      

    Andru

    91 — 12.02.11 — 07:22

    кажись нашел
    если кому интересно проверьте тоже, может я что-то не замечаю
    Американский метод расчета
    ?(День(ДатаКон)=31,30,День(НачалоДня(ДатаКон)) — День(НачалоМесяца(ДатаКон)))+?(День(ДатаНач)=31,30,День(КонецМесяца(ДатаНач)) — День(НачалоДня(ДатаНач)))+30*(Год(ДатаКон)*12+(Месяц(ДатаКон)-1)-Год(ДатаНач)*12-Месяц(ДатаНач))

    Heltarion

    2 / 2 / 0

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

    Сообщений: 57

    1

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



    309 / 309 / 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



    309 / 309 / 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



    309 / 309 / 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



    309 / 309 / 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.       Ошибка при установке значения атрибута контекста

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

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

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

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

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

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

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

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

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

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

    v8: Работа 1С XLS непонятные глюки ☑ 0

    Andru

    08.02.11

    17:44

    Excel = Новый COMОбъект(«Excel.Application»);

           Excel.Application.Workbooks.Add(1);

           Если МетодРасчета Тогда

               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;

           Иначе

               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;

           КонецЕсли;

           Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;

           Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

           КоличествоДней = Excel.Sheets(1).Cells(1,»A»).Value;

           Попытка

               Excel.ActiveWorkBook.SaveAs(КаталогВременныхФайлов() + «FailRascheta.xls»);    

           Исключение

               Сообщение = ОписаниеОшибки();

           КонецПопытки;

           Excel.Application.Quit();

    Пишу вот такой код. Пользователи работают в терминале под одним пользователем отрабатывает отлично, у другого пользователя пишет ошибку «Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)» обошел все форумы, забивал формулу на английском. Все равно не работает.

    1

    izekia

    08.02.11

    17:54

    а без буковок попробуй

    2

    Andru

    08.02.11

    17:57

    Не совсем понял.

    3

    Tatitutu

    08.02.11

    17:58

    Excel.Sheets(1).Cells(1,»A»)
    =
    Excel.Sheets(1).Cells(1,1)

    4

    Andru

    08.02.11

    17:58

    без «А» в Cells(1,»A»)

    5

    Andru

    08.02.11

    17:59

    понял, проблемка только завтра попробую.

    6

    dk

    08.02.11

    18:00

    может там адреса в формате R1C1 забиты, хотя сумнительно
    либо на англицком формулу забей в
    ….Formula = …

    7

    Andru

    08.02.11

    18:00

    других вариантов нету?

    8

    Andru

    08.02.11

    18:01

    «Formula =» пробовал не помогает, вообще неработало

    9

    Andru

    08.02.11

    18:02

    «FormulaR1C1 =» тоже пробовал

    10

    Andru

    08.02.11

    18:03

    могут быть какие-то настройки в самом EXL

    11

    Andru

    08.02.11

    18:03

    ???

    12

    Andru

    08.02.11

    18:05

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

    13

    dk

    08.02.11

    18:08

    отладчик не предлагать?

    14

    Andru

    08.02.11

    18:12

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

    15

    dk

    08.02.11

    18:19

    тест 1
    поменять формула на «=1»

    16

    Andru

    08.02.11

    18:21

    проверить схавает хоть что-то?

    17

    dk

    08.02.11

    18:28

    ну да, отсекаешь 1 причину за другой

    18

    Andru

    08.02.11

    18:29

    отлично, попробую.

    19

    Капюшон

    08.02.11

    18:29

    (0)может быть разные версии Оффис у юзеров? у меня изза этого раньше в VBA проблемы возникали.

    20

    Andru

    08.02.11

    18:36

    на моей машине 2010, у клиента на локальных машинах и сервере 2003, и везде работает кроме терминала.

    21

    Andru

    08.02.11

    18:37

    может при установки админ не на всех пользователей VBA установил.

    22

    Andru

    08.02.11

    18:39

    ????

    23

    dk

    08.02.11

    18:39

    (21) excel без vba не ставится )

    24

    Andru

    08.02.11

    18:39

    может это быть причиной?

    25

    Andru

    08.02.11

    18:41

    я уже готов поверить в любое не вероятное.

    26

    supremum

    08.02.11

    18:43

    (21) Только что проверил код в (0) под терминалом — все работает. Проблема может быть с правами пользователей.

    27

    Andru

    08.02.11

    18:45

    я под своим пользователем в терминал заходил, у меня не работало, под сисадмином заходил работает, назначил права сисадмина себе все равно не работает.

    28

    Andru

    08.02.11

    18:50

    может мой пользователь не входит какую-то группу типа «Пользователи DCOM»

    29

    kambala

    08.02.11

    18:54

    Права на папку КаталогВременныхФайлов() посмотри на запись

    30

    Andru

    08.02.11

    18:56

    я убирал строки
           Если МетодРасчета Тогда
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
           Иначе
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
           КонецЕсли;
    без них отрабатывало под всеми пользователями нормально.

    31

    Andru

    08.02.11

    18:58

    так что права у всех на временный каталог есть.

    32

    dk

    08.02.11

    19:01

    может там англицкий Excel у юзера, хотя сумнительно

    33

    Andru

    08.02.11

    19:04

    Админ ставил под своим профелем и разрешил использовать всем пользователям, так что у всех один и тот же, но я проверю.

    34

    ХелпДеск

    08.02.11

    21:51

    (0)
    Подозрительное присвоение: Value = ДатаНачало
    Соответствует ли тип значения и формат ячейки xls и тип переменной ДатаНачало
    Потом надо подумать над присвоением: КоличествоДней = что-то
    Возможно это что-то (Value) надо привести к строковому типу.
    Для отладки можно присвоить строковые константы.

    35

    ХелпДеск

    08.02.11

    21:56

    Лучше через setValue устанавливать значения, чем через прямое присвоение.

    36

    Andru

    09.02.11

    06:42

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

    37

    Andru

    09.02.11

    06:59

    Это не сработало
    Excel.Sheets(1).Cells(1,»A»)
    =
    Excel.Sheets(1).Cells(1,1)

    38

    dk

    09.02.11

    07:46

    Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

    39

    Andru

    09.02.11

    08:43

    Этот тест сработал
    тест 1
    поменять формула на «=1»

    40

    Andru

    09.02.11

    08:46

    Не сработало.
    Excel.Sheets(1).Cells(1,1).Formula = «=DAYS360(B1;C1;0)»;

    41

    Andru

    09.02.11

    08:50

    мне кажется это права, но не могу понять какие и на что

    42

    Rie

    09.02.11

    08:51

    (40) Попробуй FormulaR1C1 — что скажет?

    43

    Andru

    09.02.11

    08:54

    есть сдвиг
    Excel.Sheets(1).Cells(1,1).FormulaLocal = «DAYS360(B1;C1;1)»
    это сработало, но не посчитал.

    44

    Andru

    09.02.11

    08:54

    Как правильно передать DAYS360(B1;C1;1) третий параметр в EXL истина или ложь

    45

    Rie

    09.02.11

    08:55

    (43) А что должно было посчитать? И как именно «не посчитал»?

    46

    Andru

    09.02.11

    08:57

    вернул неопределено

    47

    Andru

    09.02.11

    08:58

    прошу прошения

    48

    Andru

    09.02.11

    08:58

    я незаметил один знак

    49

    Andru

    09.02.11

    09:00

    я написал вот так DAYS360(B1;C1;1), а надо было =DAYS360(B1;C1;1). И это не сработало. Извеняюсь.

    50

    dk

    09.02.11

    09:16

    что есть «не сработало»?
    Вылетела с ошибкой?
    в файле что-нить сохранилось?

    51

    Aprobator

    09.02.11

    09:33

    а под юзером у которого проблема в терминале эксель запустить слабо?

    52

    Andru

    09.02.11

    11:53

    ошибка даже самая какая и была в начале

    53

    Andru

    09.02.11

    11:54

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

    54

    Andru

    09.02.11

    11:55

    поэтому и говорю не понятный глюк.

    55

    Aprobator

    09.02.11

    12:19

    Сервис — Параметры — Общие — Стиль ссылок R1C1 под проблемным пользователем стоит?

    56

    Andru

    09.02.11

    12:20

    нет не стоит

    57

    dk

    09.02.11

    12:21

    Excel.Sheets(1).Cells(1,1).Formula = «=B1»;

    58

    dk

    09.02.11

    12:21

    может тупо в формуле C или B в кириллице заведены

    59

    Andru

    09.02.11

    12:30

    еще раз все перепроверил B это английская B, С тоже.

    60

    Aprobator

    09.02.11

    12:33

    хм — а точно вылетает на установке формулы, а не раньше на
    Excel.Sheets(1)? Не помню, честно говоря там индексы с 0 или с 1?

    61

    Andru

    09.02.11

    12:40

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

    62

    dk

    09.02.11

    12:52

    Яч = Excel.Sheets(1).Cells(1,1);
    Яч.Formula = «=B1»;

    63

    Andru

    09.02.11

    12:59

    почему Formula? у меня это не сработало.
    я пишу FormulaLocal.
    Так же я пробовал Formula = «=B1» и FormulaLocal = «=B1», все отработало.

    64

    dk

    09.02.11

    13:11

    а не пробовал сначала данные в B1 и С1 заполнить, а уже потом формулу? )

    65

    Andru

    09.02.11

    13:20

    Попробовал В1 и С1 заполнил, и все равно заткнулся на формуле.

    66

    Andru

    09.02.11

    13:20

    Ради интереса изменил формулу

    67

    Andru

    09.02.11

    13:21

    Excel.Sheets(1).Cells(1,2).Value = 10;
           Excel.Sheets(1).Cells(1,3).Value = 20;
           Excel.Sheets(1).Cells(1,1).FormulaLocal = «=Сумм(B1;C1)»;
    И все равно ругается на присвоение формулы.

    68

    Aprobator

    09.02.11

    13:22

    (67) лист не защищенный или ячейка?

    69

    Andru

    09.02.11

    13:23

    я никаких защит не ставил. А как проверить?

    70

    Andru

    09.02.11

    13:24

    новый лист создаю же.

    71

    dk

    09.02.11

    13:33

    Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

    72

    Aprobator

    09.02.11

    13:35

    Excel.Sheets(1).Cells(1,1).AllowEdit проверка на разрешение редактирования. Хотя можно проверить и просто попытвашись записать значение.
    Еще можно формулу попытаться вписать так:

    Excel.Sheets(1).Cells(1,1).RANGE.FormulaLocal = ...

    73

    Andru

    09.02.11

    13:44

    Хоть что-то новенькое.
    Ошибка.
    Ошибка при получении значения атрибута контекста (Range): Неверное число параметров

    74

    Andru

    09.02.11

    13:45

    А вот это посчитал
    Excel.Sheets(1).Cells(1,1).FormulaLocal = «=B1 + C1»;

    75

    Andru

    09.02.11

    13:48

    я так понимаю проблема с использованием внутренних формул экселя, если простое сложение посчитал.

    76

    dk

    09.02.11

    13:50

    Excel.Application.Workbooks.Add(1);
    почему 1 в аргументе?
    а если просто
    Excel.Application.Workbooks.Add();

    77

    Andru

    09.02.11

    13:52

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

    78

    dk

    09.02.11

    13:53

    корявый пример )

    79

    Andru

    09.02.11

    13:54

    (76) Не помогло.Ошибка при установке значения атрибута контекста (FormulaLocal): Произошла исключительная ситуация (0x800a03ec)

    80

    Aprobator

    09.02.11

    14:06

    покопался по хелпу, там формула присваивается только на актином листе (в примерах).
    Может стоит попробовать так:

    Excel.Sheets(1).Activate;
    ActiveSheet.FormulaLocal = ....

    81

    Aprobator

    09.02.11

    14:09

    вот еще пример из хелпы:

    Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

    82

    dk

    09.02.11

    14:27

    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.Application.Workbooks.Add();
    Excel.Visible = Истина;

    83

    Aprobator

    09.02.11

    15:14

    (79) кстати — попробуй по деревянному — зайди в эксель, создай формулу, а потом с 1Сы ее считай и посмотри как она выглядит )

    84

    Andru

    09.02.11

    16:03

    спасибо большое, попробую но только завтра.

    85

    Andru

    12.02.11

    03:39

    ничего не сработало. буду искать другой выход.

    86

    Andru

    12.02.11

    03:43

    Я тут встречал расчеты.
    Европейский метод —
    ?(День(Дата2)=31,30,День(Дата2))-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

      Американский метод —
    ?(День(Дата2)=31 И День(Дата1)<30,31,30)-?(День(Дата1)=31,30,День(Дата1))+30*(Год(Дата2)*12+Месяц(Дата2)-Год(Дата1)*12-Месяц(Дата1))

    Европейский метод расчет еще боле менее, а вот американский не правильно считает, может кто нибудь уже пытался решить это в 1С.

    87

    Andru

    12.02.11

    03:52

    к примеру задаеш период 26.08.2010-12.02.2011
    Европейски метод дает 166
    Американский метод дает 184

    88

    Andru

    12.02.11

    03:59

    В экселе оба метода дают 166

    89

    azernot

    12.02.11

    05:30

    В порядке бреда, попробуй поменять местами строки кода
           Excel.Sheets(1).Cells(1,»B»).Value = ДатаНачало;
           Excel.Sheets(1).Cells(1,»C»).Value = ДатаОкончания;

           Если МетодРасчета Тогда
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ИСТИНА)»;
           Иначе
               Excel.Sheets(1).Cells(1,»A»).FormulaLocal = «=ДНЕЙ360(B1;C1;ЛОЖЬ)»;
           КонецЕсли;

    Т.е. сначала присвоить даты, а уже потом формулу ссылающуюся на даты..

    90

    Andru

    12.02.11

    06:38

    пробовал не помогает.

    91

    Andru

    12.02.11

    07:22

    кажись нашел
    если кому интересно проверьте тоже, может я что-то не замечаю
    Американский метод расчета
    ?(День(ДатаКон)=31,30,День(НачалоДня(ДатаКон)) — День(НачалоМесяца(ДатаКон)))+?(День(ДатаНач)=31,30,День(КонецМесяца(ДатаНач)) — День(НачалоДня(ДатаНач)))+30*(Год(ДатаКон)*12+(Месяц(ДатаКон)-1)-Год(ДатаНач)*12-Месяц(ДатаНач))

    Содержание:

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

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

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

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

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

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

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

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

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

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

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

    Что то наверно накосячил, помогите найти в чем косяк. Вот код: Тип поля ВрНачало — Дата, но когда запускаю вылетает с ошибкой «Ошибка при установке значения атрибута контекста (ВидСравнения): Недопустимый тип сравнения    Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения. ИнтервалВключаяГраницы; по причине: Недопустимый тип сравнения » перепробывал все типы, работает только с типом равно. в чем косяк??

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

    пробывал, вид сравнения устанваливать и до и после, и просто ставить «Больше», никак не катит (

    дело в «Если Отбор.Найти(«ВрНачала») = Неопределено Тогда» клянусь своей треуголкой: одно из двух — либо поля такого нет принципиально в данных СписокЗаданийНаДень, либо оно имеет тип какой-то не кошерный

    В отладчике открываю отбор, там есть тип поля «Врначала» тип Дата, и по умолчанию тип сравнения стоит «Равно», если ставить такой-же то все работает. Но мне нужен другой тип сравнения. (

    Попробуй перед установкой отбора Отбор[«ВрНачала»].Использование = Ложь;

    СписокЗаданийДень — это кто?

    потом лезь в СП и внимательно читай про отбор этого типа.

    Это регистр сведений, а ВрНачала — это его измерение

    Если это набор записей: Использование: Только чтение. Описание: Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений. Важно! Отбор может устанавливаться только на равенство.

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

    Тэги:

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

     

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

    {ПланОбмена.Б_ОбменССайтом.Форма.ФормаСписка.Форма(193)}: Метод объекта не обнаружен (ЗаполнитьПорядокПостроителяТоваров)
    ПланыОбмена.Б_ОбменССайтом.ЗаполнитьПорядокПостроителяТоваров(ПостроительОтчетаТоваров);

    Когда будет обновление модуля для 1С ?
    И как побороть эту ошибку — как я понял ошибка связана с тем что не хватает процедуры «ЗаполнитьПорядокПостроителяТоваров»??

     

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    Посмотрю в чем дело. Если ошибка у меня воспроизведется — в новой версии будет поправлено.

     

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    В версии 4.0.0.6 эта бага будет поправлена.

     

    а когда версия 4.0.0.6 — просто без этого  тестить трудновато

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #5

    28.04.2014 12:27:51

    Цитата
    Амангельды Шиналиев пишет:
    а когда версия 4.0.0.6 — просто без этого тестить трудновато

    Специально для вас сейчас собрал. Можете скачать по ссылке

    http://yadi.sk/d/49KQrpWHNUT6V

     

    спасибо! Будем дальше изучать .

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #7

    28.04.2014 15:29:08

    Цитата
    Амангельды Шиналиев пишет:
    спасибо! Будем дальше изучать .

    Не за что. Если что — пишите. Баги исправим, замечания или предложения рассмотрим и, возможно, добавим.

     

    вот такая ошибка выходит например, при попытке обмена заказами:
    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(6257)}: Ошибка при установке значения атрибута контекста (Ид)
       XDTOКонтрагент.Ид                 = XMLСтрока(СтрокаВыборки.ИдентификаторКонтрагента);
    по причине:
    Несоответствие типов XDTO
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ’93#******@mail.ru#********* ****** ********’ не соответствует простому типу: {urn:1C.ru:commerceml_2}ИдентификаторГлобальныйТип
    Несоответствие фасету MaxLength = ’40’

    УТ 10.3.29.1 модуль обмена 4.0.0.3 и 4.0.0.6 по ссылке выше попробовали. Такая же ошибка выходила и при выгрузке товаров у html-описания товара. видимо не нравиться MaxLength. описания все удалили, обмен товарами прошел. а заказы не ходят.

     

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    Да, есть такая проблема в XDTO… Посмотрю, что можно сделать. Придется проверять длину на данные, хотя и не хотелось бы, т.к. упадет скорость..

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #10

    28.04.2014 16:05:48

    Цитата
    Владимир Куликов пишет:
    вот такая ошибка выходит например, при попытке обмена заказами:
    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(6257)}: Ошибка при установке значения атрибута контекста (Ид)
    XDTOКонтрагент.Ид = XMLСтрока(СтрокаВыборки.ИдентификаторКонтрагента);
    по причине:
    Несоответствие типов XDTO
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ’93#******@mail.ru#********* ****** ********’ не соответствует простому типу: {urn:1C.ru:commerceml_2}ИдентификаторГлобальныйТип
    Несоответствие фасету MaxLength = ’40’

    УТ 10.3.29.1 модуль обмена 4.0.0.3 и 4.0.0.6 по ссылке выше попробовали. Такая же ошибка выходила и при выгрузке товаров у html-описания товара. видимо не нравиться MaxLength. описания все удалили, обмен товарами прошел. а заказы не ходят.

    С описанием товаров поправил, а вот с контрагентом не совсем понятно.Походу первоначально он пришел с сайта и у него длина Ид больше 40..
    Сделал, чтобы длина Ид У контрагентов была 80 символов. Больше сделать не могу..

     

    Пользователь 9984

    Эксперт

    Сообщений: 303
    Баллов: 52
    Регистрация: 11.03.2007

    #11

    28.04.2014 16:23:34

    Цитата
    Александр Денисюк пишет:
    Сделал, чтобы длина Ид У контрагентов была 80 символов

    Похоже что так. Спасибо! Может скомпилируете сборку на попробовать?

    skype: bob_kulikoff

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #12

    28.04.2014 16:37:30

    Цитата
    Владимир Куликов пишет:

    Цитата
    Александр Денисюк пишет:
    Сделал, чтобы длина Ид У контрагентов была 80 символов

    Похоже что так. Спасибо! Может скомпилируете сборку на попробовать?

    Тут

    http://yadi.sk/d/JngBHM_3NWm5N

    лежит 4.0.0.7

     

    Спасибо! Теперь обмен с заказами прошел легко и непринужденно. Александр, не подскажите, не планируется ли обмен «рекомендуемых товаров», т.е. сопутки? Новый компонент для сопутки уже есть, а можно ли будет ее штатно выгружать? Пока для себя делаем с новым обменом на произвольном справочнике.

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #14

    28.04.2014 16:53:30

    Цитата
    Владимир Куликов пишет:
    Спасибо! Теперь обмен с заказами прошел легко и непринужденно. Александр, не подскажите, не планируется ли обмен «рекомендуемых товаров», т.е. сопутки? Новый компонент для сопутки уже есть, а можно ли будет ее штатно выгружать? Пока для себя делаем с новым обменом на произвольном справочнике.

    Пока, насколько мне известно, не планируется. Сейчас надо бы модули обмена оттестировать и выпустить адаптации. А в будущем посмотрим.
    Пока придется использовать пользовательские справочники. У них также поддерживается выгрузка только изменений и проверка на версионность элементов.

     

    Александр, тестируем дальше. Создали справочник c одним реквизитом и одной ТЧ. Типы данных ссылочные на номенклатуру. В выгрузке отмечаем только «обмен пользовательскими справочниками». При выгрузке сразу ошибка:

    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(144 }: Ошибка при вызове метода контекста (Выполнить)
           ВыборкаЗначений = Запрос.Выполнить().Выбрать();
    по причине:
    {(13, 7)}: Таблица не найдена «Справочник.сиДополнительныеРеквизитыНоменклатуры.Изменения»
    <<?>>Справочник.сиДополнительныеРеквизитыНоменклатуры.Изменения КАК ПользовательскийСправочникИзменений

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #16

    29.04.2014 13:22:32

    Цитата
    Владимир Куликов пишет:
    Александр, тестируем дальше. Создали справочник c одним реквизитом и одной ТЧ. Типы данных ссылочные на номенклатуру. В выгрузке отмечаем только «обмен пользовательскими справочниками». При выгрузке сразу ошибка:

    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(144 }: Ошибка при вызове метода контекста (Выполнить)
    ВыборкаЗначений = Запрос.Выполнить().Выбрать();
    по причине:
    {(13, 7)}: Таблица не найдена «Справочник.сиДополнительныеРеквизитыНоменклатуры.Изменения»
    <<?>>Справочник.сиДополнительныеРеквизитыНоменклатуры.Изменения КАК ПользовательскийСправочникИзменений

    Тут есть нюанс. Если вы сами создаете свой справочник, то вам его нужно добавить в состав узла Б_ОбменССайтом. К сожалению 1С не позволяет сразу указать всевозможные справочники, поэтому по там стоят только типовые.

     

    Идем еще проще. Создали справочник с одним текстовым реквизитом. При записи элемента получаем сообщение:

    Не удалось зарегистрировать изменение для элемента 0000000001. Элемент не будет отправлен на сайт Битрикс в режиме изенений.

     

    Зарегистрировали в узле. Но сейчас созданный пользовательский справочник с одним текстовым реквизитом не выгружается:

    Выгрузка информации по пользовательским справочникам
    Формирование пакетов для пользовательских справочников.
    Формирование пакетов для пользовательских справочников завершено.
    Выгрузка пакетов пользовательских справочников в XML.
    Начало выгрузки пакета 1 пользовательскиих справочников
    Отправка запроса на авторизацию.
    Отправка запроса на инициализацию, для определения версии обмена данных.
    references___45e77ab2-bcc1-48bf-a25b-3823411a84a7.xml: Произошла ошибка на стороне сервера.
    Ответ сервера:
    failure
    Ошибка разбора XML. Код ошибки: 30.
    Выгрузка пакета 1 пользовательскиих справочников НЕ завершена или завершена с ошибками. НЕ Выгружено 1 элементов.
    Выгрузка пакетов пользовательских справочников в XML завершена.
    Выгрузка информации по пользовательским справочникам ЗАВЕРШЕНА

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

     

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    Может там есть нечитаемый символ? Ошибка как раз во время разбора XML на стороне сайта.

     

    Александр, а табличная часть справочника не выгружается, правильно?

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #21

    29.04.2014 15:05:29

    Цитата
    Владимир Куликов пишет:
    Александр, а табличная часть справочника не выгружается, правильно?

    Нет, не выгружается.

     

    кстати после интеграции
    при проведении документа «доверенность»
    выходит ошибка

    Ошибка при выполнении обработчика — ‘ПриЗаписи’
    по причине:
    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(362)}: Поле объекта не обнаружено (Номенклатура)

     

    Как я понял
    все идет о того что
    в подписке на события «Б_ЗарегистрироватьИзмененияПриЗаписиСправочникаДокументаДля­ОбменаССайтами»
    указан тип объекта «документССылка» — может там указать конкретные документы ?
    а то получатся мы попадаем туда всегда при проведении любого типа документа  

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #24

    30.04.2014 10:44:40

    Цитата
    Амангельды Шиналиев пишет:
    Как я понял
    все идет о того что
    в подписке на события «Б_ЗарегистрироватьИзмененияПриЗаписиСправочникаДокументаДля­ОбменаССайтами»
    указан тип объекта «документССылка» — может там указать конкретные документы ?
    а то получатся мы попадаем туда всегда при проведении любого типа документа

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

     

    Александр Денисюк

    Администратор

    Сообщений: 4915
    Баллов: 827
    Регистрация: 16.10.2013

    #25

    30.04.2014 11:25:33

    Цитата
    Амангельды Шиналиев пишет:
    кстати после интеграции
    при проведении документа «доверенность»
    выходит ошибка

    Ошибка при выполнении обработчика — ‘ПриЗаписи’
    по причине:
    {ОбщийМодуль.Б_ПроцедурыОбменаССайтом.Модуль(362)}: Поле объекта не обнаружено (Номенклатура)

    В следующей версии будет поправлено.

    Понравилась статья? Поделить с друзьями:
  • Ошибка при подготовке описаний подсистем 1с
  • Ошибка при перезагрузке при установке windows
  • Ошибка при получении доступа к микрофону вк яндекс
  • Ошибка при подготовке к установке autodesk revit 2022
  • Ошибка при открытии gpedit msc