Имя: Пароль:
1C
1C 7.7
v7: Помогите с документом
,
0 walkman315
 
02.11.12
11:48
Всем привет!)
Ребят подскажите пожалуйста...
у меня есть документ в котором есть строки Откуда и Куда. Как сделать так что бы при следующем открытии оно мне показывало предыдущее значение которое я ввела....когда я открываю его он мне показывает пустые строки.
http://s017.radikal.ru/i407/1211/f7/8b92d4ea0587.png
1 GLazNik
 
02.11.12
11:49
(0) сделать их реквизитом документа а не формы
2 Ёпрст
 
02.11.12
11:50
(1) это новый документ
3 Ёпрст
 
02.11.12
11:51
(0) запоминай эти значения где-то еще..
или в глобальных переменных, или в СохранитьЗначение-ВосстановитьЗначение
4 raykom
 
02.11.12
11:51
>при следующем открытии оно мне

Того же самого документа ?
5 Ёпрст
 
02.11.12
11:52
или в константы загони ..или еще как, в файл к, примеру, в реквизиты справочника пользователи..

В общем, развлекайся
6 Ёпрст
 
02.11.12
11:53
Ну или, ничего не делай, а нажимай F9 в журнале для создания новых документов.
7 walkman315
 
02.11.12
11:53
подскажите как это в модуле осуществить, пожалуйста

Перем Инфо, Укр, Ukr;
Перем НачальнаяДатаДокумента;
Перем СписокДействий;
Перем Дт, Кт, МестоХраненияСтароеЗначение, НовоеМестоХраненияСтароеЗначение;

// ===============================
Процедура УстСчет()
   Если ТМЦ.Выбран() = 1 Тогда
       Счет = ТМЦ.Счет;
       Если (МестоХранения.Тип = Склады) и (МестоХранения.ВидСклада = Розничный) Тогда
           Если ((СталоСчет = СчетПоКоду("25"))
           ИЛИ (СталоСчет = СчетПоКоду("26"))
           ИЛИ (ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Полуфабрикат)
           ИЛИ (ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Продукция)) Тогда
               Счет = СчетПоКоду("28.2.2");
           Иначе    
               Счет = СчетПоКоду("28.2.1");
           Конецесли;    
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура УстСталоСчет()
   Если Стало.Выбран() = 1 Тогда
       СталоСчет = Стало.Счет;
       Если (НовоеМестоХранения.Тип = Склады) и (НовоеМестоХранения.ВидСклада = Розничный) Тогда
           Если ((Счет = СчетПоКоду("25"))
           ИЛИ (Счет = СчетПоКоду("26"))
           ИЛИ (Стало.ВидТМЦ = Перечисление.ВидыТМЦ.Полуфабрикат)
           ИЛИ (Стало.ВидТМЦ = Перечисление.ВидыТМЦ.Продукция)) Тогда
               СталоСчет = СчетПоКоду("28.2.2");
           Иначе    
               СталоСчет = СчетПоКоду("28.2.1");
           КонецЕсли;    
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

// ======================================
Процедура ИзмКво()
   Если ТМЦ.Вид()="ТМЦ" Тогда
       глВыч_суммы_накл(Контекст);
   Иначе
       СуммаУчБезНДС = Кво * ТМЦ.Цена_Прих;
   КонецЕсли;
   
   глУстановитьКвоТары(Контекст);
КонецПроцедуры

// ===============================
Процедура ИзмСтало()
   Если Стало.Выбран() = 0 Тогда
       Возврат;
   КонецЕсли;
   Если НовоеМестоХранения.Выбран()=0 Тогда
       Предупреждение("Не заполнено поле Куда!");
       Возврат;
   КонецЕсли;
   Если Стало.Вид() = "ТМЦ" Тогда
       Если глПроверкаТовараВДокументе(Контекст,Стало) = Нет Тогда
           Стало = 0;
           Возврат;
       КонецЕсли;
   КонецЕсли;
   УстСталоСчет();
КонецПроцедуры

