• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Нужен скрипт на Vbscript, выставляющий счет в 1С

  • Автор темы IvanAbramov
  • Дата начала
I

IvanAbramov

:(Добрый день.

Нет, ли у кого подобного скриптка или примерных наработок?
Возможно ли его написать в универсальном стиле для 1С 7.7 и для 8?
Логика такова:
1. поиск контрагента по наименованию или ИНН. Если не найден, должен создаваться.
2. собственно выставление счета (с заполнением всех обязательных полей и полей в нужных связанных таблицах)

Все в самом минимальном варианте.
Может кто-нибудь помочь?

Заранее спасибо.
 
B

b00tch

ну, для 8.1 примерно так можно:
Код:
set v81 = CreateObject("V81.ComConnector")
set conn = v81.Connect("Srvr=srvName; Ref=baseName; Usr=sss; Pwd=sss")
conn.NewOrder()

в модуле внешнего соединения прописывается процедура
Код:
Процедура NewOrder() Экспорт
КонецПроцедуры
в которой и создается счет.

ЗЫ... если я правильно понял идею...

ЗЫЗЫ... и, кстати, вопрос в догонку:
предположим, что у меня NewOrder() - это функция, возвращающая некоторое значение... как сделать, чтобы скрипт вернул это значение проге, вызвавшей его?
 
I

IvanAbramov

Спасибо, но хотелось бы в каком-то более полном варианте:
- если в 1С нет такой компании, чтобы она добавлялась (только обязательные поля Наименование, ИНН)
- если в 1С нет такого продукта (содержащегося в счете), чтобы он тоже добавлялся
- и чтобы добавлялось все остальное самое необходимое для выставления счета (в самом минимальном варианте)

В данный скрипт у меня будет передаваться все необходимая информация (компания, продукты...)

А возврадаемое значение можно назначить в переменную
vSome = conn.NewOrder()

которую потом можно и в БД приложения записать:
Dim Con 'объект Connection
Set Con = CreateObject("ADODB.Connection") 'создание объекта Connection
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDbPath & ";Persist Security Info=False" 'открываем соединение с базой данных
Dim sSql 'SQL инструкция
sSql = "UPDATE Table SET Field='...'" 'формируем SQL инструкцию
Con.Execute sSql 'выполняем SQL инструкцию, которая изменяет данные в таблице

А в универсальном варианте и к 1С 7.7 ни как нельзя написать?
 
B

b00tch

Спасибо, но хотелось бы в каком-то более полном варианте:
- если в 1С нет такой компании, чтобы она добавлялась (только обязательные поля Наименование, ИНН)
- если в 1С нет такого продукта (содержащегося в счете), чтобы он тоже добавлялся
- и чтобы добавлялось все остальное самое необходимое для выставления счета (в самом минимальном варианте)

В данный скрипт у меня будет передаваться все необходимая информация (компания, продукты...)
это все можно прописать в процедуре в самой 1с... к сожалению, готового кода под рукой нет... надо писАть...

А возврадаемое значение можно назначить в переменную
vSome = conn.NewOrder()

которую потом можно и в БД приложения записать:
а вот как эту vSome вернуть из скрипта?... чтобы другая прога могла вызвать его как функцию и получить результат?... в БД я и из 1с напрямую могу апдейт сделать...

А в универсальном варианте и к 1С 7.7 ни как нельзя написать?
нет. разные методы и объекты... мало того, для разных конфигураций 8-ки код может отличаться...
 
I

IvanAbramov

> а вот как эту vSome вернуть из скрипта?...

Повторяю, записать в БД приложения (которое отрабатывает VBS скрипт). Или записать все нужную инфу в файл (ну, или в буфер обмена).
А другое приложение, будет читать из БД эту инфу.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!