Имя: Пароль:
1C
 
Обработка падает с ошибкой
🠗 (Волшебник 16.01.2024 18:16)
,
0 stajer666
 
16.01.24
16:41
Обработка стала падать с ошибкой, какие действия к этому привели - хз, не уточняется

Код ошибки:
Преобразование значения к типу Число не может быть выполнено
{ВнешняяОбработка.ВыгрузкаNEONБалтимпэкс.МодульОбъекта(575)}:ДополнительныйОтбор = ?(ДополнительныйОтбор = "0","Субконто1 В (&СписокНоменклатуры)",
{ВнешняяОбработка.ВыгрузкаNEONБалтимпэкс.МодульОбъекта(400)}:Выборка = ПолучитьВыборкуПоОстаткамСЦенами(СтруктураПараметров);
{ВнешняяОбработка.ВыгрузкаNEONБалтимпэкс.Форма.ФормаУпр.Форма(139)}:АдресФайлаВыгрузкиВХранилище    = ОбработкаОбъект.ВыгрузитьНаСервере();
{ВнешняяОбработка.ВыгрузкаNEONБалтимпэкс.Форма.ФормаУпр.Форма(159)}:АдресФайлаВыгрузкиВХранилище    = ВыгрузитьНаСервере();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

Кусок кода, где падает ошибка:

		Если СтруктураПараметров.ЕстьОтборПоНоменклатуре Тогда 
		ДополнительныйОтбор = ?(ДополнительныйОтбор = "","Субконто1 В (&СписокНоменклатуры)",
ДополнительныйОтбор + " И Субконто1 В (&СписокНоменклатуры)");
		Запрос.УстановитьПараметр("СписокНоменклатуры",СтруктураПараметров.СписокНоменклатуры);
	КонецЕсли;


Даже и не знаю, с какой стороны подступиться к решению проблемы, обработка монструозная, на 2.5к симолов
1 Волшебник
 
16.01.24
16:33
Кусок кода не соответствует тексту ошибки. Возможно, запускают другую обработку, не ту, которую Вы смотрите.

Чтобы устранить ошибку, в начале добавьте:
ДополнительныйОтбор  = "";


И можно переписать так:
Доп = Доп + ?(Доп = "", "", " И ");
Доп = Доп + "Субконто1 В (&СписокНоменклатуры)");
2 stajer666
 
16.01.24
16:36
В общем, видимо, дело не в какой-то конкретной ошибке

Как я понял, обработку надо переписать под другой регистр бухгалтерии
3 Волшебник
 
16.01.24
16:38
(2) АдЪ и ИзраилЬ
4 Лефмихалыч
 
16.01.24
16:38
(1) все соответствует. У него просто переменная ДополнительныйОтбор проинициализирована числом (нулем, возможно), по этому сравнение с пустой строкой возвращает ложь и выполняется сложение числа со строкой
5 Лефмихалыч
 
16.01.24
16:39
(2) нет
6 Волшебник
 
16.01.24
16:40
(4) в ошибке:
?(ДополнительныйОтбор = "0"

в куске кода
?(ДополнительныйОтбор = ""
7 Fedor-1971
 
16.01.24
16:43
(2) ДополнительныйОтбор - выясни, каким образом в эту переменную попало значение Неопределено, возможно, она инициализируется в Если без безусловного присвоения в Иначе (да поможет тебе отладчик).

Если это некая работа с СКД, то могли просто снять галочку Использовать в настройках или ещё что. Нам отсюда не видно
8 stajer666
 
16.01.24
16:46
Нашел выше закоменченный кусок кода

Запрос.УстановитьПараметр("СчетТовары",    ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"));

    Субконто = Новый Массив;
    Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    
    Запрос.УстановитьПараметр("Субконто", Субконто);
    
    Если СтруктураПараметров.ЕстьОтборПоСкладам Тогда
        ДополнительныйОтбор = "Субконто2 В (&СписокСкладов)";
        Запрос.УстановитьПараметр("СписокСкладов",СтруктураПараметров.СписокСкладов);
    Иначе
        ДополнительныйОтбор = "";

Здесь и задается ДополнительныйОтбор
Но, видимо, реально надо переделывать обработку под другой регистр бухгалтерии, если раскоментить этот кусок кода, ошибки пропадают, но выгрузка оказывается пустой ;)
9 stajer666
 
16.01.24
16:48
(7) нет, СКД здесь и не пахнет, по ряду введенных параметров выполняется выборка, потом эта выборка грузится в 3 разных csv файла
Постановщик нормально объясниться не может, либо не хочет, так как я молодой и неопытный
10 Fedor-1971
 
16.01.24
16:54
(8) Поправь код как в 1, просто проинициализируй строкой ДополнительныйОтбор и выясни почему в ошибке он = "0", а в твоём коде = ""?
Точно смотришь в правильный кусок кода?
11 stajer666
 
16.01.24
17:13
(10) Да, смотрел в правильный кусок кода

В итоге постановщик сказал, что Субоконто2 нам там не нужен, оставил строчку  ДополнительныйОтбор = "";
добавил строчку Запрос.УстановитьПараметр("Субконто", Субконто);

И все заработало!

Благодарю всех небезучастных, с вами все невзгоды переносятся легче!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан