Итак, пример сразу что получилось у меня Плитка 10 кв.м. (из справочн вытащил инфу что в 1 шт = 0,02 кв.м ) делю на 0,02 и получаю 500 шт. (дальше вытаскиваю и спр. кол. в упаковке 30 шт.) делю на 30 и получается 16,666666 а мне надо сдесь четко показать что 16 упаковок и 20 штук, вопрос КАК? Вот мой код
Если Цел(500/30)=500/30 Тогда ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок "+допШт+" шт."; Иначе ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок"; КонецЕсли;
Если Цел(500/30)=500/30 Тогда ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок "+допШт+" шт."; Иначе ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок"; КонецЕсли;
Если Цел(500/30)=500/30 Тогда ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок "+допШт+" шт."; Иначе ОбластьМакета.Параметры.Упаковки = ""+Упак+" упаковок"; КонецЕсли;
Извините, что вмешиваюсь, может здесь условие местами перепутано??? Если результат целого от деления равняется результату деления, значит дополнительных штук не нужно...
Пример на моем конкретном примере, товар с кодом 604, продаем плитку, 6.3 кв.м. согласно пакетировки площадь одной штучки 0.24 в упаковке 6 штук
6.3/0.24 = 26.24 т.е. 26 плиток и четверть плитки, чего естественно не может быть
При выводе на печать форма считает сколько упаковок и сколько штук, может по ее аналогии как то подкорректировать код ,что бы при вводе например 6.3 кв.м., программа предлагала или в большую или в меньшую сторону, т.е. спросила 6,24 кв.м продать или 6,48 кв.м. и никак не давала списывать через документ реализация товаров и услуг четверть плитки вот код вывода подсчета пакетировки
ОбластьМакета.Параметры.Пакетировка = "В упаковке: " + ВыборкаСтрокТовары.Номенклатура.Пакетировка.Штупак + " шт."; Если ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт=0 Тогда Упак = 0; Иначе Если ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт = 0 или ВыборкаСтрокТовары.Номенклатура.Пакетировка.Штупак = 0 Тогда Упак = 0 Иначе Упак = Цел(ВыборкаСтрокТовары.Количество / ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт / ВыборкаСтрокТовары.Номенклатура.Пакетировка.Штупак); допШт = ВыборкаСтрокТовары.Количество / ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт - Упак*ВыборкаСтрокТовары.Номенклатура.Пакетировка.Штупак; КонецЕсли;
Если Цел(ВыборкаСтрокТовары.Количество / ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт) = ВыборкаСтрокТовары.Количество / ВыборкаСтрокТовары.Номенклатура.Пакетировка.Площадьшт Тогда ОбластьМакета.Параметры.Упаковки = ""+Упак+" уп. "+допШт+" шт."; Иначе ОбластьМакета.Параметры.Упаковки = ""+Упак+" уп. "; КонецЕсли; КонецЕсли;
Сообщение отредактировал MATEVI - 12.10.11, 21:54
Причина редактирования: Не надо создавать кучу однотипных тем. Темы объеденены. (поправил код, а то не понятно ничего)
Завсегдатай
Группа: Местный
Сообщений: 124
Из: Полтавская обл.
Спасибо сказали: 72 раз
Рейтинг: 0
Можно попробовать поделить общую площадь по модулю на 0,24, и сравнить с таким же делением без модуля, сделать некоторые действию з исходной площадью и уже после этого считать упаковки.. Также, думаю, можно взять целое от деления на 0,24 потом это целое помножить на 0,24 сравнить на равенство с исходной площадью.... и т.д.
Сообщение отредактировал shurik_shurik - 13.10.11, 7:30
Живет на форуме
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0
Цитата(shurik_shurik @ 06.10.11, 10:23)
Извините, что вмешиваюсь, может здесь условие местами перепутано??? Если результат целого от деления равняется результату деления, значит дополнительных штук не нужно...
А подскажи плиз, где в модуле надо писать условие что при вводе количества он будет пересчитывать-округлять? а то что ищу куда добавить а не могу понять
HELP ME, ну подскажите, плиз, где условие вписать надо что бы сразу после ввода количества он считал целые штуки, это касается тольк оесли ед.изм. "кв.м."
Что то типо этого? Если Товар.Ед.изм. = "кв.м." Тогда Товар.Количесвто ....
Вроде разобрался ГДЕ, теперь больше беспокоит как прописать условие пересчета количеста Прописал тут
// Процедура - обработчик события "ПриОкончанииРедактирования" поля табличной части "Товары" // Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если Не ОтменаРедактирования Тогда УстановитьАвтоотметкуСклада();
ПересчитатьАвтоматическиеСкидки();
мПерерасчетПроизведен = ЛОЖЬ;
КонецЕсли; //Начало моего условия
Сообщить("Моё условие");
//Конец моего условия КонецПроцедуры //ТоварыПриОкончанииРедактирования()
Нет, подвязано к реквизиту ЕдиницаИзмерения, но мне надо отсеять только те товары, у которых единица измерения кв.м., как правильно сделать условия равенства?
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; НовыйОбъект = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кв.м."); Единица = СтрокаТабличнойЧасти.ЕдиницаИзмерения; Если Единица = НовыйОбъект Тогда Сообщить("Условие работает"); КонецЕсли;
Что же не так, если сообщает одно и то же в сообщении код такой
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; НовыйОбъект = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("4"); Единица = СтрокаТабличнойЧасти.ЕдиницаИзмерения; Если Единица = НовыйОбъект Тогда Сообщить("Условие работает"); Иначе Сообщить("Фиговый я программист"); КонецЕсли; Сообщить(Единица); Сообщить(НовыйОбъект);
Что же не так, если сообщает одно и то же в сообщении
Может стоит задуматься над первой строкой ошибки? Я не шучу, действительно может это не Ваше....
То что отображается одинаковое наименование, это не значит что оба значения имеют одинаковую ссылку. Попробуйте вывести Код элемента для обеих, и Вы увидите разницу. Хотя может и чуть не учли что я писал выше.
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!