|
Получить значения номенклатуры в ТЧ | ☑ | ||
---|---|---|---|---|
0
Gossar1C
05.05.13
✎
19:58
|
Добрый вечер. Помогите пожалуйста разобраться в следующем... есть табличная часть в заказе клиента и допустим пользователь меняет поле количество в ней (Первоначальное если у номенклатуры есть фасовка в количество попадает фасовка к примеру 50/100/200) мне нужно сделать строгую проверочку допустим
Процедура ТоварыКоличествоПриИзменении(Элемент) ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ПроверитьКОличествоУпаковокПриИзменении(ТекущаяСтрока); КонецПроцедуры ПроверитьКоличествоУпаковокПриИзменении(ТекущаяСтрока) Если ТекущаяСтрока.Номенклатура.Фасовка > 0 Тогда Если Найти(Строка(ТекущаяСтрока.Количество/ТекущаяСтрока.Номенклатура.Фасовка),".") > 0 Тогда Сообщить("Не верно указана фасовка!!!") ТекущаяСтрока.Количество = ТекущаяСтрока.Номенклатура.Фасовка; КонецЕсли; КонецЕсли; КонецПроцедуры Поясню, когда пользователь хочет изменить фасовку то она должна быть кратна, тоесть фасовка к примеру 50 и пользователь может поменять либо на 100 или 150 и тд, тоесть 2 упаковки 3 упаковки. Проблема заключается в том что я не могу получить у номенклатуры в текущей строке фасовку, текущуюстроку на сервер передать тоже немогу... |
|||
1
hhhh
05.05.13
✎
20:09
|
а зачем проверять это? И козе понятно, что
Найти(Строка(ТекущаяСтрока.Количество/ТекущаяСтрока.Номенклатура.Фасовка),".") всегда > 0 |
|||
2
Gossar1C
05.05.13
✎
20:12
|
(1) с чего?
|
|||
3
ale-sarin
05.05.13
✎
20:12
|
(1) Неправда.
|
|||
4
Gossar1C
05.05.13
✎
20:13
|
если 50 фасовка, а пользователь поставил 78, то с остатком будет
|
|||
5
hhhh
05.05.13
✎
20:15
|
(3) ну элементарный пример: количество просто 1.000, фасовка 1. Получаем > 0
|
|||
6
ale-sarin
05.05.13
✎
20:18
|
(5) Дааа? Количество - это же число.
Тоже самое: Строка(1/1) чего даст? |
|||
7
ale-sarin
05.05.13
✎
20:19
|
+6 Другой вопрос, что проверку на дробность я бы по другому сделал. Не как автор.
|
|||
8
hhhh
05.05.13
✎
20:21
|
(6) если только у автора самописка и реквизит Количество целое число. Но в типовых не так.
|
|||
9
ale-sarin
05.05.13
✎
20:24
|
(8) Это-то понятно. Но 100 только отображается как 100.000, а на самом деле - это 100.
Результат деления 100/50 даст целое число. |
|||
10
hhhh
05.05.13
✎
20:25
|
ща проверю
|
|||
11
hhhh
05.05.13
✎
20:40
|
(9) да, действительно, получилось 2. Тогда извиняюсь.
|
|||
12
ale-sarin
05.05.13
✎
20:42
|
(11) Бывает. У меня тоже первомай тяжелый был)
|
|||
13
EugeniaK
06.05.13
✎
00:51
|
(0)УФ, насколько я понимаю.
А в чем именно проблема то строку на сервер передать и там проверить? Ну или по номенклатуре фасовку получить на сервере. Вместо ТекущаяСтрока.Номенклатура.Фасовка написать ПолучитьФасовку(ТекущаяСтрока.Номенклатура) &НаСервере функция ПолучитьФасовку(Номенклатура) Возврат Номенклатура.Фасовка; КонецФункции; |
|||
14
cw014
06.05.13
✎
08:24
|
(13) Чего то сегодня все меня опережают. +100500
|
|||
15
1Сергей
06.05.13
✎
08:31
|
про % не слышали, да?
|
|||
16
cw014
06.05.13
✎
09:27
|
(15) ))))))))))))) Зато посмотри, как красиво получилось. Прямо индусская поэзия
|
|||
17
Gossar1C
06.05.13
✎
09:27
|
(13) спасибо сейчас попробую, но только текущую строку он вроде бы не передает на сервер оишбка XDTO
|
|||
18
Gossar1C
06.05.13
✎
09:39
|
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент) ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ФасовкаНоменклатуры = ПолучитьФасовкуНоменклатуры(ТекущаяСтрока.Номенклатура); ПроверитьКоличествоУпаковокПриИзменении(ФасовкаНоменклатуры,ТекущаяСтрока.КоличествоУпаковок); КонецПроцедуры // ТоварыКоличествоУпаковокПриИзменении() &НаСервере Функция ПолучитьФасовкуНоменклатуры(Номенклатура) Возврат Номенклатура.Фасовка; КонецФункции &НаСервере Процедура ПроверитьКоличествоУпаковокПриИзменении(ФасовкаНоменклатуры,КоличествоУпаковок) Если ФасовкаНоменклатуры > 0 Тогда Если Найти(Строка(КоличествоУпаковок / ФасовкаНоменклатуры),".") > 0 Тогда Сообщить("Не соответствует количеству в упаковке!!!"); КонецЕсли; КонецЕсли; КонецПроцедуры А как мне тогда присвоить количеству фасовку оригинальную? ну тоесть если прошло условие и не соответствует количеству в упаковке... текущую строку я передать не смогу... |
|||
19
НЕА123
06.05.13
✎
09:48
|
(18)типа так, что-ли. можно и на клиенте
Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока).КОличествоУпаковок = чтотоТам; |
|||
20
Gossar1C
06.05.13
✎
10:12
|
Сделал так
&НаКлиенте Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент) ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; // Фрагмент блокировка количества ФасовкаНоменклатуры = ПолучитьФасовкуНоменклатуры(ТекущаяСтрока.Номенклатура); Если ФасовкаНоменклатуры > 0 Тогда ТекущаяСтрока.КоличествоУпаковок = ПроверитьКоличествоУпаковокПриИзменении(ФасовкаНоменклатуры,ТекущаяСтрока.КоличествоУпаковок); КонецЕсли; КонецПроцедуры // ТоварыКоличествоУпаковокПриИзменении() &НаСервере Функция ПолучитьФасовкуНоменклатуры(Номенклатура) Возврат Номенклатура.Фасовка; КонецФункции &НаСервере Функция ПроверитьКоличествоУпаковокПриИзменении(ФасовкаНоменклатуры,КоличествоУпаковок) Если Найти(Строка(КоличествоУпаковок / ФасовкаНоменклатуры),",") > 0 Тогда Сообщить("Не соответствует количеству в упаковке!!!"); Возврат ФасовкаНоменклатуры; Иначе Возврат КоличествоУпаковок; КонецЕсли; КонецФункции |
|||
21
Gossar1C
06.05.13
✎
10:16
|
Всем спасибо)
|
|||
22
1Сергей
06.05.13
✎
10:56
|
(20)
//Если Найти(Строка(КоличествоУпаковок / ФасовкаНоменклатуры),",") > 0 Тогда Если (КоличествоУпаковок % ФасовкаНоменклатуры)<> 0 Тогда |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |