Проблема такая . как сделать в форме подбора номенкулатуры (скрин номер два) после запятой не два знака , три. Код прилагаю. ут 8,1 . редакция 10,3 .
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт
Перем СпособЗаполненияЦен, ВалютаЦены, ЕстьСкладВТабличнойЧасти;
Перем Номенклатура, ЕдиницаИзмерения, Количество, КоличествоМест, Цена, Характеристика, Серия, Качество;
Если РаботаСДиалогами.ПроверитьЧтоКачествоВСтруктуреПодбораНеУдовлетворяетУсловиям Подбора(ЗначениеВыбора,
(ТабличнаяЧасть <> Товары Или ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия)) Тогда
Возврат;
КонецЕсли;
// Получим параметры подбора из структуры подбора.
УправлениеЗапасами.ПолучитьПараметрыДокументаИзСтруктуры(ЗначениеВыбора, ТипЦен,
СпособЗаполненияЦен, Номенклатура, Количество, КоличествоМест, Характеристика,
ВалютаЦены, Цена, ЕдиницаИзмерения);
//Мое 1 декабря
Количество = 0;
Если ПустаяСтрока(ЭлементыФормы.Контрагент.Значение) Тогда
Сообщить("Выберите контрагента");
Возврат;
Иначе
ЭлементыФормы.Контрагент.Доступность = Ложь;
КонецЕсли;
//конец мое
ЗначениеВыбора.Свойство("Серия" , Серия);
ЗначениеВыбора.Свойство("Качество", Качество);
Если НЕ ЗначениеВыбора.Свойство("ЕстьСкладВТабличнойЧасти", ЕстьСкладВТабличнойЧасти) Тогда
ЕстьСкладВТабличнойЧасти = Ложь;
КонецЕсли;
Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара)
И Номенклатура.Услуга Тогда
Предупреждение("В данном контексте услуги не подбираются!");
Возврат;
ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
Предупреждение("В данном контексте товары не подбираются!");
Возврат;
КонецЕсли;
// Ищем выбранную позицию в таблице подобранной номенклатуры.
// Если найдем - увеличим количество; не найдем - добавим новую строку.
СтруктураОтбора = Новый Структура();
Если ТабличнаяЧасть = Товары Тогда
СтруктураОтбора.Вставить("ЕдиницаИзмерения", ЕдиницаИзмерения);
СтруктураОтбора.Вставить("ХарактеристикаНоменклатуры", Характеристика);
СтруктураОтбора.Вставить("СерияНоменклатуры" , Серия);
Если ЗначениеЗаполнено(Качество) Тогда
СтруктураОтбора.Вставить("Качество" , Качество);
КонецЕсли;
Если СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоРозничнымЦенам Тогда
СтруктураОтбора.Вставить("Цена", Цена);
КонецЕсли;
Иначе
СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
КонецЕсли;
Если ЕстьСкладВТабличнойЧасти
И ТабличнаяЧасть <> Услуги
И ЗначениеЗаполнено(Склад) Тогда
СтруктураОтбора.Вставить("Склад", Склад);
КонецЕсли;
СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
Если СтрокаТабличнойЧасти <> Неопределено Тогда
Если ТабличнаяЧасть = Товары Тогда
// Нашли, увеличиваем количество в первой найденной строке.
СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
//Мое 1 декабря
СтрокаТабличнойЧасти.Упаковок =СтрокаТабличнойЧасти.Упаковок + глУпаковок;
СтрокаТабличнойЧасти.БезУпаковки =СтрокаТабличнойЧасти.БезУпаковки + глБезУпаковоки;
глУпаковок = 0;
глБезУпаковоки = 0;
//---
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
Если Не ПересчитатьАвтоматическиеСкидки() Тогда
// рассчитать реквизиты табличной части
// ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
СтрокаТабличнойЧасти.Склад = Склад;
Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПокупателя)
И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
// Нашли, увеличиваем количество в первой найденной строке.
СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
СтрокаТабличнойЧасти.Склад = Склад;
Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПокупателя)
И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
// Нашли, увеличиваем количество в первой найденной строке.
СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
// ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПокупателя)
И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
КонецЕсли;
Иначе
// Не нашли - добавляем новую строку.
СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Номенклатура;
Если ТабличнаяЧасть = Товары Тогда
СтрокаТабличнойЧасти.Количество = Количество;
//Мое 1 декабря
СтрокаТабличнойЧасти.Упаковок = глУпаковок;
СтрокаТабличнойЧасти.БезУпаковки =глБезУпаковоки;
глУпаковок = 0.000;
глБезУпаковоки = 5;
ЦенаСоСкидкой = 0;
//--
ОбработкаТабличныхЧастей.ЗаполнитьСпособСписанияОстаткаТоваровТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;
СтрокаТабличнойЧасти.СерияНоменклатуры = Серия;
Если ЗначениеЗаполнено(Качество) Тогда
СтрокаТабличнойЧасти.Качество = Качество;
КонецЕсли;
// Заполняем реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Реализация");
Если Цена <> Неопределено Тогда
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
СпособЗаполненияЦен,
ТипЦен.ЦенаВключаетНДС,
УчитыватьНДС,
СуммаВключаетНДС,
Ценообразование.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));
Иначе
ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
КонецЕсли;
// Рассчитываем реквизиты табличной части.
СтрокаТабличнойЧасти.Склад = Склад;
ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, Ложь);
Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Качество) Тогда
ОбработкаТабличныхЧастей.ЗаполнитьКачествоНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
Если Не ПересчитатьАвтоматическиеСкидки() Тогда // рассчитать реквизиты табличной части
// ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
// Ввод состава набора
СтрокаТабличнойЧасти.КлючСтроки = УправлениеЗапасами.ПолучитьНовыйКлючСтроки(ЭтотОбъект);
УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
//////////////////////////////////////////////////////////// ////////////////////////////////
//Расчитываем скидку
СтрокаТабличнойЧасти.Количество = 1;
ПересчитатьАвтоматическиеСкидки();
Скидка = СтрокаТабличнойЧасти.ЦЕна * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок /100;
//Записываем текущую цену
СтрокаТабличнойЧасти.ТекущаяЦена = СтрокаТабличнойЧасти.Цена;
ЦенаСоСкидкой = СтрокаТабличнойЧасти.ЦЕна - Скидка;
//Округляем цены для розницы
//Если СтрокаТабличнойЧасти.Номенклатура.БезОкругления = Ложь Тогда
// ТипЦенРоз = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000004");
// Если ТипЦен = ТипЦенРоз Тогда
// ЦенаСоСкидкой = ОбщегоНазначения.ОкруглитьРозницу(ЦенаСоСкидкой);
// КонецЕсли;
//КонецЕсли;
СтрокаТабличнойЧасти.Цена = ЦенаСоСкидкой;
СтрокаТабличнойЧасти.Количество = "";
//Получаем СТОП-ЦЕНУ.
ТипЦенСтопЦена = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000006");
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", Номенклатура);
Отбор.Вставить("ТипЦен", ТипЦенСтопЦена);
Выборка = РегистрыСведений.ЦеныНоменклатуры.СрезПоследних(, Отбор);
//Если есть СТОП-ЦЕНА. Проверяю нижи ли СТОП-ЦЕНЫ продаем
Если Выборка.Количество() > 0 Тогда
СтрокаТабличнойЧасти.СтопЦена = Выборка[0].Цена;
//Если текущая цена ниже Стоп-цены
Если Выборка[0].Цена > ЦенаСоСкидкой Тогда
Сообщить("Продажа ниже СТОП-ЦЕНЫ "" " + Номенклатура + " "" ");
КонецЕсли;
КонецЕсли;
//////////////////////////////////////////////////////////// ////////////////////////////////
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
СтрокаТабличнойЧасти.Количество = Количество;
ОбработкаТабличныхЧастей.ЗаполнитьСпособСписанияОстаткаТоваровТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
// Пересчитаем цену в валюту документа.
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
// Если цену заполнили из регистра, то ее надо пересчитывать по флагам налогообложения.
// Считаем, что оценочную стоимость возвратной тары всегда задают с НДС
// ставки берутся из номенклатуры.
СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
СпособЗаполненияЦен,
ТипЦен.ЦенаВключаетНДС,
УчитыватьНДС,
Истина,
Ценообразование.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.Номенклатура.СтавкаНДС));
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
СтрокаТабличнойЧасти.Склад = Склад;
Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
СтрокаТабличнойЧасти.Количество = Количество;
// Заполняем реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
Если ОбщегоНазначения.ПроверитьУслугаОблагаетсяЕНВД(СтрокаТабличнойЧасти.Номенклатура, Организация, Дата,
мОрганизацияЯвляетсяПлательщикомЕНВД) Тогда
СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Иначе
ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Реализация");
КонецЕсли;
Если Цена <> Неопределено Тогда
// Пересчитаем цену в валюту документа.
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
СпособЗаполненияЦен,
ТипЦен.ЦенаВключаетНДС,
УчитыватьНДС,
СуммаВключаетНДС,
Ценообразование.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));
Иначе
ОбработкаТабличныхЧастей.ЗаполнитьЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
КонецЕсли;
Если Не ПересчитатьАвтоматическиеСкидки() Тогда // рассчитать реквизиты табличной части
// ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
СтрокаТабличнойЧасти.ЗаказПокупателя = Сделка;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТабличнаяЧастьИмя = Метаданные.НайтиПоТипу(ТипЗнч(ТабличнаяЧасть)).Имя;
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Упаковок"];
УчетСерийныхНомеров.ОбработкаПодбораНоменклатурыПоСерийномуНомеру(ЗначениеВыбора, СерийныеНомера,
ТабличнаяЧасть, СтрокаТабличнойЧасти,
мПараметрыСвязиСтрокТЧ,
ТабличнаяЧастьИмя,
ЭтотОбъект);
РасчитатьКоличество(СтрокаТабличнойЧасти);
КонецПроцедуры // ОбработкаПодбора()
ПоказатьПрикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот