|
v7: Поиск единицы измерения и откат транзакции | ☑ | ||
---|---|---|---|---|
0
Kifsif
15.10.15
✎
12:44
|
7.7
Беру данные об отгрузках из табличного документа. Если номенклатуры не найдено, создаю ее на основании данных из этого табличного документа. При любой нештатной ситуации нужен откат транзакции. В данном случае - если в табличном документе стоит вместо единиц измерения какая-то абракадабра, нужно орать и ничего не записывать в базу. В попытке начал транзакцию. И далее в транзакции где-то в середине модуля хотел бы кинуть исключение. Дескать, не нашел единицу измерения в справочнике, выход из транзакции. Не получилось. Думаю, ну, ладно, надо хотя бы поймать ошибку. Пробую так: ЕдиницаИзмеренияНайдена = (ПустоеЗначение(Ед.ТекущийЭлемент()) = 0); Если ЕдиницаИзмеренияНайдена Тогда Ном.ЕдиницаИзмерения = Ед.ТекущийЭлемент(); Иначе Сообщить("Для номенклатыры " + Ном.Наименование + " неверно задана единица измерения. Проверяйте Excel-файл. Единица измерения должна соответствовать элементу справочника ""Единицы измерений""."); Возврат 0; КонецЕсли; Я ничего не понимаю. На 7.7 не программировал. Но все-таки. В отладчике задушился на точке останова. Выделяю ПустоеЗначение(Ед.ТекущийЭлемент()) и вычисляю выражение. Получаю ПустоеЗначение(Ед.ТекущийЭлемент()) = 1. При этом если вычислить выражение ПустоеЗначение(Ед.ТекущийЭлемент()) = 0, сразу получаю "Ошибка в выражении". Ничего не понимаю. Подскажите, пожалуйста, как мне обработать эту ошибку (если не найдена единица измерения). |
|||
1
Масянька
15.10.15
✎
12:55
|
Вечное - конфа?
|
|||
2
Ёпрст
15.10.15
✎
12:59
|
Пробую так:
ЕдиницаИзмеренияНайдена = (ПустоеЗначение(Ед.ТекущийЭлемент()) = 0); Такая конструкция в 7.7 не будет работать |
|||
3
Kifsif
15.10.15
✎
12:59
|
(1) Вообще, это для Бухгалтерии 7.70.537.
Но это внешняя обработка. Какая разница, какая конфа-то. Просто читаю файл. |
|||
4
Kifsif
15.10.15
✎
13:00
|
(2) Интересно. Вот функция, она вернула 1. И почему я ее не могу сразу использовать в логическом выражении.
В общем, это все сентименты. А как в записать логическое выражение? |
|||
5
Ёпрст
15.10.15
✎
13:01
|
(4) дарю
?(,,) |
|||
6
Ёпрст
15.10.15
✎
13:02
|
И это, в 7.7 нет булева, если че.
|
|||
7
Ёпрст
15.10.15
✎
13:02
|
И писать Если ЕдиницаИзмеренияНайдена Тогда не имеет смысла.
|
|||
8
Масянька
15.10.15
✎
13:03
|
СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
Если СпрНоменклатура.НайтиПоРеквизиту("АртикулПрайс", мАртикул, 1) = 1 Тогда // нашли - выбираем мНоменклатура = СпрНоменклатура.ТекущийЭлемент(); мЕИ = СпрНоменклатура.БазоваяЕдиница; Иначе // не нашли - добавляем новый элемент в группу "_Не обработано" Сообщить("Строка № " + (КонтекстДокумента.НомерСтроки + 1) + "." + РазделительСтрок + " Не найдена номенклатура с артикулом - " + мАртикул + ". Данная номенклатура будет добавлена в папку ""_Не обработано""."); СпрГруппа.НайтиПоНаименованию("_Не обработано"); СпрНоменклатура.ИспользоватьРодителя(СпрГруппа.ТекущийЭлемент()); СпрНоменклатура.Новый(); СпрНоменклатура.Наименование = СокрЛП(Строка(Лист.Cells(НомерСтроки, 3).Value)); СпрНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Прочее; СпрНоменклатура.ПолнНаименование = СокрЛП(Строка(Лист.Cells(НомерСтроки, 3).Value)); СпрНоменклатура.АртикулПрайс = мАртикул; СпрНоменклатура.Записать(); // штрих-код КодТовараЧисло = Число(СокрЛ(Прав(СпрНоменклатура.Код, 5))); Для Сч = 1 По КодТовараЧисло Цикл ДопКод = глДополнитьСтрокуЛ(Строка(Сч), "0", 5); ВремШтрихкод = глСформироватьШтрихкод(глПрефиксВесовогоШтрихкода, ДопКод + "00000"); КонецЦикла; // единицы измерения СпрЕдиницы.ИспользоватьВладельца(СпрНоменклатура.ТекущийЭлемент()); СпрЕдиницы.Новый(); СпрЕдиницы.ОКЕИ = СпрОКЕИ.ТекущийЭлемент(); СпрЕдиницы.Коэффициент = 1; СпрЕдиницы.ШтрихКод = ВремШтрихкод; СпрЕдиницы.Записать(); СпрНоменклатура.УстановитьАтрибут("ОсновнаяЕдиница", СпрЕдиницы.ТекущийЭлемент()); СпрНоменклатура.УстановитьАтрибут("БазоваяЕдиница", СпрЕдиницы.ТекущийЭлемент()); СпрНоменклатура.СтавкаНДС = Перечисление.СтавкиНДС.НДС18; СпрНоменклатура.СтавкаНП = СпрСтавкаНП.ТекущийЭлемент(); СпрНоменклатура.Записать(); мНоменклатура = СпрНоменклатура.ТекущийЭлемент(); мЕИ = СпрНоменклатура.БазоваяЕдиница; КонецЕсли; Молод ты еще... Чтобы фильму смотреть :))))))) |
|||
9
Масянька
15.10.15
✎
13:04
|
(3) И кстати, я не помню, что есть единицы в бухии. Мой код для ТиС. Но тебе же без разницы :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |