Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Сегодня многие компании стали поглядывать в сторону использования операционных систем отличной от Майкрософта.
Почему же так? Ведь старый добрый Виндоуз давно изучен и чего еще нам искать.
Ответ прост — свободное, бесплатное распространение и повышенная популярность дистрибутива Ubuntu в связке с Postgre SQL.
Эта сборка ядра на базе Linux одной из первых получила поддержку со стороны «Фирмы 1С». Линекс системы менее требовательны к железу, меньше подвержены взлому и вторжениям вирусных программ. Графические оболочки пользовательских систем имеют сейчас больше разнообразия и выглядят очень достойно. Установка дистрибутива Ubuntu проходит гораздо быстрее проще чем Windows. В этой публикации мы рассмотрим насколько сложно провести обновление серверной части дистрибутива 1С:Предприятие с версии 8.3.14.1565 на релиз 8.3.14.1694.
Для легального доступа к дистрибутивам и обновлениям платформы и конфигураций 1С у вас должен быть действующий договор ИТС.
Мы можем помочь проверить его наличие и продлить. Ознакомиться с вариантами и ценами вы можете на нашем сайте в специальном разделе ИТС.
Если все условия соблюдены входим на страничку с обновлениями https://releases.1c.ru/total
Будет предложено скачать файл архива нужного нам дистрибутива: deb64_8_3_14_1694.tar.gz. Переносим его не сервер в отдельную папку пользователя, например «~/1cdistr» и распаковываем содержимое.
Рекомендую сделать резервные копии баз данных 1С до начала проведения всех установок, предварительно завершив сеансы всех пользователей. Останавливать работу самого сервера 1С для обновления не обязательно. Служба установки сама сделает за вас всё необходимое.
Далее запускаем терминал с правами суперпользователя, переходим в папку с дистрибами и одной командой устанавливаем сразу все пакеты 1С:Предприятие Сервер x64 Linux Debian / Ubuntu поверх уже установленных:
sudo dpkg -i *.deb
Проверяем и восстанавливаем зависимость пакетов:
apt-get install -f -y
Делаем рестарт сервера 1С Предриятие 8.3 и проверяем его статус:
service srv1cv83 restart
service srv1cv83 status
Если получаем состояние как на картинке выше «active«, то всё получилось по плану. Если получили что-то другое, то можно повторить всю процедура сначала, либо вы можете всегда обратиться к нам за помощью.
После установки сервера рекомендуем обновить все версии клиентов, хотя это и не всегда является обязательным, так в моём случае клиентские машины продолжали работать с новой версией сервера без всяких матюков.
П.С. После обновления платформы 1С и проверки баз данных одна из них выдала вот такое неожиданное сообщение:
{Справочник ВерсииРзсширений МодупьМенеджера(113)} Ошибка при получении значения атрибута контекста (ВерсияРасширений) ВерсияРасширений = ПараметрыСеанса ВерсияРасширений. по причине: {Справочник ВерсииРэсширений МодупьМенеджера(26)}: Ошибка при установке значения атрибута контекста (ВерсияРасширений) ПараметрыСеанса ВерсияРасширений = ВерсияРасширений(). по причине: Несоответствие типов
Хотя при этом никаких расширений в данной базе ЗУП не установлено, решается это чисткой кеша на рабочем месте пользователя. Как почистить кеш 1С вы можете прочитать в нашей отдельной публикации.
Для обновления и установки 1С Предприятие версии 8.3.18 читайте отдельную публикацию.
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
«Всем, здравствуйте!!! После обновления конфы с 1.6.25.6 до 1.6.25.9 с одного компьютера не получается открыть бухгалтерию, при этом появляется ошибка:<br><br>{ОбщийМодуль.ПолныеПрава(16)}: Ошибка при установке значения атрибута контекста (ТекущийПользователь): Несоответствие типов<br>ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь; по причине:<br>Несоответствие типов<br><br>Данная ошибка появляется при попытке войти под любым пользователем. Причем с любого другого компьютера и под любым пользователем данная база ОТКРЫВАЕТСЯ без проблем.<br><br>Я пробовал переустанавливать платформу, пробовал заново накатывать обновления, но ничего не помогает. База находится в корне сетевого диска. После повторной переустановки обновлений, базу также сохранил и в папке BACKUP, и в неё войти удалось. Т.е. на диске 2 одинаковые базы, одна в корне, другая в папке BACKUP, с проблемного компьютера удаётся войти только во вторую.<br><br>Платформа 8.1.15.14<br><br>Очень нужна Ваша помощь!!! Заранее всем огромное спасибо! «
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
Удалите базу из списка и добавьте снова или почистите кэш …:Documents and Settings…Local SettingsApplication Data1C1Cv81
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
Показывать по
10
20
40
сообщений
Ошибка при установке значения атрибута контекста : Реквизит недоступен для |
Я |
28.05.10 — 15:20
В спр.Контрагенты добавлен реквизит «Ключ» — строка, 25символов. Надо загрузить контрагентов из Эксель. В Эксель они попали из другой программы, которая является наиболее приоритетной, чем та, в которую загружать будем. Поэтому при загрузке, надо предусмотреть несколько условий:
анализируем Ключ: Ключ не совпал
анализируем ИНН: ИНН совпал
анализируем КПП: КПП совпал
В таком случае, надо заполнить Ключ и все остальные заполненные поля данными из файла (Кроме ИНН и КПП, т.к. они совпали).
Выходит ошибка:
Ошибка при установке значения атрибута контекста (ЮрФизЛицо): Реквизит недоступен для группы
ОбъектКА.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
по причине:
Реквизит недоступен для группы
Вот мой код:
Ексель = новый COMОбъект(«Excel.Application»);
Для ТекНомер = 1 По КоличествоСтраниц Цикл
для н= 1 по ВсегоКоличестовСтрок -1 цикл
Ключ = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки).Value;
Ключ = СтрЗаменить(Ключ, Символы.НПП, «»); //убрала пробел как разделитель
КодКА = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +1).Value;
КодКА = СтрЗаменить(КодКА, Символы.НПП, «»);
ИНН = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +2).Value;
ИНН = СтрЗаменить(ИНН, Символы.НПП, «»);
КПП = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +3).Value;
КПП = СтрЗаменить(КПП, Символы.НПП, «»);
ЮРФЛ = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +4).Value;
Название = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +5).Value;
// …….
// Ищем контрагента в справочнике по реквизиту
КА = Справочники.Контрагенты.НайтиПоРеквизиту(«Ключ»,Ключ);
Если КА.Пустая() Тогда //не нашли с таким ключом
Если не ИНН = «» Тогда //ИНН не пустое в файле
КА = Справочники.Контрагенты;
СсылкаКА = КА.НайтиПоРеквизиту(«ИНН»,ИНН);
Если НЕ СсылкаКА.Пустая() Тогда //нашли такой ИНН
Если не КПП = «» Тогда //КПП не пустое в файле
СсылкаКА = КА.НайтиПоРеквизиту(«КПП»,КПП);
Если Не СсылкаКА.Пустая() Тогда //нашли такое КПП
ОбъектКА = СсылкаКА.ПолучитьОбъект();
// вставила это условие и все равно ошибка вылетает
Если ОбъектКА.ЭтоГруппа Тогда //если элемент это группа
Сообщить(ОбъектКА + » — является группой!!! Пропускаем его…»);
Продолжить;
Иначе
ОбъектКА.Ключ = Ключ;
//ИНН не берем, т.к. он совпал
//КПП не берем, т.к. он совпал
//Код не меняем, т.к. в базе уже введен код
Если не ЮРФЛ = «» Тогда //если значение «ЮРФЛ» в файле заполнено
Если СокрЛП(ЮРФЛ) = «Юридическое лицо» Тогда
ОбъектКА.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
ИначеЕсли СокрЛП(ЮРФЛ) = «Физическое лицо» Тогда
ОбъектКА.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
КонецЕсли;
Иначе
Сообщить («ЮЛ/ФЛ для контрагента » + Название + » в файле не заполнен!»);
КонецЕсли;
Если не Название = «» Тогда
ОбъектКА.Наименование = Название;
КонецЕсли;
// …
ОбъектКА.Записать();
КонецЕсли; //если элемент это группа
Иначе // не нашли такое КПП
КонецЕсли; //нашли такое КПП
КонецЕсли; //КПП не пустое в файле
КонецЕсли; //нашли такой ИНН
КонецЕсли; //ИНН не пустое в файле
КонецЕсли; //не нашли с таким ключом
КонецЦикла;
КонецЦикла;
1 — 28.05.10 — 15:24
включаем отладку — ставим галку остановка по ошибке — и смотрим результаты своих ошибок…
2 — 28.05.10 — 15:27
«Реквизит недоступен для группы » — не надо группе устанавливать этот реквизит
смотри признаки реквизитов — если только для элемента — не устанавливай для группы
3 — 28.05.10 — 15:30
(2) Так я и поставила условие в (0):
Если ОбъектКА.ЭтоГруппа Тогда //если элемент это группа
Сообщить(ОбъектКА + » — является группой!!! Пропускаем его…»);
Продолжить;
Иначе
4 — 28.05.10 — 15:31
мне одному кажется, что поиск по ИНН и поиск по КПП между собой никак не связаны??
5 — 28.05.10 — 15:32
(4) связаны
6 — 28.05.10 — 15:32
а кпп всегда уникальны?
7 — 28.05.10 — 15:33
(5) как? меня это тоже напрягло
8 — 28.05.10 — 15:34
пипец — если нашли по инн — потом если есть кпп ищем по кпп —
кпп — это не уникальный реквизит — т.е. ищем всегда один и тот эе элемент по кпп
9 — 28.05.10 — 15:35
КА = Справочники.Контрагенты;
СсылкаКА = КА.НайтиПоРеквизиту(«ИНН»,ИНН);
Если НЕ СсылкаКА.Пустая() Тогда //нашли такой ИНН
вот здесь будет только одна ссылка, если таковой имеется
затем ищем по кпп и находим другого контрагента
10 — 28.05.10 — 15:39
(9) спасибо, а как мне тогда в связке искать эти два значения — сначала ИНН, затем если нашли, то проверять у него КПП???
11 — 28.05.10 — 15:40
(10) запросом ищи
12 — 28.05.10 — 15:43
В (0) вопрос снимается, нашла где была ошибка.
Но вопрос про связь ИНН и КПП — остается открытым: Как сначала у этого контрагента проанализировать сначала ИНН, а затем у него же КПП?
13 — 28.05.10 — 15:43
(10) пробежалась по файлу, собрала инн-кпп в кучу, и затем параметром в (11)
14 — 28.05.10 — 15:44
(13) Легко вам сказать! Как это сделать???
15 — 28.05.10 — 15:47
инн-кпп в таблицу значений
таблицу значений во врем таблицу
потом запрос
типа
выбрать ИНН, КПП
поместить ВТ_Данные
Из &ТЗ;
выбрать Контрагенты.ссылка, ВТ_Данные.ИНН, ВТ_Данные.КПП
из ВТ_Данные
левое соединение справочник.контрагенты Как Контрагенты
по ВТ_Данные.ИНН = Контрагенты.ИНН И ВТ_Данные.КПП = Контрагенты.КПП
16 — 28.05.10 — 15:47
+15 там где нулл в ссылка — контрагент не найден
17 — 28.05.10 — 15:48
СсылкаКА = КА.НайтиПоРеквизиту(«ИНН»,ИНН);
Если НЕ СсылкаКА.Пустая() Тогда //нашли такой ИНН
Если не КПП = «» Тогда //КПП не пустое в файле
//////////////////////////
Если СсылкаКА.КПП=КПП Тогда
///////////////////////////
вместо вот этого:
СсылкаКА = КА.НайтиПоРеквизиту(«КПП»,КПП);
Если Не СсылкаКА.Пустая() Тогда //нашли такое КПП
18 — 28.05.10 — 15:52
(17) так ты не найдешь тех, у кого один ИНН, но разные КПП
19 — 28.05.10 — 15:56
(17) Мне не надо, это к автору пожалуйста. Я только догадываться могу, что у нее там в базе происходит. Так, чуть-чуть ее код подрихтовала, не более того
20 — 28.05.10 — 15:56
19 к (18)
21 — 28.05.10 — 16:03
(17),(18) cпасибо!
Но мне бы код полегче, без таблиц значений и временных таблиц, например, как в (17). Неужели, задать простое условие: проанализировать у контрагента ИНН, а затем у него же КПП — надо такую сложную конструкцию делать???
22 — 28.05.10 — 16:06
(21)
ВЫБРАТЬ
Ссылка
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ИНН = &ИНН
И Контрагенты.КПП = &КПП
23 — 28.05.10 — 16:11
(21)Ну не так там и слоно, хотя я бы запросом без соединений и попробовала, что-то вроде
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Представление
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН
| И Контрагенты.КПП = &КПП»;
Запрос.УстановитьПараметр(«ИНН», ИНН);
Запрос.УстановитьПараметр(«КПП», КПП);
Результат = Запрос.Выполнить();
ВыборкаДетали = Результат.Выбрать();
ЕстьКонтрагент=0;
Пока ВыборкаДетали.Следующий() Цикл
ЕстьКонтрагент=1;
СсылкаКА=ВыборкаДетали.ссылка;
ОбъектКА=СсылкаКА.ПолучитьОбъект();
//пиши тут что надо
КонецЦикла;
Если ЕстьКонтрагент=0 Тогда
//НЕТ с таким ИНН и КПП
КонецЕсли;
24 — 28.05.10 — 16:19
(22), (23) — спасибо, а как мне связать ваш запрос с данными из файла (Ключ, ИНН и КПП)?
25 — 28.05.10 — 16:20
Для ТекНомер = 1 По КоличествоСтраниц Цикл
для н= 1 по ВсегоКоличестовСтрок -1 цикл
Ключ = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки).Value;
Ключ = СтрЗаменить(Ключ, Символы.НПП, «»); //убрала пробел как разделитель
КодКА = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +1).Value;
КодКА = СтрЗаменить(КодКА, Символы.НПП, «»);
ИНН = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +2).Value;
ИНН = СтрЗаменить(ИНН, Символы.НПП, «»);
КПП = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +3).Value;
КПП = СтрЗаменить(КПП, Символы.НПП, «»);
ЮРФЛ = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +4).Value;
Название = Ексель.Sheets(ТекНомер).Cells(Строки,Колонки +5).Value;
// …….
Запрос=Новый Запрос;
и вот сюда.
26 — 28.05.10 — 16:24
(25) Большое СПАСИБО!!!! Буду пробовать!!!
)))))))
27 — 28.05.10 — 16:34
Подскажите еще, пожалуйста, два момента:
1) Нужен вначале анализ на реквизит Ключ. Если такого ключа нет в базе, то идет запрос как в (23) и тогда этот Ключ тоже надо вбить в базу.
2) В запросе (23) я найду контрагентов, которых:
или нет с таким как в файле ИНН и КПП
или есть с таким как в файле ИНН и КПП.
Т.е. это случаи или полного совпадения или полного несовпадения. А как мне тогда найти тех, у кого ИНН совпадает, а КПП из базы или не совпадает или вообще не заполнено (в этом случае, приоритет у КПП из файла, его надо вбить).
28 — 28.05.10 — 16:38
+(27) На мой первый вопрос из (27):
Я так полагаю, что должно быть что-то вроде:
КА = Справочники.Контрагенты.НайтиПоРеквизиту(«КодSAP»,КодСап);
Если КА.Пустая() Тогда //не нашли с таким ключом
Запрос=Новый Запрос;
…
СсылкаКА=ВыборкаДетали.ссылка;
ОбъектКА=СсылкаКА.ПолучитьОбъект();
…
Иначе //нашли с таким ключом
КонецЕсли;
Но как тогда дальше связать Ключ, ИНН и КПП? Не знаю, понятно ли я изложила свою мысль…
29 — 28.05.10 — 16:40
запрос в цикле — уже не оригинально
смотрим (15)
30 — 28.05.10 — 16:46
(29) по сравнению с тем, что было до этого, запрос в цикле — большой шаг вперед.
31 — 28.05.10 — 16:47
Запрос один и тот же почти: для Ключа
«ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Представление
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ключ = &Ключ»;
Запрос.УстановитьПараметр(«Ключ», Ключ);
нашла есть ли кто с таким ключом. Если нету ищем по какой-то логике. Если есть что делаем? Как вариант проверяем, совпадает ли у найденного ИНН и КПП. Если не совпадают что делаем? Перезаписываем, спрашиваем?
По вопросу ИНН и КПП. Не нашли с ИНН и КПП какими нужно. Что делаем? Ищем сначала по ИНН (запрос по аналогии сделаете, надеюсь). не нашли никого, по КПП искать бессмысленно дальше (все кто в одной налоговой имеют один и тот же КПП за редким исключением). Нашли нескольких с одним ИНН. Перебираем. У контрагента КПП не пустое и не совпадает с нашим. Что делаем? Варианты — проверяем наименование или еще что, спрашиваем у пользователя, идем дальше. У контрагента КПП пустое. Что делаем? Варианты — заполняем своим кпп, спрашиваем у пользователя, идем дальше. Короче, вы на бумажке алгоритм составьте для начала и решите что делать, а инструмент вот он.
(29) Никто не претендует на оригинальность. Пусть хоть как-то с мертвой точки сдвинется, к тому же все равно, как правило, вмешательство пользователей потребуетя в принятие решения. А ваша временная таблица убьет автора К тому же Ваш запрос из (15) не решает ее задачу, а для единичного прогона не сильно оптимален.
32 — 28.05.10 — 16:51
(31) Шапокляк — огромное Вам СПАСИБО!!! Что бы я делала без Вас!?
:*)
Шапокляк
33 — 28.05.10 — 16:51
(32) Успехов!
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
1 |
||||
02.12.2011, 11:18. Показов 9193. Ответов 11 Метки нет (Все метки)
Добрый день! ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML Код процедуры:
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 |
СохранитьНажатие(Элемент) это событие формы В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт»
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 минуты Так работает, но если я поставлю Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.
0 |
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
02.12.2011, 12:22 |
6 |
чет вы мудрено делаете.
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 |
|||
Рабочий код:
0 |
-
добрый день.
Программно создаю документ.
ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДата();Выдает ошибку: Ошибка при установке значения атрибута контекста (Дата) по причине «Документ не выбран». Что это значит ?
— Объединение сообщений, 16 июл 2014 —
конфигурация УТ для Украины 2.3.18.1
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Где создаете? На сервере, на клиенте ?
-
обычное приложение, на сервер выходит
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Реквизит точно Дата? отладчиком пользоваться можете?
-
да, реквизит дата, с типом дата, это стандартынй реквизит документа. Если вычислить выражение ДокументОбъект.Дата то показывает значение 01010001000000 тип дата
— Объединение сообщений, 16 июл 2014 —
ТекущаяДата() 16.07.2014 11:50:11 Дата
ДокументОбъект.Дата 01.01.0001 0:00:00 Дата
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
У меня все создается нормально…
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Точно на сервере создаете? Отладчиком пройдитесь
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
1) это весь код?
2) Переменную ДокументОбъект переименуйте во что нибудь другое. -
я пытался создать документ рту с модуля формы «чек ккм» , перенес все в общий модуль, и все ок ) спасибо )