// ===============================
Процедура ИзмТМЦ()
   Если ТМЦ.Выбран() = 0 Тогда
       Возврат;
   КонецЕсли;
   Если МестоХранения.Выбран()=0 Тогда
       Предупреждение("Не заполнено поле Откуда!");
       Возврат;
   КонецЕсли;
   Если ТМЦ.Вид()="ТМЦ" Тогда
       Если глПроверкаТовараВДокументе(Контекст,ТМЦ) = Нет Тогда
           ТМЦ = 0;
           Возврат;
       КонецЕсли;    
       Если (НовоеМестоХранения.СуммовойУчет=1)
       И ((ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Полуфабрикат)
       ИЛИ (ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Продукция)) Тогда
           глКомментарий("ТМЦ "+ТМЦ+" нельзя перемещать на розничный склада с признаком ведения суммового учета.",1);
           ТМЦ = 0;
           Возврат;
       КонецЕсли;    
       глПриИзмененииТовара(Контекст);
       Стало = ?(НовоеМестоХранения.СуммовойУчет = 0, ТМЦ, Константа.ТоварыВАссортименте);
       ИзмСтало();
   Иначе
       Стало = ТМЦ;
       СуммаУчБезНДС = Кво * ТМЦ.Цена_Прих;
       ИзмСтало();
   КонецЕсли;
   УстСчет();
КонецПроцедуры
                               
// ===============================
Функция УстТоварыВАссортименте(Рекв)
   Рекв = Константа.ТоварыВАссортименте;
   Если Рекв.Выбран()=0 Тогда
       Предупреждение("На складе используется суммовой учет ТМЦ."+РазделительСтрок+
                      "Не заполнена константа ""Товары в ассортименте""!",1);
       Возврат 0;
   КонецЕсли;
   Возврат 1;
КонецФункции

// ===============================
Процедура ИзмМестоХранения()
   Если МестоХранения.Выбран() = 0 Тогда
       Возврат;
   КонецЕсли;              
         
   Если (МестоХранения.Тип = Склады) и (МестоХранения.ВидСклада = Розничный) и (МестоХранения.СуммовойУчет = 1) и
        (НовоеМестоХранения.Тип = Склады) и (НовоеМестоХранения.ВидСклада = Розничный) и (НовоеМестоХранения.СуммовойУчет = 1) Тогда
        Предупреждение("Нельзя выполнять перемещение с розничного склада с суммовым учетом на розничный склад с суммовым учетом!");
        МестоХранения = 0;
        Возврат;
   КонецЕсли;

   Если МестоХранения.Тип = МОЛы Тогда
       Выдал = МестоХранения.МОЛ;
   КонецЕсли;
   
   Если МестоХранения.ВидСклада <> МестоХраненияСтароеЗначение.ВидСклада  Тогда
       // изменим счета в табличной части
       Если КоличествоСтрок() > 0 Тогда
           Если Вопрос("Изменить счет учета в табличной части?","Да+Нет") = "Да" Тогда
               ВыбратьСтроки();
               Пока ПолучитьСтроку() = 1 Цикл
                   УстСчет();
               КонецЦикла;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
       
   Если МестоХранения.СуммовойУчет = 1 Тогда
       // в табличной части установим ТМЦ = ТоварыВАссонртименте
       ВыбратьСтроки();
       Пока ПолучитьСтроку() = 1 Цикл
           УстТоварыВАссортименте(ТМЦ);
       КонецЦикла;
   ИначеЕсли НовоеМестоХранения.СуммовойУчет <> 1 Тогда
       // если выбрано склад без суммового учета и второй склад также без суммового учета,
       // тогда уберем находящиеся в табличной части ТоварывАссортименте (ТМЦ = Стало)
       ВыбратьСтроки();
       Пока ПолучитьСтроку() = 1 Цикл
           // если до этого в строке уже было не ТоварывАссортименте, так и оставим
           Если ТМЦ = Константа.ТоварыВАссортименте Тогда
               ТМЦ = Стало;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   МестоХраненияСтароеЗначение = МестоХранения;    
КонецПроцедуры

// ===============================
// Назначение: обновляет список действий по кнопке "Действия"
//        
// Аргументы:
//        
Процедура ОбновитьСписокДействий()      
   // обновим список действий
   ТекстСписокДействий = "
           |ДвиженияДокумента,
           |СтруктураПодчиненности,
           |ВводНаОсновании,
           |ОткрытьВЖурнале,
           |Подчиненные";
   Если (ПустоеЗначение(НовоеМестоХранения) = 0) Тогда
       Если (НовоеМестоХранения.ВидСклада =Перечисление.ВидыСкладов.Розничный) Тогда
           ТекстСписокДействий = "
               |ТоварныйСостав,
               |ДвиженияДокумента,
               |ОбновлениеЦен,
               |СтруктураПодчиненности,
               |ВводНаОсновании,
               |ОткрытьВЖурнале,
               |Подчиненные";
       КонецЕсли;
   КонецЕсли;
   СписокДействий = глПолучитьСписокДействий(ТекстСписокДействий,Форма.ТолькоПросмотр());
