Перем ВремЗак,ВремОпт,ВремМин,ТекТип;
Перем РегПарт,ТаблИтогов,глФирма,СтарВалЗак,СтарВалПрод;
Перем ДатЦен;
Перем ТЦена, Зак;
Перем ПеренестиВНачалоДняПриИзмененииДаты;
Процедура ПриИзмененииДаты()
ПеренестиВНачалоДняПриИзмененииДаты = 1;
КонецПроцедуры
//Перем кнКалина;
//******************************************************************************
// ИнформацияОНоменклатуре()
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Строка информации о Номенклатуре в документе
//
// Описание:
// Формирует строку, включающую название, артикул Номенклатуры, реквизиты партии
//
Функция ИнформацияОНоменклатуре()
ИнфоТекст="";
Если Номенклатура.Выбран()=0 Тогда
Возврат(ИнфоТекст);
КонецЕсли;
ИнфоТекст=ИнфоТекст+СокрЛП(Номенклатура.ПолноеНаименование());
Если ПустоеЗначение(Номенклатура.Артикул)=0 Тогда
ИнфоТекст=?(ИнфоТекст="","",ИнфоТекст+",");
ИнфоТекст=ИнфоТекст+" арт. "+СокрЛП(Номенклатура.Артикул);
КонецЕсли;
Возврат(ИнфоТекст);
КонецФункции //ИнформацияОНоменклатуре()
//*******************************************
Функция ПолучитьЦену(Номен,ТипЦены,Дат,ТекВал)
ТекЦен = 0;
ТекЕд = "";
ТекТип.НайтиПоНаименованию(ТипЦены,0,1);
глВернутьЦену(Номен,ТекТип.ТекущийЭлемент(),Дат,ТекЦен,ТекЕд,ТекВал,,,Фирма);
Возврат ТекЦен;
КонецФункции
//******************************************************************************
// ДобавитьПроцент()
Процедура ДобавитьПроцент()
Если ПроцНац<>0 Тогда
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Наценка = Наценка+ ПроцНац;
ВремОпт = Закупочные + Закупочные*Наценка/100;
Оптовые = глПересчет(ВремОпт,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
КонецЦикла;
КонецЕсли;
КонецПроцедуры // ДобавитьПроцент()
//******************************************************************************
Процедура Новая()
Дат = ?(ПустоеЗначение(ДатЦен) = 1,ДатаДок,ДатЦен);
Если Номенклатура.Выбран() = 1 Тогда
Вал = "";
Закупочные = ПолучитьЦену(Номенклатура,"Закупочные",Дат,Вал);
// Закупочные = ПолучитьЦену(Номенклатура,"Закупочные",ДатаДок,Вал);
ВалютаЗакупки = Вал;
Вал = "";
Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",Дат,Вал);
// Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",ДатаДок,Вал);
ВалютаПродажи = Вал;
Минимальные = глПересчет(ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",Дат,Вал),Вал,ДатаДок,ВалютаЗакупки,ДатаДок);
// Минимальные = глПересчет(ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",ДатаДок,Вал),Вал,ДатаДок,ВалютаПродажи,ДатаДок);
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
ВремМин = глПересчет(Минимальные,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
Наценка = ?(ВремЗак=0,0,(Оптовые - ВремЗак)*100/ВремЗак);
Скидка = ?(ВремЗак=0,0,(ВремМин - ВремЗак)*100/ВремЗак);
Партнерские = ВремЗак + ВремЗак*Процент/100;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииЗакупки()
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДатаДок,глРубли,ДатаДок);
Партнерские = ВремЗак + (ВремЗак * Процент / 100);
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииПродажи()
ВремОпт = глПересчет(Оптовые,ВалютаПродажи,ДатаДок,ВалютаЗакупки,ДатаДок);
Если кнКалина = 0 Тогда
Наценка = ?(Закупочные=0,0,(ВремОпт - Закупочные)*100/?(Закупочные=0,1,Закупочные));
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииМинимальной()
Если кнКалина = 1 Тогда
Возврат;
КонецЕсли;
ВремМин = глПересчет(Минимальные,ВалютаПродажи,ДатаДок,ВалютаЗакупки,ДатаДок);
Скидка = ?(Закупочные=0,0,(ВремМин - Закупочные)*100/?(Закупочные=0,1,Закупочные));
КонецПроцедуры
//*******************************************
Процедура РасчитатьСкидкиНаценки()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ПриИзмененииПродажи();
ПриИзмененииМинимальной();
КонецЦикла;
КонецПроцедуры
//******************************************************************************
// ВводНаОсновании(ДокументОснование)
//
// Параметры:
// ДокуменОснование
// Возвращаемое значение:
// нет.
// Описание: Заполняет на основании документа
Процедура ВводНаОсновании(ДокументОснование)
УстановитьНовыйНомер("Фц"+ СокрЛП( Константа.ПрефиксИБ) + СокрЛП( ЮрЛицо.ПрефиксНомеровДокументов));
глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование);
СинонимДокумента = ПредставлениеВида();
СинонимОснования = ДокументОснование.ПредставлениеВида();
Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование);
Поз = Список.НайтиЗначение(Вид());
// выполним проверку, можно ли вводить документ на основании ДокументОснование
Если Поз = 0 Тогда
// ДокументОснование не найден в списке разрешенных
Предупреждение("Документ """ + СинонимДокумента +
""" нельзя вводить на основании """ + СинонимОснования + """", 60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
//Если ДокументОснование.Проведен() = 0 Тогда
// Сообщить("Документ нельзя вводить на основании не проведенного документа");
// СтатусВозврата(0);
// Возврат;
//КонецЕсли;
Автор = глПользователь;
ТаблТМЦ = СоздатьОбъект("ТаблицаЗначений");
ДокументОснование.ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
Дат = ?(ПустоеЗначение(ДатЦен) = 1,ДатаДок,ДатЦен);
УдалитьСтроки();
ТаблТМЦ.ВыбратьСтроки();
Если ДокументОснование.Вид() = "КорректировкаПоступления" Тогда
Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Номенклатура = ТаблТМЦ.Номенклатура;
Попытка
Коэффициент = Номенклатура.БазоваяЕдиница.Коэффициент;
Закупочные = Окр(ТаблТМЦ.Сумма/ТаблТМЦ.Количество/Коэффициент,2,1);
Исключение
Закупочные = Окр(ТаблТМЦ.Цена,2,1);
КонецПопытки;
ВалЗакупки = СоздатьОбъект("Справочник.Валюты");
ВалЗакупки.НайтиПоНаименованию("руб.");
ВалютаЗакупки = ВалЗакупки.ТекущийЭлемент();
Вал = "";
ВремМин = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",Дат,Вал);
// ВремМин = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",ДокументОснование.ДатаДок,Вал);
// ВалютаПродажи = Вал;
Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",Дат,ВалютаПродажи);
// Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",ДокументОснование.ДатаДок,ВалютаПродажи);
// Минимальные = ВремМин;
Минимальные = глПересчет(ВремМин,Вал,ДокументОснование.ДатаДок,ВалютаЗакупки,ДокументОснование.ДатаДок);
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДокументОснование.ДатаДок,ВалютаПродажи,ДокументОснование.ДатаДок);
Наценка = ?(ВремЗак=0,0,(Оптовые - ВремЗак)*100/ВремЗак);
Скидка = ?(ВремЗак=0,0,(Минимальные - ВремЗак)*100/ВремЗак);
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДокументОснование.ДатаДок,ВалютаПродажи,ДокументОснование.ДатаДок);
Партнерские = ВремЗак + ВремЗак*Процент/100;
КонецЦикла;
Иначе
Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Номенклатура = ТаблТМЦ.Номенклатура;
Попытка
Закупочные = Окр(ТаблТМЦ.Сумма/ТаблТМЦ.Количество/ТаблТМЦ.Коэффициент,2,1);
Исключение
Закупочные = Окр(ТаблТМЦ.ЦенаНовая,2,1);
КонецПопытки;
ВалютаЗакупки = ДокументОснование.Валюта;
Вал = "";
ВремМин = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",Дат,Вал);
// ВремМин = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",ДокументОснование.ДатаДок,Вал);
// ВалютаПродажи = Вал;
Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",Дат,ВалютаПродажи);
// Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",ДокументОснование.ДатаДок,ВалютаПродажи);
// Минимальные = ВремМин;
Минимальные = глПересчет(ВремМин,Вал,ДокументОснование.ДатаДок,ВалютаЗакупки,ДокументОснование.ДатаДок);
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДокументОснование.ДатаДок,ВалютаПродажи,ДокументОснование.ДатаДок);
Наценка = ?(ВремЗак=0,0,(Оптовые - ВремЗак)*100/ВремЗак);
Скидка = ?(ВремЗак=0,0,(Минимальные - ВремЗак)*100/ВремЗак);
ВремЗак = глПересчет(Закупочные,ВалютаЗакупки,ДокументОснование.ДатаДок,ВалютаПродажи,ДокументОснование.ДатаДок);
Партнерские = ВремЗак + ВремЗак*Процент/100;
КонецЦикла;
КонецЕсли;
// РасчитатьСкидкиНаценки();
КонецПроцедуры
//******************************************************************************
// ПодготовитьТаблИтогов(ТаблИтогов, Фирма)
//
// Параметры:
// ТаблИтогов - таблица значений итогов регистра партий, которую и надо преобразовать.
// Фирма - элемент справочника Фирмы, фирма, указанная в документе
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Преобразовывает для списания таблицу значений итогов регистра партий в зависимости
// от настройки контроля остатков
//
Процедура ПодготовитьТаблИтогов(ТаблИтогов, Фирма)
Если (Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоФирме)
или (Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.НеКонтролировать) Тогда
Возврат; // при такой настройке считаем ТЗ уже готовой к списанию
КонецЕсли;
// В цикле по ТЗ заменим значения всех фирм, кроме переданной, на пустое значение
ПустаяФирма = ПолучитьПустоеЗначение("Справочник.Фирмы");
ТаблИтогов.ВыбратьСтроки();
Пока ТаблИтогов.ПолучитьСтроку() = 1 Цикл
Если ТаблИтогов.Фирма <> Фирма Тогда
ТаблИтогов.Фирма = ПустаяФирма;
КонецЕсли;
КонецЦикла;
// Свернем таблицу по фирме и партии
ТаблИтогов.Свернуть("Фирма,Партия,СтатусПартии,ДатаПартии,Номенклатура,МОЛ,Договор,ДокументПередачи",
"Количество,СуммаУпр,СуммаРуб,СуммаБезНДС,ПродСтоимость");
// В цикле по ТЗ заменим для всех отрицательных остатков значения пустых фирм, на переданное значение
ТаблИтогов.ВыбратьСтроки();
Пока ТаблИтогов.ПолучитьСтроку() = 1 Цикл
Если ТаблИтогов.Количество < 0 Тогда
ТаблИтогов.Фирма = Фирма;
КонецЕсли;
КонецЦикла;
// Свернем таблицу по фирме и партии
ТаблИтогов.Свернуть("Фирма,Партия,СтатусПартии,ДатаПартии,Номенклатура,МОЛ,Договор,ДокументПередачи",
"Количество,СуммаУпр,СуммаРуб,СуммаБезНДС,ПродСтоимость");
КонецПроцедуры // ПодготовитьТаблИтогов()
//*******************************************
Функция ПолучитьСреднюю(Номен)
РегПарт.УстановитьЗначениеФильтра("Номенклатура",Номен,1);
РегПарт.УстановитьЗначениеФильтра("Фирма",глФирма,1);
РегПарт.ВыгрузитьИтоги(ТаблИтогов,1,1);
ПодготовитьТаблИтогов(ТаблИтогов,глФирма);
ТаблИтогов.Сортировать("-Фирма,+СтатусПартии",1);
СредЦен = 0;
Всего = 0;
Сумма =0;
ТаблИтогов.ВыбратьСтроки();
Пока ТаблИтогов.ПолучитьСтроку() = 1 Цикл
Всего = Всего + ТаблИтогов.Количество;
Сумма = Сумма + ТаблИтогов.СуммаРуб;
КонецЦикла;
СредЦен = ?(Всего = 0,0,Сумма/Всего);
Возврат(глПересчет(СредЦен,глРубли,ДатаДок,ВалютаЗакупки,ДатаДок));
КонецФункции
//*******************************************
Процедура ПоКнопкеГруппы()
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
Ответ = Вопрос("Удалить строки документа?","Да+Нет+Отмена", 60);
Если Ответ ="Да" Тогда
УдалитьСтроки();
СпрНом.ВыборГруппы(1);
Если СпрНом.Выбрать("","ФормаСписка") = 1 Тогда
Спр = СпрНом.ТекущийЭлемент();
Если Спр.ЭтоГруппа() = 1 Тогда
СпрНом.ИспользоватьРодителя(Спр);
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СпрНом.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Если ПоОстаткам=1 Тогда
Если Регистр.ОстаткиТМЦ.СводныйОстаток(,СпрНом.ТекущийЭлемент(),,,"Количество")>0 Тогда
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
КонецЕсли;
Иначе
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
КонецЕсли;
КонецЦикла;
Иначе
Если ПоОстаткам=1 Тогда
Если Регистр.ОстаткиТМЦ.СводныйОстаток(,СпрНом.ТекущийЭлемент(),,,"Количество")>0 Тогда
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
КонецЕсли;
Иначе
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Новая();
КонецЦикла;
ИначеЕсли Ответ = "Отмена" Тогда
СтатусВозврата(0);
Возврат;
ИначеЕсли Ответ = "Нет" Тогда
СпрНом.ВыборГруппы(1);
Если СпрНом.Выбрать("","ФормаСписка") = 1 Тогда
Спр = СпрНом.ТекущийЭлемент();
Если Спр.ЭтоГруппа() = 1 Тогда
СпрНом.ИспользоватьРодителя(Спр);
// СпрНом.ВключатьПодчиненные(1);
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СпрНом.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Если ПоОстаткам=1 Тогда
Если Регистр.ОстаткиТМЦ.СводныйОстаток(,СпрНом.ТекущийЭлемент(),,,"Количество")>0 Тогда
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
Новая();
КонецЕсли;
Иначе
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
Новая();
КонецЕсли;
КонецЦикла;
Иначе
Если ПоОстаткам=1 Тогда
Если Регистр.ОстаткиТМЦ.СводныйОстаток(,СпрНом.ТекущийЭлемент(),,,"Количество")>0 Тогда
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
Новая();
КонецЕсли;
Иначе
НоваяСтрока();
Номенклатура = СпрНом.ТекущийЭлемент();
Новая();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура ПоКнопкеСредние()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Закупочные = ПолучитьСреднюю(Номенклатура);
КонецЦикла;
КонецПроцедуры
//******************************************************************************
// ПоКнопкеПодбор()
//
// Параметры:
// нет.
// Возвращаемое значение:
// нет.
// Описание:
Процедура ПоКнопкеПодбор()
Перем Пар;
Пар = СоздатьОбъект("СписокЗначений");
Пар.ДобавитьЗначение(0,"ВыборГруппы");
Пар.ДобавитьЗначение(глЗначениеПоУмолчанию("ОсновнаяФирма"), "Фирма");
Пар.ДобавитьЗначение(0, "ЕстьВидТМЦ");
Пар.ДобавитьЗначение("Нет", "ЦенаВподборе");
Пар.ДобавитьЗначение("Дата", "ТипГраницы");
Пар.ДобавитьЗначение(ДатаДок, "ЗначениеГраницы");
ОткрытьПодбор("Номенклатура", "ДляПодбора", Пар);
КонецПроцедуры // ПоКнопкеПодбор()
//******************************************************************************
Процедура ПриИзмененииНаценки()
ВремОпт = Закупочные + Закупочные*Наценка/100;
Оптовые = глПересчет(ВремОпт,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
// ПриИзмененииСкидки();
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииСкидки()
Если кнКалина = 1 Тогда
Возврат;
КонецЕсли;
ВремМин = Закупочные + Закупочные*Скидка/100;
Минимальные = глПересчет(ВремМин,ВалютаЗакупки,ДатаДок,ВалютаЗакупки,ДатаДок);
КонецПроцедуры
//******************************************************************************
Процедура Установить_скидку()
Если кнКалина = 1 Тогда
Возврат;
КонецЕсли;
НоваяСкидка = 0.5;
Если ВвестиЧисло(НоваяСкидка, "Введите минимальную скидку для пересчета",15,2) = 1 Тогда
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Скидка = НоваяСкидка;
ВремМин = Закупочные + Закупочные*НоваяСкидка/100;
Минимальные = глПересчет(ВремМин,ВалютаЗакупки,ДатаДок,ВалютаЗакупки,ДатаДок);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииВП()
Оптовые = глПересчет(Оптовые,СтарВалПрод,ДатаДок,ВалютаПродажи,ДатаДок);
Минимальные = глПересчет(Минимальные,СтарВалПрод,ДатаДок,ВалютаЗакупки,ДатаДок);
СтарВалПрод = ВалютаПродажи;
КонецПроцедуры
//******************************************************************************
Процедура ПриИзмененииВЗ()
Закупочные = глПересчет(Закупочные,СтарВалЗак,ДатаДок,ВалютаЗакупки,ДатаДок);
СтарВалЗак = ВалютаЗакупки;
КонецПроцедуры
//******************************************************************************
Процедура ЗаполнитьГруппу(Ном)
Если Выбран() = 0 Тогда
Записать();
КонецЕсли;
ДатЦен = ТекущийДокумент();
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрВал = СоздатьОбъект("Справочник.Валюты");
СпрНом.ИспользоватьРодителя(Ном);
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СпрНом.ЭтоГруппа() = 1 Тогда
Продолжить;
Иначе
НоваяСтрока();
Номенклатура= СпрНом.ТекущийЭлемент();
Закупочные = ПолучитьЦену(СпрНом,"Закупочные",ДатЦен,ВалютаЗакупки);
Оптовые = ПолучитьЦену(СпрНом,"Оптовые",ДатЦен,ВалютаПродажи);
// Закупочные = ПолучитьЦену(СпрНом,"Закупочные",ДатаДок,ВалютаЗакупки);
// Оптовые = ПолучитьЦену(СпрНом,"Оптовые",ДатаДок,ВалютаПродажи);
Вал = "";
ВремМин = ПолучитьЦену(СпрНом,"МинимальнаяПродажи",ДатЦен,Вал);
// ВремМин = ПолучитьЦену(СпрНом,"МинимальнаяПродажи",ДатаДок,Вал);
Минимальные = глПересчет(ВремМин,Вал,ДатаДок,ВалютаПродажи,ДатаДок);
Партнерские = ПолучитьЦену(СпрНом,"ПродажнаяДляПартнера",ДатЦен,Вал);
// Партнерские = ПолучитьЦену(СпрНом,"ПродажнаяДляПартнера",ДатаДок,Вал);
Партнерские = глПересчет(Партнерские,Вал,ДатаДок,ВалютаПродажи,ДатаДок);
КонецЕсли;
КонецЦикла;
СпрНом.ИспользоватьРодителя("");
РасчитатьСкидкиНаценки();
КонецПроцедуры
//******************************************************************************
// Предопределенная процедура
//
Процедура ОбработкаПодбора(ВыбЗнач, КонтФормыПодбора)
Если Выбран() = 0 Тогда
Записать();
КонецЕсли;
ДатЦен = ТекущийДокумент();
ВыбЗнач.ВыбратьСтроки();
Пока ВыбЗнач.ПолучитьСтроку() <> 0 Цикл
НоваяСтрока();
Номенклатура= ВыбЗнач.Номенклатура;
Закупочные = ПолучитьЦену(Номенклатура,"Закупочные",ДатЦен,ВалютаЗакупки);
Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",ДатЦен,ВалютаПродажи);
// Закупочные = ПолучитьЦену(Номенклатура,"Закупочные",ДатаДок,ВалютаЗакупки);
// Оптовые = ПолучитьЦену(Номенклатура,"Оптовые",ДатаДок,ВалютаПродажи);
Вал = "";
Минимальные = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",ДатЦен,ВалютаЗакупки);
// Минимальные = ПолучитьЦену(Номенклатура,"МинимальнаяПродажи",ДатаДок,Вал);
Минимальные = глПересчет(Минимальные,Вал,ДатаДок,ВалютаПродажи,ДатаДок);
Партнерские = ПолучитьЦену(Номенклатура,"ПродажнаяДляПартнера",ДатЦен,Вал);
// Партнерские = ПолучитьЦену(Номенклатура,"ПродажнаяДляПартнера",ДатаДок,Вал);
Партнерские = глПересчет(Партнерские,Вал,ДатаДок,ВалютаПродажи,ДатаДок);
КонецЦикла;
РасчитатьСкидкиНаценки();
КонецПроцедуры // ОбработкаПодбора()
//******************************************************************************
// предопределенная процедура
//
Процедура ПоКнопкеСформировать()
КонецПроцедуры
//******************************************************************************
// предопределенная процедура
//
Процедура ПересчитатьСкидкиНаценки()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Наценка = ?(срНаценка=0,Наценка,срНаценка);
Скидка = ?(срСкидка=0,Скидка,срСкидка);
ВремОптовые = Закупочные + Закупочные*Наценка/100;
ВремМинимальные = Закупочные + Закупочные*Скидка/100;
// Минимальные = Оптовые - Оптовые*срСкидка/100;
ВремПартнерские = Закупочные + Закупочные*Процент/100;
Оптовые = глПересчет(ВремОптовые,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
Если кнКалина = 0 Тогда
Минимальные = глПересчет(ВремМинимальные,ВалютаЗакупки,ДатаДок,ВалютаЗакупки,ДатаДок);
КонецЕсли;
Партнерские = глПересчет(ВремПартнерские,ВалютаЗакупки,ДатаДок,ВалютаПродажи,ДатаДок);
КонецЦикла;
КонецПроцедуры
//******************************************************************************
// предопределенная процедура
//
Процедура ВводНового(Скопирован)
УстановитьНовыйНомер("Фц"+ СокрЛП( Константа.ПрефиксИБ) + СокрЛП( ЮрЛицо.ПрефиксНомеровДокументов));
Если Скопирован = 1 Тогда
Возврат;
КонецЕсли;
Парам = Форма.Параметр;
Автор = глПользователь;
Процент = 1;
Если ТипЗначенияСтр(Парам) = "Справочник" Тогда
ЗаполнитьГруппу(Парам);
КонецЕсли;
РасчитатьСкидкиНаценки();
Валюта = глРубли;
КонецПроцедуры
Процедура ПриИзмененииГлобВалЗак()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если ПустоеЗначение(ВалютаЗакупки) = 1 Тогда
ВалютаЗакупки = ГлобВалЗак;
Продолжить;
КонецЕсли;
Закупочные = глПересчет(Закупочные,ВалютаЗакупки,ДатаДок,ГлобВалЗак,ДатаДок);
ВалютаЗакупки = ГлобВалЗак;
КонецЦикла;
КонецПроцедуры
Процедура ПриИзмененииГлобВалПрод()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если ПустоеЗначение(ВалютаПродажи) = 1 Тогда
ВалютаПродажи = ГлобВалПрод;
Продолжить;
КонецЕсли;
Оптовые = глПересчет(Оптовые,ВалютаПродажи,ДатаДок,ГлобВалПрод,ДатаДок);
Минимальные = глПересчет(Минимальные,ВалютаЗакупки,ДатаДок,ГлобВалПрод,ДатаДок);
Партнерские = глПересчет(Партнерские,ВалютаПродажи,ДатаДок,ГлобВалПрод,ДатаДок);
ВалютаПродажи = ГлобВалПрод;
КонецЦикла;
КонецПроцедуры
//******************************************************************************
// предопределенная процедура
//
Процедура ПриНачалеРедактированияСтроки()
СтарВалЗак = ВалютаЗакупки;
СтарВалПрод = ВалютаПродажи;
КонецПроцедуры
//******************************************************************************
// предопределенная процедура
//
Процедура ПриОткрытии()
ПеренестиВНачалоДняПриИзмененииДаты = 0;
Форма.Номенклатура .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.Закупочные .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.Наценка .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.Оптовые .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.Скидка .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.Минимальные .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.ВалютаПродажи .ВыполнятьФормулуТолькоПриИзменении(1);
Форма.ВалютаЗакупки .ВыполнятьФормулуТолькоПриИзменении(1);
глПроверкаРазрешенияРедактирования(Контекст);
// Если открыли только на просмотр, то надо кнопки сделать недоступными
Если Форма.ТолькоПросмотр()=1 Тогда
Форма.кнПодбор.Доступность(0);
Форма.кнЗаполнить.Доступность(0);
//Форма.кнСформировать.Доступность(0);
КонецЕсли;
Форма.КнопкаПоУмолчанию("кнЗакрыть");
Если Выбран() = 0 Тогда
Записать();
КонецЕсли;
ДатЦен = ТекущийДокумент();
//РасчитатьСкидкиНаценки();
// Процент = 1;
КонецПроцедуры // ПриОткрытии()
Процедура ПриЗаписи()
глПроверкаТА(Контекст);
Если ДатаДок>ТекущаяДата() Тогда
АвтоВремяНачалоДня();
ИначеЕсли ПеренестиВНачалоДняПриИзмененииДаты = 1 Тогда
АвтоВремяНачалоДня();
КонецЕсли;
КонецПроцедуры
Функция ВычислитьСебестоимость()
ТЦена = 0;
Если глВернутьЦену(Номенклатура,Зак,ДатаДок,ТЦена) = 1 Тогда
КонецЕсли;
Возврат ТЦена;
КонецФункции
ТекТип = СоздатьОбъект("Справочник.ТипыЦен");
ТаблИтогов = СоздатьОбъект("ТаблицаЗначений");
РегПарт = СоздатьОбъект("Регистр.ПартииНаличие");
глФирма = глЗначениеПоУмолчанию("ОсновнаяФирма");
Процент = 0.5;
кнКалина = 0;
СпрТЦен = СоздатьОбъект("Справочник.ТипыЦен");
СпрТЦен.НайтиПоКоду("Цб007"); //Зак.
Зак = СпрТЦен.ТекущийЭлемент();