Задать вопрос
@Maks_B

Котнрагент и Номенклатура, как заполнить полня из python по com в 1с 8.3 предприятие?

Создаю накладную в 1с 8.3 предприятие из Python. Накладная создаеться и записываеться, единнсвенное не заполняються полня Котнрагент, Номенклатура,ЕденицаИзмерения, Склад итд... Тоесть все текстовые формы. Числовые полня цена колличесвто итд.. заполняються. Кодировка текста "cp1251" не решила проблему.

from datetime import datetime
import win32com.client
import pythoncom

pythoncom.CoInitialize()
com = win32com.client.Dispatch("V83.COMConnector.1")

# Подключение к базе данных 1С черз com
connection_string = "File=C:/Users/Pc/Documents/InfoBase6;Ref=UTWork;Usr=Максим;Pwd=0000;"
клиент = com.Connect(connection_string)
print('ok')

# Создание накладной Реализация Товаров Услуг
db = клиент.Документы.РеализацияТоваровУслуг.CreateDocument()

db.Дата = datetime.today()
db.Контрагент = "Иванов Е"
db.Организация = 'Моя фирма'

стр = db.Товары.Add()

стр.Номенклатура = "Товар"
стр.Количество = '100'
стр.Цена = "100"
стр.ЕдиницаИзмерения = "кг"


db.Write() # Записать документ
  • Вопрос задан
  • 222 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Mi11er
@Mi11er
A human...
Ну для начала, это Контрагент и это Номенклатура не могут быть строковыми ( если вы их такими не сделали ), это ссылки.
Для конца, COM , серьезно ? в 2023 ? REST для этого есть
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Dementor
программист, архитектор, аналитик
Согласен с коллегой, но предложил бы oData, который в программах 1С есть "из коробки" и не нужно разрабатывать дополнительный веб-доступ, если нет специалистов и/или возможности дорабатывать конкретную базу 1С.

Базовые типы в 1С - числа, строки, даты, булево и ссылки! Ссылки - это указатели на записи в другие таблицы. Контрагентов с именем "Иванов Е" в базе может быть десять, или может быть сто, но ссылка всегда уникальна. Та же история с товарами и организациями.

Если брать пример с вопроса, то должно быть что-то типа такого:
db.Контрагент = клиент.Справочники.Контрагенты.НайтиПоНаименованию("Иванов Е");
Ответ написан
Комментировать
@VitalyChaikin
Предлагаю следующий вариант: в 1С создайте процедуру (можно в общем модуле в расширении)
из Питона вызывайте с параметрами типа:

клиент._ОбщийМодульСерверный_.НовыйДок("Иванов Е", 'Моя фирма', "Товар", "кг," 100,100);

Код процедуры НовыйДок( ...) Экспорт - напишите и выполните отладку в 1С,
преобразовывайте данные к нужным типам, записывайте в нужные реквизиты документа;
Внимание: обязательно проконсультируйтесь можно ли СОЗДАВАТЬ новых контрагентов/Товары (лучше не создавайте) , т.к. при ручном заведении для этих объектов могут устанавливаться критичные дополнительные данные;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы