Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> НазначитьВид OLE com , подключение из 8 к 7.7          
Acid Подменю пользователя
сообщение 31.10.16, 16:44
Сообщение #1

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Камрады - встал на грабли...
Проблема в следующем:
Есть документ с реквизитом "Справочник" (неопределенного вида). Нужно программно НазначитьВид() этому реквизиту.
Конструкции которые не работают:
Вариант 1:
Док.ТМЦ = текТМЦ;
//Такая конструкция срабатывает, если на форме отсутствует команда привязки вида Форма.НеИзменятьВид(1)


Вариант 2:
База77.ExecuteBatch("Назначитьвид("+Док.ТМЦ+",""ТМЦ"")");

Вариант 3:
База77.НазначитьВид(Док.ТМЦ,"ТМЦ");

Naghual Подменю пользователя
сообщение 31.10.16, 16:47
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

НазначитьВид(ТМЦ,"ТМЦ");
НазначитьВид(ТМЦ,"Инвестиции");


В чем, собственно, трудность и зачем у вас так сложно?


Signature
Я желаю всем Счастья!

Acid Подменю пользователя
сообщение 31.10.16, 16:50
Сообщение #3

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Acid @ Сегодня, 17:44 * ,
Варианты 2 и 3 "как-бы" работают, т.е. исключения не происходит.
А на 1-ом получаю исключение (

трудность в том, что это подключение из 8-ки по com-соединению.
И эта конструкция не работает.

Naghual Подменю пользователя
сообщение 31.10.16, 16:52
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

А какого вида значение у вашего ТМЦ изначально, в конфигураторе?


Signature
Я желаю всем Счастья!

Acid Подменю пользователя
сообщение 31.10.16, 16:55
Сообщение #5

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Naghual @ Сегодня, 17:52 * ,
Справочник

Naghual Подменю пользователя
сообщение 31.10.16, 17:06
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

Для начала, вместо "ExecuteBatch" попробуйте использовать "EvalExpr".


Хотя вполне должна работать конструкция "Док.ТМЦ = текТМЦ". Конечно, при условии, что текТМЦ является внутренним объектом базы 7.7 а не строкой, объектом ОЛЕ или объектом 8.х.


Signature
Я желаю всем Счастья!

Acid Подменю пользователя
сообщение 31.10.16, 17:22
Сообщение #7

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Такое тоже не работает
База77.EvalExpr("НазначитьВид("+Док.ТМЦ+",""ТМЦ"")");


не то, чтобы совсем не работает, но на строке
Док.ТМЦ = текТМЦ;

вылетает исключение.

Naghual Подменю пользователя
сообщение 31.10.16, 17:24
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

ТМЦ - это реквизит документа или его многострочной части? Если последнее, то его необходимо позиционировать для начала (новая строка, получить строку...)
Описание исключения есть? Без этого непонятно.


Signature
Я желаю всем Счастья!

Спасибо сказали: Acid,

Acid Подменю пользователя
сообщение 31.10.16, 17:49
Сообщение #9

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Нашел источник всех бед -
1. при ОЛЕ и КОМ использовать метод НазначитьВид() не нужно.
2. После создания нового элемента справочника, нужно его найти при помощи создания нового объекта. И потом возможно будет присваивание
нТМЦ = База.CreateObject("Справочник.ТМЦ"); 
    Если нТМЦ.НайтиЭлемент(текТМЦ)=1 Тогда
        текТМЦ="";
        Док.ТМЦ = нТМЦ.ТекущийЭлемент();


Спасибо сказали: mister-x,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 10:23
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!