новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Wesley
Приватное сообщение

БП3.0 - дописать обработку для загрузки документов из сторонней системы

5675 |  4
5 июля 2024 в 18:24:36 (1 день 17 часов назад)
928510
Текст задания
Конфигурация: БП3.0

Имеется сторонняя база данных.
Имеется обработка для 1С, в которой будет написан код получения объектов из этой базы.
Задача: дописать обработку, чтобы она создавала в 1С документы по данным, которые обработка уже умеет получать.

Во вложении структуры справочников и документов, которые есть в этой базе. В структурах таблиц прокомментировал те атрибуты, которые нам понадобятся в 1С.
Видимо каких-то атрибутов будет не хватать - тогда решим как их заполнять. Может в эту базу стороннюю добавят, или по умолчанию какие-то значения или после загрузки вручную в 1С проставлять.
(это надо обсудить, когда ,будет понятно чего не хватает...

Документооборот такой:
Накладные на покупку и продажу автомобилей
Накладные на покупку и продажу запчастей
Заказ наряды (товары + работы)

Ниже текст обработки, который можно взять за основу для переноса данных.
Обработка подключается к сторонней базе, считывает информацию по контрагентам и заносит первые 100 записей в 1С.
-----------------------------------------------------------------------------
Procedure КнопкаВыполнитьНажатие(Button)
Connection = new ComObject("ADODB.Connection");


ConnStr = "DSN=Auto;PROTOCOL=2;SERVER=server1;DATABASE=auto;UID=repl2;PWD=mypassword;CHARSET=win1251;VERSION=6;DIALECT=3;OPTIONS=256;";

//Message(ConnStr);
Connection.ConnectionString = (ConnStr);

//Далее открываем соединение
try
Connection.Open();
Command = new ComObject("ADODB.Command");
// Rs = new ComObject("ADODB.RecordSet");
Message("БД подключена!");
// вот здесь задается текст запроса к базе.

QueryText ="
| select k.idkl,
| k.name,
| iif(coalesce(k.ispst,0) = 0, 0, 1) as ispst,
| iif(k.typkl = 1,0, iif( k.typkl is null or k.typkl = 1,2,1)) as typekl,
| k.okpo,
| k.inn,
| k.rs,
| k.idkl||'`'||coalesce(k.note,'')||' '||coalesce(k.black_list,'') as note,
| k.bithday,
| iif(k.sex is null, 'НеУказан', iif(k.sex = 1, 1, 2)) as sex,
| iif(k.persdata_ok is null, 0, iif(k.persdata_ok = 1, 1, 2)) persdata_ok,
| k.fname,
| k.sname,
| k.pname
|from kl k
|where coalesce(k.isown,0) <> 1";

Rs = Connection.Execute(QueryText);
СпрКонтрагенты = Справочники.Контрагенты;
НачатьТранзакцию();

// к значениям полей выборки из базы можно обращаться по имени. Например Rs.Fields("NAME").value - будет соответствовать k.name

Для Ном = 1 По 100 Цикл
Нов = СпрКонтрагенты.СоздатьЭлемент();
Нов.НаименованиеПолное = Rs.Fields("NAME").value;
Нов.Наименование = Rs.Fields("NAME").value;
Нов.ВидКонтрагента = Перечисления.ВидыКонтрагентов.Получить(Rs.Fields("IsPst").value);
Нов.ФормаСобственности = Перечисления.ФормыСобственности.Получить(Rs.Fields("TYPEKL").value);
if (Rs.Fields("TYPEKL").value <> 2) then
Нов.КодПоОКПО = Rs.Fields("OKPO").value;
Нов.ИНН = Rs.Fields("INN").value;
Нов.ОсновнойБанковскийСчет = Rs.Fields("RS").value;
else
Нов.ДатаРождения = Rs.Fields("BITHDAY").value;
Нов.Пол = Перечисления.ПолФизическихЛиц.Получить(Rs.Fields("SEX").value);
Нов.СогласиеНаОбработкуПерсональныхДанных = Перечисления.ВариантыОтветов.Получить(Rs.Fields("PERSDATA_OK").value);
Нов.Фамилия = Rs.Fields("FNAME").value;
Нов.Имя = Rs.Fields("SNAME").value;
Нов.Отчество = Rs.Fields("PNAME").value;
endif;
Нов.Комментарий = Rs.Fields("NOTE").value;
Нов.Записать();
КонецЦикла;

ЗафиксироватьТранзакцию();
except
Message("Не могу подключиться к базе!!!");
endtry;

---------------------------------------------------
Все запросы для выборки данных будут написаны. Вам нужно будет только написать создание нужных элементов справочников и документов в 1С.
0
Отклики (7)