Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос по ОЛЕ из УТП в бух          
Trintintin Подменю пользователя
сообщение 25.08.17, 11:48
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 45
Спасибо сказали: 29 раз
Рейтинг: 0

Задача - связать остатки в 2х базах. Утп и бух.
1С:Предприятие 8.3 (8.3.9.2033), утп (1.2.32.1)
бух той же версии, последняя.

Связь по артикулу!

Не взлетает такая хрень:
В8 = Новый COMОбъект("V83.Application"); 

    Попытка
        Открытие = В8.Connect("File=""" + СокрЛП(Путь));
        Сообщить("Все чьотко!");
    Исключение
        Предупреждение("База данных не открыта!!!");
        Возврат;
    КонецПопытки;
    
    ЗапрВсеАртикулы = Новый Запрос;
    ЗапрВсеАртикулы.Текст = "ВЫБРАТЬ
                            |    Номенклатура.Артикул
                            |ИЗ
                            |    Справочник.Номенклатура КАК Номенклатура
                            |ГДЕ
                            |    Номенклатура.Артикул <> """"";
    МассАртикулыУпр = ЗапрВсеАртикулы.Выполнить().Выгрузить().ВыгрузитьКолонку("Артикул");
    
    СписВсехАртикулов = Новый СписокЗначений;
    СписВсехАртикулов.ЗагрузитьЗначения(МассАртикулыУпр);
    
    СписЗначВ8 = В8.NewObject("СписокЗначений");    
    Для Каждого ЗапСписЗн из СписВсехАртикулов Цикл
        СписЗначВ8.Добавить(ЗапСписЗн);
    КонецЦикла;    
        
    ЗапрВ8 = В8.NewObject("Запрос");
    ЗапрВ8.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстатки.КоличествоОстаток,
                   |    ХозрасчетныйОстатки.Субконто1.Артикул КАК Артикул
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &Счет, , Субконто1.Артикул В (&Артикулы)) КАК ХозрасчетныйОстатки";
    Счет281В8 = В8.ПланыСчетов.Хозрасчетный.НайтиПоКоду("281");              
    ЗапрВ8.УстановитьПараметр("Счет",Счет281В8);
    ЗапрВ8.УстановитьПараметр("Артикулы",СписЗначВ8);      
    
    РезПоБух = ЗапрВ8.Выполнить().Выгрузить();
    Если РезПоБух.Количество() > 0 Тогда
        Сообщить("Есть!!!");
    КонецЕсли;

В отладчике объект СписЗначВ8 имеет такое же количество элементов как и в УТП.
Но ругается:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(49)}: Ошибка при вызове метода контекста (Выполнить)
РезПоБух = ЗапрВ8.Выполнить().Выгрузить();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.9.2033): {(5, 81)}: Неверные параметры
РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &Счет, , Субконто1.Артикул В (<<?>>&Артикулы)) КАК ХозрасчетныйОстатки

Спасибо!



Спасибо сказали: assa62,

Bernet Подменю пользователя
сообщение 25.08.17, 13:30
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Trintintin @ Сегодня, 12:48 * ,
попробуйте вместо СписВсехАртикулов передать в запрос в параметр "&Артикулы" ваш массив "МассАртикулыУпр"


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Trintintin,

Trintintin Подменю пользователя
сообщение 25.08.17, 14:25
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 45
Спасибо сказали: 29 раз
Рейтинг: 0

Bernet @ Сегодня, 14:30 * ,
Исчо раз проверил все 3 варианта - массив, список и список8 - ниц не працйе!

Bernet Подменю пользователя
сообщение 25.08.17, 14:39
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Trintintin @ Сегодня, 15:25 * ,
А если так? тоже не проканает? По идее раз это внешнее соединение, то при передаче параметра в запрос там должен быть либо простой тип (не ссылочный), либо если ссылочный, то полученный уже в той базе куда подключаемся. Мне кажется что тут проблема том что вы в список пытаетесь запихнуть значение элемента списка, сформированное в текущей базе. Может если попробовать в список значений базы подключения запихнуть массив с кодами то все получится?
В8 = Новый COMОбъект("V83.Application"); 

    Попытка
        Открытие = В8.Connect("File=""" + СокрЛП(Путь));
        Сообщить("Все чьотко!");
    Исключение
        Предупреждение("База данных не открыта!!!");
        Возврат;
    КонецПопытки;
    
    ЗапрВсеАртикулы = Новый Запрос;
    ЗапрВсеАртикулы.Текст = "ВЫБРАТЬ
                            |    Номенклатура.Артикул
                            |ИЗ
                            |    Справочник.Номенклатура КАК Номенклатура
                            |ГДЕ
                            |    Номенклатура.Артикул <> """"";
    МассАртикулыУпр = ЗапрВсеАртикулы.Выполнить().Выгрузить().ВыгрузитьКолонку("Артикул");
    
   // СписВсехАртикулов = Новый СписокЗначений;
   //  СписВсехАртикулов.ЗагрузитьЗначения(МассАртикулыУпр);
    
    СписЗначВ8 = В8.NewObject("СписокЗначений");    
    Для Каждого Элемент из МассАртикулыУпр Цикл
        СписЗначВ8.Добавить(Элемент);
    КонецЦикла;    
        
    ЗапрВ8 = В8.NewObject("Запрос");
    ЗапрВ8.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстатки.КоличествоОстаток,
                   |    ХозрасчетныйОстатки.Субконто1.Артикул КАК Артикул
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &Счет, , Субконто1.Артикул В (&Артикулы)) КАК ХозрасчетныйОстатки";
    Счет281В8 = В8.ПланыСчетов.Хозрасчетный.НайтиПоКоду("281");              
    ЗапрВ8.УстановитьПараметр("Счет",Счет281В8);
    ЗапрВ8.УстановитьПараметр("Артикулы",СписЗначВ8);      
    
    РезПоБух = ЗапрВ8.Выполнить().Выгрузить();
    Если РезПоБух.Количество() > 0 Тогда
        Сообщить("Есть!!!");
    КонецЕсли;


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: kosta_ks, Trintintin,

Trintintin Подменю пользователя
сообщение 25.08.17, 19:06
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 45
Спасибо сказали: 29 раз
Рейтинг: 0

Bernet @ Сегодня, 15:39 * ,
Ура, заработало!!!
[необходимо зарегистрироваться для просмотра ссылки]

Ошибка была в этом цикле:
Для Каждого ЗапСписЗн из СписВсехАртикулов Цикл
        СписЗначВ8.Добавить(ЗапСписЗн);
    КонецЦикла;



Правильно:
Для Каждого ЗапСписЗн из СписВсехАртикулов Цикл
        СписЗначВ8.Добавить(ЗапСписЗн.Значение);
    КонецЦикла;


Сообщение отредактировал Vofka - 28.08.17, 7:13

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!