КонецПроцедуры //ОбновитьСписокДействий


// ===============================
Процедура ИзмНовоеМестоХранения()
   Если НовоеМестоХранения.Выбран() = 0 Тогда
       Возврат;
   КонецЕсли;
     
   Если (МестоХранения.Тип = Склады) и (МестоХранения.ВидСклада = Розничный) и (МестоХранения.СуммовойУчет = 1) и
        (НовоеМестоХранения.Тип = Склады) и (НовоеМестоХранения.ВидСклада = Розничный) и (НовоеМестоХранения.СуммовойУчет = 1) Тогда
        Предупреждение("Нельзя выполнять перемещение с розничного склада с суммовым учетом на розничный склад с суммовым учетом!",1);
        НовоеМестоХранения = 0;
        Возврат;
   КонецЕсли;
   
   Если НовоеМестоХранения.Тип = МОЛы Тогда
       Получил = НовоеМестоХранения.МОЛ;
   КонецЕсли;

   Если НовоеМестоХранения.ВидСклада <> НовоеМестоХраненияСтароеЗначение.ВидСклада Тогда
       // изменим счета в табличной части
       Если КоличествоСтрок() > 0 Тогда
           ИзменятьСчета = Вопрос("Изменить счет учета в табличной части?","Да+Нет");
           ИзменятьЦены = Вопрос("Изменить цены в табличной части?","Да+Нет");
           ВыбратьСтроки();
           Пока ПолучитьСтроку() = 1 Цикл
               Если ИзменятьСчета = "Да" Тогда
                   УстСталоСчет();
               КонецЕсли;
               Если ИзменятьЦены = "Да" Тогда
                   глПриИзмененииТовара(Контекст);
               КонецЕсли;    
           КонецЦикла;
       КонецЕсли;
   КонецЕсли;

   Если НовоеМестоХранения.СуммовойУчет = 1 Тогда
       // в табличной части установим Стало = ТоварыВАссонртименте
       ВыбратьСтроки();
       Пока ПолучитьСтроку() = 1 Цикл
           УстТоварыВАссортименте(Стало);
       КонецЦикла;
   ИначеЕсли МестоХранения.СуммовойУчет <> 1 Тогда
       // если выбрано склад без суммового учета и второй склад также без суммового учета,
       // тогда уберем находящиеся в табличной части ТоварывАссортименте (Стало = ТМЦ)
       ВыбратьСтроки();
       Пока ПолучитьСтроку() = 1 Цикл
           // если до этого в строке уже было не ТоварывАссортименте, так и оставим
           Если Стало = Константа.ТоварыВАссортименте Тогда
               Стало = ТМЦ;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
                                 
   ОбновитьСписокДействий();
   НовоеМестоХраненияСтароеЗначение = НовоеМестоХранения;    
КонецПроцедуры

// ===============================
Процедура УстИнфо()
   Инфо = "";
   Если (МестоХранения.Выбран()=1) и (НовоеМестоХранения.Выбран()=1) Тогда
       Если (МестоХранения.Тип = Склады) и (НовоеМестоХранения.Тип = Склады) Тогда
           Инфо = "Перемещаем ";
           Если МестоХранения.ВидСклада = Оптовый Тогда
               Инфо = Инфо+"с оптового склада ";
           ИначеЕсли МестоХранения.СуммовойУчет=1 Тогда
               Инфо = Инфо + "из розницы с суммовым учетом ";
           Иначе
               Инфо = Инфо + "из розницы ";
           КонецЕсли;
           Если НовоеМестоХранения.ВидСклада = Оптовый Тогда
               Инфо = Инфо+"на оптовый склад";
           ИначеЕсли НовоеМестоХранения.СуммовойУчет=1 Тогда
               Инфо = Инфо + "в розницу с суммовым учетом.";
           Иначе
               Инфо = Инфо + "в розницу.";
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

