![]() |
|
Помогите найти ошибку. | ☑ | ||
---|---|---|---|---|
0
mila1231
20.03.19
✎
10:03
|
Помогите разобраться почему так происходит, возможно, что всё не правильно в принципе, но проблема такая. Вот код всей процедуры
Код: &НаКлиенте Процедура ОткрытьДокумент(Команда) Если Объект.ТЗ.Количество() = 0 Тогда сообщить("Нужно заполнить таблицу значений"); Возврат; конецЕсли; ТекущиеДанные = Элементы.ТЗ.ТекущиеДанные; ТекущийНомер=Строка(Прав(Год(текущиеданные.датаДокумента),2))+"-" + Прав(текущиеданные.ссылка, 6); // не обращаем внимание ссылка-это тип число и это номер СсылкаТекущиеДанные = текущиеданные.номер; //а это ссылка ДанныеизЗапроса = ПолучитьДанные(СсылкаТекущиеДанные); Если строка(текущийНомер) = Строка(НайтиДокумент(ТекущийНомер)) тогда Сообщить(строка(текущийНомер) + строка(НайтиДокумент(ТекущийНомер))) конецЕсли; ФормаД =ОткрытьФорму( "Документ.ПеремещениеТоваров.Форма.ФормаДокумента"); Для каждого строка из ДанныеизЗапроса Цикл ФормаД.объект.номер = Строка(Прав(Год(строка.ДатаВходящегоДокумента),2))+"-" + Прав(строка.НомерСчетаПокупателю, 6); ФормаД.объект.дата = ТекущаяДата(); ТЧ = ФормаД.Объект.Товары.Добавить(); ТЧ.Номенклатура = строка.Номенклатура; ТЧ.Количество =строка.Количество; КонецЦикла; ФормаД.Открыть(); КонецПроцедуры меня интересует вот этот кусок Код: Если строка(текущийНомер) = строка(НайтиДокумент(ТекущийНомер) )тогда Сообщить(строка(текущийНомер) + строка(НайтиДокумент(ТекущийНомер))) конецЕсли; НайтиДокумент-это функция, которая смотрит а есть ли уже такой номер и соответственно возвращает его. код: // &НаСервере //Функция НайтиДокумент(СсылкаНаНомер) //это для проверки документа, а вдруг был создан // Запрос = Новый Запрос; // Запрос.Текст = // "ВЫБРАТЬ // | ПеремещениеТоваров.Номер КАК Номер, // | ПеремещениеТоваров.Дата КАК Дата // |ИЗ // | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров // |ГДЕ // | ПеремещениеТоваров.Номер = &ТекущийНомер // | "; // Запрос.УстановитьПараметр("ТекущийНомер", СсылкаНаНомер); // // РезультатЗапроса = Запрос.Выполнить(); // Выборка = РезультатЗапроса.Выбрать(); // //МассивДанные = Новый массив(); // //Пока Выборка.Следующий() Цикл // // НомерНайтидокумент = выборка.Номер // //КонецЦикла; //Возврат НомерНайтидокумент; // // КонецФункции А не могу я понять по какой причине два равных значения видятся, как не равные. Т.е я создаю документ с номером, который 100% будет равен номеру, который рассчитывается из текущих данных таблицы значений и он отказывается выполнять условие, хотя проводить документ тоже отказывается, т.к говорит, что номер не уникальный, вот как быть, что не так? Может проблема с типами, если я перевожу в число, при этом убираю из номера (-), то всё работает. но мне нужна строка, т.к мне нужен этот дефис. Как быть? |
|||
1
Temai
20.03.19
✎
10:47
|
Пока читал код потекла кровь из глаз, такого говнокода я давно не видел
|
|||
2
Rico_1C
20.03.19
✎
10:49
|
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
НайтиПоНомеру (FindByNumber) Синтаксис: НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>) Параметры: <НомерДокумента> (обязательный) Тип: Число; Строка. Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа. <ДатаИнтервала> (необязательный) Тип: Дата. Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года. Параметр используется для документов с периодической нумерацией. Возвращаемое значение: Тип: ДокументСсылка.<Имя документа>; Неопределено. Ссылка на найденный документ. Если документ не найден, возвращается пустая ссылка на документ. Если номер не задан (длина = 0), то будет возвращено Неопределено. Описание: Осуществляет поиск документа по номеру. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Методическая информация |
|||
3
Жан Пердежон
20.03.19
✎
10:54
|
посмотри в отладчике, чему равно в выражение:
"2019"= Строка(2019) |
|||
4
Rovan
гуру
20.03.19
✎
11:41
|
(+1) Строка(Прав(...,2))
Прав - это и так уже строка ! " // не обращаем внимание ссылка-это тип число и это номер СсылкаТекущиеДанные = текущиеданные.номер; //а это ссылка " Блин ! всё наоборот чтобы запутать вероятного врага ?! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |