powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запуск формы из другого прилоджения
14 сообщений из 14, страница 1 из 1
Запуск формы из другого прилоджения
    #37954238
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите, как запустить из другой программы форму регистрации контрагента используя V77.Application?
Вообще возможно ли такое?
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37954380
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде не возможно, да и зачем.
Нарисуй свою форму внесения контрагента и через ОЛЕ уже создать новую запись не сложно будет.
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37954433
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается через оле.
Самого контрагента создать могу, а вот запихнуть его в группу не получается и присвоить тип не могу.
K.ИспользоватьРодителя.Код("00000002") ни к чему не приводит
K.ВидКонтрагента = cntr.Перечисление.ВидыКонтрагентов("Организация") выдает ошибку - Значение не попадает в ожидаемый диапазон.
Перерыл весь интернет, но решения так и не нашел.
Да и форма в 1с доделана. Разработчики не смогли сами сделать возможность заведения адреса Контрагента, используя справочник КЛАДР. Пришлось самому доделать. А если рисовать форму в своей программе, то придется еще целую кучу кода писать для КЛАДР.
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37954562
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так через ОЛЕ присваиваются значения перечислений:
Klient.ВидКонтрагента = Buh.evalexpr("Перечисление.ВидыКонтрагентов.Организация");

Родителя чтоб присвоить сначала нужно создать элемент, и спозиционироваться на группе (НайтиПоКоду, наименованию и т.п) и тогда только присвоение/установка.

Спсоб обхода справочника КЛАДР:
1) можна получить его весь по ОЛЕ, и продоставить выбор
2) сделать экспортную ф-ю в глоб.модуле базы по ОЛЕ, и ей передавать реквизит для поиска и установки уже через ОЛЕ
глСопоставить (Знач Реквизит) Экспорт
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37954875
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsa,
Наверное я что-то недопонимаю в особенностях 1с. Вот код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 Dim cntr As Object = CreateObject("V77.Application")
            Dim trd As Short = cntr.RMTrade
            Dim Res As Object = cntr.Initialize(trd, "/d c:\1CBases\ShortBase\ /nАдминистратор /p", "NO_SPLASH_SHOW")
            Dim K = cntr.CreateObject("Справочник.Контрагенты")
            Dim Rod As Object
                Dim R = cntr.CreateObject("Справочник.Контрагенты")
                If R.НайтиПоКоду("00000002", 0, 0) = 1 Then
                    Rod = R.ТекущийЭлемент()
                    MsgBox(Rod.Наименование)
                End If
                K.Новый()
                K.Наименование = TextBox1.Text
                K.Записать()
                TextBox2.Text = K.наименование
                K.Родитель = Rod.текущийЭлемент()
                K.ВидКонтрагента = cntr.evalexpr("Перечисление.ВидыКонтрагентов.Организация")
                K.Записать()


Ошибки на строчках:
K.Родитель = Rod.текущийЭлемент() - Значение не попадает в ожидаемый диапазон.
K.ВидКонтрагента = cntr.evalexpr("Перечисление.ВидыКонтрагентов.Организация") все равно выдает ошибку - Значение не попадает в ожидаемый диапазон.
Хотя точно элемент выбран. Специально вывожу меседж для проверки MsgBox(Rod.Наименование) и в текстовое окно наименование объекта после записи TextBox2.Text = K.наименование
Чего тут не так?
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37954902
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KarlusKreontsa,
Наверное я что-то недопонимаю в особенностях 1с. Вот код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 Dim cntr As Object = CreateObject("V77.Application")
            Dim trd As Short = cntr.RMTrade
            Dim Res As Object = cntr.Initialize(trd, "/d c:\1CBases\ShortBase\ /nАдминистратор /p", "NO_SPLASH_SHOW")
            Dim K = cntr.CreateObject("Справочник.Контрагенты")
            Dim Rod As Object
                Dim R = cntr.CreateObject("Справочник.Контрагенты")
                If R.НайтиПоКоду("00000002", 0, 0) = 1 Then
                    Rod = R.ТекущийЭлемент() [color=blue]<<<<[/color] лишнее
                    MsgBox(Rod.Наименование)
                End If
                K.Новый()
                K.Наименование = TextBox1.Text
                K.Записать() [color=blue]<<<<[/color] лишняя строка
                TextBox2.Text = K.наименование
                K.Родитель = R [color=blue]<<<<[/color] Здесь вроде так прямо можно писать, без текущийЭлемент(), хотя потестируй если не угадал
                K.ВидКонтрагента = cntr.evalexpr("Перечисление.ВидыКонтрагентов.Организация")
                K.Записать()