// ===============================
Функция УстДоступность()
   УстИнфо();
   
   Форма.Заголовок(глЗаголовок(Контекст,"Перемещение"));
   
 //Если (Модифицированность() = 1) Или (Проведен() = 0) Тогда
   //    Форма.кПечать.Доступность(0);
   //Иначе
       Форма.кПечать.Доступность(1);
   //КонецЕсли;
               
   Если (НовоеМестоХранения.ВидСклада = Перечисление.ВидыСкладов.Розничный)
    Или ((МестоХранения.ВидСклада = Перечисление.ВидыСкладов.Розничный) И (МестоХранения.СуммовойУчет = 1)) Тогда
       ВидимостьЦенаСНДС = 1;
   Иначе
       ВидимостьЦенаСНДС = 0;
   КонецЕсли;
   //Если (названиеНабораПрав()="БухМатериалы")или (названиеНабораПрав()="Администратор") тогда
   //    ВидимостьЦенаСНДС=1;
   //Конецесли;        
   Форма.ЦенаСНДС.Видимость(ВидимостьЦенаСНДС);
   Форма.СуммаСНДС.Видимость(ВидимостьЦенаСНДС);
                         
   Если МестоХранения.Тип = Склады Тогда
       Форма.Выдал.Доступность(1);
       Форма.ТМЦ.НеИзменятьВид(1);
       Если МестоХранения.ВидСклада = Розничный Тогда
           Форма.Счет.Доступность(0);
           Если МестоХранения.СуммовойУчет=1 Тогда
               Форма.ТМЦ.Доступность(0);
               Форма.Предпочтение.Доступность(0);
           Иначе
               Форма.ТМЦ.Доступность(1);
               Форма.Предпочтение.Доступность(1);
           КонецЕсли;
       Иначе
           Форма.ТМЦ.Доступность(1);
           Форма.Предпочтение.Доступность(1);
           Форма.Счет.Доступность(1);
       КонецЕсли;
   Иначе
       Форма.Выдал.Доступность(0);
       Форма.ТМЦ.НеИзменятьВид(0);  
   КонецЕсли;

   Если (МестоХранения.Тип = Склады) и (МестоХранения.ВидСклада = Розничный)
   и (МестоХранения.СуммовойУчет = 1) Тогда
       Форма.СуммаУчБезНДС.Видимость(1);
   Иначе
       Форма.СуммаУчБезНДС.Видимость(1);
   КонецЕсли;

   Если НовоеМестоХранения.Тип = Склады Тогда
       Форма.Получил.Доступность(1);
       Форма.Стало.НеИзменятьВид(1);
       Если НовоеМестоХранения.ВидСклада = Розничный Тогда
           Форма.СталоСчет.Доступность(0);
           Если НовоеМестоХранения.СуммовойУчет=1 Тогда
               Форма.Стало.Доступность(0);
           Иначе
               Форма.Стало.Доступность(1);
           КонецЕсли;
       Иначе
           Форма.Стало.Доступность(1);
           Форма.СталоСчет.Доступность(1);
       КонецЕсли;
   Иначе
       Форма.Получил.Доступность(0);  
       Форма.Стало.НеИзменятьВид(0);
   КонецЕсли;
   
   Возврат "";
КонецФункции

// ===============================
Процедура ПриНачалеРедактированияСтроки()
   Если (МестоХранения.Выбран() = 0) или (НовоеМестоХранения.Выбран() = 0) Тогда
       Предупреждение("Заполните реквизиты Откуда и Куда!");
       СтатусВозврата(0);
       Возврат;
   КонецЕсли;
   Если ПустоеЗначение(Предпочтение)=1 Тогда
       Форма.Предпочтение.НазначитьТип("Справочник.Контрагенты");
       Предпочтение=ПолучитьПустоеЗначение("Справочник.Контрагенты");
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура ПриРедактированииНовойСтроки()
   ПриНачалеРедактированияСтроки();
   Если СтатусВозврата()=1 Тогда
       Если (МестоХранения.ВидСклада=Розничный) и (МестоХранения.СуммовойУчет=1) Тогда
           Если УстТоварыВАссортименте(ТМЦ) <> 1 Тогда
               СтатусВозврата(0);
               Возврат;
           КонецЕсли;
           УстСчет();
       КонецЕсли;
       Если (НовоеМестоХранения.ВидСклада=Розничный) и (НовоеМестоХранения.СуммовойУчет=1) Тогда
           Если УстТоварыВАссортименте(Стало) <> 1 Тогда
               СтатусВозврата(0);
               Возврат;
           КонецЕсли;
           УстСталоСчет();
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура ОбработкаПодбора(Выб)
   Если (НовоеМестоХранения.ВидСклада = Розничный) И (НовоеМестоХранения.СуммовойУчет=1)
   И (МестоХранения.ВидСклада = Розничный) И (МестоХранения.СуммовойУчет=1) Тогда
       Если ТМЦ <> Константа.ТоварыВАссортименте Тогда
           глКомментарий("ТМЦ "+ТМЦ+" нельзя перемещать с розничного склада с признаком ведения суммового учета.",1);
           ТМЦ = 0;
           Возврат;
       КонецЕсли;
   КонецЕсли;
   
   Если НовоеМестоХранения.СуммовойУчет=1 Тогда
       Если ((ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Полуфабрикат)
       ИЛИ (ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Продукция)) Тогда
           глКомментарий("ТМЦ "+ТМЦ+" нельзя перемещать на розничный склада с признаком ведения суммового учета.",1);
           ТМЦ = 0;
           Возврат;
       КонецЕсли;    
   КонецЕсли;    

   текНачальнаяСтрока = КоличествоСтрок();
   глПриОбработкеПодбора(Выб,Контекст);  
   
   Для текНомерСтроки = текНачальнаяСтрока По КоличествоСтрок() Цикл
       ПолучитьСтрокуПоНомеру(текНомерСтроки);
       ИзмТМЦ();
   КонецЦикла;    
   
