Перем ТекущееСвойство, ТекущийЭлементТЗ;
Перем ТаблицаПечФорм; // список печатных форм документа
Перем НомерТекущейФормы;
Перем ПозДоговора,СписокВидовПродаж,СтарСотояние,СтарСклад,БудетПечататьсяУведомление,
ФРМ,СписокОткрытыхВеток,ФормаРасш,Сервис;
Процедура ПриИзмененииСкидки() Далее
Процедура Платеж(ТекРеж) Далее
Процедура Уведомление(Реж) Далее
Процедура УправлениеВидимостью() Далее
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
//******************************************************************************
// ОбновитьДерево()()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура ОбновитьДерево()
ФРМ.ОбновитьДерево();
Для Инд=1 По СписокОткрытыхВеток.РазмерСписка() Цикл
ФРМ.РазвернутьУзел(СписокОткрытыхВеток.ПолучитьЗначение(Инд));
КонецЦикла;
КонецПроцедуры
//******************************************************************************
Процедура ПриВыбореСклада(Реж)
Если Реж = 1 Тогда
Если Склад.Выбран()=1 Тогда
Если Склад.ПроцентПредоплаты = 0 Тогда
Предупреждение("У склада не заполнен реквизит процент предоплаты!",60);
Возврат;
КонецЕсли;
ПроцентАванса = Склад.ПроцентПредоплаты;
Платеж(1);
КонецЕсли;
Иначе
Если СтарСклад<>Склад Тогда
СтарСклад = Склад;
Если Склад.Выбран()=1 Тогда
Если Вопрос("Изменился склад пересчитать размер авансового платежа?","Да+Нет",60)="Да" Тогда
Если Склад.ПроцентПредоплаты = 0 Тогда
Предупреждение("У склада не заполнен реквизит процент предоплаты!",60);
Возврат;
КонецЕсли;
ПроцентАванса = Склад.ПроцентПредоплаты;
Платеж(1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ПроставитьДатуОплаты()
Если ВидПродажи = Перечисление.ВидПродаж.БыстаяПродажа Тогда
ДатаОплаты=?(ПустоеЗначение(ДатаСчета)=0,ДатаСчета,ПолучитьПустоеЗначение("Дата"));
Если ПустоеЗначение(ДатаОплаты)=0 Тогда
Если ПустоеЗначение(ДатаАванса)=1 Тогда
ДатаАванса = ДатаОплаты;
КонецЕсли;
КонецЕсли;
Иначе
ДатаОплаты=?(ПустоеЗначение(ДатаСчета)=0,ДатаСчета+5,ПолучитьПустоеЗначение("Дата"));
Если ПустоеЗначение(ДатаОплаты)=0 Тогда
Если ПустоеЗначение(ДатаАванса)=1 Тогда
ДатаАванса = ДатаОплаты;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Вопрос("Пересчитать сумму авансового платежа согласно проценту, в карточке склада?","Да+Нет",60)="Да" Тогда
ПриВыбореСклада(1);
КонецЕсли;
КонецПроцедуры
Функция ВернутьСуммуНДС()
СС = 0;
Если СуммаВклНДС=0 Тогда
ВыбратьСтроки();
Пока ПОлучитьСтроку()=1 Цикл
БазаНалога=Сумма;
СтавкаНДС1 =?(УчитыватьНДС=1,СтавкаНДС,Перечисление.СтавкиНДС.БезНДС);
Если СуммаВклНДС=1 Тогда
СуммаНДС1=БазаНалога*глВыделяемыйНДС(СтавкаНДС1);//0.1667, 0.16666(6),...
Иначе
СуммаНДС1=БазаНалога*глНачисляемыйНДС(СтавкаНДС1);//0.20, 0.20004...
КонецЕсли;
СС = СС+СуммаНДС1;
КонецЦикла;
КонецЕсли;
Возврат СС;
КонецФункции
Функция ВернутьПроцент()
ЕдВПр = (Итог("Сумма")+ВернутьСуммуНДС())/100;
СкидкаПП = (Итог("Сумма")+ВернутьСуммуНДС())-(Итог("СуммаСоСкидкой")+?(СуммаВклНДС=1,0,Итог("СуммаНДС")));
Про = СкидкаПП/?(ЕдВПр=0,1,ЕдВПр);
Возврат глФРМ(Про);
КонецФункции
//******************************************************************************
// ИзменитьДатуОплаты()()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура ИзменитьДатуОплаты()
Если ПустоеЗначение(ДатаОплаты)=0 Тогда
Если ПустоеЗначение(ДатаАванса)=1 Тогда
ДатаАванса = ДатаОплаты;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ИзменитьДатуОплаты()()
//******************************************************************************
Функция ТекстЗаголовка()
Если ВидПродажи = Перечисление.ВидПродаж.БыстаяПродажа Тогда
Возврат "Коммерческое предложение по быстрой продаже №";
ИначеЕсли ВидПродажи = Перечисление.ВидПродаж.ПродажаСоСклада Тогда
Возврат "Коммерческое предложение по продаже со склада №";
ИначеЕсли ВидПродажи = Перечисление.ВидПродаж.ПодЗаказ Тогда
Возврат "Коммерческое предложение по продаже под заказ №";
Иначе
Возврат "Коммерческое предложение №";
КонецЕсли;
КонецФункции
Процедура ПриВыбореТовара()
Код=Номенклатура.Код;
Длина=Номенклатура.Длина;
Ширина=Номенклатура.Ширина;
Высота=Номенклатура.Высота;
Вес=Номенклатура.Вес;
Мощность=Номенклатура.Мощность;
Описание1=Номенклатура.Описание;
Напряжение =Номенклатура.Напряжение;
Если ПустоеЗначение(ТипЦен)=0 Тогда
Если глВернутьЦену(Номенклатура, ТипЦен, ДатаДок, Цена, Единица,ТипЦен.Валюта) = 1 Тогда
Если Единица.Коэффициент <> Коэффициент Тогда
Если Единица.Коэффициент <> 0 Тогда
Цена = (Цена * Коэффициент) / Единица.Коэффициент;
КонецЕсли;
КонецЕсли;
глПересчитатьЦенуВДокументе(Контекст, 0, УчитыватьНДС, Цена, ТипЦен.Валюта, ТипЦен.ЦенаВклНП, ТипЦен.ЦенаВклНДС);
СпрЦ=СоздатьОбъект("Справочник.Цены");
ПерВал=СоздатьОбъект("Периодический");
СпрЦ.ИспользоватьВладельца(Номенклатура);
Если СпрЦ.НайтиПоРеквизиту("ТипЦен",ТипЦен,0)=0 Тогда
ДатаЦены = ПолучитьПустоеЗначение("Дата");
Иначе
ПерВал.ИспользоватьОбъект("Цена",СпрЦ.ТекущийЭлемент());
ПерВал.ОбратныйПорядок();
ПерВал.ВыбратьЗначения();
Пока ПерВал.ПолучитьЗначение()=1 Цикл
ДатаЦены = ПерВал.ДатаЗнач;
Прервать;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Иначе
Цена = 0;
КонецЕсли;
Количество = ?(Количество=0,1,Количество);
глПересчетТаблЧасти(Контекст,"Цена");
Если ПустоеЗначение(ОбщаяСкидка)=0 Тогда
Скидка = ОбщаяСкидка;
КонецЕсли;
ПриИзмененииСкидки();
КонецПроцедуры
Процедура ПередатьКонтакт()
Спр=СоздатьОбъект("Справочник.Пользователи");
Спр.НайтиЭлемент(глПользователь);
Если Спр.Выбрать("Кому передать в работу ?",)=1 Тогда
Записать();
// Дальше есть 2 варианта - либо юзер в онлайне, либо нет
// Сначала попробуем задействовать синхронизатор для открытия у него формы
Если глКомандаПользователю(Спр.ТекущийЭлемент(),ТекущийДокумент())=0 Тогда
Если Вопрос("Пользователь не отвечает !
|Оставить ему напоминание ?","Да+Нет")<>"Да" Тогда
Возврат;
КонецЕсли;
КонецЕсли;
// Если он в офлайне, то пошлем ему напоминание
Док=СоздатьОбъект("Документ.я_Напоминание");
Док.Новый();
Док.Автор = глПользователь;
Док.Кому=Спр.ТекущийЭлемент();
Док.Тема="Передан в работу: """+ТекущийДокумент()+ " " +Контрагент+"""";
Док.ДокОснование=ТекущийДокумент();
Док.Приоритет=Перечисление.я_Приоритет.Нормальный;
Док.СостояниеДокумента=Перечисление.я_Состояние.Запланировано;
Док.ДатаОповещения=РабочаяДата();
Док.ВремяОповещения=ТекущееВремя();
Док.РеальнаяДатаОповещения = глДатаВремя(, РабочаяДата(), ТекущееВремя());
Док.Описание=""+РабочаяДата()+" в "+ТекущееВремя()+"
|сотрудником "+глПользователь+"
|Коммерческое предложение №"+НомерДок+" от "+ДатаДок+"
|было передано сотруднику "+Спр.ТекущийЭлемент();
Док.Записать();
Док.Провести();
КонецЕсли;
Форма.Закрыть();
КонецПроцедуры // ПередатьКонтакт
Процедура ПриИзмененииСкидки()
ЦенаСоСкидкой=Цена-(Цена/100*Скидка.Процент);
СуммаСоСкидкой=ЦенаСоСкидкой*Количество;
КонецПроцедуры
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
//******************************************************************************
// Печать(СразуНаПринтер, КолЭкз)
//
// Параметры:
// СразуНаПринтер - (1) если печать на принтер, (0) - с предварительным просмотром
// КолЭкз - количество экземпляров печати
//
// Возвращаемое значение:
// нет.
//
// Описание:
//
Процедура Печать(СразуНаПринтер = 0,КолЭкз = 1)
Перем Значение;
// инициализация таблицы
Заголовок = глПредставлениеВидаДокумента(Контекст, 0, 1);
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
Скидка = "";
СекцСкидка = ?(ПустоеЗначение(Скидка) = 0, "Скидка", "");
// Секция Шапка таблицы
Таб.ВывестиСекцию("ШапкаТаблицы" + СекцСкидка);
Таб.ПовторятьПриПечатиСтроки(7, 9);
// выводим табличную часть
НомСтроки = 0;
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
НомСтроки = НомСтроки + 1;
Таб.ВывестиСекцию("Строка" + СекцСкидка);
КонецЦикла;
СуммаИтог = Итог("Сумма");
// секция Итого
Таб.ВывестиСекцию("Итого");
// секция ИтогоНДС
Если УчитыватьНДС = 1 Тогда
СуммаНДСИтог = Итог("СуммаНДС");
Если СуммаВклНДС = 0 Тогда
СуммаИтог = СуммаИтог + СуммаНДСИтог;
КонецЕсли;
Таб.ВывестиСекцию("ИтогоНДС");
КонецЕсли;
// секция СуммаПрописью
Таб.ВывестиСекцию("СуммаПрописью");
// секция Подписи
Таб.ВывестиСекцию("Подписи");
Если СразуНаПринтер = 0 Тогда
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(1);
Таб.Опции(0,0,0,0,"ОпцийПечатиКомерческоеПредложение","СохрРазмОкнаКомерческоеПредложение");
Таб.Показать(Заголовок);
Иначе
Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
Таб.КоличествоЭкземпляров(КолЭкз);
Таб.Напечатать(0);
КонецЕсли;
КонецПроцедуры // Печать()
//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
// Нет
//
// Описание:
// Вызывается по кнопке "Печать"
//
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
Если ПустоеЗначение(НомерТекущейФормы) = 1 Тогда
НомерТекущейФормы = 1;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
КонецЕсли;
Если НомерТекущейФормы = 1 Тогда
Печать(СразуНаПринтер, КолЭкз);
ИначеЕсли НомерТекущейФормы = 2 Тогда
БудетПечататьсяУведомление = 1;
Уведомление(0);
Иначе
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(глВернутьКонтекст(Контекст), "Контекст");
Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
ОткрытьФорму("Отчет", Параметры, КаталогИБ()+"ExtForms\PrnForms\"+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
КонецЕсли;
ПроставитьДатуОплаты();
КонецПроцедуры // ПоКнопкеПечать()
//******************************************************************************
// ПоКнопкеВыборПечатнойФормы()
//
// Параметры:
// нет.
//
// Возвращаемое значение:
// нет.
//
// Описание:
// - открывает список для выбора способа печати.
// - формирует таблицу по выбранному способу.
//
Процедура ПоКнопкеВыборПечатнойФормы()
ВыбНомер = глВыборПечатнойФормыОб("Документ." + Вид(), ТаблицаПечФорм);
Если ВыбНомер > 0 Тогда
НомерТекущейФормы = ВыбНомер;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
ПоКнопкеПечать();
КонецЕсли;
КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()
//******************************************************************************
Процедура ОформитьТабло()
Перем ДеревоТабло[20];
//Нужные таблицы
ВремТабло = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ВремТабло);
ВремТабло.УдалитьКолонку(1);
ВремТабло.Сортировать("Цех");
ЦехСр = "";
НСтр = 0;
НомерДерева = 0;
ВремТабло.ВыбратьСтроки();
Пока ВремТабло.ПолучитьСтроку() = 1 Цикл
НСтр = НСтр + 1;
Если ЦехСр <> ВремТабло.Цех Тогда
Если ЦехСр <> "" Тогда
Табло.УстановитьЗначение(Табло.КоличествоСтрок(),"Дерево",ДеревоТабло[НомерДерева]);
КонецЕсли;
Табло.НоваяСтрока();
НомерДерева = НомерДерева + 1;
ДеревоТабло[НомерДерева]= СоздатьОбъект("ТаблицаЗначений");
ДеревоТабло[НомерДерева].Загрузить(Табло);
ДеревоТабло[НомерДерева].УдалитьСтроки();
Табло.НомерПиктограммы = 2;
Табло.НаименованиеВетви = ВремТабло.Цех;
Табло.FormEx_ПланРаскраски = "BRUSH[65535]INDENT[-1]";
ЦехСр = ВремТабло.Цех;
//Инд = 4;
//Для Инд=4 По ВремТабло.КоличествоКолонок() Цикл
// Табло.УстановитьЗначение(Табло.КоличествоСтрок(),Инд,"");
//КонецЦикла;
КонецЕсли;
ДеревоТабло[НомерДерева].НоваяСтрока();
ДеревоТабло[НомерДерева].НомерПиктограммы = 3;
ДеревоТабло[НомерДерева].НаименованиеВетви = ВремТабло.Номенклатура;
Инд = 1;
Для Инд=1 По ВремТабло.КоличествоКолонок() Цикл
ДеревоТабло[НомерДерева].УстановитьЗначение(ДеревоТабло[НомерДерева].КоличествоСтрок(),Инд+4,ВремТабло.ПолучитьЗначение(НСтр,Инд));
КонецЦикла;
КонецЦикла;
Табло.УстановитьЗначение(Табло.КоличествоСтрок(),"Дерево",ДеревоТабло[НомерДерева]);
УправлениеВидимостью();
Табло.ВидимостьКолонки(4,0);
Табло.ВидимостьКолонки("Номенклатура",0);
Табло.ВидимостьКолонки("Цех",0);
КонецПроцедуры
//******************************************************************************
Процедура ПослеСозданияФормы()
ФРМ = СоздатьОбъект("АтрибутФормы");
Сервис = СоздатьОбъект("Сервис");
ФормаРасш = СоздатьОбъект("РасширениеФормы");
//Структура таблицы
ВыгрузитьТабличнуюЧасть(Табло);
Табло.УдалитьКолонку(1);
Табло.ВставитьКолонку("Дерево",1,"ТаблицаЗначений");
Табло.ВставитьКолонку("НомерПиктограммы",2);
Табло.ВставитьКолонку("НаименованиеВетви",3,,,,"Цех/Номенклатура");
Табло.ВставитьКолонку("FormEx_ПланРаскраски",4);
Табло.УдалитьСтроки();
ОформитьТабло();
ФормаРасш.РаскрашиватьТаблицу("Табло");
Сервис.ИспользоватьПланРаскраски(1);
ФРМ.УстановитьАтрибут(Форма,"Табло");
//ФРМ.ПерехватитьТаблицуЗначений();
//ФРМ.ОпцииДерева(,,0,2);
//расоложние колонок
//ФормаРасш.ПоложениеКолонкиТаблицы("Табло",0,0);
//ФормаРасш.ПоложениеКолонкиТаблицы("Табло",1,0);
//ФормаРасш.ПоложениеКолонкиТаблицы("Табло",2,0);
//ФормаРасш.ПоложениеКолонкиТаблицы("Табло",3,0);
КонецПроцедуры
//******************************************************************************
Процедура ПослеОткрытия()
ФормаРасш.ПоложениеКолонкиТаблицы("Табло",0,0);
ФормаРасш.ПоложениеКолонкиТаблицы("Табло",1,0);
ФормаРасш.ПоложениеКолонкиТаблицы("Табло",2,0);
ФормаРасш.ПоложениеКолонкиТаблицы("Табло",3,0);
ФормаРасш.ПоложениеКолонкиТаблицы("Табло",4,2);
Табло.НоваяКолонка();
Табло.УдалитьКолонку(Табло.КоличествоКолонок());
//ОбновитьДерево();
ФРМ.ПерехватитьТаблицуЗначений();
ФРМ.ОпцииДерева(,,0,2);
КонецПроцедуры
//_____________________________________________________________________________
Процедура ВводНаОсновании(ДокументОснование)
глВводНаОснованииМоя(Контекст,ДокументОснование);
Табличка = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(Табличка);
ОткрытьФормуМодально("Обработка.РаспределениеПоЦехам",Табличка);
УдалитьСтроки();
Н = 0;
Табличка.ВыбратьСтроки();
Пока Табличка.ПолучитьСтроку() = 1 Цикл
Н = Н + 1;
Табличка.УстановитьЗначение(Н,1,Н);
КонецЦикла;
ЗагрузитьТабличнуюЧасть(Табличка);
//ОформитьТабло();
КонецПроцедуры
//_____________________________________________________________________________
Процедура ЗаполнитьСвойства()
Перем СтрокаТЗ;
Если (ПустоеЗначение(ТекущийЭлементТЗ) = 1) и (ТЗСвойства.ТекущаяСтрока() > 0) Тогда
ТекущийЭлементТЗ = ТЗСвойства.Элемент;
КонецЕсли;
ТЗСвойства.УдалитьСтроки();
Спр=СоздатьОбъект("Справочник.я_Служебный");
Спр.ВыбратьЭлементыПоРеквизиту("ДокОснование", ТекущийДокумент(),,);
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если ПустоеЗначение(Спр.Реквизит) = 1 Тогда
ТЗСвойства.НоваяСтрока();
ТЗСвойства.Пикт = ?(Спр.ПометкаУдаления()=1,12,14);
ТЗСвойства.Элемент=Спр.ТекущийЭлемент();
ТЗСвойства.ВидСвойства=Спр.ВидСвойства;
ТЗСвойства.ЗначениеСвойства=Спр.ЗначениеСвойства;
КонецЕсли;
КонецЦикла;
ТЗСвойства.Сортировать("+ВидСвойства",);
глУстановитьТекущуюСтрокуТЗ(ТЗСвойства, ТекущийЭлементТЗ);
КонецПроцедуры //ЗаполнитьСвойства
//_____________________________________________________________________________
Процедура ДоступностьЭлементов(Режим = 0)
Если Форма.Закладки.ТекущаяСтрока() = 1 Тогда
Если СостояниеДокумента = Перечисление.я_Состояние.Отменено Тогда
Форма.тПричинаОтказа.Видимость(1);
Форма.ПричинаОтказаСтр.Видимость(1);
Форма.кнXПричинаОтказаСтр.Видимость(1);
Иначе
Форма.тПричинаОтказа.Видимость(0);
Форма.ПричинаОтказаСтр.Видимость(0);
Форма.кнXПричинаОтказаСтр.Видимость(0);
КонецЕсли;
КонецЕсли;
// Форма.СуммаНДС.Заголовок(?(СуммаВклНДС=1,"в т.ч. НДС","Сумма НДС"));
// Форма.СуммаНДС .Видимость(УчитыватьНДС);
// Форма.СтавкаНДС .Видимость(УчитыватьНДС);
Если СостояниеДокумента = Перечисление.я_Состояние.Завершено Тогда
Если НазваниеНабораПрав()<>"Администратор" Тогда
Форма.ТолькоПросмотр(1);
Форма.кнНовый.Доступность(0);
Форма.кнКопировать.Доступность(0);
Форма.кнОчистить.Доступность(0);
Форма.кнВверх.Доступность(0);
Форма.кнВниз.Доступность(0);
Форма.кнЗаполнить.Доступность(0);
Форма.кнПодбор.Доступность(0);
Форма.кнЦены.Доступность(0);
Форма.Прцены.Доступность(0);
Форма.ПечатьДоговора.Доступность(0);
КонецЕсли;
ИначеЕсли СостояниеДокумента = Перечисление.я_Состояние.КОплате Тогда
Если НазваниеНабораПрав()<>"Администратор" Тогда
Форма.кнНовый.Доступность(0);
Форма.кнКопировать.Доступность(0);
Форма.кнОчистить.Доступность(0);
Форма.кнВверх.Доступность(0);
Форма.кнВниз.Доступность(0);
Форма.кнЗаполнить.Доступность(0);
Форма.кнПодбор.Доступность(0);
Форма.кнЦены.Доступность(0);
Форма.Прцены.Доступность(0);
//таб часть
//Форма.Номенклатура.Доступность(0);
//Форма.Количество.Доступность(0);
//Форма.Единица.Доступность(0);
//Форма.Коэффициент.Доступность(0);
//Форма.Цена.Доступность(0);
//Форма.Сумма.Доступность(0);
//Форма.СтавкаНДС.Доступность(0);
//Форма.СуммаНДС.Доступность(0);
//Форма.Код.Доступность(0);
//Форма.СрокПоставки.Доступность(0);
//Форма.Длина.Доступность(0);
//Форма.Ширина.Доступность(0);
//Форма.Высота.Доступность(0);
//Форма.Вес.Доступность(0);
//Форма.Мощность.Доступность(0);
//Форма.Скидка.Доступность(0);
//Форма.ЦенаСоСкидкой.Доступность(0);
//Форма.СуммаСоСкидкой.Доступность(0);
//Форма.Описание1.Доступность(0);
//Форма.НомерПоРасстановке.Доступность(0);
//Форма.Каркас.Доступность(0);
//Форма.ЦветКаркаса.Доступность(0);
//Форма.Материал.Доступность(0);
//Форма.ЦветМатериала.Доступность(0);
//Форма.ЦветПодстолья.Доступность(0);
//Форма.ВариантЦоколя.Доступность(0);
//Форма.ЦветЦоколя.Доступность(0);
//Форма.ЦветПодлокотника.Доступность(0);
//Форма.Напряжение.Доступность(0);
//Форма.Подстолье.Доступность(0);
//Форма.СтавкаНП.Доступность(0);
КонецЕсли;
КонецЕсли;
КонецПроцедуры //ДоступностьЭлементов
//_____________________________________________________________________________
Процедура ПриВыбореСостояния()
Если ПустоеЗначение(ДатаИсполнения)=1 Тогда
Если СостояниеДокумента = Перечисление.я_Состояние.Завершено Тогда
Предупреждение("Не заполнена дата исполнения!",60);
СостояниеДокумента = СтарСотояние;
Возврат;
КонецЕсли;
КонецЕсли;
ДоступностьЭлементов();
КонецПроцедуры //ПриВыбореСостояния
//_____________________________________________________________________________
Процедура ВводНового(Копирование) //предопределенная
глДокументПриСоздании(Контекст, Копирование);
Если Копирование = 1 Тогда
Возврат;
КонецЕсли;
//+ТиС
глЗаполнитьШапку(Контекст, Копирование);
//-ТиС
глЗаполнитьРеквизитыПоУмолчанию(Контекст);
ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Оборудование;
ДатаОплаты = "";
Время = ТекущееВремя();
КонецПроцедуры //ВводНового
//_____________________________________________________________________________
// Предопределенная процедура.
//
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
Перем СтрокаСЗ;
Форма.ИспользоватьСлой(ЗначениеЗакладки, 2);
ДоступностьЭлементов();
Форма.Закладки.ПолучитьЗначение(Форма.Закладки.ТекущаяСтрока(), СтрокаСЗ);
Если СтрокаСЗ = "Свойства" Тогда
глПерехватКлавиш(Контекст, 1);
Иначе
глПерехватКлавиш(Контекст, 0);
КонецЕсли;
КонецПроцедуры // ПриВыбореЗакладки()
//_____________________________________________________________________________
Процедура ПриЗакрытии()
глПерехватКлавиш(Контекст, 0);
глПриЗакрытииДокумента(Контекст,"ТЗДокументы");
КонецПроцедуры
//_____________________________________________________________________________
Процедура ПриУдаленииСтроки()
Ответ=Вопрос("Удалить строку??!",1,30);
Если Ответ=2 Тогда
СтатусВозврата(0);
ИначеЕсли Ответ=-1 Тогда
СтатусВозврата(0);
КонецЕсли;
глДокументПриУдаленииСтроки(Контекст);
КонецПроцедуры
//_____________________________________________________________________________
Процедура ПриЗаписи()
глДокументПриЗаписи(Контекст);
Ошибка = "";
Если ПустоеЗначение(Контрагент)=1 Тогда
Ошибка = ?(Ошибка="","Не выбран контрагент",Ошибка+РазделительСтрок+"Не выбран контрагент");
КонецЕсли;
Если ПустоеЗначение(Договор)=1 Тогда
Ошибка = ?(Ошибка="","Не выбран договор",Ошибка+РазделительСтрок+"Не выбран договор");
КонецЕсли;
Если ПустоеЗначение(Приоритет)=1 Тогда
Ошибка = ?(Ошибка="","Не выбран приоритет",Ошибка+РазделительСтрок+"Не выбран приоритет");
КонецЕсли;
//Если ПустоеЗначение(КолДней)=1 Тогда
// Ошибка = ?(Ошибка="","Не выбрано количество дней",Ошибка+РазделительСтрок+"Не выбрано количество дней");
//КонецЕсли;
//Если ПустоеЗначение(ДатаИсполнения)=1 Тогда
// Ошибка = ?(Ошибка="","Не выбрана дата исполнения",Ошибка+РазделительСтрок+"Не выбрана дата исполнения");
//КонецЕсли;
Если ПустоеЗначение(СостояниеДокумента)=1 Тогда
Ошибка = ?(Ошибка="","Не выбрано состояние документа",Ошибка+РазделительСтрок+"Не выбрано состояние документа");
КонецЕсли;
Если ПустоеЗначение(Проект)=1 Тогда
Ошибка = ?(Ошибка="","Не выбран проект",Ошибка+РазделительСтрок+"Не выбран проект");
КонецЕсли;
Если ПустоеЗначение(Склад)=1 Тогда
Ошибка = ?(Ошибка="","Не выбран склад",Ошибка+РазделительСтрок+"Не выбран склад");
КонецЕсли;
//Если ПустоеЗначение(ВидОплаты)=1 Тогда
// Ошибка = ?(Ошибка="","Не выбран вид оплаты",Ошибка+РазделительСтрок+"Не выбран вид оплаты");
//КонецЕсли;
//Если ПустоеЗначение(ВидДокумента)=1 Тогда
// Ошибка = ?(Ошибка="","Не выбран вид документа",Ошибка+РазделительСтрок+"Не выбран вид документа");
//КонецЕсли;
Если ПустоеЗначение(ДокОснование)=1 Тогда
Ошибка = ?(Ошибка="","Нет документа основания",Ошибка+РазделительСтрок+"Нет документа основания");
КонецЕсли;
Если ПустоеЗначение(ВидПродажи)=1 Тогда
Ошибка = ?(Ошибка="","Невыбран вид продажи",Ошибка+РазделительСтрок+"Невыбран вид продажи");
КонецЕсли;
Если Ошибка<>"" Тогда
Предупреждение(Ошибка,60);
СтатусВозврата(0);
КонецЕсли;
Если ПустоеЗначение(ПричинаОтказаСтр) = 0 Тогда
СпрПричиныОтказа = СоздатьОбъект("Справочник.я_ПричиныОтказа");
Если СпрПричиныОтказа.НайтиПоНаименованию(СокрЛП(ПричинаОтказаСтр),0,0) = 0 Тогда
СпрПричиныОтказа.Новый();
СпрПричиныОтказа.Наименование = СокрЛП(ПричинаОтказаСтр);
СпрПричиныОтказа.Записать();
КонецЕсли;
ПричинаОтказа = СпрПричиныОтказа.ТекущийЭлемент();
Иначе
ПричинаОтказа = "";
КонецЕсли;
КонецПроцедуры
//******************************************************************************
// ЗаполнитьИзТерминала()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// заполняет спецификацию документа из терминала сбора данных
//
Функция ЗаполнитьИзТерминала()
Перем ТермДанные;
Перем УдаляемыеСтроки;
Перем ВремНоменклатура, ВремЕдиница, ВремКолво;
Перем ЦенаТов, ЕдиницаЦены;
// 1. загружаем данные из терминала
Если глТерминалЗагрузитьДанные(ТермДанные) = 0 Тогда
Возврат "";
КонецЕсли;
// 2. преобразуем таблицу, полученную из обработки терминала в формат для
// передачи в процедуру обработки подбора
ТермДанные.НоваяКолонка("Номенклатура");
ТермДанные.НоваяКолонка("Единица");
ТермДанные.НоваяКолонка("Цена", "Число",);
УдаляемыеСтроки = СоздатьОбъект("СписокЗначений");
ТермДанные.ВыбратьСтроки();
Пока ТермДанные.ПолучитьСтроку() = 1 Цикл
Если глПолучитьТоварПоШтрихкоду(ТермДанные.Штрихкод, ВремНоменклатура, ВремЕдиница, ВремКолво) = 0 Тогда
// штрихкод не найден. сохраним номер строки для дальнейшего ее удаления
УдаляемыеСтроки.ДобавитьЗначение(ТермДанные.НомерСтроки);
Иначе
ТермДанные.Номенклатура = ВремНоменклатура;
ТермДанные.Единица = ВремЕдиница;
ТермДанные.Количество = ТермДанные.Количество * ВремКолво;
ТермДанные.Цена = глПолучитьЦену(ВремНоменклатура, ТипЦен, ДатаДок, ВремЕдиница, Валюта, Курс);
КонецЕсли;
КонецЦикла;
// 3. удалим строки, по которым не удалось идентифицировать товар
Для СчетчикЦикла = 1 По УдаляемыеСтроки.РазмерСписка() Цикл
УдСтр = УдаляемыеСтроки.ПолучитьЗначение(СчетчикЦикла);
ТермДанные.УдалитьСтроку(УдСтр - СчетчикЦикла + 1);
КонецЦикла;
ТермДанные.Свернуть("Номенклатура, Единица, Цена", "Количество");
ПараметрыПодбора = СоздатьОбъект("СписокЗначений");
ПараметрыПодбора.ДобавитьЗначение(0 , "ЕстьВидТМЦ");
ПараметрыПодбора.ДобавитьЗначение("ИзСправочника", "ЦенаВподборе");
ПараметрыПодбора.ДобавитьЗначение(ТипЦен , "ТипЦен");
ПараметрыПодбора.ДобавитьЗначение(ТермДанные , "ТаблицаПодбора");
глОбработкаПодбора(Контекст, ПараметрыПодбора, 1, 1, 1);
// 4. Спросим про очистку памяти терминала
Если Вопрос("Очистить память терминала сбора данных?", "Да+Нет", 60) = "Да" Тогда
глТерминалОчиститьПамять();
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ПриВыбореТовара();
КонецЦикла;
Возврат "";
КонецФункции // ЗаполнитьИзТерминала()
//_____________________________________________________________________________
Функция ПриВыбореЗначения(Об="", ДопПарам="")
Перем ВариантЗап;
Если Об="" Тогда
Об=Форма.АктивныйЭлемент();
КонецЕсли;
Если (Об = "кнДобавитьСвойство") или
(Об = "кнИзменитьСвойство") или
(Об = "кнУдалитьСвойство") или
(Об = "кнКопироватьСвойство") Тогда
Если Выбран() = 0 Тогда
Если Вопрос("Документ еще не записан. Записать?", "Да+Нет") = "Да" Тогда
ПриЗаписи();
Если СтатусВозврата() <> 0 Тогда
Если Записать() = 0 Тогда
Возврат 1;
КонецЕсли;
Иначе
Возврат 1;
КонецЕсли;
Иначе
Возврат 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Об="кнДобавитьСвойство" Тогда
глДобавитьИзменитьСвойство(Контекст,,,"Документ_я_КоммерческоеПредложение");
ИначеЕсли Об="кнИзменитьСвойство" Тогда
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
ТекущееСвойство = ТЗСвойства.Элемент;
глДобавитьИзменитьСвойство(Контекст,ТЗСвойства.ВидСвойства,ТЗСвойства.ЗначениеСвойства,"Документ_я_КоммерческоеПредложение");
КонецЕсли;
ИначеЕсли Об="кнКопироватьСвойство" Тогда
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
ТекущийЭлементТЗ = глКопироватьСвойство(ТЗСвойства.ПолучитьЗначение(ТЗСвойства.ТекущаяСтрока(),"Элемент"), ТекущийДокумент());
ЗаполнитьСвойства();
КонецЕсли;
ИначеЕсли Об="кнУдалитьСвойство" Тогда
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
ТекущийЭлементТЗ = глУдалитьСвойство(ТЗСвойства.ПолучитьЗначение(ТЗСвойства.ТекущаяСтрока(),"Элемент"));
ЗаполнитьСвойства();
КонецЕсли;
ИначеЕсли Об="кнОбновитьСвойство" Тогда
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
ТекущийЭлементТЗ = ТЗСвойства.Элемент;
КонецЕсли;
ЗаполнитьСвойства();
ИначеЕсли Об="кнОткрытьЗначение" Тогда
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
глОткрытьЗначениеСвойства(ТЗСвойства.ЗначениеСвойства, Форма.ТолькоПросмотр());
КонецЕсли;
ИначеЕсли Об="ТЗСвойства" Тогда
Если Форма.ТолькоПросмотр() = 1 Тогда
Возврат 0;
КонецЕсли;
Если ТЗСвойства.ТекущаяСтрока() > 0 Тогда
ПриВыбореЗначения("кнИзменитьСвойство");
КонецЕсли;
ИначеЕсли Об="кнОчистить" Тогда
Если КоличествоСтрок() > 0 Тогда
Если Вопрос("Очистить таблицу?", "Да+Нет") = "Да" Тогда
УдалитьСтроки();
КонецЕсли;
КонецЕсли;
ИначеЕсли Об="кнЗаполнить" Тогда
Если глТерминалВключен() = 1 Тогда
СписВариантов = СоздатьОбъект("СписокЗначений");
СписВариантов.ДобавитьЗначение(1, "Заполнить по справочнику");
СписВариантов.ДобавитьЗначение(2, "Заполнить из терминала");
Если СписВариантов.ВыбратьЗначение(ВариантЗап, , , 60, 1) <> 1 Тогда
Возврат "";
КонецЕсли;
Иначе
// терминал не включен. Заполняем всегда по остаткам
ВариантЗап = 1;
КонецЕсли;
Если ВариантЗап = 1 Тогда
ТипОбъекта = "Справочник.Номенклатура";
СЗОтбор = СоздатьОбъект("СписокЗначений");
СЗОтбор = глОткрытьСложныйОтбор(ТипОбъекта,"","");
Если ПустоеЗначение(СЗОтбор) = 0 Тогда
ТаблицаЗначений = СЗОтбор.Получить("ТЗ");
ИмяОтбора = СЗОтбор.Получить("ИмяОтбора");
ТекстЗапроса = глВернутьТекстЗапроса(ТипОбъекта, ТаблицаЗначений);
ДатаНач = СЗОтбор.Получить("ДатаНач");
ДатаКон = СЗОтбор.Получить("ДатаКон");
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Предупреждение("Ошибка при выполнении запроса.", 5);
Возврат 0;
КонецЕсли;
Пока Запрос.Группировка() = 1 Цикл
НоваяСтрока();
Номенклатура = Запрос.Объект;
Количество = 1;
глПересчетТаблЧасти(Контекст, "Номенклатура");
КонецЦикла;
глСохранитьЗначениеТекущегоФильтраВТЗ(ТипОбъекта, ТаблицаЗначений, ИмяОтбора, "", "");
КонецЕсли;
Иначе
Результат = ЗаполнитьИзТерминала();
Если ПустоеЗначение(Результат) = 0 Тогда
Предупреждение(Результат, 60);
КонецЕсли;
КонецЕсли;
Иначе Возврат глДокументОбработкаФормы(Контекст, Об, ДопПарам);
КонецЕсли;
КонецФункции
//_____________________________________________________________________________
//Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
// Если Источник="Hook" Тогда
// Стат=СокрЛП(Рарус_Компонента.GetHookKeysState()); // Состояния Shift+Ctrl+Alt в момент Hook'a
// СкКод=Число(Данные);
// Если Событие<>"KeyPress" Тогда Возврат;
// ИначеЕсли (СкКод=45) и (Стат="000") Тогда ПриВыбореЗначения("кнДобавитьСвойство"); // <Insert>
// Возврат;
// ИначеЕсли (СкКод=120) и (Стат="000") Тогда ПриВыбореЗначения("кнКопироватьСвойство"); // <F9>
// Возврат;
// ИначеЕсли (СкКод=82) и (Стат="010") Тогда ПриВыбореЗначения("кнОбновитьСвойство"); // <Ctrl+R>
// Возврат;
// КонецЕсли;
// Иначе
// глОбработкаВнешнегоСобытия(Источник, Событие, Данные);
// КонецЕсли;
//КонецПроцедуры
//_____________________________________________________________________________
Процедура ОбработкаПодбора(Элемент, КонтФормы)
ТекущийЭлементТЗ = глОбработкаПодбораСвойств(Элемент, "я_Служебный", ТекущийДокумент(), ТекущееСвойство);
Если ПустоеЗначение(ТекущийЭлементТЗ) = 0 Тогда
ЗаполнитьСвойства();
КонецЕсли;
Если ТипЗначенияСтр(Элемент) = "Документ" Тогда
Если ПустоеЗначение(Элемент.ДокОснование) = 0 Тогда
Если Вопрос("У документа " + Элемент + " уже выбрано основание " + РазделительСтрок + Элемент.ДокОснование + "." + РазделительСтрок + "Изменить основание на " + ТекущийДокумент() + "?", "Да+Нет") = "Нет" Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Док = СоздатьОбъект("Документ");
Если Док.НайтиДокумент(Элемент) = 1 Тогда
Док.ДокОснование = ТекущийДокумент();
Попытка
Док.Записать();
Док.Провести();
Исключение
Предупреждение(ОписаниеОшибки(), 60);
КонецПопытки;
КонецЕсли;
КонецЕсли;
// есть ставки налогов, есть скидка
глОбработкаПодбора(Контекст, Элемент, 1, 0, 0);
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ПриВыбореТовара();
КонецЦикла;
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
КонецПроцедуры
//_____________________________________________________________________________
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
Если ИдентЭлемДиалога = "ПричинаОтказаСтр" Тогда
СпрПричиныОтказа = СоздатьОбъект("Справочник.я_ПричиныОтказа");
Если СпрПричиныОтказа.НайтиПоНаименованию(СокрЛП(ПричинаОтказаСтр),0,0) = 1 Тогда
ПрОтказа = СпрПричиныОтказа.ТекущийЭлемент();
Иначе
ПрОтказа = "";
КонецЕсли;
Параметр = глПоКнопкеОткрытьСправочник("я_ПричиныОтказа", 1, ПрОтказа);
Если ТипЗначенияСтр(Параметр) = "Справочник" Тогда // модальный режим
ПричинаОтказа = Параметр;
ПричинаОтказаСтр = Параметр.Наименование;
КонецЕсли;
ИначеЕсли ИдентЭлемДиалога = "КонтактноеЛицо" Тогда
ОснКонтрагент = глНайтиКонтрагента(Контрагент);
Если ПустоеЗначение(ОснКонтрагент) = 0 Тогда
КонтактноеЛицо.ИспользоватьВладельца(ОснКонтрагент);
Иначе
ФлагСтандОбр = 0;
КонецЕсли;
ИначеЕсли ИдентЭлемДиалога = "СостояниеДокумента" Тогда
СтарСотояние = СостояниеДокумента;
КонецЕсли;
КонецПроцедуры
//_____________________________________________________________________________
// Предопределенная процедура.
//
Процедура ОбработкаВыбораЗначения(НовоеЗначение, ЭлементДиалога)
Если ЭлементДиалога = "ПричинаОтказаСтр" Тогда
ПричинаОтказа = НовоеЗначение;
ПричинаОтказаСтр = НовоеЗначение.Наименование;
ИначеЕсли ЭлементДиалога = "Контрагент" Тогда
Если НовоеЗначение <> Контрагент Тогда
КонтактноеЛицо = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ОбработкаВыбораЗначения()
//_____________________________________________________________________________
Процедура ВвестиДокументНаОсновании()
Если Выбран() = 0 Тогда
Если Вопрос("Документ еще не записан. Ввод на основании возможен только на основании записанного документа. Записать документ?", "Да+Нет") = "Да" Тогда
ПриЗаписи();
Если СтатусВозврата() <> 0 Тогда
Записать();
Иначе
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
КонецЕсли;
Список = СоздатьОбъект("СписокЗначений");
Список.УдалитьВсе();
Если ВидПродажи = Перечисление.ВидПродаж.БыстаяПродажа Тогда
Список.ДобавитьЗначение("ПоручениеНаОтгрузку","Поручение на отгрузку");
Список.ДобавитьЗначение("ПКО","ПКО");
Список.ДобавитьЗначение("СтрокаВыпискиПриход","Строка выписки банка");
Список.ДобавитьЗначение("я_КоммерческоеПредложение","Коммерческое предложение");
Список.ДобавитьЗначение("я_Контакт","Контакт");
Список.ДобавитьЗначение("я_Напоминание","Напоменание");
Список.ДобавитьЗначение("Запрос","Запрос");
ИначеЕсли ВидПродажи = Перечисление.ВидПродаж.ПродажаСоСклада Тогда
Список.ДобавитьЗначение("я_КоммерческоеПредложение","Коммерческое предложение");
Список.ДобавитьЗначение("СтрокаВыпискиПриход","Строка выписки банка");
Список.ДобавитьЗначение("ПКО","ПКО");
Список.ДобавитьЗначение("ПоручениеНаОтгрузку","Поручение на отгрузку");
Список.ДобавитьЗначение("ЗаявкаПокупателя","Заявка на склад");
Список.ДобавитьЗначение("я_Контакт","Контакт");
Список.ДобавитьЗначение("я_Напоминание","Напоменание");
Список.ДобавитьЗначение("Запрос","Запрос");
ИначеЕсли ВидПродажи = Перечисление.ВидПродаж.ПодЗаказ Тогда
Список.ДобавитьЗначение("я_КоммерческоеПредложение","Коммерческое предложение");
Список.ДобавитьЗначение("РасчетЦен","Расчет цен");
Список.ДобавитьЗначение("СтрокаВыпискиПриход","Строка выписки банка");
Список.ДобавитьЗначение("ПКО","ПКО");
Список.ДобавитьЗначение("ЗаявкаПокупателя","Заявка на поставку");
Список.ДобавитьЗначение("я_Контакт","Контакт");
Список.ДобавитьЗначение("я_Напоминание","Напоменание");
Список.ДобавитьЗначение("Запрос","Запрос");
Иначе
Предупреждение("Невыбран вид продаж!",30);
Возврат;
КонецЕсли;
Позиция = 0;
ВидПодч = "";
Если Список.ВыбратьЗначение(ВидПодч, "Выбор вида документа", Позиция,,1) = 1 Тогда
// Выбрали вид документа
ОткрытьФорму("Документ."+ВидПодч,,ТекущийДокумент());
КонецЕсли;
//глВводНаОсновании(Контекст)
КонецПроцедуры //ВвестиДокументНаОсновании
//_____________________________________________________________________________
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
Процедура УправлениеВидимостью()
Если (ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Посуда) или (ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Бар) или (ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Литература) Тогда
Табло.ВидимостьКолонки("Длина",0);
Табло.ВидимостьКолонки("Ширина",0);
Табло.ВидимостьКолонки("Высота",0);
Табло.ВидимостьКолонки("Мощность",0);
Табло.ВидимостьКолонки("Напряжение",0);
Табло.ВидимостьКолонки("Вес",0);
//Форма.НомерПоРасстановке.Видимость(0);
Табло.ВидимостьКолонки("Каркас",0);
Табло.ВидимостьКолонки("ЦветКаркаса",0);
Табло.ВидимостьКолонки("Материал",0);
Табло.ВидимостьКолонки("ЦветМатериала",0);
Табло.ВидимостьКолонки("ЦветПодстолья",0);
Табло.ВидимостьКолонки("Подстолье",0);
Табло.ВидимостьКолонки("ВариантЦоколя",0);
Табло.ВидимостьКолонки("ЦветЦоколя",0);
Табло.ВидимостьКолонки("ЦветПодлокотника",0);
Табло.ВидимостьКолонки("Описание1",0);
ИначеЕсли ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Текстиль Тогда
Табло.ВидимостьКолонки("Длина",0);
Табло.ВидимостьКолонки("Ширина",0);
Табло.ВидимостьКолонки("Высота",0);
Табло.ВидимостьКолонки("Мощность",0);
Табло.ВидимостьКолонки("Напряжение",0);
Табло.ВидимостьКолонки("Вес",0);
//Табло.ВидимостьКолонки("НомерПоРасстановке",0);
Табло.ВидимостьКолонки("Каркас",0);
Табло.ВидимостьКолонки("ЦветКаркаса",0);
Табло.ВидимостьКолонки("Материал",0);
Табло.ВидимостьКолонки("ЦветМатериала",0);
Табло.ВидимостьКолонки("ЦветПодстолья",0);
Табло.ВидимостьКолонки("Подстолье",0);
Табло.ВидимостьКолонки("ВариантЦоколя",0);
Табло.ВидимостьКолонки("ЦветЦоколя",0);
Табло.ВидимостьКолонки("ЦветПодлокотника",0);
Табло.ВидимостьКолонки("Описание1",1);
ИначеЕсли ПредложениеПо=Перечисление.ВидыКоммерческихПредложений.Мебель Тогда
Табло.ВидимостьКолонки("Длина",0);
Табло.ВидимостьКолонки("Ширина",0);
Табло.ВидимостьКолонки("Высота",0);
Табло.ВидимостьКолонки("Мощность",0);
Табло.ВидимостьКолонки("Напряжение",0);
Табло.ВидимостьКолонки("Вес",0);
//Табло.ВидимостьКолонки("НомерПоРасстановке",0);
Табло.ВидимостьКолонки("Каркас",1);
Табло.ВидимостьКолонки("ЦветКаркаса",1);
Табло.ВидимостьКолонки("Материал",1);
Табло.ВидимостьКолонки("ЦветМатериала",1);
Табло.ВидимостьКолонки("ЦветПодстолья",1);
Табло.ВидимостьКолонки("Подстолье",1);
Табло.ВидимостьКолонки("ВариантЦоколя",1);
Табло.ВидимостьКолонки("ЦветЦоколя",1);
Табло.ВидимостьКолонки("ЦветПодлокотника",1);
Табло.ВидимостьКолонки("Описание1",0);
Иначе
Табло.ВидимостьКолонки("Длина",1);
Табло.ВидимостьКолонки("Ширина",1);
Табло.ВидимостьКолонки("Высота",1);
Табло.ВидимостьКолонки("Мощность",1);
Табло.ВидимостьКолонки("Напряжение",1);
Табло.ВидимостьКолонки("Вес",1);
Табло.ВидимостьКолонки("НомерПоРасстановке",1);
Табло.ВидимостьКолонки("Описание1",0);
Табло.ВидимостьКолонки("Каркас",0);
Табло.ВидимостьКолонки("ЦветКаркаса",0);
Табло.ВидимостьКолонки("Материал",0);
Табло.ВидимостьКолонки("ЦветМатериала",0);
Табло.ВидимостьКолонки("ЦветПодстолья",0);
Табло.ВидимостьКолонки("Подстолье",0);
Табло.ВидимостьКолонки("ВариантЦоколя",0);
Табло.ВидимостьКолонки("ЦветЦоколя",0);
Табло.ВидимостьКолонки("ЦветПодлокотника",0);
КонецЕсли;
КонецПроцедуры
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
Процедура ПриОткрытии() //предопределенная
глДокументПриОткрытии(Контекст);
Если (Выбран() = 0) и (ПустоеЗначение(ДокОснование) = 0) и (ДокОснование.Вид() = "я_КоммерческоеПредложение") и (глЕстьСвязныеТаблицы(ДокОснование) = 1) Тогда
Если Вопрос("Заполнить свойства значениями из документа основания?" + РазделительСтрок + "Документ будет записан.", "Да+Нет") = "Да" Тогда
Попытка
Записать();
глКопированиеДокумента(ДокОснование, Контекст, 1);
Исключение
Предупреждение(ОписаниеОшибки(), 20);
КонецПопытки;
КонецЕсли;
КонецЕсли;
ПриЗаписиПерепроводить(1);
Если ПометкаУдаления() = 1 Тогда
Форма.ТолькоПросмотр(1);
КонецЕсли;
// Если открыли только на просмотр, то надо кнопки сделать недоступными
Если Форма.ТолькоПросмотр()=1 Тогда
Форма.кнXПричинаОтказаСтр.Доступность(0);
Форма.кнДобавитьСвойство.Доступность(0);
Форма.кнИзменитьСвойство.Доступность(0);
Форма.кнКопироватьСвойство.Доступность(0);
Форма.кнУдалитьСвойство.Доступность(0);
Форма.кнВводНаОсновании.Доступность(0);
Форма.кнЗаписать.Доступность(0);
Форма.кнОК.Доступность(0);
Форма.КнопкаПоУмолчанию("кнЗакрыть");
Иначе
Форма.КнопкаПоУмолчанию("кнОК");
КонецЕсли;
// Заполним таблицу для выбора печатной формы
НомерТекущейФормы = глУстановкаКнопкиПечатьОб(Контекст, "Документ." + Вид(),ТаблицаПечФорм);
ТЗСвойства.НоваяКолонка("Пикт", "Число", 2,,"",4);
ТЗСвойства.НоваяКолонка("Элемент");
ТЗСвойства.НоваяКолонка("ВидСвойства", "Спровочник.ВидыСвойств",,,"Вид свойства");
ТЗСвойства.НоваяКолонка("ЗначениеСвойства", "Спровочник.ЗначенияСвойств",,,"Значение свойства");
ТЗСвойства.ВыводитьПиктограммы("Пикт");
ТЗСвойства.Фиксировать(,1);
ТЗСвойства.ВидимостьКолонки("Элемент",0);
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение("Основной, Главный", "Основные");
Форма.Закладки.ДобавитьЗначение("Основной, Свойства", "Свойства");
Форма.Закладки.ДобавитьЗначение("Основной, ПериодыПлатежей", "Платежи");
Форма.ИспользоватьСлой("Основной, Главный", 2);
ДоступностьЭлементов(1);
ЗаполнитьСвойства();
ПричинаОтказаСтр = ПричинаОтказа.Наименование;
УправлениеВидимостью();
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
СписокВидовПродаж = СоздатьОбъект("СписокЗначений");
СписокВидовПродаж.ДобавитьЗначение(Перечисление.ВидПродаж.БыстаяПродажа,"Быстрая продажа");
СписокВидовПродаж.ДобавитьЗначение(Перечисление.ВидПродаж.ПродажаСоСклада,"Продажа со склада");
СписокВидовПродаж.ДобавитьЗначение(Перечисление.ВидПродаж.ПодЗаказ,"Под заказ");
СтарСклад = Склад;
БудетПечататьсяУведомление = 0;
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
КонецПроцедуры //ПриОткрытии
//_____________________________________________________________________________
Процедура ПоКнопкеЦены()
ОткрытьФормуМодально("Обработка.ИнформацияОценах", Контекст);
ДоступностьЭлементов();
Форма.Обновить(0);
КонецПроцедуры //ВыборЦен()
//_____________________________________________________________________________
Процедура ПоКнопкеПодбор()
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Фирма, "Фирма");
Параметры.ДобавитьЗначение(Склад, "Склад");
Параметры.ДобавитьЗначение(0, "ЕстьВидТМЦ");
Параметры.ДобавитьЗначение("ИзСправочника", "ЦенаВподборе");
Параметры.ДобавитьЗначение(ТипЦен, "ТипЦен");
Параметры.ДобавитьЗначение(Валюта, "Валюта");
Параметры.ДобавитьЗначение(Курс, "Курс");
Если Выбран() = 0 Тогда
Параметры.ДобавитьЗначение("Дата", "ТипГраницы");
Параметры.ДобавитьЗначение(ДатаДок, "ЗначениеГраницы");
Иначе
Параметры.ДобавитьЗначение("Позиция", "ТипГраницы");
Параметры.ДобавитьЗначение(ПолучитьПозицию(), "ЗначениеГраницы");
КонецЕсли;
Параметры.ДобавитьЗначение("Подбор номенклатуры в документ " + ПредставлениеВида() + " № " + НомерДок, "Заголовок");
глПодбор(Контекст, Параметры);
КонецПроцедуры // ПоКнопкеПодбор()
Процедура Прцены()
Док=СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
ЕстьЦены=0;
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="РасчетЦен" Тогда
ЕстьЦены=1;
ДокЦ=Док.ТекущийДокумент();
КонецЕсли;
КонецЦикла;
Если ЕстьЦены=0 Тогда
Предупреждение("У данного комм. предложения цены не сформированы!",20);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Табло=СоздатьОбъект("ТаблицаЗначений");
ДокЦ.ВыгрузитьТабличнуюЧасть(Табло);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Стр="";
Если Табло.НайтиЗначение(Код,Стр,"Код")=1 Тогда
Табло.ПолучитьСтрокуПоНомеру(Стр);
Цена=Табло.ЦенаПродажи;
СрокПоставки = Табло.СрокПоставки;
глПересчетТаблЧасти(Контекст,"Количество");
ПриИзмененииСкидки();
Иначе
Цена = 0;
глПересчетТаблЧасти(Контекст,"Количество");
ПриИзмененииСкидки();
Сообщить("Номенклатура "+Номенклатура+" отсутствует в расчете цен!","!!!");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
///*******************************************************************************
Функция СрокПоставки()
Если ТекущийДокумент().Выбран()=1 Тогда
Док=СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
ЕстьЦены=0;
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="РасчетЦен" Тогда
ЕстьЦены=1;
ДокЦ=Док.ТекущийДокумент();
Прервать;
КонецЕсли;
КонецЦикла;
Если ЕстьЦены=0 Тогда
Текст="";
Иначе
Табло=СоздатьОбъект("ТаблицаЗначений");
ДокЦ.ВыгрузитьТабличнуюЧасть(Табло);
Стр="";
Если Табло.НайтиЗначение(Код,Стр,"Код")=1 Тогда
Табло.ПолучитьСтрокуПоНомеру(Стр);
Текст=Строка(Табло.СрокПоставки);
Иначе
Текст="";
КонецЕсли;
КонецЕсли;
Возврат Текст;
КонецЕсли;
КонецФункции
//******************************************************************************//
//******************************************************************************//
Процедура ПечатьДоговора()
Список=СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("Продажа со склада");
Список.ДобавитьЗначение("Продажа под заказ");
Список.ДобавитьЗначение("Продажа униформы");
ВидДоговора=0;
ПозДоговора=0;
Список.ВыбратьЗначение(ВидДоговора,"Выберете тип договора",ПозДоговора,60,);
//Если ПустоеЗначение(ТаблоСохраненияДоговора)=1 Тогда
ВыгрузитьТабличнуюЧасть(Спец);
Спец.УдалитьКолонку(1);
Спец.ВставитьКолонку("Х",1,"Число",1,0,"V",3);
Спец.ВыводитьПиктограммы("Х",1);
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Спец.Х=2;
КонецЦикла;
Форма.ИспользоватьСлой("Специфика",2);
Спец.ТекущаяСтрока(1);
Спец.ТекущаяКолонка(1);
//Иначе
// Табло = СоздатьОбъект("ТаблицаЗначений");
// Табло=ЗначениеИзСтроки(ТаблоСохраненияДоговора);
// Табло.Выгрузить(Спец);
// Форма.ИспользоватьСлой("Специфика",2);
// Спец.ВыводитьПиктограммы("Х",1);
// Спец.ТекущаяСтрока(1);
// Спец.ТекущаяКолонка(1);
//КонецЕсли;
КонецПроцедуры
Процедура Отмен()
Форма.ИспользоватьСлой("Основной, Главный", 2);
КонецПроцедуры
//******************************************************************************
// Уведомление();()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура Уведомление(Реж)
Если Реж = 0 Тогда
ВыгрузитьТабличнуюЧасть(Спец);
Спец.УдалитьКолонку(1);
Спец.ВставитьКолонку("Х",1,"Число",1,0,"V",3);
Спец.ВыводитьПиктограммы("Х",1);
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Спец.Х=2;
КонецЦикла;
Форма.ИспользоватьСлой("Специфика",2);
Спец.ТекущаяСтрока(1);
Спец.ТекущаяКолонка(1);
Иначе
Если ФС.СуществуетФайл(КаталогИб()+"dogovora")=0 Тогда
Сообщить("Отстуствует каталог с шаблонами документов!","!!!");
Возврат;
Иначе
ИмяШаблона= "ShablonUvedomleniya.doc";
Если Фс.СуществуетФайл(КаталогИб()+"\dogovora\"+ИмяШаблона)=0 Тогда
Предупреждение("Не найден файл шаблона!",60);
Возврат;
КонецЕсли;
Word=СоздатьОбъект("Word.Application");
ИмяФайла = КаталогИб()+"\dogovora\"+ИмяШаблона;
Попытка //если вдруг открыт надо закрыть
Word.Windows(ИмяФайла).Close(0);
Исключение
КонецПопытки;
Word.Documents.Add(ИмяФайла);
Shablon = Word.ActiveDocument;
//Selection = Shablon.Range();//.Select(); //.WholeStory();
//Bufer = Selection.Copy();
//Word.Documents.Add();
//Doc = Word.ActiveDocument;
//Selection = Doc.Range();
//Selection.Paste(Bufer);
//закрыть шаблон
//Word.Windows(ИмяШаблона).Close(0);
//заполняем документ
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение(СокрЛП(ДатаДок),"ДатаДокумента");
Стрк = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование);
Список.ДобавитьЗначение(Стрк,"Контрагент");
Список.ДобавитьЗначение(СокрЛП(Договор.Наименование),"Договор");
Список.ДобавитьЗначение(СокрЛП(Договор.Наименование),"Договор1");
СуммаКДоплате = 0;
Если ВвестиЧисло(СуммаКДоплате,"Введите остаток к доплате!",15,2,60)=1 Тогда
СуммаКДоплатеСтрокой = Строка(СуммаКДоплате)+Валюта.Наименование+" ("+Формат(СуммаКДоплате,"ЧПДС")+")";
Иначе
СуммаКДоплатеСтрокой = "___________"+Валюта.Наименование+" (____________________________________________)";
КонецЕсли;
Список.ДобавитьЗначение(СуммаКДоплатеСтрокой,"Сумма");
Список.ДобавитьЗначение(СокрЛП(Проект.Наименование),"Проект");
//меняем закладки на нужные значения
Инд=1;
Для Инд=1 по Список.РазмерСписка() Цикл
Метка = "";
Замена = Список.ПолучитьЗначение(Инд,Метка);
Если Shablon.Bookmarks.Exists(Метка)=-1 Тогда
BookMark = Shablon.Bookmarks(Метка);
BookMark.Select();
BookMark.Range().Text = Замена;
КонецЕсли;
КонецЦикла;
//Таблица
ТТ="";
ТТ = Shablon.Tables(1);
ИтогоК=0;
ИтогоС=0;
Н=1;
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Если Спец.Х=2 Тогда
Н=Н+1;//надо начать со второй строки
ТТ.Rows().Add();//добавить строку
ЦенаС=(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС))/?(Спец.Количество=0,1,Спец.Количество);
ТТ.Rows(Н).Cells(1).Range.Text = СокрЛП(Спец.Номенклатура.Код);
ТТ.Rows(Н).Cells(2).Range.Text = СокрЛП(Спец.Номенклатура.Наименование);
ТТ.Rows(Н).Cells(3).Range.Text = СокрЛП(Строка(Спец.Количество));
ТТ.Rows(Н).Cells(4).Range.Text = СокрЛП(Строка(Формат(ЦенаС,"Ч15.2. ")));
ТТ.Rows(Н).Cells(5).Range.Text = СокрЛП(Строка(Формат(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС),"Ч15.2. ")));
Если ИмяШаблона= "ShablonPodZakaz.doc" Тогда
ТТ.Rows(Н).Cells(6).Range.Text = СокрЛП(Строка(Спец.СрокПоставки));
КонецЕсли;
ИтогоК=ИтогоК+Спец.Количество;
ИтогоС=ИтогоС+(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС));
КонецЕсли;
КонецЦикла;
//итоговая строчка
Н=Н+1;
ТТ.Rows().Add();//добавить строку
ТТ.Rows(Н).Cells(2).Range.Text = "ИТОГО:";
ТТ.Rows(Н).Cells(3).Range.Text = СокрЛП(Строка(ИтогоК));
ТТ.Rows(Н).Cells(5).Range.Text = СокрЛП(Строка(Формат(ИтогоС,"Ч15.2. ")));
//границы невидимыми
ТТ.Rows(Н).Cells(1).Borders(2).LineStyle = 0;
ТТ.Rows(Н).Cells(1).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(1).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(2).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(2).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(3).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(3).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(4).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(4).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(5).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(5).Borders(4).LineStyle = 0;
Word.Visible = 1;
БудетПечататьсяУведомление = 0;
Форма.ИспользоватьСлой("Основной, Главный", 2);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура Печ()
Если БудетПечататьсяУведомление = 1 Тогда
Уведомление(1);
Иначе
ТаблоСохраненияДоговора=ЗначениеВСтроку(Спец);
Записать();
Если ФС.СуществуетФайл(КаталогИб()+"dogovora")=0 Тогда
Таб=СоздатьОбъект("Таблица");
Если ПозДоговора=1 Тогда
Таб.ИсходнаяТаблица("Договор1");
ИначеЕсли ПозДоговора=2 Тогда
Таб.ИсходнаяТаблица("Договор2");
Иначе
Возврат;
КонецЕсли;
Если ПустоеЗначение(Договор)=0 Тогда
Спр= СоздатьОбъект("Справочник.Договоры");
Спр.НайтиЭлемент(Договор);
Если ПустоеЗначение(Спр.ВЛицеПокупателя)=0 Тогда
Покупатель=СокрЛП(Спр.ВЛицеПокупателя);
Иначе
Стр="";
Если ВвестиСтроку(Стр,"ПОКУПАТЕЛЬ, в лице",100,0,30)=1 Тогда
Покупатель=СокрЛП(Стр);
Спр.ВЛицеПокупателя = Покупатель;
Спр.Записать();
Иначе
Покупатель="_______________________________________";
КонецЕсли;
КонецЕсли;
Иначе
Стр="";
Если ВвестиСтроку(Стр,"ПОКУПАТЕЛЬ, в лице",100,0,30)=1 Тогда
Покупатель=СокрЛП(Стр);
Иначе
Покупатель="_______________________________________";
КонецЕсли;
КонецЕсли;
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Страница1");
Таб.НоваяСтраница();
//Формат(Сумма+?(СуммаВклНДС=1,0,СуммаНДС)+?(СуммаВклНП=1,0,СуммаНП),"Ч15.2.,")
Итого=0;
ИтогоНДС=0;
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Если Спец.Х=2 Тогда
Итого=Итого+Спец.СуммаСоСкидкой;
ИтогоНДС=ИтогоНДС+Спец.СуммаНДС;
КонецЕсли;
КонецЦикла;
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
ПечИтого = Итого+?(СуммаВклНДС=1,0,ИтогоНДС);
ПечНДС = ?(ИтогоНДС=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДС,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДС,"ЧПДС")+")");
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
Если ПозДоговора=2 Тогда
Если ПустоеЗначение(Договор)=0 Тогда
Спр= СоздатьОбъект("Справочник.Договоры");
Спр.НайтиЭлемент(Договор);
Если ПустоеЗначение(Спр.Предоплата)=0 Тогда
Предоплата=СокрЛП(Спр.Предоплата);
Иначе
Стр="";
Если ВвестиСтроку(Стр,"Процент предоплаты",3,0,30)=1 Тогда
Предоплата=Стр;
Спр.Предоплата = Предоплата;
Спр.Записать();
Иначе
Предоплата="___";
КонецЕсли;
КонецЕсли;
Иначе
Стр="";
Если ВвестиСтроку(Стр,"Процент предоплаты",3,0,30)=1 Тогда
Предоплата=Стр;
Иначе
Предоплата="___";
КонецЕсли;
КонецЕсли;
Если Предоплата="___" Тогда
ПечПредоплата="____________";
ПечНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
ОстПредоплата="____";
ПечОстПредоплата="____________";
ПечОстНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
Иначе
ПечПредоплата = ПечИтого/100*Число(Предоплата);
ИтогоНДСПред = ИтогоНДС/100*Число(Предоплата);
ПечНДСПредоплата = ?(ИтогоНДСПред=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДСПред,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДСПред,"ЧПДС")+")");
ОстПредоплата = 100-Число(Предоплата);
ПечОстПредоплата = ПечИтого/100*ОстПредоплата;
ИтогоНДСОст = ИтогоНДС/100*ОстПредоплата;
ПечОстНДСПредоплата = ?(ИтогоНДСОст=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДСОст,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДСОст,"ЧПДС")+")");
КонецЕсли;
КонецЕсли;
Таб.ВывестиСекцию("Страница2");
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Фирма.ОсновнойСчет, "БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
Банк = Параметры.Получить("СтрокаБанка");
Счет = Параметры.Получить("РасчетныйСчет");
БИК = Параметры.Получить("БИК");
СчетБанка = Параметры.Получить("КоррСчет");
//Контрагент
Параметры.УдалитьВсе();
Параметры.ДобавитьЗначение(Контрагент.ОсновнойСчет,"БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
БанкК = Параметры.Получить("СтрокаБанка");
СчетК = Параметры.Получить("РасчетныйСчет");
БИКК = Параметры.Получить("БИК");
СчетБанкаК = Параметры.Получить("КоррСчет");
Таб.ВывестиСекцию("Реквизиты");
Таб.НоваяСтраница();
Таб.ВывестиСекцию("СШапка");
ИтогоК=0;
ИтогоС=0;
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Если Спец.Х=2 Тогда
ЦенаС=(Спец.Сумма+?(СуммаВклНДС=1,0,Спец.СуммаНДС))/Спец.Количество;
Таб.ВывестиСекцию("ССтрока");
ИтогоК=ИтогоК+Спец.Количество;
ИтогоС=ИтогоС+(Спец.Сумма+?(СуммаВклНДС=1,0,Спец.СуммаНДС));
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("СИтого");
Таб.ВывестиСекцию("Реквизиты");
Таб.ТолькоПросмотр(0);
Таб.Опции(0,0,0,0);
Таб.Показать("Договор");
Иначе
ИмяФайла = "";
Если ПозДоговора=1 Тогда //со склада
ИмяФайла = "Договор продажи со склада с "+Контрагент.Наименование+" №"+СокрЛП(НомерДок)+" от "+ДатаДок+".doc";
ИмяШаблона= "ShablonSoSklada.doc";
ИначеЕсли ПозДоговора=2 Тогда //под заказ
ИмяФайла = "Договор продажи под заказ с "+Контрагент.Наименование+" №"+СокрЛП(НомерДок)+" от "+ДатаДок+".doc";
ИмяШаблона= "ShablonPodZakaz.doc";
Иначе
ИмяФайла = "Договор продажи униформы с "+Контрагент.Наименование+" №"+СокрЛП(НомерДок)+" от "+ДатаДок+".doc";
ИмяШаблона= "ShablonPoUniforme.doc";
КонецЕсли;
ИмяФайла = СтрЗаменить(ИмяФайла,"\","_");
ИмяФайла = СтрЗаменить(ИмяФайла,"/","_");
ИмяФайла = СтрЗаменить(ИмяФайла,"""","");
Word=СоздатьОбъект("Word.Application");
Если Фс.СуществуетФайл(КаталогИб()+"\dogovora\"+ИмяФайла)=1 Тогда
Если Вопрос("Существует сформированный договор! Открыть?","Да+Нет",60)="Да" Тогда
Попытка //если вдруг открыт надо закрыть
Word.Windows(ИмяФайла).Close(0);
Исключение
КонецПопытки;
Word.Documents.Open(КаталогИб()+"\dogovora\"+ИмяФайла);
Форма.ИспользоватьСлой("Основной, Главный", 2);
Word.Visible=1;
Word.Activate();
Возврат;
КонецЕсли;
КонецЕсли;
Если Фс.СуществуетФайл(КаталогИб()+"\dogovora\"+ИмяШаблона)=0 Тогда
Предупреждение("Не найден файл шаблона!",60);
Форма.ИспользоватьСлой("Основной, Главный", 2);
Возврат;
КонецЕсли;
Word.Options.CheckSpellingAsYouType = 0;
Word.Options.CheckGrammarAsYouType = 0;
Word.Options.CheckGrammarWithSpelling = 0;
Попытка //если вдруг открыт надо закрыть
Word.Windows(ИмяФайла).Close(0);
Исключение
КонецПопытки;
Word.Documents.Add(КаталогИб()+"\dogovora\"+ИмяШаблона);
Document=Word.ActiveDocument;
///Список замен в документе есть закладки с именами как строковое представление в списке значений
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение(СокрЛП(НомерДок),"ПечНомерДок");
Список.ДобавитьЗначение(СокрЛП(НомерДок),"ПечНомерДокП");
Список.ДобавитьЗначение(ДатаСчета,"ДатаДоговора");
Стрк = СокрЛП(Фирма.ЮрЛицо.ПолнНаименование)+" (Россия, г. Владивосток, свидетельство о государственной регистрации № "+Фирма.НомерСв+" oт "+Фирма.СвОт;
Список.ДобавитьЗначение(Стрк,"ПечПоставщик");
Стрк = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование);
Список.ДобавитьЗначение(Стрк,"ПечПокупатель");
Спр= СоздатьОбъект("Справочник.Договоры");
Спр.НайтиЭлемент(Договор);
Если ПустоеЗначение(Спр.ВЛицеПокупателя)=0 Тогда
Покупатель=СокрЛП(Спр.ВЛицеПокупателя);
Иначе
Стр="";
Если ВвестиСтроку(Стр,"ПОКУПАТЕЛЬ, в лице",100,0,30)=1 Тогда
Покупатель=СокрЛП(Стр);
Спр.ВЛицеПокупателя = Покупатель;
Спр.Записать();
Иначе
Покупатель="_______________________________________";
КонецЕсли;
КонецЕсли;
Список.ДобавитьЗначение(Покупатель,"ПечРуководительПокупателя");
Итого=0;
ИтогоНДС=0;
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Если Спец.Х=2 Тогда
Итого=Итого+Спец.СуммаСоСкидкой;
ИтогоНДС=ИтогоНДС+Спец.СуммаНДС;
КонецЕсли;
КонецЦикла;
//***************************************Вставка**********************************
*******//
//********************************************************************************
*******//
ПечИтого = Итого+?(СуммаВклНДС=1,0,ИтогоНДС);
ПечНДС = ?(ИтогоНДС=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДС,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДС,"ЧПДС")+")");
//********************************************************************************
*******//
//*************************************Конец вставки*************************************//
Стрк = Формат(ПечИтого,"Ч15.2. ")+" руб. ("+Формат(ПечИтого,"ЧПДС")+") руб., "+ПечНДС;
Список.ДобавитьЗначение(Стрк,"ПечСтоимостьДоговора");
ПечПредоплата="____________";
ПечНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
ОстПредоплата="____";
ПечОстПредоплата="____________";
ПечОстНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
Если ПозДоговора=2 Тогда
Если ПустоеЗначение(Договор)=0 Тогда
Спр= СоздатьОбъект("Справочник.Договоры");
Спр.НайтиЭлемент(Договор);
Если ПустоеЗначение(Спр.Предоплата)=0 Тогда
Предоплата=СокрЛП(Спр.Предоплата);
Иначе
Стр="";
Если ВвестиСтроку(Стр,"Процент предоплаты",3,0,30)=1 Тогда
Предоплата=Стр;
Спр.Предоплата = Предоплата;
Спр.Записать();
Иначе
Предоплата="___";
КонецЕсли;
КонецЕсли;
Иначе
Стр="";
Если ВвестиСтроку(Стр,"Процент предоплаты",3,0,30)=1 Тогда
Предоплата=Стр;
Иначе
Предоплата="___";
КонецЕсли;
КонецЕсли;
Если Предоплата="___" Тогда
ПечПредоплата="____________";
ПечНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
ОстПредоплата="____";
ПечОстПредоплата="____________";
ПечОстНДСПредоплата="в том числе НДС в размере __________руб. (_________________________________)";
Иначе
ПечПредоплата = ПечИтого/100*Число(Предоплата);
ИтогоНДСПред = ИтогоНДС/100*Число(Предоплата);
ПечНДСПредоплата = ?(ИтогоНДСПред=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДСПред,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДСПред,"ЧПДС")+")");
ОстПредоплата = 100-Число(Предоплата);
ПечОстПредоплата = ПечИтого/100*ОстПредоплата;
ИтогоНДСОст = ИтогоНДС/100*ОстПредоплата;
ПечОстНДСПредоплата = ?(ИтогоНДСОст=0,"без НДС","в том числе НДС в размере"+" "+Формат(ИтогоНДСОст,"Ч15.2. ")+" "+"руб."+"("+Формат(ИтогоНДСОст,"ЧПДС")+")");
КонецЕсли;
Стрк = Предоплата+" % от полной стоимости, что составляет "+Формат(ПечПредоплата,"Ч15.2. ")+" руб. ("+Формат(ПечПредоплата,"ЧПДС")+") руб., "+ПечНДСПредоплата;
Иначе
Стрк = "100 % от полной стоимости "+Формат(ПечИтого,"Ч15.2. ")+" руб. ("+Формат(ПечИтого,"ЧПДС")+") руб., "+ПечНДС;
КонецЕсли;
Список.ДобавитьЗначение(Стрк,"ПечПредоплатаПоДоговору");
Стрк = Строка(ОстПредоплата)+" % от общей стоимости , что составляет "+Формат(ПечОстПредоплата,"Ч15.2. ")+" руб. ("+Формат(ПечОстПредоплата,"ЧПДС")+") руб., "+ПечОстНДСПредоплата;
Список.ДобавитьЗначение(Стрк,"ПечОстатокОплаты");
//меняем закладки на нужные значения
Инд=1;
Для Инд=1 по Список.РазмерСписка() Цикл
Метка = "";
Замена = Список.ПолучитьЗначение(Инд,Метка);
Если Document.Bookmarks.Exists(Метка)=-1 Тогда
BookMark = Document.Bookmarks(Метка);
BookMark.Select();
BookMark.Range().Text = Замена;
КонецЕсли;
КонецЦикла;
//реквизиты
РеквизПост="";
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Фирма.ОсновнойСчет, "БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
Банк = Параметры.Получить("СтрокаБанка");
Счет = Параметры.Получить("РасчетныйСчет");
БИК = Параметры.Получить("БИК");
СчетБанка = Параметры.Получить("КоррСчет");
РеквизПост = СокрЛП(Фирма.ЮрЛицо.ПолнНаименование)+РазделительСтрок+СокрЛП(глПредставлениеАдреса(Фирма.ЮрЛицо.ЮрАдрес))+РазделительСтрок+"ИНН "+Фирма.ЮрЛицо.ИНН+РазделительСтрок+"Р/с "+Счет+РазделительСтрок+"в "+Банк+РазделительСтрок+"к/сч "+СчетБанка+РазделительСтрок+"БИК "+БИК;
Если ПозДоговора<3 Тогда
TT = Document.Tables(1); //первая таблица
Иначе
TT = Document.Tables(2); //вторая таблица
КонецЕсли;
TT.Columns(1).Cells(1).Range.Text = РеквизПост; //первая колонка, первая ячейка
РеквизПост ="Директор "+СокрЛП(Фирма.ЮрЛицо.ПолнНаименование)+РазделительСтрок+"____________________________________"+РазделительСтрок+Строка(Фирма.ЮрЛицо.Руководитель.Получить(ДатаДок));
TT.Rows(2).Cells(1).Range.Text = РеквизПост; //вторая строка, первая ячейка
РеквПокуп = "";
Параметры.УдалитьВсе();
Параметры.ДобавитьЗначение(Контрагент.ОсновнойСчет,"БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
БанкК = Параметры.Получить("СтрокаБанка");
СчетК = Параметры.Получить("РасчетныйСчет");
БИКК = Параметры.Получить("БИК");
СчетБанкаК = Параметры.Получить("КоррСчет");
РеквПокуп = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование)+РазделительСтрок+СокрЛП(глПредставлениеАдреса(Контрагент.ЮрФизЛицо.ЮрАдрес))+РазделительСтрок+"ИНН "+Контрагент.ЮрФизЛицо.ИНН+РазделительСтрок+"Р/с "+СчетК+РазделительСтрок+"в "+БанкК+РазделительСтрок+"к/сч "+СчетБанкаК+РазделительСтрок+"БИК "+БИКК;
TT.Columns(2).Cells(1).Range.Text = РеквПокуп; //вторая колонка, первая ячейка
РеквПокуп = "Руководитель "+СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование)+РазделительСтрок+"____________________________________"+РазделительСтрок+Строка(Покупатель);
TT.Rows(2).Cells(2).Range.Text = РеквПокуп; //вторая строка, вторая ячейка
//надо таблицу сделать невидимой
TT.Borders(1).LineStyle = 0;//верхняя граница
TT.Borders(2).LineStyle = 0;//левая граница
TT.Borders(3).LineStyle = 0;//нижняя граница
TT.Borders(4).LineStyle = 0;//правая граница
TT.Borders(5).LineStyle = 0;//горизонтальная граница
TT.Borders(6).LineStyle = 0;//вертикальная граница
Если ПозДоговора<3 Тогда
ТТ="";
ТТ = Document.Tables(2);//вторая таблица
Иначе
ТТ="";
ТТ = Document.Tables(3);//третья таблица
КонецЕсли;
ИтогоК=0;
ИтогоС=0;
Н=1;
Спец.ВыбратьСтроки();
Пока Спец.ПолучитьСтроку()=1 Цикл
Если Спец.Х=2 Тогда
Н=Н+1;//надо начать со второй строки
ТТ.Rows().Add();//добавить строку
ЦенаС=(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС))/?(Спец.Количество=0,1,Спец.Количество);
ТТ.Rows(Н).Cells(1).Range.Text = СокрЛП(Спец.Номенклатура.Код);
ТТ.Rows(Н).Cells(2).Range.Text = СокрЛП(Спец.Номенклатура.Наименование);
ТТ.Rows(Н).Cells(3).Range.Text = СокрЛП(Строка(Спец.Количество));
ТТ.Rows(Н).Cells(4).Range.Text = СокрЛП(Строка(Формат(ЦенаС,"Ч15.2. ")));
ТТ.Rows(Н).Cells(5).Range.Text = СокрЛП(Строка(Формат(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС),"Ч15.2. ")));
Если ИмяШаблона= "ShablonPodZakaz.doc" Тогда
ТТ.Rows(Н).Cells(6).Range.Text = СокрЛП(Строка(Спец.СрокПоставки));
КонецЕсли;
ИтогоК=ИтогоК+Спец.Количество;
ИтогоС=ИтогоС+(Спец.СуммаСоСкидкой+?(СуммаВклНДС=1,0,Спец.СуммаНДС));
КонецЕсли;
КонецЦикла;
//итоговая строчка
Н=Н+1;
ТТ.Rows().Add();//добавить строку
ТТ.Rows(Н).Cells(2).Range.Text = "ИТОГО:";
ТТ.Rows(Н).Cells(3).Range.Text = СокрЛП(Строка(ИтогоК));
ТТ.Rows(Н).Cells(5).Range.Text = СокрЛП(Строка(Формат(ИтогоС,"Ч15.2. ")));
//границы невидимыми
ТТ.Rows(Н).Cells(1).Borders(2).LineStyle = 0;
ТТ.Rows(Н).Cells(1).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(1).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(2).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(2).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(3).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(3).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(4).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(4).Borders(4).LineStyle = 0;
ТТ.Rows(Н).Cells(5).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(5).Borders(4).LineStyle = 0;
Если ИмяШаблона= "ShablonPodZakaz.doc" Тогда
ТТ.Rows(Н).Cells(6).Borders(3).LineStyle = 0;
ТТ.Rows(Н).Cells(6).Borders(4).LineStyle = 0;
КонецЕсли;
//реквизиты в приложениии
ТТ="";
//реквизиты
РеквизПост="";
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Фирма.ОсновнойСчет, "БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
Банк = Параметры.Получить("СтрокаБанка");
Счет = Параметры.Получить("РасчетныйСчет");
БИК = Параметры.Получить("БИК");
СчетБанка = Параметры.Получить("КоррСчет");
РеквизПост = СокрЛП(Фирма.ЮрЛицо.ПолнНаименование)+РазделительСтрок+СокрЛП(глПредставлениеАдреса(Фирма.ЮрЛицо.ЮрАдрес))+РазделительСтрок+"ИНН "+Фирма.ЮрЛицо.ИНН+РазделительСтрок+"Р/с "+Счет+РазделительСтрок+"в "+Банк+РазделительСтрок+"к/сч "+СчетБанка+РазделительСтрок+"БИК "+БИК;
Если ПозДоговора = 3 Тогда
TT = Document.Tables(4);
Иначе
TT = Document.Tables(3); //третья таблица
КонецЕсли;
TT.Columns(1).Cells(1).Range.Text = РеквизПост; //первая колонка, первая ячейка
РеквизПост ="Директор "+СокрЛП(Фирма.ЮрЛицо.ПолнНаименование)+РазделительСтрок+"____________________________________"+РазделительСтрок+Строка(Фирма.ЮрЛицо.Руководитель.Получить(ДатаДок));
TT.Rows(2).Cells(1).Range.Text = РеквизПост; //вторая строка, первая ячейка
РеквПокуп = "";
Параметры.УдалитьВсе();
Параметры.ДобавитьЗначение(Контрагент.ОсновнойСчет,"БанковскийСчет");
Параметры.ДобавитьЗначение(1, "Режим");
глРеквизитыПлательщикаПолучателя(Параметры);
БанкК = Параметры.Получить("СтрокаБанка");
СчетК = Параметры.Получить("РасчетныйСчет");
БИКК = Параметры.Получить("БИК");
СчетБанкаК = Параметры.Получить("КоррСчет");
РеквПокуп = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование)+РазделительСтрок+СокрЛП(глПредставлениеАдреса(Контрагент.ЮрФизЛицо.ЮрАдрес))+РазделительСтрок+"ИНН "+Контрагент.ЮрФизЛицо.ИНН+РазделительСтрок+"Р/с "+СчетК+РазделительСтрок+"в "+БанкК+РазделительСтрок+"к/сч "+СчетБанкаК+РазделительСтрок+"БИК "+БИКК;
TT.Columns(2).Cells(1).Range.Text = РеквПокуп; //вторая колонка, первая ячейка
РеквПокуп = "Руководитель "+СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование)+РазделительСтрок+"____________________________________"+РазделительСтрок+Строка(Покупатель);
TT.Rows(2).Cells(2).Range.Text = РеквПокуп; //вторая строка, вторая ячейка
//надо таблицу сделать невидимой
TT.Borders(1).LineStyle = 0;//верхняя граница
TT.Borders(2).LineStyle = 0;//левая граница
TT.Borders(3).LineStyle = 0;//нижняя граница
TT.Borders(4).LineStyle = 0;//правая граница
TT.Borders(5).LineStyle = 0;//горизонтальная граница
TT.Borders(6).LineStyle = 0;//вертикальная граница
//Document.Tables().Item(2).Cell(1,3).Range.Text так можно обращатся к таблице и ячейке
Document.SaveAs(КаталогИб()+"\dogovora\"+ИмяФайла);
Word.Visible=1;
Word.Activate();
КонецЕсли;
КонецЕсли;
Форма.ИспользоватьСлой("Основной, Главный", 2);
КонецПроцедуры
//******************************************************************************
Процедура ОбработкаСпец()
ТекСтр=Спец.ТекущаяСтрока();
Если Спец.ТекущаяКолонка()="Х" Тогда
Если Спец.ПолучитьЗначение(ТекСтр,"Х")=1 Тогда
Спец.УстановитьЗначение(ТекСтр,"Х",2);
Иначе
Спец.УстановитьЗначение(ТекСтр,"Х",1);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ВернутьФамилию()
Стр=Фирма.ЮрЛицо.Руководитель.Получить(ДатаДок);
Пробел=Найти(Стр," ");
Фамилия=Лев(Стр,Пробел-1);
а=Прав(Фамилия,1);
Если а="а" Тогда
НФамилия=Лев(Фамилия,СтрДлина(Фамилия)-1)+"ой";
Иначе
НФамилия=Фамилия;
КонецЕсли;
НФИО=НФамилия+Сред(Стр,Пробел);
Возврат НФИО;
КонецФункции
Процедура ВыборВидаПродаж()
Зн="";
ПозЗн="";
Если СписокВидовПродаж.ВыбратьЗначение(Зн,,ПозЗн,60,1)=1 Тогда
ВидПродажи = Зн;
КонецЕсли;
КонецПроцедуры
//******************************************************************************/
Функция ИнформацияОНоменклатуре()
Перем ОстатокНаСкладе, ОстатокПоФирме; // для показа остатков
ИнфоТекст="";
Если Номенклатура.Выбран()=0 Тогда
Возврат(ИнфоТекст);
КонецЕсли;
ИнфоТекст=ИнфоТекст+СокрЛП(Номенклатура.Наименование);
Если ПустоеЗначение(Номенклатура.Артикул)=0 Тогда
ИнфоТекст=?(ИнфоТекст="","",ИнфоТекст+",");
ИнфоТекст=ИнфоТекст+" арт. "+СокрЛП(Номенклатура.Артикул);
КонецЕсли;
Возврат(ИнфоТекст);
КонецФункции //ИнформацияОНоменклатуре()
//******************************************************************************
Процедура Платеж(ТекРеж)
Если ТекРеж = 1 Тогда
СуммаАванса = Итог("СуммаСоСкидкой")/100*ПроцентАванса;
Платеж(7);
ИначеЕсли ТекРеж = 2 Тогда
ПроцентАванса = СуммаАванса/(Итог("СуммаСоСкидкой")/100);
ИначеЕсли ТекРеж = 3 Тогда
СуммаВторогоПлатежа= Итог("СуммаСоСкидкой")/100*ПроцентВторогоПлатежа;
//ПроцентТретьегоПлатежа = 100-ПроцентАванса-ПроцентВторогоПлатежа;
Платеж(7);
ИначеЕсли ТекРеж = 4 Тогда
ПроцентВторогоПлатежа = СуммаВторогоПлатежа/(Итог("СуммаСоСкидкой")/100);
//ПроцентТретьегоПлатежа = 100-ПроцентАванса-ПроцентВторогоПлатежа;
Платеж(7);
ИначеЕсли ТекРеж = 5 Тогда
СуммаТретьегоПлатежа= (Итог("СуммаСоСкидкой")/100*ПроцентТретьегоПлатежа);
Платеж(7);
//СуммаТретьегоПлатежа= СуммаТретьегоПлатежа+(Итог("СуммаСоСкидкой")-(СуммаАванса+СуммаВторогоПлатежа+СуммаТретьегоПлатежа));
ИначеЕсли ТекРеж = 6 Тогда
ПроцентТретьегоПлатежа = СуммаТретьегоПлатежа/(Итог("СуммаСоСкидкой")/100);
Платеж(7);
ИначеЕсли ТекРеж = 7 Тогда
СуммаПоследнегоПлатежа = Итог("СуммаСоСкидкой")-(СуммаАванса+СуммаВторогоПлатежа+СуммаТретьегоПлатежа);
ПроцентПоследнегоПлатежа = 100-ПроцентАванса-ПроцентВторогоПлатежа-ПроцентТретьегоПлатежа;
КонецЕсли;
КонецПроцедуры // Платеж()
/////////////
Функция ПриВыбореВремени(Время, ВремяСтрока)
Час = Число(Лев(Время, 2));
Минута = Число(Прав(Время, 2));
Если (Час > 23) или (Минута > 59) Тогда
Предупреждение("Неправильно введено время контакта!",5);
Попытка
Активизировать(ВремяСтрока);
Исключение
КонецПопытки;
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции //ПриВыбореВремен
//******************************************************************************
Процедура ПриВыбореКонтрагента()
Если ПустоеЗначение(Контрагент)=0 Тогда
Если ПустоеЗначение(Контрагент.ВидОплатыПоУмолчанию)=0 Тогда
ВидОплаты = Контрагент.ВидОплатыПоУмолчанию;
Иначе
ВидОплаты = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
// Процедура разбирает штрих-код, считанный сканером
// и заполняет строки накладной
Перем Упаковка,ТекКоличество, Спецификация;
Перем ВремТовар, ВремЕдиница, ВремКоличество;
Перем ВремЦена, ЕдЦены;
Если Событие = "BarCodeValue" Тогда
Если Форма.ТолькоПросмотр() = 0 Тогда
Если глПолучитьТоварПоШтрихкоду(Данные, ВремТовар, ВремЕдиница, ВремКоличество) <> 0 Тогда
ТаблицаПодбора = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПодбора.НоваяКолонка("Номенклатура");
ТаблицаПодбора.НоваяКолонка("Единица");
ТаблицаПодбора.НоваяКолонка("Количество", "Число");
ТаблицаПодбора.НоваяКолонка("Цена", "Число");
ТаблицаПодбора.НоваяСтрока();
ТаблицаПодбора.Номенклатура = ВремТовар;
ТаблицаПодбора.Единица = ВремЕдиница;
ТаблицаПодбора.Количество = ВремКоличество;
ТаблицаПодбора.Цена = глПолучитьЦену(ВремТовар, ТипЦен, РабочаяДата(), ВремЕдиница, Валюта, Курс);
ПараметрыПодбора = СоздатьОбъект("СписокЗначений");
ПараметрыПодбора.ДобавитьЗначение(0 , "ЕстьВидТМЦ");
ПараметрыПодбора.ДобавитьЗначение("ИзСправочника", "ЦенаВподборе");
ПараметрыПодбора.ДобавитьЗначение(ТипЦен , "ТипЦен");
ПараметрыПодбора.ДобавитьЗначение(ТаблицаПодбора , "ТаблицаПодбора");
глОбработкаПодбора(Контекст, ПараметрыПодбора, 1, 1, 1);
ПриВыбореТовара();
КонецЕсли;
КонецЕсли;
// Обработка закончена. Готовы к получению нового штрихкода.
глСканерПосылкаДанных(1);
Иначе
глОбработкаВнешнегоСобытия(Источник, Событие, Данные);
КонецЕсли;
КонецПроцедуры // ОбработкаВнешнегоСобытия()
//******************************************************************************
// ОбработкаКликаПоТабло()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура ОбработкаКликаПоТабло()
Колонка = Фрм.ИдентификаторКолонкиДерева(Фрм.ПолучитьНомерКолонкиТаблицыЗначений(Фрм.ТекущаяКолонкаДерева()));
СтрокаВетки = Фрм.ТекущаяСтрокаДерева();
Поз = Найти(СтрокаВетки,"/");
СтрокаТабло = Число(Лев(СтрокаВетки,Поз-1));
Ветка = Число(Сред(СтрокаВетки,Поз+1));
Табло.ПолучитьСтрокуПоНомеру(СтрокаТабло);
ВремТабло = Табло.Дерево;
ВремТабло.ПолучитьСтрокуПоНомеру(Ветка);
Если Колонка = "Количество" Тогда
ТекЗн = ВремТабло.Количество;
Если ВвестиЧисло(ТекЗн,"Введите количество",15,2,60) = 1 Тогда
ВремТабло.Количество = ТекЗн;
Табло.Дерево = ВремТабло;
КонецЕсли;
КонецЕсли;
а = 0;
ОбновитьДерево();
ФРМ.УстановитьТекущийУзел(СтрокаВетки);
КонецПроцедуры
//******************************************************************************
// ПослеРазворачиванияУзла(<НомерСтроки>)()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура ПослеРазворачиванияУзла(НомСтр)
СписокОткрытыхВеток.ДобавитьЗначение(НомСтр);
КонецПроцедуры
//******************************************************************************
// ПослеСворачиванияУзла(<НомерСтроки>)()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура ПослеСворачиванияУзла(НомСтр)
Поз = СписокОткрытыхВеток.НайтиЗначение(НомСтр);
СписокОткрытыхВеток.УдалитьЗначение(Поз);
КонецПроцедуры
//_____________________________________________________________________________
////////////////////////////////////////////////////////////////////////////////
// ТЕЛО МОДУЛЯ ФОРМЫ
//
// формируем таблицу печатных форм
НомерТекущейФормы = 1;
ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Печатная форма";
ТаблицаПечФорм.Кнопка = "Печать";
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Уведомление";
ТаблицаПечФорм.Кнопка = "Уведом.";
//Список открытых веток
СписокОткрытыхВеток = СоздатьОбъект("СписокЗначений");