Ошибки на строчках:
K.Родитель = Rod.текущийЭлемент() - Значение не попадает в ожидаемый диапазон.
K.ВидКонтрагента = cntr.evalexpr("Перечисление.ВидыКонтрагентов.Организация") все равно выдает ошибку - Значение не попадает в ожидаемый диапазон.
Хотя точно элемент выбран. Специально вывожу меседж для проверки MsgBox(Rod.Наименование) и в текстовое окно наименование объекта после записи TextBox2.Text = K.наименование
Чего тут не так?

Внес свои поправки прямо в код :)
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955062
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по моему проще выучить 1C чем вот так издеваться над собой
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955494
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsa,
Ошибка
K.Родитель = R - Значение не попадает в ожидаемый диапазон.
Я думаю, что тут проблема в среде. Не хочет vb воспринимать комовский объект правильно.

To Last1Cmen, А зачем мне нужен 1с? Написать в нем то что мне необходимо не получится. Мне нужно всего-то добавить нормально контрагента.

To All, Подскажите, если в таблицу инсертом вносить контрагента? Ничего не уедет в базе? Вернее не так, запись о контрагенте хранится только в одной таблице?
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955508
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus Мне нужно всего-то добавить нормально контрагента.


для этого нужно всего-то правильно заполнить все значения нужных полей
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955523
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pail,
Так как их заполнить? Что не так заполняю? Почему не получается определить тип Контрагента и запихнуть его в группу?
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955579
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	Buh = CreateObject("V77.Application");
	Статус = Buh.Initialize(Buh.RMTrade,"/d"+ШляхДоБази,""); 

           Klient = Buh.CreateObject("Справочник.Контрагенты");
	
	R = Buh.CreateObject("Справочник.Контрагенты");
	R.НайтиПоКоду(9588);
	
	Klient.Новый();
	Klient.Родитель = R;
	Klient.Наименование = СокрЛП("Test-max-100");
	Klient.ПолнНаименование = СокрЛП("Test-name-max-from-config");
	Klient.ВидКонтрагента =Buh.evalexpr("Перечисление.ВидыКонтрагентов.Организация");
           Klient.Записать(); 



Вот такой код из одной 1С7.7 в другую работает, только что проверил, и контрагент новый создается в группе с кодом 9958, и с заполненным видом.
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955605
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а из visual basica создается таким кодом, но в группу не запихивается и вид не задается. все та же ошибка.
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955683
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А возможно ли сделать в 1с процедуру, которой на вход я буду подавать код контрагента, а она уже будет пихать его в группу и присваивать ему вид?
Если да, до подскажите, как создается процедура в 1с 7.7. Сам код ее понятен, но я не создавал никогда процедур в 1с. Где хоть это делается?
...
Рейтинг: 0 / 0
Запуск формы из другого прилоджения
    #37955735
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,
У .НайтиПоКоду() аргументов несколько, хотя аргументы-по-умолчанию в синтаксисе 1С могут пропускаться.
Для вызовов по OLE надо задавать значения всех аргументов вызываемого метода.
Да и правило хорошего тона - после "найти" проверять, действительно что-то найдено, или нет:
Код: vbnet
1.
2.
R.НайтиПоКоду(9588);
если R.Выбран()=1 тогда // это значит, что значение R теперь - действительно ссылка на найденное



А процедуру свою для вызова OLE создавать надо в Глобальном Модуле, и со словом Экспорт после заголовка
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Запуск формы из другого прилоджения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]