КонецПроцедуры

// ===============================
Процедура ОбработкаВыбораЗначения(ВыбЗнач,ИдентЭлемДиалога,ФлагСтандОбр)
   Если ИдентЭлемДиалога = "ДокументОснование" Тогда
       Если глПроверитьФирму(Контекст,ВыбЗнач) = 0 Тогда
           ФлагСтандОбр = 0;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура ВводНового(Признак)
   Если Признак = 1 Тогда
       УстановитьНовыйНомер("ВПМ-");
       Возврат;
   КонецЕсли;
   фирма=константа.БазФирма;
   МестоХранения=восстановитьЗначение("НКК_МЕСТОХРАНЕНИЯ");
   НовоеМестоХранения=восстановитьЗначение("НКК_МЕСТОХРАНЕНИЯ1");
КонецПроцедуры

// ===============================
Процедура ПриОткрытии()
   НачальнаяДатаДокумента = ДатаДок;
   Форма.кПравоваяПоддержка.Видимость(глВидимостьПравовойПоддержки);
   глПроверкаДатыДок(Контекст,"Открытие");
   ПриЗаписиПерепроводить(1);
   // Если открыли только на просмотр, то надо кнопки сделать недоступными
   Если Форма.ТолькоПросмотр()=1 Тогда
       Форма.кОК.Доступность(0);
       Форма.кПровести.Доступность(0);
       Форма.кЗаполнить.Доступность(0);
       Форма.кПодбор.Доступность(0);
       Форма.кФирма.Доступность(0);                      
       Форма.КнопкаПоУмолчанию("кЗакрыть");
   Иначе
       Форма.КнопкаПоУмолчанию("кОК");
   КонецЕсли;        
   
   Если Константа.ПоказыватьОстаткиТМЦ = Нет Тогда
       Форма.тОстатокПолный.Видимость(0);
       Форма.тОстатокПоСкладуОткуда.Видимость(0);
       Форма.тОстатокПоСкладуКуда.Видимость(0);
   КонецЕсли;

   Форма.МестоХранения.ВыполнятьФормулуТолькоПриИзменении(1);
   Форма.НовоеМестоХранения.ВыполнятьФормулуТолькоПриИзменении(1);
   МестоХраненияСтароеЗначение = МестоХранения;    
   НовоеМестоХраненияСтароеЗначение = НовоеМестоХранения;    
   глМестоХранения = МестоХранения;
   УстИнфо();
   ОбновитьСписокДействий();
КонецПроцедуры

// ===============================
Процедура ПриЗаписи()
   глПроверкаДатыДок(Контекст,"Запись");
   Если глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда
       СтатусВозврата(0);
   КонецЕсли;
   Автор = глПользователь;
КонецПроцедуры

// ===============================
Процедура ВыборПредпочтения()
   спОтбор = СоздатьОбъект("СписокЗначений");
   спСчета=СоздатьОбъект("СписокЗначений");
   спСчета.ДобавитьЗначение(Счет);
   спОтбор.Установить("Счет",спСчета);
   Если глПартионныйУчетПоСкладам = Да Тогда
       спОтбор.Установить("МестоХранения",МестоХранения);
   КонецЕсли;
   спОтбор.Установить("Контекст",Контекст);      
   ОткрытьФормуМодально("Справочник.Контрагенты.ВыборПредпочтения", спОтбор);
