Имя: Пароль:
1C
1С v8
COM соединение вылетает. платформа 8.3.21.1393
0 Skom2
 
25.12.22
10:10
База приемник УТ 11.5.9 какая-то
База источник ФармКапитан.

В источнике в общем модуле вот такой код

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
        |    Остатки.Товар КАК Товар,
        |    Остатки.Отдел КАК Склад,
        |    Остатки.ОстатокТовараОстаток КАК Остаток
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки";
    
Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);

В Приемнике вот такой код

ТаблицаОстатковКОМ = БазаИсточник.ВНСФК_ОбменДаннымиСУТ.ОстаткиТоваров();
    
Для Каждого СтрокаТаблицы ИЗ ТаблицаОстатковКОМ Цикл
        
    НоваяСтрока = Продукция.Добавить();
    НоваяСтрока.Номенклатура = СайтЗагрузкаДанных.ПолучитьНоменклатуру(БазаИсточник,СтрокаТаблицы.Товар, Источник);
    НоваяСтрока.Склад     = СайтЗагрузкаДанных.ПолучитьСклад(БазаИсточник,СтрокаТаблицы.Склад, Источник);
    НоваяСтрока.Остаток      = СтрокаТаблицы.Остаток;
    
КонецЦикла;

Этим кодом на форме обработки заполняется таблица.

Если в запросе сделать "Выбрать ПЕРВЫЕ 4", то все ок.

Если же в запросе 5 и более значений, то база приемник вылетает с ошибкой "На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто"
В базе исчнике указано, что передача данных прервана по инициативе принимающей стороны.

Если закомментировать строку с количеством
//НоваяСтрока.Остаток      = СтрокаТаблицы.Остаток;

То обработка успешно загружает все 16 тыс наименований с остатками.
1 Skom2
 
25.12.22
10:14
Удалось выяснить, что, если Остаток > 100, тогда 1с выпадает в ошибку.
2 Skom2
 
25.12.22
10:23
Вопрос снимается.
Замениил
НоваяСтрока.Остаток      = СтрокаТаблицы.Остаток;

на

НоваяСтрока.Остаток      = Число(СтрокаТаблицы.Остаток);

и все заработало
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший