| Персональная страница Федора Езеева | ||||||||||||||||||
|
Дальше
Назад
Содержание
Содержимое страницы перенесено на официальный сайт компонентыFAQ по 1С++.Вопросы новичков
Q.
При выполнении отчета пишет мне вот такое: "catch (_com_error& er)".
Q.
Вообще ничего не понимаю. Как начать, и если можно - по шагам.
Q.
Подсоединяю чужой класс, а мне говорит "Форма<<?>>...; Переменная не определена"
Перем Форма Экспорт; //Для отладки классов 1С++ Общие вопросы
Q.
Где скачать самую последнюю версию 1С++?
Q.
Где взять документацию к компоненте?
Q.
А где взять визуальный редактор к 1С++?
Q.
Пытаюсь установить Visual 1C++, все делаю по инструкции, а мне сообщается, что не хватает какого-то config.tlb.
Где его взять?
Q. Скачал свежую версию 1С++, а там als документация от версии 1.5.0.3 (или вообще нет).
Почему так, и где взять свежую?
Q. Установил компоненту 1С++, прописал в глобальник ЗагрузитьВнешнююКомпоненту("1cpp.dll"),
а у меня теперь 1С валится, говорит, что "память не может быть read". ОС - Windows NT/2000/XP. Под
'95/'98/ME все нормально.
A. Во время первого запуска компонента регистрируется в реестре. Этот процесс должен происходить с правами администратора локальной машины.
Q.
Я загружаю одну версию 1С++ (смотрю в свойствах файла), а загружается другая (смотрю в настройках 1С).
Кто виноват и что делать?
Q.
Я удалил ненужную мне версию компоненты и теперь при запуске 1С-Предприятия выдается следующее сообщение:
"Ошибка при создании объекта из компоненты \\Адрес_сервера\Директория_БД\1CPP.dll
(отсутствует интерфейсIInitDone)". Что делать теперь?
Q.
У меня 100 компьютеров в сети - я не могу на каждой зайти администратором.
Хочу знать, что конкретно 1С++ пишет в реестр, а дальше я как-нибудь разберусь.
Q.
А где можно посмотреть на реальные примеры использования 1С++?
Q.
Документация и примеры - это конечно, хорошо, а где можно с людьми пообщаться?
Q.
Насколько полна объектная модель 1С++?
Специализированные вопросы
Q.
Создал defcls.prm, написал там одну строку, а 1С - хоть бы хны.
Q.
Добавил пустую строчку - а все равно, ничего не произошло.
Q.
Чем-нибудь отличается void от undefine? В каких случаях кого использовать?
Q.
Я в своей конфигурации использую еще несколько внешних компонент (rainbow, vtools). И боюсь, что возникнет конфликт
между именами объектов этих ВК и 1С++. Как быть?
Q.
Что-то у меня не получается создать метод со значением по умолчанию.
class TestClass = Test.ert
{
Число TestMethod( Число Параметр_Ноль = 0 );
};
2. Если метод - процедура (не возвращает никаких значений), то нужно указывать тип значения 'void' (обязательно с маленькой буквы).
class TestClass = Test.ert
{
void TestMethod( Число Параметр_Ноль = 0 );
};
3. Не забывайте ставить точки с запятыми после строк описаний методов.
class TestClass = Test.ert
{
void TestMethod( Число Параметр_Ноль = 0 );
};
Q.
Есть класс, который является наследником от класса 1С "ТаблицаЗначений" (Назовем его "Общие.ТаблицаЗначений").
ТЗ = СоздатьОбъект("Общие.ТаблицаЗначений");
Запрос.Выгрузить(ТЗ);
Сообщить(ТипЗначенияСтр(ТЗ)); //"ТаблицаЗначений", вместо ожидаемого "Общие.ТаблицаЗначений"
ТЗ = СоздатьОбъект("Общие.ТаблицаЗначений");
ТЗ2 = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ2);
Сообщить(ТЗ2.КоличествоСтрок()); //их больше нуля
ТЗ2.Выгрузить(ТЗ);
Сообщить(ТЗ.КоличествоСтрок()); // ноль
A. Метод Выгрузить() у запроса (и аналогичный у таблицы значений), предполагает, что тип передаваемого в него параметра - ТаблицаЗначений. Тот факт, что наш класс является наследником ТЗ - ничего не значит. Это класс другого типа. Нужно писать вот так:
ТЗ = СоздатьОбъект("Общие.ТаблицаЗначений");
Запрос.Выгрузить(ТЗ.ПолучитьБазовыйКласс());
Сообщить(ТипЗначенияСтр(ТЗ)); // "Общие.ТаблицаЗначений"
Примечание Если "Общие.ТаблицаЗначений" наследует от нескольких классов, то лучше указать,
какой именно базовый класс мы хотим получить:
ТЗ = СоздатьОбъект("Общие.ТаблицаЗначений");
Запрос.Выгрузить(ТЗ.ПолучитьБазовыйКласс("ТаблицаЗначений"));
Сообщить(ТипЗначенияСтр(ТЗ));
Q.
Почему когда я меняю реализацию класса в *.ert изменения не применяются до перезапуска 1С?
Q.
Это для модулей, а как насчет описания классов?
Q.
Объясните, плиз, на пальцах, как реализовать наследование.
Есть справочник или документ определенного вида, необходимо расширить функционал, как унаследовать свойства и методы?
класс Документ_Счет = Документ_Счет.ert : Документ.Счет
{};
В Документ_Счет.ert реализуешь нужные тебе дополнительные методы, при этом для ссылки на объект документа используешь конструкцию Сам(Контекст). Например.
Функция Сам(Конт)
Возврат Конт;
КонецФункции
Функция Оплачен() Экспорт
Д=СоздатьОбъект("Документ");
Д.ВыбратьПодчиненныеДокументы(,,Сам(Контекст).ТекущийДокумент());
Пока Д.ПолучитьДокумент()=1 Цикл
Если Д.Вид()="Выписка" Тогда
Возврат 1;
КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции
И в коде клиента тогда можно написать:
Счет=СоздатьОбъект("Документ_Счет");
Счет.ВыбратьДокументы(); //Используешь унаследованный метод
Пока Счет.ПолучитьДокумент()=1 Цикл
Если Счет.Оплачен()=0 Тогда //Используешь свой метод
Сообщить("Счет "+Счет.ТекущийДокумент()+" не оплачен.");
КонецЕсли;
КонецЦикла;
Q. А если у меня класс Наследование = classes\nasled.cls:Справочник.Номенклатура, Документ.Заявка {};
Каким макаром наследуются одинаковые свойства и медоды? Например, Вид()?
A. Если не переопределить Вид() в своем классе, то вызываться будет Вид() для Справочник.Номенклатура, потому как он первый в списке. Можешь переопределить Вид() в своем классе, и возвращай что хочешь, например "Заявка_Номенклатура".
Q.
Как сделать, чтобы при приведении объекта в строку (СокрЛП(), Строка(),
СокрЛ()) - возвращалось удобочитаемое строковое представление объекта?
Перем Начало Экспорт;
Перем Окончание Экспорт;
Функция Этот(Конт)
Возврат Конт;
КонецФункции
Функция Выбрать(Подсказка) Экспорт
Если ВвестиПериод(Начало, Окончание,Подсказка)<>1 Тогда
Возврат 0;
Иначе
Возврат 1;
КонецЕсли;
КонецФункции
Функция _ПолучитьКод()
Попытка
глУстПропись(Гривня,"у");
Исключение
КонецПопытки;
Возврат ПериодСтр(Начало, Окончание);
КонецФункции
Процедура Конструктор()
Начало = ПолучитьПустоеЗначение("Дата");
Окончание = Начало;
КонецПроцедуры
Процедура ПриОткрытии()
Форма.Параметр._ПриОткрытии();
КонецПроцедуры
По адресу http://itland.ru/forum/index.php?showtopic=2074
можно почитать подробное обсуждение этого вопроса.
Дальше Назад Содержание | |||||||||||||||||
|
© 1998-2004 Fedor Ezeev. | ||||||||||||||||||