КонецПроцедуры

// =============================
Процедура РазобратьСуммуПроводки(Опер, СуммаУч, СуммаРозн, Наценка, Дооценка)
   Перем ФлагВыхода;
   
   // если в операции есть сложные проводки, запоминаем счета из предыдущих корреспонденций
   Если ПустоеЗначение(Опер.Дебет.Счет) = 0 Тогда
       Дт = Опер.Дебет.Счет;
   ИначеЕсли Опер.НомерКорреспонденции() = 1 Тогда
       ФлагВыхода = 1;
   КонецЕсли;
   Если ПустоеЗначение(Опер.Кредит.Счет) = 0 Тогда
       Кт = Опер.Кредит.Счет;
   ИначеЕсли Опер.НомерКорреспонденции() = 1 Тогда
       ФлагВыхода = 1;
   КонецЕсли;
   Если ФлагВыхода = 1 Тогда
       Возврат;
   КонецЕсли;
   
   Если (Дт.ПринадлежитГруппе(СчетПоКоду("28.5")) = 1) Или (Кт.ПринадлежитГруппе(СчетПоКоду("28.5")) = 1) Тогда
       Если Дт = Кт Тогда
           // "перемещение" наценки
           Наценка = Наценка + Опер.Сумма;
       ИначеЕсли Дт.ПринадлежитГруппе(СчетПоКоду("28.5")) = 1 Тогда
           // дооценка
           Дооценка = Дооценка - Опер.Сумма;
       Иначе
           Дооценка = Дооценка + Опер.Сумма;
       КонецЕсли;
   ИначеЕсли (Дт.ПринадлежитГруппе(СчетПоКоду("28.2")) = 1) Или (Кт.ПринадлежитГруппе(СчетПоКоду("28.2")) = 1) Тогда
       Если Дт = Кт Тогда
           // "перемещение" продажной стоимости
           СуммаРозн = СуммаРозн + Опер.Сумма;
       Иначе
           // движение по учетной стоимости
           СуммаУч = СуммаУч + Опер.Сумма;
       КонецЕсли;
   ИначеЕсли (Дт = СчетПоКоду("232")) Или (Кт = СчетПоКоду("232")) Тогда
       // собств. затраты по переработке давальческого сырья не учитываем
   Иначе
       // оптовое перемещение
       СуммаУч = СуммаУч + Опер.Сумма;
   КонецЕсли;
КонецПроцедуры

// =============================
Процедура ПолучитьДанныеИзПроводок(СуммаУч, СуммаРозн)
   Перем    Наценка;
   
   Наценка        = 0;
   Дооценка    = 0;
   СуммаУч        = 0;
   СуммаРозн   = 0;
   
   Опер = СоздатьОбъект("Операция");
   Опер.НайтиОперацию(ТекущийДокумент());
   Опер.ВыбратьПроводки();
   Пока Опер.ПолучитьПроводку()=1 Цикл
       Если (Опер.НомерСтрокиДокумента() = НомерСтроки) Тогда
           РазобратьСуммуПроводки(Опер, СуммаУч, СуммаРозн, Наценка, Дооценка);
       КонецЕсли;
   КонецЦикла;
   
   Если (СуммаУч = 0) И (СуммаРозн <> 0) Тогда
       СуммаУч = СуммаРозн - Наценка;
       СуммаРозн = СуммаРозн + Дооценка;
   КонецЕсли;
   Если (СуммаРозн = 0) И (СуммаУч <> 0) Тогда
       СуммаРозн = СуммаУч + Дооценка * ?(Дооценка > 0, 1, -1);
   КонецЕсли;
   Если (СуммаРозн = 0) И (СуммаУч = 0) Тогда
       СуммаРозн = Дооценка * ?(Дооценка > 0, 1, -1);
   КонецЕсли;    

КонецПроцедуры

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

// ===============================
Процедура Печать()
Перем Выб;
   записать();
   спВыб = СоздатьОбъект("СписокЗначений");
   спВыб.ДобавитьЗначение("Накладная (дир. - гл.бух.)");
   спВыб.ДобавитьЗначение("Накладная (товаровед)");
   
   Если спВыб.ВыбратьЗначение(Выб,,,,1) = 0 Тогда
     Возврат;
   КонецЕсли;
   
   Если Выб = "Накладная (дир. - гл.бух.)" Тогда
     ПечатьПеремещение();
   Иначе
     ПечатьПеремещение(1);
   КонецЕсли;
   
КонецПроцедуры //Печать

// ===============================
Процедура ПриНачалеВыбораЗначения(Рекв,СтандОбр)
   Если Рекв = "Предпочтение" Тогда
       ВыборПредпочтения();    
       СтандОбр = 0;
   ИначеЕсли (Рекв = "СталоСчет") и (Константа.ИспользоватьСписокКорректныхПроводок = Да)
   И (Счет.Выбран() = 1) Тогда
       СписокКорректныхПроводок = СоздатьОбъект("СписокЗначений");
       СписокКорректныхПроводок.Установить("Счет", Счет);
       СписокКорректныхПроводок.Установить("Корреспонденция", 0);
       глЗначениеОтбора = СписокКорректныхПроводок;
   ИначеЕсли (Рекв="Выдал") или (Рекв="Получил") Тогда
       КонтФирмы = Фирма;
       СтандОбр = 0;
       ОткрытьФорму("Справочник.Сотрудники.ДляВыбора",КонтФирмы);
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура ВводНаОсновании(Док)
   Фирма = Док.Фирма;
   ДокументОснование = Док;
   УстановитьНовыйНомер("ВПМ-");
   Если Найти(Док.Вид(),"ПриходнаяНакладная") <> 0 Тогда
       Если Док.Вид() = "ПриходнаяНакладнаяГТД" Тогда
           // проверим что приходуем
           Если Док.ЧтоПриходуем = Перечисление.ЧтоПриходуем.ОСиНМАиДрНеобМатАктивы Тогда            
               ДокументОснование = "";
               Предупреждение("Нельзя перемещать ОС, НМА, другие необоротные материальные активы!",2);
               СтатусВозврата(0);
               Возврат;
           КонецЕсли;
       КонецЕсли;
       // считаем, что перемещаем с оптового склада в розницу
       МестоХранения = Док.МестоХранения;
       Если НовоеМестоХранения.Выбран() = 0 Тогда
           НовоеМестоХранения = Фирма.ОсновнойСклад;
       КонецЕсли;
       Если (ПустоеЗначение(Константа.ТоварыВАссортименте)=1) И (Док.МестоХранения.СуммовойУчет=1) Тогда
           Предупреждение("На складе-получателе используется суммовой учет ТМЦ."+РазделительСтрок+
                   "Не заполнена константа ""Товары в ассортименте""!",2);
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
       Док.ВыбратьСтроки();
       Пока Док.ПолучитьСтроку() = 1 Цикл
           Если Док.ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Услуга Тогда
               Продолжить;
           КонецЕсли;    
           НоваяСтрока();
           ТМЦ = Док.ТМЦ;
           УстСчет();
           Если НовоеМестоХранения.СуммовойУчет=1 Тогда
               Стало = Константа.ТоварыВАссортименте;
           Иначе
               Стало = ТМЦ;
           КонецЕсли;
           УстСталоСчет();
           Если (НовоеМестоХранения.Тип = Склады) и (НовоеМестоХранения.ВидСклада = Розничный) Тогда
               глПриИзмененииТовара(Контекст);
           Иначе    
               Если глЕстьРеквизитМнЧ("ЦенаСНДС", Док.Вид())= Да Тогда
                   ЦенаСНДС = Док.ЦенаСНДС;
               Иначе                      
                   ЦенаСНДС = Док.ЦенаБезНДС;
               КонецЕсли;    
           КонецЕсли;    
           Кво = Док.Кво;        
           глВыч_суммы_накл(Контекст,1);
       КонецЦикла;
   Иначе
       // зеркально отображаем документ, являющийся основанием для заполнения
       МестоХранения = Док.НовоеМестоХранения;
       Выдал = Док.Получил;
       НовоеМестоХранения = Док.МестоХранения;
       Получил = Док.Выдал;
       Док.ВыбратьСтроки();
       Пока Док.ПолучитьСтроку() = 1 Цикл
           НоваяСтрока();
           ТМЦ = Док.Стало;
           Счет = Док.СталоСчет;
           Стало = Док.ТМЦ;
           СталоСчет = Док.Счет;
           Кво = Док.Кво;
           ЦенаСНДС = Док.ЦенаСНДС;
           СуммаУчБезНДС = Док.СуммаУчБезНДС;
           СуммаСНДС = Док.СуммаСНДС;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры

// ===============================
Процедура Заполнить(Док=0) // заполнить по приходным документам
   Перем ВыбЗначение, Таб;
   
   Если Док = 0 Тогда
       Меню = СоздатьОбъект("СписокЗначений");
       Меню.ДобавитьЗначение("ПриходнаяНакладнаяГТД","По ГТД");
       Меню.ДобавитьЗначение("ПриходнаяНакладнаяЗапасы","По приходным накладным (запасы)");
       Меню.ДобавитьЗначение("Перемещение","По документам Перемещение");
       Если Меню.ВыбратьЗначение(ВыбЗначение,"",,,1) = 0 Тогда
           Возврат;
       КонецЕсли;
       
       Док = СоздатьОбъект("Документ."+ВыбЗначение);
       Если Док.Выбрать("Выберите документ (существущие строки будут удалены):") = 0 Тогда
           Возврат;
       КонецЕсли;
   КонецЕсли;
   
   Если КоличествоСтрок() > 0 Тогда
       Если Вопрос("Удалить существующие строки?","Да+Нет") = "Да" Тогда
           УдалитьСтроки();
       КонецЕсли;
   КонецЕсли;
   
   ВводНаОсновании(Док.ТекущийДокумент());
   
   // поскольку повторения не разрешены...
   ВыгрузитьТабличнуюЧасть(Таб);
   Таб.Свернуть("ТМЦ,Предпочтение,Счет,Стало,СталоСчет","Кво");
   ЗагрузитьТабличнуюЧасть(Таб);
КонецПроцедуры

// ===============================
Процедура ИзмСуммаУчБезНДС()
   // При изменении реквизита СуммаУчБезНДС признак модифицированности
   // устанавливается после прорисовки формы, из-за чего не изменяется
   // доступность кнопки "Печать" на форме. Для того, чтобы корректно
   // установился признак модифицорованности документа до прорисовки,
   // изменим другой реквизит документа, и восстановим его значение.
   ВременноеКво = Кво;
   Кво = Кво + 1;
   Кво = ВременноеКво;
КонецПроцедуры //ИзмСуммаУчБезНДС

// ===============================
Процедура ДобавитьТару()
   
   тбТМЦ = СоздатьОбъект("ТаблицаЗначений");
   ВыгрузитьТабличнуюЧасть(тбТМЦ);
   
   тбТара = СоздатьОбъект("ТаблицаЗначений");
   тбТара.НоваяКолонка("ТМЦ","Справочник.ТМЦ");
   тбТара.НоваяКолонка("Кво","Число",5,0);
   тбТМЦ.ВыбратьСтроки();
   Пока тбТМЦ.ПолучитьСтроку() = 1 Цикл
       Если тбТМЦ.ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Тара Тогда
         Продолжить;  
       КонецЕсли;
       Если тбТМЦ.ТМЦ.Тара.Выбран() = 1 Тогда
         тбТара.НоваяСтрока();
   
8 walkman315
 
02.11.12
11:55
В процедуре вводнового там признак
если признакКопирования сделать поможет?
9 viktor_vv
 
02.11.12
11:55
(7) Надо еще глобальник вывалить сюда :), без него не взлетит.
10 ЧеловекДуши
 
02.11.12
11:55
Позвать специалиста, он все сможет :)
11 ЧеловекДуши
 
02.11.12
11:56
(7) Ты кто по образованию?
Это что бы лишних вопросов не было ;)
12 Ёпрст
 
02.11.12
11:57
(7)
Процедура ПриЗакрытии()
  СохранитьЗначение("НКК_МЕСТОХРАНЕНИЯ",МестоХранения);
  СохранитьЗначение("НКК_МЕСТОХРАНЕНИЯ1",НовоеМестоХранения);
КонецПроцедуры
13 walkman315
 
02.11.12
11:57
я серьёзно))
просто скажите какая это функция, просто я даже незнаю как это в инете искать, уже все писала, нужного мне не находит
14 Ёпрст
 
02.11.12
11:57
это добавь и наслаждайся
15 viktor_vv
 
02.11.12
12:00
(13) Кстати, во ВводНового() восстановление уже есть. Видать забыли сохранение добавить.
16 walkman315
 
02.11.12
12:02
Ёпрст4 Спасибо большое, все работает))))
огромное спасибо)