7.7 Расходная накладная, цена

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Sloth, 19 янв 2012.

  1. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, прошу сердешно помочь, новичок в конфегурировании, самописная конфа, расходная накладная (кому если понадобится могу выслать код), при завершении периода случилась такая беда, при открытии расходных, проведенных перед заверешением периода, сумму показывает а цену не показывает, возможен ввод цены в ручную, но накладных очень много, в ручную очень долго, как бы ускорить процесс, полазил по коду, не вкуплю откуда он берет эту цену, Товар.Розн_Цена при приходе указывается, с нее должен брать, а накладные по цене все равно пустые. Хотел сделать пересчет, но не хватает знаний, т.к. даже толком программировать не умею, только начал заниматься этим в плотную. Буду рад любым советам (конечно хотелось бы решить проблему).
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если конфа самописная, то без кода понять, что у вас случилось, может только телепат....
  3. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    А где найти такого телепата? А если серьезно, могу выслать код.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  5. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Прям сюда?
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вы хотите каждому желающему помочь лично высылать? вам что-то мешает выложить? данные то не надо. только кодик
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Стукните в аську
  8. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Извеняюсь за долгое отсутствие, проблемы с нетом были.вот кодик расходной накладной:

    Код:
    Перем ИнформационнаяСтрока;
    Перем Валюта_Прежн;
    Перем Курс_Прежн;
    Перем Режим;
    Перем Prompt;
    Перем Подтверждение; 
    //------------------------
    Процедура ВыписСч()
    Если Проведен()=0 Тогда
    Предупреждение("Нельзя выписывать счет-фактуру на основании не проведенного документа!");
    Возврат;
    КонецЕсли;
    Д3=СоздатьОбъект("Документ.Счет_фактура");
    Если СчетФактура.Выбран()=1 Тогда
    Д3.НайтиДокумент(СчетФактура);
    Пока Д3.ВыбратьСтроки()=1 Цикл
    Пока Д3.ПолучитьСтроку()=1 Цикл
    Д3.УдалитьСтроку();
    КонецЦикла;
    КонецЦикла;
    Иначе
    Д3.Новый();
    Д3.ДатаДок=ДатаДок;
    КонецЕсли;
    Д3.Автор=Пользователь;
    Д3.Валюта=Рубли;
    Д3.НомерДок=НомерДок;
    Д3.Фирма=Фирма;
    Д3.Фирма.ИспользоватьДату(Д3.ДатаДок);
    Д3.ДокументОснование=ТекущийДокумент();
    Д3.Основание=Вид()+" № "+ НомерДок+" от "+ДатаДок;
    Д3.Налог=Налог;
    Д3.Наценка=Скидка;
    Д3.Дата_Курса=Дата_Курса;
    Д3.Клиент=Клиент;
    Д3.Клиент.ИспользоватьДату(Д3.ДатаДок);
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Д3.НоваяСтрока();
    Д3.Товар=Товар;
    Д3.Единица=Единица;
    Д3.Коэффициент=Коэффициент;
    Д3.СтранаПроисхождения=СтранаПроисхождения;
    Д3.Количество=Количество;
    Д3.НДС=НДС;
    Д3.Сумма=Сумма;
    Д3.Цена=Сумма/Количество;
    КонецЦикла;
    Д3.Записать();
    //Д3.Провести(1);
    СчетФактура=Д3.ТекущийДокумент();
    ОткрытьФорму(Д3.ТекущийДокумент());
    КонецПроцедуры
    
    Процедура ВводПодтверждения()
    Если ДокПод.Выбран()=1 Тогда
    Предупреждение("Расход по этому документу уже был!!!");
    Возврат;
    КонецЕсли;
    Д1=СоздатьОбъект("Документ.Расходный");
    Д1.Новый();
    Д1.ТипНакладной=Перечисление.ТипыНакладных.Расходная;
    Д1.ДатаДок=РабочаяДата();
    Д1.Автор=Пользователь;
    Д1.Склад=Склад;
    Д1.ДкОснов=ТекущийДокумент();
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл 
    Д1.НоваяСтрока();
    Д1.Товар=Товар;
    Д1.Цена=ЦенаБС;
    Д1.Единица=Единица;
    Д1.Коэффициент=Коэффициент;
    Д1.Количество=Количество;
    Д1.НДС=НДС;
    Д1.Сумма=Сумма;
    КонецЦикла;
    Д1.Записать();
    Статус=Д1.Провести(1);
    Если Статус=0 Тогда
    Д1.Удалить();
    Возврат;
    КонецЕсли;
    ДокПод=Д1.ТекущийДокумент();
    Подтверждение=1;
    Форма.КнФирма.Доступность(0);
    Форма.КнСклад.Доступность(0);
    Форма.ПризнакНакладной.Доступность(0);
    Форма.ТипЦен.Доступность(0);
    Форма.ПодборПоКаталогу.Доступность(0);
    Форма.ПодборПоПрайсу.Доступность(0);
    КонецПроцедуры
    Процедура ПривыбореФирмы()
    Если Фирма.Реал=Перечисление.Реал.Осн Тогда
    //  Форма.Алф.Доступность(1);		 
    Форма.СЧФ.Доступность(1);		 
    Форма.ПодборПоКаталогу.Доступность(1);		 
    //  Форма.ПодборПоПрайсу.Доступность(1);		 
    Форма.ОК3.Доступность(1);		 
    Форма.ОК2.Доступность(1);		 
    Форма.ОК.Доступность(1);		 
    Форма.КнСклад.Доступность(1);		 
    Форма.КнФирма.Доступность(1);		 
    Форма.Х.Доступность(1);
    Форма.ЗнНДС.Видимость(0);		 
    Форма.ЗначениеНДС.Видимость(0);		 
    Форма.НомерСчета.Видимость(0);
    Форма.НСч.Видимость(0);
    Форма.Х.Видимость(1);
    Форма.СчФ.Видимость(1);
    Форма.СчетФактура.Видимость(1);
    Если Склад.ВидЦен=Перечисление.ВидЦен.Розница Тогда
    Форма.Цена2.Видимость(0);
    Форма.Сумма2.Видимость(0);
    ТипЦен=Перечисление.ВидЦен.Розница;
    Иначе
    Форма.Цена2.Видимость(1);
    Форма.Сумма2.Видимость(1);
    ТипЦен=Перечисление.ВидЦен.Розница2;
    КонецЕсли 
    Иначе
    Форма.ЗнНДС.Видимость(1);		 
    Форма.ЗначениеНДС.Видимость(1);		 
    Форма.Цена2.Видимость(1);
    Форма.Сумма2.Видимость(1);
    Форма.Х.Видимость(0);
    Форма.СчФ.Видимость(0);
    Форма.СчетФактура.Видимость(0);
    Форма.НомерСчета.Видимость(1);
    Форма.НСч.Видимость(1);
    ТипЦен=Перечисление.ВидЦен.Себестоимость;
    Если ТекущийДокумент().Проведен()=0 Тогда
    НомерСчета=Константа.НомерСчета+1;
    КонецЕсли;
    КонецЕсли;
    Подтверждение=0;
    КонецПроцедуры
    Процедура ПриОткрытии()
    ПроверкаРазрешенияРедактирования(Контекст);
    Если Форма.ТолькоПросмотр()=1 Тогда
    // Форма.Алф.Доступность(0);		 
    Форма.СЧФ.Доступность(0);		 
    Форма.ПодборПоКаталогу.Доступность(0);		 
    //    Форма.ПодборПоПрайсу.Доступность(0);		 
    Форма.ОК3.Доступность(0);		 
    Форма.ОК2.Доступность(0);		 
    Форма.ОК.Доступность(0);		 
    Форма.КнСклад.Доступность(0);		 
    Форма.КнФирма.Доступность(0);		 
    Форма.Х.Доступность(0);		 
    КонецЕсли;
    Подтверждение=0;
    Если Склад.ВидЦен=Перечисление.ВидЦен.Розница Тогда
    Форма.Цена2.Видимость(0);
    Форма.Сумма2.Видимость(0);
    ТипЦен=Перечисление.ВидЦен.Розница;
    Иначе
    Форма.Цена2.Видимость(1);
    Форма.Сумма2.Видимость(1);
    ТипЦен=Перечисление.ВидЦен.Розница2;
    КонецЕсли;
    ПривыбореФирмы();
    КонецПроцедуры
    
    Процедура ПриВводеСтроки()
    Если ДокПод.Выбран()=1 Тогда
    Предупреждение("Нельзя изменять подтвержденный документ!!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецПроцедуры
    Процедура ПриНачалеРедактированияСтроки()
    Если ДокПод.Выбран()=1 Тогда
    Предупреждение("Нельзя изменять подтвержденный документ!!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецПроцедуры
    Процедура ПриУдаленииСтроки()
    Если ДокПод.Выбран()=1 Тогда
    Предупреждение("Нельзя изменять подтвержденный документ!!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецПроцедуры
    Процедура ПриЗаписи()
    Подтверждение=0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Себест=Себест+Товар.Прих_Цена*Количество;
    КонецЦикла;
    
    КонецПроцедуры
    Процедура ПриЗакрытии()
    Если Подтверждение=1 Тогда
    Д1=СоздатьОбъект("Документ");
    Д1.НайтиДокумент(ДокПод);
    Д1.Удалить();
    Иначе
    Если ДокПод.Выбран()=1 Тогда
    Д1=СоздатьОбъект("Документ");
    Д1.НайтиДокумент(ДокПод.ТекущийДокумент());
    Д1.ДкОснов=ТекущийДокумент();
    Д1.Записать();
    Статус=Д1.Провести(1);
    Если Статус=0 Тогда
    Сообщить("Неизвестная ошибка!!! ничего не трогать!!! вызовите мастера!!!");
    Возврат;
    КонецЕсли;
    КонецЕсли;   
    КонецЕсли;
    
    Если СчетФактура.Выбран()=1 Тогда
    Д1=СоздатьОбъект("Документ");
    Д1.НайтиДокумент(СчетФактура.ТекущийДокумент());
    Д1.ДокументОснование=ТекущийДокумент();
    Д1.Записать();
    Статус=Д1.Провести(1);
    Если Статус=0 Тогда
    Сообщить("Невозможно провести Счет-Фактуру");
    Возврат;
    КонецЕсли;
    КонецЕсли;   
    КонецПроцедуры
    //------------------------
    Процедура ВыборКлиента()
    Если Клиент.Выбран()=1 Тогда
    Клиент.ИспользоватьДату(ДатаДок);
    Если ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда
    Если НЕ(Клиент.СуммаКредита=0) Тогда
    ВидТорговли=Перечисление.ВидыТорговли.Кредит;
    Иначе
    ВидТорговли=Перечисление.ВидыТорговли.ЗаБН;
    КонецЕсли;
    ИначеЕсли ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
    Если НЕ(Клиент.СуммаКредитаПоставщика=0) Тогда
    ВидТорговли=Перечисление.ВидыТорговли.Кредит;
    Иначе
    ВидТорговли=Перечисление.ВидыТорговли.ЗаБН;
    КонецЕсли;
    КонецЕсли;
    Иначе
    Предупреждение ("Выберите клиента!");
    Возврат;
    КонецЕсли;
    КонецПроцедуры
    //------------------------
    Процедура ВыборДаты()
    Устан_Вал(Контекст,ДатаДок,Валюта_Прежн,Курс_Прежн);
    ВыборКлиента();
    КонецПроцедуры
    //-----------------------------------------------
    Процедура Подбор()
    Режим="Каталог";
    ОткрытьПодбор("Товары","ДляПодбора");
    УстановитьЗначениеВПодборе("Склад",Склад);
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ПодборПоПрайсу()
    Режим="Прайс";
    ОткрытьПодбор("Прайс_лист","ДляПодбора");
    УстановитьЗначениеВПодборе("Склад",Склад);
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ОбработкаПодбора(Выб)
    ЗапросКоличестваВПодборе(Контекст,Режим,Выб);
    УстанЦеныРасх(Контекст);
    Выч_суммы_накл(Контекст);
    АктивизироватьСтроку();
    КонецПроцедуры
    //-----------------------------------------------
    
    Процедура Пересчитать()
    Если Итог("Сумма")=0 Тогда
    Возврат;
    КонецЕсли;
    Если Вопрос("Рассчитать цены с наценкой?",4)=7 Тогда
    Возврат;
    КонецЕсли;	 
    ИтСум=Итог("Сумма");
    Если Наценка1<>0 Тогда
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Если Количество=0 Тогда
    Сообщить("Количество не может быть равно нулю!!!");
    Продолжить;
    КонецЕсли;
    КдобНДС=(Наценка1/ИтСум);
    ЦенаБС=ЦенаБС+(Сумма/Количество)*(Наценка1)/100;
    Цена=ЦенаБС;
    Сумма=Количество*Цена;
    КонецЦикла;
    КонецЕсли; 
    
    КонецПроцедуры
    
    //-------------------------------------------------------------------------
    
    Процедура УстанКоличества()
    Если Товар.Выбран() >0 Тогда
    // цену товара при перемещении не определяем,
    // т.к.при проводке накладной будет перемещена стоимость товара
    Если Количество=0 Тогда
    Количество=1;
    КонецЕсли;
    УстановкаЕдиницыИзмерения(Контекст);
    Если ТипЦен=Перечисление.ВидЦен.Розница Тогда
    Цена=Товар.Розн_Цена;
    Иначе
    //  Цена2=Товар.Мел_Опт_Цена;
    ЦенаБС=Товар.Розн_Цена;
    //  Сумма2=Цена2*Количество;
    КонецЕсли;
    СтранаПроисхождения=Товар.СтранаПроисхождения;
    Код=Товар.КодП;
    Сумма=Количество*Коэффициент*ЦенаБС;
    КонецЕсли;
    КонецПроцедуры
    //-------------------------------------------------------------------------
    
    Процедура Печать()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.ПараметрыСтраницы(1,,,,1,,);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьРеал()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Реал");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    ЦенаЗакуп=Товар.Себ;
    ЦенаРеализ=(ЦенаЗакуп+ЦенаБС)/2;
    СуммаРеал=ЦенаРеализ*Количество;
    Разница=Сумма-СуммаРеал;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.ПараметрыСтраницы(1,,,,1,,);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьПоср()
    ОснФирма=Константа.ОснФирма;
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("СчетПоср");
    ФирмаПр=Константа.ОснФирма.Полное_Назв;
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    ПСумма=0;
    ПЦена=0;
    ИтогПНДС=0;
    Если ЗначениеНДС=Перечисление.ЗначенияНДС.безНДС Тогда
    НДСНакл="---";
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда
    НДСНакл="18%";
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
    НДСНакл="10%";
    КонецЕсли;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    Если ЗначениеНДС=Перечисление.ЗначенияНДС.безНДС Тогда
    ПНДС=0;
    ПСумма=Сумма2;
    ПЦена=Цена2;
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда
    ПНДС=Сумма2*18/118;
    ПСумма=Сумма2-Пндс;
    ПЦена=ПСумма/Количество;
    ИтогПНДС=ИтогПНДС+ПНДС;
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
    НДСНакл="10%";
    КонецЕсли;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьКлиент()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("СчетКлиент");
    ФирмаПр=Константа.ОснФирма.Полное_Назв;
    Если Клиент.Грузополучатель="												  " Тогда
    Грузополучатель=Клиент.Наименование;//Клиент.ПолнНаим;
    Иначе
    Грузополучатель=Клиент.Грузополучатель;
    КонецЕсли;
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    Если ЗначениеНДС=Перечисление.ЗначенияНДС.безНДС Тогда
    НДСНакл="---";
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда
    НДСНакл="18%";
    ИначеЕсли  ЗначениеНДС=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
    НДСНакл="10%";
    КонецЕсли;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.ПараметрыСтраницы(2,,,,1,,);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьКл()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Кладовщику");
    
    С1=СоздатьОбъект("СписокЗначений");
    Б1=СоздатьОбъект("XBASE");
    Б1.ДобавитьПоле("Cell","s",10,0);
    Б1.ДобавитьПоле("Name","s",100,0);
    Б1.ДобавитьПоле("Kol","n",16,0);
    Б1.ДобавитьПоле("Ost","n",16,0);
    Б1.ДобавитьИндекс("First","Cell",0,0,"");
    Б1.СоздатьФайл("C:\1ctempn","C:\1ctempn");
    Б1.ТекущийИндекс("First");
    ВыбратьСтроки();		  
    Пока ПолучитьСтроку()=1 Цикл
    Б1.Добавить();
    Б1.Cell=Ячейка;
    Б1.Kol=Количество*Коэффициент; 
    Если Товар.Выбран()=1 Тогда
    Б1.Name=Товар.Наименование;
    Иначе
    Сообщить("Не выбран товар!!!");
    КонецЕсли; 
    Если Проведен()=1 Тогда
    Б1.Ost=Регистр.ОстаткиТоваров.Остаток(Товар,Склад,"ОстатокТовара")
    +Количество*Коэффициент;
    Иначе	 
    Б1.Ost=Регистр.ОстаткиТоваров.Остаток(Товар,Склад,"ОстатокТовара");
    КонецЕсли;
    Б1.Записать();
    КонецЦикла; 
    
    Б1.Первая();
    Пока Б1.ВКонце()=0 Цикл
    Зн=Цел(Число(Б1.Cell)/10000);
    Если С1.НайтиЗначение(Зн)=0 Тогда
    С1.ДобавитьЗначение(Зн,"");
    КонецЕсли;
    Б1.Следующая();
    КонецЦикла;
    
    Если С1.РазмерСписка()=0 Тогда
    Возврат;
    КонецЕсли;
    
    Для Кол=1 По С1.РазмерСписка() Цикл
    Если Кол>1 Тогда
    Таб.НоваяСтраница();
    КонецЕсли;
    Зн=С1.ПолучитьЗначение(Кол,0);
    Таб.ВывестиСекцию("Шапка");
    Б1.Первая();
    Ном=0;
    Пока Б1.ВКонце() = 0 do
    Если Зн<>Цел(Число(Б1.Cell)/10000) Тогда
    Б1.Следующая();
    Продолжить;
    КонецЕсли;
    Яч=Строка(Зн)+"/"+Строка(Б1.Ost)+"/"+Прав(СокрЛП(Б1.Cell),4);
    Ном=Ном+1;
    Таб.ВывестиСекцию("Строка");
    Б1.Следующая();
    КонецЦикла;
    Таб.ВывестиСекцию("Подвал");
    КонецЦикла;
    Таб.Опции(0,0,0,0);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура Печать2()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("РНакл.mxl");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьСпец()
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Спец");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    Пока ПолучитьСтроку() = 1 do
    Ном=Ном+1;
    ЦенаЗакуп=Товар.Себ;
    ЦенаРеализ=(ЦенаЗакуп+ЦенаБС)/2;
    СуммаРеал=ЦенаРеализ*Количество;
    Разница=Сумма-СуммаРеал;
    Таб.ВывестиСекцию("Строка");
    Если Товар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда
    Таб.ВывестиСекцию("ВСоставе");
    Кмп=СоздатьОбъект("Справочник.Комплектация");
    Кмп.ИспользоватьВладельца(Товар);
    Кмп.ВыбратьЭлементы();
    Пока Кмп.ПолучитьЭлемент()>0 Цикл
    Таб.ВывестиСекцию("Состав");
    КонецЦикла;
    Кмп=0;
    КонецЕсли;
    enddo;
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    
    Процедура ПечатьСчет()
    ОснФирма=Константа.ОснФирма;
    Фирма.ИспользоватьДату(ДатаДок);	 
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Заявка");
    ФирмаПр=Константа.ОснФирма.Полное_Назв;
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Ном=0;
    ПСумма=0;
    ПЦена=0;
    ИтогПНДС=0;
    Пока ПолучитьСтроку() = 1 do
    Таб.ВывестиСекцию("Строка");
    Ном=Ном+1;
    enddo;
    Итог=(Итог("Сумма")+Итог("НДС"));
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    
    Процедура ПечатьТорг()
    Текст="";
    ВалютаПечати=Рубли;
    Фирма.ИспользоватьДату(ДатаДок);	 
    НомерСтраницы=1;
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица4");
    Если СчетФактура.Выбран()=1 Тогда
    Грузополучатель=СчетФактура.Клиент.Грузополучатель;
    Плательщик=Клиент.Наименование+", ИНН"+Клиент.ИНН+", "+Клиент.Адрес;
    Иначе
    Грузополучатель=Клиент.Грузополучатель;
    Плательщик=Клиент.Наименование;
    КонецЕсли;
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ЗаголовокТаб");
    Ном=0;
    ВСоставе=0;
    ИтогоКоличествоНаСтранице=0;
    ИтогоСуммаНаСтранице=0;
    ИтогоНДСНаСтранице=0;
    ИтогоСуммаСНДСНаСтранице=0;
    ИтогоКоличество=0;
    ИтогоСумма=0;
    ИтогоНДС=0;
    ИтогоСуммаСНДС=0;
    Если СчетФактура.Выбран()=1 Тогда
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Ном=Ном+1;
    ПечЦена=Формат(ЦенаБС,"Ч015.2.'");
    ПечСумма=Формат(Сумма,"Ч015.2.'");
    Если (Ном=14) или (Ном=37) или (Ном=59) или (Ном=82) или (Ном=105) или (Ном=128) или (Ном=151) или (Ном=174) или (Ном=197) или (Ном=220) Тогда
    Това=Товар;
    Един=Единица.Наименование;
    Кол=Количество;
    Сум=Сумма;
    Нд=СчетФактура.НДС;
    Если СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.безНДС Тогда
    Нд=0;
    ИначеЕсли СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда 
    Нд=Сум*18/118;
    ИначеЕсли СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда 
    Нд=Сум*10/110;
    КонецЕсли;
    
    Ставка=?(СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.безНДС," -- ",Строка(СчетФактура.НДСНакл));
    Таб.ВывестиСекцию("ИтогоПоСтранице");
    
    ИтогоКоличествоНаСтранице=Количество;
    ИтогоСуммаНаСтранице=Сумма-НД;
    ИтогоНДСНаСтранице=НД;
    ИтогоСуммаСНДСНаСтранице=Сумма;
    НомерСтраницы=НомерСтраницы+1;
    ИтогоКоличество=ИтогоКоличество+Количество;
    ИтогоСумма=ИтогоСумма+Сумма-НД;
    ИтогоНДС=ИтогоНДС+НД;
    ИтогоСуммаСНДС=ИтогоСуммаСНДС+Сумма;
    Таб.НоваяСтраница();
    Таб.ВывестиСекцию("ЗаголовокТаб");
    Таб.ВывестиСекцию("Строка");
    Иначе
    Това=Товар;
    Един=Единица.Наименование;
    Кол=Количество;
    Сум=Сумма;
    Нд=СчетФактура.НДС;
    Если СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.безНДС Тогда
    Нд=0;
    ИначеЕсли СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда 
    Нд=Сум*18/118;
    ИначеЕсли СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда 
    Нд=Сум*10/110;
    КонецЕсли;
    Ставка=?(СчетФактура.НДСНакл=Перечисление.ЗначенияНДС.безНДС," -- ",Строка(СчетФактура.НДСНакл));
    Таб.ВывестиСекцию("Строка");
    ИтогоКоличествоНаСтранице=ИтогоКоличествоНаСтранице+Количество;
    ИтогоСуммаНаСтранице=ИтогоСуммаНаСтранице+Сумма-НД;
    ИтогоНДСНаСтранице=ИтогоНДСНаСтранице+Нд;
    ИтогоСуммаСНДСНаСтранице=ИтогоСуммаСНДСНаСтранице+Сумма;
    ИтогоКоличество=ИтогоКоличество+Количество;
    ИтогоСумма=ИтогоСумма+Сумма-НД;
    ИтогоНДС=ИтогоНДС+НД;
    ИтогоСуммаСНДС=ИтогоСуммаСНДС+Сумма;
    КонецЕсли;
    КонецЦикла;
    Иначе
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Ном=Ном+1;
    ПечЦена=Формат(ЦенаБС,"Ч015.2.'");
    ПечСумма=Формат(Сумма,"Ч015.2.'");
    Если (Ном=14) или (Ном=37) или (Ном=59) или (Ном=82) или (Ном=105) или (Ном=128) или (Ном=151) или (Ном=174) или (Ном=197) или (Ном=220) Тогда
    Това=Товар;
    Един=Единица.Наименование;
    Кол=Количество;
    Сум=Сумма;
    Нд=НДС;
    Ставка="Без НДС";
    Таб.ВывестиСекцию("ИтогоПоСтранице");
    ИтогоКоличествоНаСтранице=Количество;
    ИтогоСуммаНаСтранице=Сумма-НДС;
    ИтогоНДСНаСтранице=НДС;
    ИтогоСуммаСНДСНаСтранице=Сумма;
    НомерСтраницы=НомерСтраницы+1;
    ИтогоКоличество=ИтогоКоличество+Количество;
    ИтогоСумма=ИтогоСумма+Сумма-НДС;
    ИтогоНДС=ИтогоНДС+НДС;
    ИтогоСуммаСНДС=ИтогоСуммаСНДС+Сумма;
    Таб.НоваяСтраница();
    Таб.ВывестиСекцию("ЗаголовокТаб");
    Таб.ВывестиСекцию("Строка");
    Иначе
    Това=Товар;
    Един=Единица.Наименование;
    Кол=Количество;
    Сум=Сумма;
    Нд=НДС;
    Ставка="Без НДС";
    Таб.ВывестиСекцию("Строка");
    ИтогоКоличествоНаСтранице=ИтогоКоличествоНаСтранице+Количество;
    ИтогоСуммаНаСтранице=ИтогоСуммаНаСтранице+Сумма-НДС;
    ИтогоНДСНаСтранице=ИтогоНДСНаСтранице+НДС;
    ИтогоСуммаСНДСНаСтранице=ИтогоСуммаСНДСНаСтранице+Сумма;
    ИтогоКоличество=ИтогоКоличество+Количество;
    ИтогоСумма=ИтогоСумма+Сумма-НДС;
    ИтогоНДС=ИтогоНДС+НДС;
    ИтогоСуммаСНДС=ИтогоСуммаСНДС+Сумма;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    Таб.ВывестиСекцию("ИтогоПоСтранице");
    Таб.ВывестиСекцию("Всего");
    Если (НомерСтраницы > 10) И (НомерСтраницы < 20) Тогда
    Слово = " листах";
    Иначе
    ПоследняяЦифра = НомерСтраницы % 10;
    
    Если ПоследняяЦифра = 1 Тогда
    Слово = " листе";
    Иначе
    Слово = " листах";
    КонецЕсли;
    КонецЕсли;
    
    СтрокаКоличествоЛистов = Строка(НомерСтраницы) + Слово;
    ПечИтогоСумма="На сумму: "+Формат(Пересчет(Итог("Сумма"),Валюта,Курс,ВалютаПечати,Дата_Курса),"ЧПДС");
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,0,0,ПарСтрДок);
    Таб.ПараметрыСтраницы(2,,,,1,,);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать накладной","");
    КонецПроцедуры
    Процедура ПечатьВсего()
    Если Фирма.Реал=Перечисление.Реал.Осн Тогда
    З1=СоздатьОбъект("СписокЗначений");
    З1.ДобавитьЗначение(1,"Накладная клиенту");
    З1.ДобавитьЗначение(2,"Кладовщикам");
    З1.ДобавитьЗначение(3,"Накладная реализатору");
    З1.ДобавитьЗначение(4,"Спецификация");
    З1.ДобавитьЗначение(5,"Заявка Дальсвязь");
    З1.ДобавитьЗначение(6,"Торг-12");
    Рез=0;
    Поз=1;
    Если З1.ВыбратьЗначение(Рез,"",Поз,0,1)=1 Тогда
    Если Рез=1 Тогда
    Печать();
    КонецЕсли;
    Если Рез=2 Тогда
    ПечатьКл();
    КонецЕсли;
    Если Рез=3 Тогда
    ПечатьРеал();
    КонецЕсли;
    Если Рез=4 Тогда
    ПечатьСпец();
    КонецЕсли;
    Если Рез=5 Тогда
    ПечатьСчет();
    КонецЕсли;
    Если Рез=6 Тогда
    ПечатьТорг();
    КонецЕсли;
    КонецЕсли;
    З1=0;
    ИначеЕсли Фирма.Реал=Перечисление.Реал.поср Тогда
    З1=СоздатьОбъект("СписокЗначений");
    З1.ДобавитьЗначение(1,"Счет-фактура посреднику");
    З1.ДобавитьЗначение(2,"Счет-фактура клиенту");
    З1.ДобавитьЗначение(3,"Накладная");
    Рез=0;
    Поз=1;
    Если З1.ВыбратьЗначение(Рез,"",Поз,0,1)=1 Тогда
    Если Рез=1 Тогда
    ПечатьПоср();
    КонецЕсли;
    Если Рез=2 Тогда
    ПечатьКлиент();
    КонецЕсли;
    Если Рез=3 Тогда
    Печать();
    КонецЕсли;
    КонецЕсли;
    З1=0;
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ВводНового()
    Автор=Пользователь; 
    ТипНакладной=Перечисление.ТипыНакладных.Расходная;
    ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа;
    ДатаДок=РабочаяДата();
    Валюта=Константа.ОснВалютаПродажи;
    Дата_Курса=ДатаДок;
    Курс=КурсДляВалюты(Валюта,Дата_Курса);
    Фирма=Константа.ОснФирма;
    Склад=Константа.ОснСклад;
    Валюта_Прежн=Валюта;
    Курс_Прежн=Курс;
    ТипЦен=Перечисление.ТипыРасхЦен.Розничные;
    ВидЦен=ТипЦен;
    Клиент=Константа.ОснПокупатель;
    ВыборКлиента();
    Налог=Перечисление.НалогСПродаж.БезНалога;
    ЗначениеНДС=Перечисление.ЗначенияНДС.безНДС;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ВводНаОсновании(ДокОснование)
    Автор=Пользователь; 
    Если (ДокОснование.Вид()="Счет") ИЛИ
    (ДокОснование.Вид()="СчетПолученный") ИЛИ
    (ДокОснование.Вид()="РасходнаяНал") ИЛИ
    (ДокОснование.Вид()="ПриходнаяНал") ИЛИ
    (ДокОснование.Вид()="РасходнаяКредит") ИЛИ
    (ДокОснование.Вид()="ПриходнаяКредит") ИЛИ
    (ДокОснование.Вид()="РасходнаяРеализ") ИЛИ
    (ДокОснование.Вид()="ПриходнаяРеализ") Тогда
    ВидТорговли=Перечисление.ВидыТорговли.Кредит;
    ТипНакладной=Перечисление.ТипыНакладных.Расходная;
    ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа;
    ДатаДок=РабочаяДата();
    Если (ДокОснование.Вид()="Счет") Тогда
    Склад=Константа.ОснСклад;
    ИначеЕсли (ДокОснование.Вид()<>"СчетПолученный") тогда
    Склад=ДокОснование.Склад;
    КонецЕсли;
    Дата_Курса=ДокОснование.Дата_Курса;
    Валюта=ДокОснование.Валюта;
    Курс=ДокОснование.Курс;
    Валюта_Прежн=Валюта;
    Курс_Прежн=Курс;
    Фирма=ДокОснование.Фирма;
    Основание=ДокОснование.Вид()+" № " + ДокОснование.НомерДок + " от " + ДокОснование.ДатаДок;
    Клиент=ДокОснование.Клиент;
    ВыборКлиента();
    Если (ДокОснование.Вид()="Счет") Тогда
    ПоСчету=ДокОснование;
    Основание=ДокОснование.Вид()+" № " + ДокОснование.НомерДок + " от " + ДокОснование.ДатаДок;
    // Если вводим на основании Счета, то спецификацию записываем
    // исходя из остатков зарезервированных товаров
    Рег1=СоздатьОбъект("Регистр.РезервыТоваров");
    // документ новый
    Дат=ПолучитьДатуТА();
    Если Дат>ДатаДок Тогда
    // если итоги не актуальны, то остатки берем из временногно расчета Регистра
    Рег1.ВременныйРасчет();
    РассчитатьРегистрыНа(ДатаДок+1);
    КонецЕсли;
    ДокОснование.ВыбратьСтроки();
    Пока ДокОснование.ПолучитьСтроку()=1 Цикл
    Если ДокОснование.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда
    // услуги
    НоваяСтрока();
    Товар=ДокОснование.Товар;
    Цена=ДокОснование.Цена;
    Количество=ДокОснование.Количество;
    Единица=ДокОснование.Единица;
    Коэффициент=ДокОснование.Коэффициент;
    Сумма=ДокОснование.Сумма;
    НДС=ДокОснование.НДС;
    Продолжить;
    КонецЕсли;
    РезервПоСчету= Рег1.Остаток(ДокОснование.Товар,ДокОснование,"РезервТовара");
    Если РезервПоСчету>0 Тогда
    НоваяСтрока();
    Товар=ДокОснование.Товар;
    Цена=ДокОснование.Цена;
    Количество=РезервПоСчету;
    
    УстановкаЕдиницыИзмерения(Контекст);
    
    Сумма=Цена*Количество*Коэффициент;
    Пром=Товар;
    Пром.ИспользоватьДату(ДокОснование.ДатаДок);
    НДС=Сумма*ПроцентНДС(Пром.СтавкаНДС)/(100+ПроцентНДС(Пром.СтавкаНДС));
    КонецЕсли;
    КонецЦикла;
    Рег1=0;
    ИначеЕсли (ДокОснование.Вид()="СчетПолученный") Тогда
    // Если вводим не на основании Счета, то спецификацию записываем просто
    ДокОснование.ВыбратьСтроки();
    Пока ДокОснование.ПолучитьСтроку()=1 Цикл
    НоваяСтрока();
    Товар=ДокОснование.Товар;
    Код=Товар.КодП;
    СтранаПроисхождения=Товар.СтранаПроисхождения;
    Сумма=ДокОснование.СуммаСНДС;
    Единица=ДокОснование.Единица;
    Коэффициент=ДокОснование.Коэффициент;
    Количество=ДокОснование.Количество;
    Цена=Сумма/Количество;
    НДС=ДокОснование.НДС;
    КонецЦикла;
    Иначе
    // Если вводим не на основании Счета, то спецификацию записываем просто
    ДокОснование.ВыбратьСтроки();
    Пока ДокОснование.ПолучитьСтроку()=1 Цикл
    НоваяСтрока();
    Товар=ДокОснование.Товар;
    Код=Товар.КодП;
    СтранаПроисхождения=Товар.СтранаПроисхождения;
    Цена=ДокОснование.Цена;
    Единица=ДокОснование.Единица;
    Коэффициент=ДокОснование.Коэффициент;
    Количество=ДокОснование.Количество;
    Сумма=ДокОснование.Сумма;
    НДС=ДокОснование.НДС;
    КонецЦикла;
    КонецЕсли;
    Иначе
    Предупреждение("Расходную накладную нельзя вводить на основании выбранного вида документа!",4);
    СтатусВозврата(0);
    КонецЕсли;
    КонецПроцедуры
    
    
    Процедура СменаСклада()
    ТипЦен=Склад.ВидЦен;
    Если ТипЦен=Перечисление.ВидЦен.Розница Тогда
    Форма.Цена2.Видимость(0);
    Форма.Сумма2.Видимость(0);
    Иначе
    Форма.Цена2.Видимость(1);
    Форма.Сумма2.Видимость(1);
    КонецЕсли;
    КонецПроцедуры
    Процедура СменаТипа()
    Константа.ТипЦен=ТипЦен;
    ВидЦен=ТипЦен;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Если Товар.Выбран()=0 Тогда
    Продолжить;
    КонецЕсли;
    Если ТипЦен=Перечисление.ВидЦен.Розница Тогда
    Цена=Товар.Розн_Цена;
    Форма.Цена2.Видимость(0);
    Форма.Сумма2.Видимость(0);
    Иначе
    Цена=Товар.Розн_Цена;
    Цена2=Товар.Мел_Опт_Цена;
    Форма.Цена2.Видимость(1);
    Форма.Сумма2.Видимость(1);
    Сумма2=Цена2*Количество;
    КонецЕсли;
    Сумма=ЦенаБС*Количество;
    КонецЦикла;
    КонецПроцедуры
    
    Процедура СложитьСтроки()
    Стр="";
    СписокТоваров=СоздатьОбъект("СписокЗначений");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Твр=Товар;
    Если Твр.Выбран()=0 Тогда
    Продолжить;
    КонецЕсли;
    //  Проверка товара на совпадение в строках документа
    НС=СписокТоваров.НайтиЗначение(Твр);
    Если НС<>0 Тогда
    // Значит такой товар уже в накладной есть
    СписокТоваров.ПолучитьЗначение(НС,Стр);
    СписокТоваров.УстановитьЗначение(НС,Твр,Строка(Количество));
    КонецЕсли;
    СписокТоваров.ДобавитьЗначение(Твр,Строка(Количество));
    КонецЦикла;
    КонецПроцедуры
    Процедура ПровОстатка()
    Если Проведен()=0 Тогда
    Если Товар.Выбран()=1 Тогда
    Ост=Регистр.ОстаткиТоваров.Остаток(Товар,Склад,"ОстатокТовара");
    Если Ост<Количество Тогда
    Предупреждение("Осталось только "+Ост+" "+Единица);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры 
    //Процедура Пересчитать()
    //КонецПроцедуры
    //-----------------------------------------------
    // При входе в Форму запомним промежуточные переменные
    ИнформационнаяСтрока="";
    Prompt="Информация о взаиморасчетах:";
    Валюта_Прежн=Валюта;
    Курс_Прежн=Курс;
    ТипЦен=Перечисление.ТипыРасхЦен.Розничные;
    Если ВидЦен.Выбран()=1 Тогда
    ТипЦен=ВидЦен;
    КонецЕсли;
    Клиент.ИспользоватьДату(ДатаДок);
    Подтверждение=0;
    
    А вот код глобального модуля:

    Код:
    Перем ПромКлиент;
    Перем ТекЗайТов Экспорт;
    Перем ТекЗаявка Экспорт;
    Перем ЧислоСтрок Экспорт;
    Перем Пользователь Экспорт;
    Перем Рубли Экспорт;
    Перем Доллары Экспорт;
    Перем Да Экспорт;
    Перем Нет Экспорт;
    Перем ПарСтрСпр Экспорт; // имя опций печати отчетов по справочникам (Пр-лст, Товары)
    Перем ПарСтрДок Экспорт; // имя опций печати документов
    Перем ПарСтрОтчДлинн Экспорт; // имя опций печати узких отчетов
    Перем ПарСтрОтчШирок Экспорт; // имя опций печати широких отчетов
    //-------------------------------
    Процедура УстановкаГП(Конт) Экспорт
    Если Константа.ГП.Выбран()=0 Тогда
    док=СоздатьОбъект("Документ");
    док.ОбратныйПорядок(1);
    док.ВыбратьДокументы('01.01.90',ПолучитьДатуТА());
    Пока док.ПолучитьДокумент()=1 Цикл
    Константа.ГП=док.ТекущийДокумент();
    Прервать;
    КонецЦикла;	
    док=0;
    КонецЕсли;
    Если Константа.ГП.ДатаДок=Конт.ДатаДок Тогда
    док=СоздатьОбъект("Документ");
    док.ОбратныйПорядок(1);
    док.ВыбратьДокументы(Конт.ДатаДок,Конт.ДатаДок);
    ПрКд=Константа.ГП;
    Пока док.ПолучитьДокумент()=1 Цикл
    Если (док.ТекущийДокумент()=Конт.ТекущийДокумент())
    ИЛИ (док.ТекущийДокумент()=ПрКд) Тогда
    Константа.ГП=док.ТекущийДокумент();
    КонецЕсли;
    КонецЦикла; 
    док=0;	
    КонецЕсли;
    Если Константа.ГП.ДатаДок>Конт.ДатаДок Тогда
    Константа.ГП=Конт.ТекущийДокумент();
    КонецЕсли;
    
    док=СоздатьОбъект("Документ");
    док.ОбратныйПорядок(1);
    док.ВыбратьДокументы(Константа.ГП.ДатаДок,Конт.ДатаДок);
    Пока док.ПолучитьДокумент()=1 Цикл
    Если Конт.ТекущийДокумент()=док.ТекущийДокумент() Тогда
    д1=док.ТекущийДокумент();
    Если док.ПолучитьДокумент()=1 Тогда
    Если док.ТекущийДокумент()=Константа.ГП Тогда
    Константа.ГП=д1;
    Прервать;
    Иначе
    Прервать;
    КонецЕсли;
    Иначе
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;	
    док=0;
    КонецПроцедуры
    Процедура ОткрытьЗаявки()
    СЗ=СоздатьОбъект("Справочник.СписокЗаявок");
    СЗ.Выбрать("Выбор заявки","ФормаСписка");
    Если СЗ.Выбран()=0 Тогда
    Возврат;
    КонецЕсли;
    Конт1=0;
    ОткрытьФорму("Справочник.Автозаявки",Конт1);
    Конт1.ИспользоватьВладельца(СЗ.ТекущийЭлемент());
    КонецПроцедуры
    Функция глПриСменеСтрокиТаблицыМФ(Принудительно = 0, ТекСтрокаВТаблице, Конт) Экспорт
    
    ТаблицаМФ = Конт.ТаблицаМФ;
    СписокЭлементовМФ = Конт.СписокЭлементовМФ;
    ТипМФ = Конт.ТипМФ;
    
    // текущая строка не поменялась
    Если (ТекСтрокаВТаблице = ТаблицаМФ.ТекущаяСтрока()) и (Принудительно=0) Тогда
    Возврат ТаблицаМФ.Представление;
    КонецЕсли;
    
    // сначала запомним список выбранных объектов строки МФ %%откуда%% пришли
    Если ПустоеЗначение(ТекСтрокаВТаблице) = 0 Тогда
    Попытка
    ТаблицаМФ.ПолучитьСтрокуПоНомеру(ТекСтрокаВТаблице);
    Исключение
    Возврат ТаблицаМФ.Представление;
    КонецПопытки;
    СписокЭлементовМФ.Выгрузить(ТаблицаМФ.СписокЭлементов);
    Если СписокЭлементовМФ.РазмерСписка()=0 Тогда
    ТаблицаМФ.ФлВкл=1;
    КонецЕсли;					  
    КонецЕсли;
    
    ТекСтрокаВТаблице = ТаблицаМФ.ТекущаяСтрока();
    Попытка
    ТаблицаМФ.ПолучитьСтрокуПоНомеру(ТекСтрокаВТаблице);
    Исключение
    Возврат ТаблицаМФ.Представление;
    КонецПопытки;
    
    СписокЭлементовМФ.УдалитьВсе();
    Если ТаблицаМФ.Вид="ЗначенияСвойств" Тогда
    Если ТипМФ.РазмерСписка()<3 Тогда
    ТипМФ.ВставитьЗначение(3,"одновременно все");   
    КонецЕсли;
    Иначе
    Если ТипМФ.РазмерСписка()>2 Тогда
    ТипМФ.УдалитьЗначение(3);   
    КонецЕсли;
    КонецЕсли;
    ТипМФ.ТекущаяСтрока(ТаблицаМФ.ТипМФ);
    
    Попытка
    Спис = ТаблицаМФ.СписокЭлементов;
    Исключение
    Возврат ТаблицаМФ.Представление;
    КонецПопытки;
    
    Если ТипЗначенияСтр(Спис) = "СписокЗначений" Тогда
    Спис.Выгрузить(СписокЭлементовМФ);
    Иначе  
    ТаблицаМФ.СписокЭлементов = СоздатьОбъект("СписокЗначений");
    КонецЕсли;
    Возврат ТаблицаМФ.Представление;
    
    КонецФункции // глПриСменеСтрокиТаблицыМФ()   
    Функция глМножественныйФильтрЗадан(ТаблицаМФ)  Экспорт
    
    ТаблицаМФ.ВыбратьСтроки();
    Пока ТаблицаМФ.ПолучитьСтроку()>0 Цикл
    Если (ТаблицаМФ.СписокЭлементов.РазмерСписка()>0) и (ТаблицаМФ.ФлВкл=2) Тогда
    Возврат 1;	  
    КонецЕсли;	  
    КонецЦикла;
    Возврат 0;
    
    КонецФункции // глМножественныйФильтрЗадан 
    Процедура глДобавитьВТаблицуМФ(ТаблицаМФ,Тип, Вид, ИмяПеременной, Представление) Экспорт
    
    Если ТаблицаМФ.НайтиЗначение(Представление, 0, "Представление") = 0 Тогда
    ТаблицаМФ.НоваяСтрока();
    ТаблицаМФ.Тип=Тип;
    ТаблицаМФ.Вид=Вид;
    ТаблицаМФ.ИмяПеременной=ИмяПеременной;			   
    ТаблицаМФ.СписокЭлементов=СоздатьОбъект("СписокЗначений");
    ТаблицаМФ.ТипМФ=1; // текущая строка списка ТипМФ
    ТаблицаМФ.ФлВкл=1; // фильтр включен ("1" или "2")
    ТаблицаМФ.Представление=Представление;
    
    КонецЕсли;
    Если СокрЛП(Представление) = "По авторам документов" Тогда 
    Стр = 0;
    Если ТаблицаМФ.НайтиЗначение("По автору документов", Стр, "Представление") = 1 Тогда
    ТаблицаМФ.УдалитьСтроку(Стр);	 
    КонецЕсли;	
    КонецЕсли;
    
    КонецПроцедуры // глДобавитьВТаблицуМФ()
    
    Функция КолвоБанковскихДней(НачДата,КонДата)  Экспорт
    // функция возвращает число рабочих дней, т.е.
    // без суббот и воскресений,
    // прошедших от НачДата до КонДата
    Дней=0;
    Для К=1 По Число(КонДата-НачДата) Цикл
    // определим день недели
    ДН=НомерДняНедели(НачДата+К);
    Если НЕ((ДН=6) ИЛИ (ДН=7)) Тогда
    Дней=Дней+1;
    КонецЕсли;
    КонецЦикла;
    Возврат Дней;
    КонецФункции	
    //-------------------------------
    Функция БанковскаяДата(НачДата,КолвоДней)  Экспорт
    // функция возвращает дату через заданное
    // количество рабочих дней, т.е.
    // без суббот и воскресений.
    Дней=0;
    К=0;
    ПрошлоДней= Число(НачДата-'03.01.94');
    // в константе надо указать любую
    // дату понедельника в прошлом
    Пока Дней<КолвоДней Цикл
    К=К+1;
    // определим день недели
    ДН=НомерДняНедели(НачДата+К);
    Если НЕ((ДН=6) ИЛИ (ДН=7)) Тогда
    Дней=Дней+1;
    КонецЕсли;
    КонецЦикла;
    Возврат НачДата+К;
    КонецФункции	
    //-----------------------
    Функция КурсДляВалюты(Валюта,ДатаКурса) Экспорт
    Если Валюта=Рубли Тогда
    // Для базовой валюты курс всегда равен 1, поэтому отображаем курс Основной валюты
    Возврат Константа.ОсновнаяВалюта.Текущ_курс.Получить(ДатаКурса);	   
    ИначеЕсли Валюта=Константа.СтараяБазоваяВалюта Тогда
    // Для старой базовой валюты курс всегда равен 1/КОЭФФ_ДЕНОМИНАЦИИ, поэтому отображаем курс Основной валюты
    Возврат Константа.ОсновнаяВалюта.Текущ_курс.Получить(ДатаКурса);	   
    Иначе    // для других валют записываем их собственный курс
    Возврат Валюта.Текущ_курс.Получить(ДатаКурса);
    КонецЕсли;
    КонецФункции
    //-------------------------------
    Функция ФРМ(ЧислЗнач,Вал,Реж) Экспорт
    // Это процедура нашего стандартного форматирования цен и сумм:
    // Для рублей не печатаем дроби, для других валют 3 знака после запятой
    // Триады отделяем символом (')
    Стр=?(Вал=Константа.СтараяБазоваяВалюта,СокрЛ(Формат(ЧислЗнач,"Ч015.2.'")),СокрЛ(Формат(ЧислЗнач,"Ч015.2.'")));
    Если (Реж=0) ИЛИ (ПустаяСтрока(Стр)=1) Тогда
    Возврат Стр;
    Иначе
    Возврат Стр+" "+СокрП(Вал.Сокр_назв);
    КонецЕсли;
    КонецФункции 
    //-------------------------------
    Функция ФРМТ(ЧислЗнач,Вал,Реж) Экспорт
    // Это процедура нашего стандартного форматирования цен и сумм:
    // Для рублей не печатаем дроби, для других валют 3 знака после запятой
    // Без разделения на Триады
    Стр=?(Вал=Константа.СтараяБазоваяВалюта,СокрЛ(Формат(ЧислЗнач,"Ч015.2")),СокрЛ(Формат(ЧислЗнач,"Ч015.2")));
    Если (Реж=0) ИЛИ (ПустаяСтрока(Стр)=1) Тогда
    Возврат Стр;
    Иначе
    Возврат Стр+" "+СокрП(Вал.Сокр_назв);
    КонецЕсли;
    КонецФункции 
    //-------------------------------
    Процедура Оживить(ДобСтрок) Экспорт
    ЧислоСтрок=ЧислоСтрок+ДобСтрок;
    Состояние("В отчет выведено "+ЧислоСтрок+" строк.");
    КонецПроцедуры 
    
    //-------------------------------
    Процедура НеПроводить(Конт,Стр) Экспорт
    // Конт.НеПроводитьДокумент();
    СтатусВозврата(0);
    Сообщить(Стр);
    Сообщить("Документ "+Конт.Вид()+" № "+Конт.НомерДок
    +" от "+Конт.ДатаДок+" не проводится!!!");
    Возврат;
    КонецПроцедуры 
    //------------------
    Функция ПроверкаДублейСтрок(Конт) Экспорт
    // Эта процедура проверяет спецификацию документа на дубли товара
    СписокТоваров=СоздатьОбъект("СписокЗначений");
    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку() = 1 Цикл
    Твр=Конт.Товар;
    Если Твр.Выбран()=0 Тогда
    Продолжить;
    КонецЕсли;
    //  Проверка товара на совпадение в строках документа
    Если СписокТоваров.НайтиЗначение(Твр)<>0 Тогда
    // Значит такой товар уже в накладной есть
    Сообщить("Повторение товара:"+СокрП(Твр.Наименование));
    Сообщить("В документе "+Конт.НомерДок+" от "+Конт.ДатаДок);
    Возврат 0;
    КонецЕсли;
    СписокТоваров.ДобавитьЗначение(Твр,"");
    КонецЦикла;
    Возврат 0;
    КонецФункции
    //---------------------
    Функция ПроцентНДС(Ставка) Экспорт
    // Эта функция переводит тип СтавкаНДС в численные проценты НДС
    Если Ставка=Перечисление.ЗначенияНДС.безНДС Тогда
    Возврат 0;
    ИначеЕсли Ставка=Перечисление.ЗначенияНДС.ОсновнаяСтавкаНДС Тогда
    Возврат 20;
    ИначеЕсли Ставка=Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
    Возврат 10;
    Иначе
    Возврат 0;
    КонецЕсли;
    КонецФункции
    //---------------------
    Функция Пересчет(Цена,ВалютаНач,ПоКурсуВалютыНач,ВалютаКон,ПоКурсуВалютыКон) Экспорт
    // Эта функция пересчитывает Цену из ВалютаНач и возвращает значение Цена в ВалютаКон
    // в параметрах ПоКурсуВалютыНач и ПоКурсуВалютыНач могут передаваться
    // либо сами курсы либо даты
    Если ВалютаНач<>ВалютаКон Тогда
    // если ВалютаНач не совпадает с ВалютаКон
    
    ТипЗн=ТипЗначенияСтр(ПоКурсуВалютыНач);
    Если ТипЗн="Число" Тогда
    КурсВалютыНач=ПоКурсуВалютыНач;
    ИначеЕсли ТипЗн="Дата" Тогда
    КурсВалютыНач=КурсДляВалюты(ВалютаНач,ПоКурсуВалютыНач);
    Иначе
    Сообщить("Неверный тип параметра при пересчете валюты!");
    Возврат Цена;
    КонецЕсли;
    ТипЗн=ТипЗначенияСтр(ПоКурсуВалютыКон);
    Если ТипЗн="Число" Тогда
    КурсВалютыКон=ПоКурсуВалютыКон;
    ИначеЕсли ТипЗн="Дата" Тогда
    КурсВалютыКон=КурсДляВалюты(ВалютаКон,ПоКурсуВалютыКон);
    Иначе
    Сообщить("Неверный тип параметра при пересчете валюты!");
    Возврат Цена;
    КонецЕсли;
    Если (КурсВалютыНач=0) ИЛИ (КурсВалютыКон=0)Тогда
    // Сообщить("При пересчете валюты обнаружен нулевой курс валюты "
    //   +?(КурсВалютыНач=0,ВалютаНач,ВалютаКон));
    Возврат Цена;
    КонецЕсли;
    
    КурсСтРуб=Константа.СтараяБазоваяВалюта.Текущ_курс.Получить(РабочаяДата());
    Если  (ВалютаНач=Рубли) И (ВалютаКон=Константа.СтараяБазоваяВалюта)  Тогда
    Возврат Цена/КурсСтРуб;
    ИначеЕсли  (ВалютаНач=Константа.СтараяБазоваяВалюта) И (ВалютаКон=Рубли)  Тогда
    Возврат Цена*КурсСтРуб;
    КонецЕсли;
    
    Если  ВалютаНач=Рубли  Тогда
    // если ВалютаНач не совпадает с ВалютаКон, а товар рублевый
    // цена пересчитывается из рублей
    Возврат ?(ВалютаКон=Доллары,Цена/КурсВалютыНач,Цена/КурсВалютыКон);
    ИначеЕсли  ВалютаНач=Константа.СтараяБазоваяВалюта  Тогда
    // цена пересчитывается из рублей
    Возврат ?(ВалютаКон=Доллары,Цена*КурсСтРуб/КурсВалютыНач,Цена*КурсСтРуб/КурсВалютыКон);
    ИначеЕсли  ВалютаКон=Рубли  Тогда
    // цена пересчитывается в рубли
    Возврат Цена*КурсВалютыНач;
    ИначеЕсли  ВалютаКон=Константа.СтараяБазоваяВалюта  Тогда
    // цена пересчитывается в рубли
    Возврат Цена*КурсВалютыНач/КурсСтРуб;
    Иначе
    // если валюта товара не совпадает с валютой накладной, и не рубли
    Возврат Цена*КурсВалютыНач/КурсВалютыКон;
    КонецЕсли;
    Иначе
    Возврат Цена;
    КонецЕсли;
    КонецФункции
    //---------------------------------------------
    Функция СуммаПрописью(Конт,Режим) Экспорт
    Если Нрег(Конт.Валюта.Наименование)="доллар" Тогда
    Пропись("USD.spl");
    ИначеЕсли Нрег(Конт.Валюта.Наименование)="марка" Тогда
    Пропись("DM.spl");
    ИначеЕсли Нрег(Конт.Валюта.Наименование)="условная единица" Тогда
    Пропись("UE.spl");
    КонецЕсли;
    Если Режим="Итог" Тогда
    СтрокаСуммы=Формат(Конт.Итог("Сумма"),"ЧПДС");
    Иначе
    СтрокаСуммы=Формат(Конт.Сумма,"ЧПДС");
    КонецЕсли;
    Пропись("");
    Возврат СтрокаСуммы;
    КонецФункции
    //-----------------------------------------------
    Функция ТипОперации(Конт) Экспорт
    Если  Число(Конт.ТекущийДокумент.Выбран())>0 тогда
    Пром=Конт.ТекущийДокумент.Вид();
    Если  (Пром="РасходнаяНал") ИЛИ
    (Пром="ПриходнаяНал") ИЛИ
    (Пром="РасходнаяКредит") ИЛИ
    (Пром="ПриходнаяКредит") Тогда
    Возврат Строка(Конт.ТекущийДокумент.ПризнакНакладной)+Конт.ТекущийДокумент.ВидТорговли;
    ИначеЕсли   (Пром="РасходнаяРеализ") ИЛИ
    (Пром="ПриходнаяРеализ") Тогда
    Возврат Пром;
    Иначе
    Возврат Пром;
    КонецЕсли;
    Иначе
    Возврат "пусто";
    КонецЕсли;
    КонецФункции	 
    //-----------------------------------------------
    Функция ЖурналСумма(Конт)  Экспорт
    Док=Конт.ТекущийДокумент;
    Если  Док.Выбран()=1  Тогда
    Возврат ФРМ(Док.Итог("Сумма"),Док.Валюта,1);
    Иначе
    Возврат "";
    КонецЕсли;
    КонецФункции	 
    //-----------------------------------------------
    Процедура УстФирмы(Конт) Экспорт
    Фрм=СоздатьОбъект("Справочник.Фирмы");
    Фрм.ИспользоватьДату(Конт.ДатаДок);
    Если Конт.Фирма.Выбран()=1 Тогда
    Фрм.НайтиЭлемент(Конт.Фирма);
    КонецЕсли;
    Если Фрм.Выбрать("Выберите фирму","")>0 Тогда
    Конт.Фирма=Фрм.ТекущийЭлемент();
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Функция КонтрольОстатка(Конт) Экспорт
    Если Конт.Коэффициент>0 Тогда
    Ост=Регистр.ОстаткиТоваров.Остаток(Конт.Товар,Конт.Склад,"ОстатокТовара")/Конт.Коэффициент;
    Возврат Ост;
    Иначе
    Возврат 0;
    КонецЕсли;
    КонецФункции
    //-----------------------------------------------
    Процедура Выч_суммы_накл(Конт) Экспорт
    Конт.Сумма=Конт.Цена*Конт.Количество*Конт.Коэффициент;
    Пром=Конт.Товар;
    Пром.ИспользоватьДату(Конт.ДатаДок);
    Если  (Конт.Вид()="Списание") Тогда
    Иначе
    Конт.НДС=Конт.Сумма*ПроцентНДС(Пром.СтавкаНДС)/(100+ПроцентНДС(Пром.СтавкаНДС));
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ИзмЕдин(Конт) Экспорт
    Пром=Конт.Единица;
    Пром.ИспользоватьДату(Конт.ДатаДок);
    Конт.Коэффициент=Конт.Единица.Коэффициент;
    Выч_суммы_накл(Конт);
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстСклада(Конт) Экспорт
    Скл=СоздатьОбъект("Справочник.Склады");
    Скл.ИспользоватьДату(Конт.ДатаДок);
    Если Конт.Склад.Выбран()=1 Тогда
    Скл.НайтиЭлемент(Конт.Склад);
    КонецЕсли;
    Если Скл.Выбрать("Выберите Склад","")>0 Тогда
    Конт.Склад=Скл.ТекущийЭлемент();
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстКлиентаПоРеализации(Конт) Экспорт
    Крд=СоздатьОбъект("Справочник.Реализаторы");
    // Крд.ИспользоватьДату(Конт.ДатаДок);
    Если Крд.Выбрать("Выбор клиента по реализации","")>0 Тогда
    Конт.Клиент=Крд.Клиент.ТекущийЭлемент();
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    // Удалить все строки данного документа
    Процедура УдалитьСтрокиДокумента(Конт) Экспорт
    Пока Конт.КоличествоСтрок()>0 Цикл
    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку()>0 Цикл
    Конт.УдалитьСтроку();
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстановкаЕдиницыИзмерения(Конт) Экспорт
    // устанавливаем единицу измерения
    Спр=СоздатьОбъект("Справочник.Единицы");
    Спр.ИспользоватьДату(Конт.ДатаДок);
    Спр.ИспользоватьВладельца(Конт.Товар);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.Единица=Конт.Товар.БазоваяЕдиница Тогда
    // если базовая единица уже прописана в Справочнике "Единицы"
    Конт.Единица=Спр.ТекущийЭлемент();
    Конт.Коэффициент=Спр.Коэффициент;
    Возврат;
    КонецЕсли;
    КонецЦикла;
    // если базовая единица еще не  прописана в Справочнике "Единицы"
    Спр.Новый();
    Спр.Единица=Конт.Товар.БазоваяЕдиница;
    Спр.Коэффициент=1;
    Спр.Наименование=Строка(Конт.Товар.БазоваяЕдиница);
    Спр.Записать();
    Конт.Единица=Спр.ТекущийЭлемент();
    Конт.Коэффициент=1;
    Конт.СтранаПроисхождения=Конт.Товар.СтранаПроисхождения;
    Конт.Код=Конт.Товар.КодП;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстанЦены(Конт,ВалютаТовара) Экспорт
    ПромВал=Конт.Валюта;
    Конт.Цена=Пересчет(Конт.Цена,ВалютаТовара,Конт.Дата_курса,ПромВал,Конт.Курс);
    Если  ПромВал=Рубли  Тогда
    // если накладная рублевая, то округляем
    Конт.Цена=Окр(Конт.Цена,Константа.КоэффОкрРублЦены);
    КонецЕсли;
    Если Конт.Количество=0 Тогда
    Конт.Количество=1;
    КонецЕсли;
    УстановкаЕдиницыИзмерения(Конт);
    Выч_суммы_накл(Конт);
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстанЦеныРасх(Конт) Экспорт
    Если Конт.Товар.Выбран()>0 Тогда
    Если    Конт.ТипЦен=Перечисление.ВидЦен.Розница Тогда
    Конт.Цена=Конт.Товар.Розн_цена;
    Конт.Цена2=Конт.Товар.Мел_Опт_Цена
    ИначеЕсли   Конт.ТипЦен=Перечисление.ВидЦен.Розница2 Тогда
    Конт.Цена=Конт.Товар.Розн_цена;
    Конт.Цена2=Конт.Товар.Мел_Опт_Цена
    //ИначеЕсли   Конт.ТипЦен=Перечисление.ВидЦен.Оптовые Тогда
    // Конт.Цена=Конт.Товар.Опт_Цена;
    ИначеЕсли   Конт.ТипЦен=Перечисление.ВидЦен.Себестоимость Тогда
    Конт.Цена2=Конт.Товар.Прих_Цена;
    Конт.Цена=Конт.Товар.Розн_цена;
    Иначе   Конт.Цена=Конт.Товар.Розн_цена; 
    КонецЕсли;
    Конт.Цена=Конт.Цена+Конт.Цена*Конт.Скидка/100;
    Конт.СтранаПроисхождения=Конт.Товар.СтранаПроисхождения;
    Конт.Код=Конт.Товар.КодП;
    Если конт.Налог=Перечисление.НалогСПродаж.Три Тогда
    Конт.Цена=Конт.Цена*1.03;
    КонецЕсли;
    ВалютаТовара=Конт.Товар.ВалютаПрод;
    УстанЦены(Конт,ВалютаТовара);
    Разм1=СоздатьОбъект("Справочник.Размещение");
    Разм1.ИспользоватьВладельца(Конт.Товар);
    Разм1.ВыбратьЭлементы();
    Пока Разм1.ПолучитьЭлемент()=1 Цикл
    Если Разм1.Склад=Конт.Склад Тогда
    Конт.Ячейка=Разм1.Место;
    КонецЕсли;
    КонецЦикла;		
    Разм1=0;
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстанЦеныПрих(Конт) Экспорт
    Если Конт.Товар.Выбран()>0 Тогда
    Конт.Цена=Конт.Товар.Прих_цена;
    Конт.СтранаПроисхождения=Конт.Товар.СтранаПроисхождения;
    ВалютаТовара=Конт.Товар.ВалютаЗакуп;
    УстанЦены(Конт,ВалютаТовара);
    Разм1=СоздатьОбъект("Справочник.Размещение");
    Разм1.ИспользоватьВладельца(Конт.Товар);
    Разм1.ВыбратьЭлементы();
    Пока Разм1.ПолучитьЭлемент()=1 Цикл
    Если Разм1.Склад=Конт.Склад Тогда
    Конт.Ячейка=Разм1.Место;
    КонецЕсли;
    КонецЦикла;		
    Разм1=0;
    Конт.ЦенаБС=Конт.Цена;
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура Устан_Вал(Конт,ДДД,Валюта_Прежн,Курс_Прежн) Экспорт
    // установка даты и курса валюты после смены Валюты или даты курса
    Конт.Дата_курса=ДДД;
    ВалютаДокумента=Конт.Валюта;
    Конт.Курс=КурсДляВалюты(ВалютаДокумента,Конт.Дата_курса);
    // Теперь надо пересчитать цены и суммы по строкам спецификации, если они есть
    Если Конт.КоличествоСтрок()>0 Тогда
    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку()>0 Цикл
    Если (Конт.Вид()="Счет") ИЛИ
    (Конт.Вид()="РасходнаяНал") ИЛИ
    (Конт.Вид()="РасходнаяКредит") ИЛИ
    (Конт.Вид()="РасходнаяРеализ")  Тогда
    ВалютаТовара=Конт.Товар.ВалютаПрод;
    Иначе
    ВалютаТовара=Конт.Товар.ВалютаЗакуп;
    КонецЕсли;
    
    Если ВалютаДокумента=Валюта_Прежн Тогда
    // если валюта не менялась (поменялся курс)
    Если ВалютаТовара=ВалютаДокумента Тогда
    // если валюта товара совпадает с валютой накладной
    Конт.Цена=Конт.Цена;    // цена должна остаться прежней не зависимо от курса
    ИначеЕсли  ВалютаТовара=Рубли  Тогда
    // если валюта товара не совпадает с валютой накладной, а товар рублевый
    // (это значит при росте курса цена уменьшается)
    // цена пересчитывается через рубли
    Конт.Цена=(Конт.Цена*Курс_Прежн)/Конт.Курс;
    ИначеЕсли  ВалютаДокумента=Рубли  Тогда
    // если валюта товара не совпадает с валютой накладной, а накладная рублевая
    // (товар валютный ,а накладная рублевая)
    // (это значит при росте курса цена растет)
    // цена поднимается в соответствии с ростом курса доллара
    // (т.к. в рублевой накладной у нас указан курс доллара)
    // Здесь есть некоторая натяжка, но так уж сделаем!
    // цена пересчитывается через рубли
    Конт.Цена=(Конт.Цена*Конт.Курс)/Курс_Прежн;
    Иначе
    // если валюта товара не совпадает с валютой накладной, а товар и накладная валютные
    // (товар в одной валюте ,а накладная в другой валюте, но не рубли)
    // цена поднимается в соответствии с ростом курса валюты накладной
    // Здесь есть некоторая натяжка, но так уж сделаем!
    Конт.Цена=(Конт.Цена*Конт.Курс)/Курс_Прежн;
    КонецЕсли;
    Иначе   // Валюта поменялась, но  (курс не менялся)
    Конт.Цена=Пересчет(Конт.Цена,Валюта_Прежн,Курс_Прежн,ВалютаДокумента,Конт.Курс);
    КонецЕсли;
    // для рублей цену округляем
    Если ВалютаДокумента=Рубли Тогда
    Конт.Цена=Окр(Конт.Цена,Константа.КоэффОкрРублЦены);
    КонецЕсли;
    // пересчитываем сумму по товару
    Выч_суммы_накл(Конт);
    КонецЦикла;
    КонецЕсли;
    // Теперь запомним промежуточные переменные
    Валюта_Прежн=ВалютаДокумента;
    Курс_Прежн=Конт.Курс;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура УстВалютыНакл(Конт,Валюта_Прежн,Курс_Прежн) Экспорт
    Влт=СоздатьОбъект("Справочник.Валюты");
    Влт.ИспользоватьДату(Конт.ДатаДок);
    Если Конт.Валюта.Выбран()=1 Тогда
    Влт.НайтиЭлемент(Конт.Валюта);
    КонецЕсли;
    Если Влт.Выбрать("Выберите валюту","")>0 Тогда
    Конт.Валюта=Влт.ТекущийЭлемент();
    Устан_Вал(Конт,Конт.Дата_курса,Валюта_Прежн,Курс_Прежн);
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ЗапросКоличестваВПодборе(Конт,Режим,Выб) Экспорт
    Если Выб.ПометкаУдаления()=1 Тогда
    Предупреждение("Нельзя выбирать помеченные на удаление товары!");
    Возврат;
    КонецЕсли;
    Если Константа.ЗапрашиватьКоличество=Перечисление.Булево.Да Тогда
    Кол=1;
    Рез=6;
    Пока Рез=6 Цикл
    Если ВвестиЧисло(Кол,"Введите количество",10,0)=1 Тогда
    Если Режим="Каталог" Тогда
    Ост=Регистр.ОстаткиТоваров.Остаток(Выб,Конт.Склад,"ОстатокТовара");
    Иначе
    Ост=Регистр.ОстаткиТоваров.Остаток(Выб.Товар,Конт.Склад,"ОстатокТовара");
    КонецЕсли;  
    Иначе
    Возврат;
    КонецЕсли;
    Рез=0;
    Если (Конт.Проведен()=0) И ((Конт.Вид()="РасходнаяКредит") ИЛИ (Конт.Вид()="Перемещение")) Тогда
    Если Ост<Кол Тогда
    Рез=Вопрос("Осталось только "+Ост+"  ввести заново?",4,0);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Конт.НоваяСтрока();
    Если Режим="Каталог" Тогда
    Конт.Товар=Выб;
    Иначе
    Конт.Товар=Выб.Товар;
    КонецЕсли;
    Конт.Количество=Кол;  
    Иначе
    Конт.НоваяСтрока();
    Если Режим="Каталог" Тогда
    Конт.Товар=Выб;
    Иначе
    Конт.Товар=Выб.Товар;
    КонецЕсли;
    Конт.Количество=1;
    КонецЕсли;
    КонецПроцедуры
    Процедура ЗапросКоличестваВПодбор(Конт,Режим,Выб) Экспорт
    Если Выб.ПометкаУдаления()=1 Тогда
    Предупреждение("Нельзя выбирать помеченные на удаление товары!");
    Возврат;
    КонецЕсли;
    Если Константа.ЗапрашиватьКоличество=Перечисление.Булево.Да Тогда
    Кол=1;
    Рез=6;
    Пока Рез=6 Цикл
    Если ВвестиЧисло(Кол,"Введите количество",10,0)=1 Тогда
    Если Режим="Каталог" Тогда
    Иначе
    КонецЕсли;  
    Иначе
    Возврат;
    КонецЕсли;
    Рез=0;
    КонецЦикла;
    Конт.НоваяСтрока();
    Если Режим="Каталог" Тогда
    Конт.Товар=Выб;
    Иначе
    Конт.Товар=Выб.Товар;
    КонецЕсли;
    Конт.Количество=Кол;  
    Иначе
    Конт.НоваяСтрока();
    Если Режим="Каталог" Тогда
    Конт.Товар=Выб;
    Иначе
    Конт.Товар=Выб.Товар;
    КонецЕсли;
    Конт.Количество=1;
    КонецЕсли;
    КонецПроцедуры
    //-----------------------------------------------
    Функция ЗнакУчета(КредДок)
    ВидКредДок=КредДок.Вид();
    РеализацияК="";
    Если   (ВидКредДок="ОтчетРеализатора") ИЛИ (ВидКредДок="ИнвентаризацияРеализатора") Тогда
    Если КредДок.ПризнакРеализатора=Перечисление.ПризнакиРеализаторов.Реализатор_клиент Тогда
    РеализацияК="Продажа";
    ИначеЕсли КредДок.ПризнакРеализатора=Перечисление.ПризнакиРеализаторов.Реализатор_фирма Тогда
    РеализацияК="Закупка";
    КонецЕсли;
    КонецЕсли;
    ОстатокК="";
    Если   (ВидКредДок="ВводОстатковКредита")Тогда
    Если КредДок.Сумма>0 Тогда
    ОстатокК="ДолгКлиента";
    ИначеЕсли КредДок.Сумма<0 Тогда
    ОстатокК="НашДолг";
    КонецЕсли;
    КонецЕсли;
    Если   (ВидКредДок="РасходнаяКредит")
    ИЛИ (ВидКредДок="РасходныйКассовый")
    ИЛИ (ВидКредДок="Платежка")
    ИЛИ (ОстатокК="ДолгКлиента")
    ИЛИ (РеализацияК="Продажа") Тогда
    // значит клиенту выдан торговый кредит
    // или значит была выплачена от нас клиенту предоплата (аванс ему)
    Возврат 1;
    ИначеЕсли  (ВидКредДок="ПриходнаяКредит")
    ИЛИ (ВидКредДок="ПриходныйКассовый")
    ИЛИ (ВидКредДок="ПриходДенегНаСчет")
    ИЛИ (ОстатокК="НашДолг")
    ИЛИ (РеализацияК="Закупка") Тогда
    // значит есть торговый кредит от клиента
    // или значит от клиента была выплачена предоплата (авансовый платеж)
    Возврат -1;
    КонецЕсли;
    КонецФункции
    //-----------------------------------------------
    Функция РежимКредита(Знак,ДокУчета)
    Если Знак=1 Тогда
    // значит клиенту выдан торговый кредит
    // или значит была выплачена от нас клиенту предоплата (аванс ему)
    Если  ЗнакУчета(ДокУчета)=1 Тогда
    // значит мы опять выплачиваем от нас клиенту предоплату (аванс ему)
    // или значит мы еще даем торговый кредит клиенту
    Возврат "Зачет";
    ИначеЕсли   ЗнакУчета(ДокУчета)=-1 Тогда
    // значит клиент погашает нашу предоплату
    // или значит клиент погашает торговый кредит
    Возврат "Погашение";
    КонецЕсли;
    ИначеЕсли Знак=-1 Тогда
    // значит есть торговый кредит от клиента
    // или значит от клиента была выплачена предоплата (авансовый платеж)
    Если  ЗнакУчета(ДокУчета)=1 Тогда
    // значит мы погашаем кредит клиента
    // или значит мы погашаем авансовую проплату клиента
    Возврат "Погашение";
    ИначеЕсли   ЗнакУчета(ДокУчета)=-1 Тогда
    // значит клиент дает нам еще один торговый кредит
    // или значит клиент еще раз выдает нам авансовую проплату
    Возврат "Зачет";
    КонецЕсли;
    КонецЕсли;
    КонецФункции
    //---------------------------
    Процедура ИсполнитьПогашение(Конт,РегистрУчета,НайденныйДок,ТекДок,НайденныйДолг,СумПогаш);
    // Эта процедура вызывается во время проведения по регистрам Учета кредитов
    // Эта процедура реально выполняет проведение регистров
    РегистрУчета.Клиент=Конт.Клиент;
    РегистрУчета.КредДокумент=НайденныйДок;
    // Определяем Знак кредита (кто кому)
    // если Долг<0 - мы должны клиенту,
    // если Долг>0 - Клиент должен нам.
    // Определяем Режим учета кредита (погашение или зачет)
    // именно для найденного КредДокумента и именно по нашему учитываемому документу
    // Режим = "Погашение" при погашении кредита
    // Режим = "Зачет" при начислении кредита
    
    Знак=ЗнакУчета(НайденныйДок);
    Режим=РежимКредита(Знак,ТекДок);
    // Теперь наверное все знаем чтобы провести правильно документ
    Если Режим="Погашение" Тогда
    // Погашаем найденный документ
    Если (Знак*НайденныйДолг)>0  Тогда
    // если еще не погашено, тогда Погашаем
    Если СумПогаш>(Знак*НайденныйДолг) Тогда
    Если НайденныйДолг>0 Тогда
    РегистрУчета.Долг=НайденныйДолг;
    РегистрУчета.ДвижениеРасходВыполнить();
    Иначе
    РегистрУчета.Долг=-НайденныйДолг;
    РегистрУчета.ДвижениеПриходВыполнить();
    КонецЕсли;
    СумПогаш=Окр(СумПогаш-(Знак*НайденныйДолг),3,1);
    Иначе
    РегистрУчета.Долг=СумПогаш;
    Если Знак>0 Тогда
    РегистрУчета.ДвижениеРасходВыполнить();
    Иначе
    РегистрУчета.ДвижениеПриходВыполнить();
    КонецЕсли;
    СумПогаш=0;
    Возврат; // исчерпали сумму на Погашение
    КонецЕсли;
    Иначе  // Это когда вдруг получилось,
    // что Погашено больше чем было Зачтено по данному Документу
    // (остаток с обратным знаком).
    // т.е. перепогасили почему то когда то!
    // вариант- была задним числом уменьшена сумма по РасхНакл (и перепроведена),
    // что привело к такому перекосу - тут надо просто
    // попытаться исправить ситуацию, а именно:
    // разницу прибавляем к СуммеПогашения,
    // а Погашение приводим в соответствие (снимаем часть погашения)
    // (т.е. уменьшаем (прибавляем с обратным знаком)).
    Если НайденныйДолг>0 Тогда  // это значит Знак<0
    РегистрУчета.Долг=НайденныйДолг;
    РегистрУчета.ДвижениеРасходВыполнить();
    Иначе // это значит Знак>0
    РегистрУчета.Долг=-НайденныйДолг;
    РегистрУчета.ДвижениеПриходВыполнить();
    КонецЕсли;
    СумПогаш=Окр(СумПогаш-(Знак*НайденныйДолг),3,1); // здесь (Знак*НайденныйДолг)<0
    КонецЕсли;
    ИначеЕсли Режим="Зачет" Тогда
    Если (Знак*НайденныйДолг)>0  Тогда
    // при Зачете здесь просто открываем новый кред документ
    РегистрУчета.КредДокумент=Конт.ТекущийДокумент();
    РегистрУчета.Долг=СумПогаш;
    Если Знак>0 Тогда
    РегистрУчета.ДвижениеПриходВыполнить();
    Иначе
    РегистрУчета.ДвижениеРасходВыполнить();
    КонецЕсли;
    СумПогаш=0;
    Возврат; // исчерпали сумму на Зачет
    Иначе // Это когда вдруг получилось,
    // что по найденному Документу Зачтено меньше чем было погашено
    // (остаток с обратным знаком).
    // т.е. недозачли почему то когда то!
    // вариант- была задним числом уменьшена сумма по ПрихКасс (и перепроведена),
    // что привело к такому перекосу - тут надо просто попытаться
    // исправить ситуацию, а именно:
    // на эту разницу уменьшаем СуммуПогашения,
    // а Зачет приводим в соответствие (т.е. дозачитываем).
    // (т.е. увеличиваем (прибавляем с прямым знаком)).
    Если СумПогаш> -(Знак*НайденныйДолг) Тогда
    Если НайденныйДолг>0 Тогда  // это значит Знак<0
    РегистрУчета.Долг=НайденныйДолг;
    РегистрУчета.ДвижениеРасходВыполнить();
    Иначе // это значит Знак>0
    РегистрУчета.Долг=-НайденныйДолг;
    РегистрУчета.ДвижениеПриходВыполнить();
    КонецЕсли;
    // заметим, что здесь (Знак*НайденныйДолг)<0
    СумПогаш=Окр(СумПогаш+(Знак*НайденныйДолг),3,1);
    Иначе
    РегистрУчета.Долг=СумПогаш;
    Если Знак>0 Тогда
    РегистрУчета.ДвижениеПриходВыполнить();
    Иначе
    РегистрУчета.ДвижениеРасходВыполнить();
    КонецЕсли;
    СумПогаш=0;
    Возврат; // исчерпали сумму на Зачет
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    //---------------------------
    Процедура ПогашениеДолгаПоКредиту(Конт) Экспорт
    // Если Конт.Клиент.Выбран()=1 Тогда
    //	 ПромКлиент=Конт.Клиент;
    //  ПромКлиент.ИспользоватьДату(Конт.ДатаДок);
    // Иначе
    //  НеПроводить(Конт,"Не задан клиент!");
    //  Возврат;
    // КонецЕсли;
    //
    // ВидДок=Конт.Вид();
    // Если  НЕ((ВидДок="РасходнаяКредит")
    //   ИЛИ (ВидДок="ПриходнаяКредит")
    //   ИЛИ (ВидДок="ОтчетРеализатора")
    //   ИЛИ (ВидДок="ИнвентаризацияРеализатора")
    ////   ИЛИ (ВидДок="ВводОстатковКредита")
    //   ИЛИ (ВидДок="ПриходныйКассовый")
    //   ИЛИ (ВидДок="РасходныйКассовый")
    //   ИЛИ (ВидДок="Платежка")
    //   ИЛИ (ВидДок="ПриходДенегНаСчет")) Тогда
    //  НеПроводить(Конт,"При проведении обнаружен недопустимый вид документа учета кредита!");
    //  Возврат;
    // КонецЕсли;
    //
    // ДД=Конт.ТекущийДокумент();
    // // определим текущий курс Валюты документа
    // Валюта=Конт.Валюта;
    //// Если (ВидДок="ПриходДенегНаСчет")
    ////   ИЛИ (ВидДок="Платежка")  Тогда
    ////  Валюта=Рубли;
    //// Иначе
    ////  Валюта =Конт.Валюта;
    //// КонецЕсли;
    // Если  (ВидДок="ПриходныйКассовый")
    //   ИЛИ (ВидДок="РасходныйКассовый")
    //   ИЛИ (ВидДок="Платежка") Тогда
    //  Курс=Валюта.Текущ_курс.Получить(Конт.ДатаДок);
    // ИначеЕсли  (ВидДок="ПриходДенегНаСчет") Тогда
    //  ДатаКурса=?(Число(Конт.ДатаПриходаДенег)<>0,Конт.ДатаПриходаДенег,Конт.ДатаДок);
    //  Курс=Валюта.Текущ_курс.Получить(ДатаКурса);
    // Иначе
    //  Курс=Конт.Курс;
    // КонецЕсли;
    //  Если  Курс=0 Тогда
    //  НеПроводить(Конт,"Не найдено актуальное значение курса валюты документа!");
    //  Возврат;
    // КонецЕсли;
    //
    // Реализация="";
    // Если   (ВидДок="ОтчетРеализатора") ИЛИ (ВидДок="ИнвентаризацияРеализатора") Тогда
    //  Если Конт.ПризнакРеализатора=Перечисление.ПризнакиРеализаторов.Реализатор_клиент Тогда
    //   Реализация="Продажа";
    //  ИначеЕсли Конт.ПризнакРеализатора=Перечисление.ПризнакиРеализаторов.Реализатор_фирма Тогда
    //   Реализация="Закупка";
    //  КонецЕсли;
    // КонецЕсли;
    //
    // ТипОперации="";
    // Если   (ВидДок="РасходнаяКредит") Тогда
    //  Если Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда
    //   ТипОперации="Продажа";
    //  ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
    //   ТипОперации="ВозвратПоставщику";
    //  КонецЕсли;
    // ИначеЕсли  (ВидДок="ПриходнаяКредит") Тогда
    //  Если Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.Закупка Тогда
    //   ТипОперации="Закупка";
    //  ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда
    //   ТипОперации="ВозвратОтПокупателя";
    //  КонецЕсли;
    // КонецЕсли;
    //
    // // В зависимости от вида документа
    // // определим РегистрУчета и
    // // определим текущий курс валюты Кредита
    // Если   (ТипОперации="Продажа")
    //   ИЛИ (ТипОперации="ВозвратОтПокупателя")
    //   ИЛИ (Реализация="Продажа")
    //   ИЛИ (ВидДок="ПриходныйКассовый")
    //   ИЛИ (ВидДок="ПриходДенегНаСчет") Тогда
    //  ИмяРегистрУчета="УчетКредита";
    //  РегистрУчета=Конт.Регистр.УчетКредита;
    //  СуммаКред=ПромКлиент.СуммаКредита;
    //  ПромВал=ПромКлиент.ВалютаКредита;
    // ИначеЕсли  (ТипОперации="Закупка")
    //   ИЛИ (ТипОперации="ВозвратПоставщику")
    //   ИЛИ (Реализация="Закупка")
    //   ИЛИ (ВидДок="РасходныйКассовый")
    //   ИЛИ (ВидДок="Платежка") Тогда
    //  ИмяРегистрУчета="УчетКредитаПоставщиков";
    //  РегистрУчета=Конт.Регистр.УчетКредитаПоставщиков;
    //  СуммаКред=ПромКлиент.СуммаКредитаПоставщика;
    //  ПромВал=ПромКлиент.ВалютаКредитаПоставщика;
    // КонецЕсли;
    //
    // Если ПромВал.Выбран()=0 Тогда
    //  ПромВал=ПромКлиент.ВалютаВзаиморасчетов;
    // КонецЕсли;
    // Если ПромВал.Выбран()=0 Тогда
    //  ПромВал=Константа.ВалютаВзаиморасчетов;
    // КонецЕсли;
    // Если ПромВал.Выбран()=0 Тогда
    //  НеПроводить(Конт,"Не найдена валюта кредита клиента!");
    //  Возврат;
    // КонецЕсли;
    //
    // Если  (ВидДок="ПриходДенегНаСчет")
    //   ИЛИ (ВидДок="ПриходныйКассовый")
    //   ИЛИ (ВидДок="РасходныйКассовый")
    //   ИЛИ (ВидДок="Платежка") Тогда
    //  КурсКред=ПромВал.Текущ_курс.Получить(Конт.ДатаДок);
    // ИначеЕсли  (ВидДок="ПриходДенегНаСчет") Тогда
    //  ДатаКурса=?(Число(Конт.ДатаПриходаДенег)<>0,Конт.ДатаПриходаДенег,Конт.ДатаДок);
    //  КурсКред=ПромВал.Текущ_курс.Получить(ДатаКурса);
    // Иначе
    //  КурсКред=ПромВал.Текущ_курс.Получить(Конт.Дата_курса);
    // КонецЕсли;
    // Если  КурсКред=0 Тогда
    //  НеПроводить(Конт,"Не найдено актуальное значение курса валюты кредита!"+ПромВал);
    //  Возврат;
    // КонецЕсли;
    //
    // // Определяем Сумму по документу
    // Если  (ВидДок="РасходнаяКредит")
    //   ИЛИ (ВидДок="ПриходнаяКредит")
    //   ИЛИ (ВидДок="ОтчетРеализатора")  Тогда
    //  Сумма=Конт.Итог("Сумма");
    // ИначеЕсли  (ВидДок="ИнвентаризацияРеализатора")  Тогда
    //  // это совсем особый случай
    //  Рег1=СоздатьОбъект("Регистр.УчетРеализации");
    //	 Рег1.УстановитьФильтр(ПромКлиент,);
    //	 Рег1.ВыбратьДвиженияДокумента(Конт.ТекущийДокумент());
    //  Сумма=0;
    //	 Пока Рег1.ПолучитьДвижение()=1 Цикл
    //   Если Не(Рег1.Клиент=ПромКлиент) Тогда
    //    Продолжить;
    //   КонецЕсли;
    //   Сумма=Сумма+Рег1.ПродСтоимость;
    //   // Это значение получается в валюте взаиморасчетов
    //   // его надо для правильного дальнейшего расчета перевести
    //   // в валюту документа
    //  КонецЦикла;
    //  Вал=Константа.ВалютаВзаиморасчетов;
    //  Сумма=Пересчет(Сумма,Вал,Конт.Дата_курса,Валюта,Курс);
    //  Рег1=0;
    // Иначе
    //  Сумма=Конт.Сумма;
    // КонецЕсли;
    //
    // Если Валюта=Рубли  Тогда
    // // Документ рублевый
    //  СумПогаш=Сумма/КурсКред;
    // ИначеЕсли Валюта=Константа.СтараяБазоваяВалюта  Тогда
    //  СумПогаш=(Сумма*Константа.СтараяБазоваяВалюта.Текущ_курс.Получить(РабочаяДата()))/КурсКред;
    // Иначе  // Документ валютный
    //  СумПогаш=Пересчет(Сумма,Валюта,Курс,ПромВал,КурсКред);
    // КонецЕсли;
    //
    // Если СумПогаш=0 Тогда
    //  Возврат;
    // КонецЕсли;
    //
    //	    // Сначала надо выделить те Документы, которые надо погашать
    //	    // Сделаем это при помощи механизма Запросов
    // Запрос=СоздатьОбъект("Запрос");
    // Если ИмяРегистрУчета="УчетКредита" Тогда
    //  ТекстЗапроса="
    //   |Клиент=Регистр.УчетКредита.Клиент;
    //   |КредДокумент=Регистр.УчетКредита.КредДокумент;
    //   |Долг=Регистр.УчетКредита.Долг;
    //	  |Условие(Клиент=ПромКлиент);
    //   |Группировка КредДокумент;
    //   |Функция КонДолг= КонОст(Долг);
    //   |";
    // ИначеЕсли  ИмяРегистрУчета="УчетКредитаПоставщиков" Тогда
    //  ТекстЗапроса="
    //   |Клиент=Регистр.УчетКредитаПоставщиков.Клиент;
    //   |КредДокумент=Регистр.УчетКредитаПоставщиков.КредДокумент;
    //   |Долг=Регистр.УчетКредитаПоставщиков.Долг;
    //	  |Условие(Клиент=ПромКлиент);
    //   |Группировка КредДокумент;
    //   |Функция КонДолг= КонОст(Долг);
    //   |";
    // КонецЕсли;
    // Флаг=Запрос.Выполнить(ТекстЗапроса);
    // Если Флаг=0 тогда
    //  Предупреждение("Запрос при выполнении проводки по Кредиту не выполнился!");
    //  Возврат;
    // КонецЕсли;
    // // теперь в запросе собраны все Документы по кредиту
    //
    // // Тут так - сначала смотрим - указана ли в самом документе Счет-Фактура?
    // // Если ДА - то по ней надо найти тот документ, который надо погашать! и именно
    // // его и попытаться погасить! Но при этом все основательно проверять и брать под контроль!
    // // 1) если не найдено документа, который нам указали погасить (или может быть он был уже ранее
    // //    погашен), то выдаем сообщение об ошибке и не проводим.
    // // 2) если все же после удачного погашения что то останется в остатке на погашение (т.е. документ
    // //    загасил всю сумму по указанной Сч-Ф. но еще кое что осталось), то выдаем сообщение и
    // //    остаток гасим по ФИФО (в порядке Даты Оплаты кредитов).
    // // Все это касаетсе ТОЛЬКО денежных документов оплаты!!!
    //
    // // Если НЕТ - то надо погашать по ФИФО (в порядке Даты Оплаты кредитов).
    //
    // УказанныйДок=0;
    // Если   (ВидДок="ПриходныйКассовый")
    //   ИЛИ (ВидДок="РасходныйКассовый")
    //   ИЛИ (ВидДок="Платежка")
    //   ИЛИ (ВидДок="ПриходДенегНаСчет") Тогда
    //  Если Конт.ПоСчФ.Выбран()=1 Тогда
    //   ДокСФ=Конт.ПоСчФ;
    //   Если ДокСФ.ДокументОснование.Выбран()=1 Тогда
    //    ДокПогаш=ДокСФ.ДокументОснование;
    //    // Вот этот документ нам велят погасить!
    //    // Попытаемся его найти среди документов кредита
    //    Мет=0;
    //    Пока Запрос.Группировка("КредДокумент") = 1 Цикл
    //	 Если (Запрос.КонДолг=0)  Тогда
    //	 // пропускаем Погашенные документы
    //	  Продолжить;
    //	 КонецЕсли;
    //	 Если Запрос.КредДокумент=ДокПогаш  Тогда
    //	  // Нашли указанный документ среди документов кредита
    //	  НайденныйДолг=Запрос.КонДолг;
    //	  НайденныйДок=Запрос.КредДокумент;
    //	  ВидКредДок=НайденныйДок.Вид();
    //	  Мет=1;
    //	  // Прерывать этот цикл нельзя - надо пройти его до конца!!!
    //	 КонецЕсли;
    //    КонецЦикла;
    //    Если Мет=1 Тогда
    //	 // Итак, все же нашелся таки тот документ, который нам указано погасить!
    //	 УказанныйДок=НайденныйДок;
    //	 ИсполнитьПогашение(Конт,РегистрУчета,НайденныйДок,ДД,НайденныйДолг,СумПогаш);
    //    // Проверим, осталось ли чего в осадке?
    //    // Если нет, то выходим!
    //	 Если СумПогаш=0 Тогда
    //	  Возврат;
    //	 КонецЕсли;
    //    //  если все же после удачного погашения что то останется в остатке на погашение
    //    //  (т.е. документ загасил всю сумму по указанной Сч-Ф, но еще кое что осталось),
    //    //  то просто выдаем сообщение, а остаток далее погасится по ФИФО
    //    //  (в порядке Даты Оплаты кредитов).
    //	 Сообщить("Документ "+НайденныйДок+",");
    //	 Сообщить("который следовало погасить согласно указанного");
    //	 Сообщить("в платежном документе "+ Конт.Вид()+" № "+Конт.НомерДок+" от "+Конт.ДатаДок);
    //	 Сообщить("Счета-Фактуры!"+ДокСФ);
    //	 Сообщить("полностью погашен, но остаток суммы в размере="+СумПогаш+" "+ПромВал.Сокр_назв);
    //	 Сообщить("направлен на погашение других документов");
    //	 Сообщить("по кредитам в порядке их Даты оплаты!");
    //    Иначе
    //    // не найдено документа, который нам указали погасить
    //    // (или может быть он был уже ранее погашен),
    //    // однако выдаем сообщение об ошибке и не проводим.
    //	 Сообщить("Не найдено документа, который указано погасить согласно Счета-Фактуры!");
    //	 НеПроводить(Конт,"(возможно он был уже ранее погашен!)");
    //	 Возврат;
    //    КонецЕсли;
    //   КонецЕсли;
    //  КонецЕсли;
    // КонецЕсли;
    //
    // // а теперь надо погашать документы в порядке их Даты Оплаты
    // Мет=1; // - это чтобы войти в цикл первый раз
    // Пока Мет=1 Цикл
    //  Мет=0;
    //  // Надо найти непогашенный КредДокумент с самой ранней Датой оплаты
    //  НайденнаяДата='30.12.2025'; // это мы задали заведомо очень большую дату
    //  Пока Запрос.Группировка("КредДокумент") = 1 Цикл
    //   Если Запрос.КредДокумент.Выбран()=0  Тогда
    //   // пропускаем
    //    Продолжить;
    //   КонецЕсли;
    //   Если УказанныйДок=Запрос.КредДокумент  Тогда
    //   // пропускаем документы, которые уже погасили по указке Счета-Фактуры!
    //    Продолжить;
    //   КонецЕсли;
    //   ВидКредДок=Запрос.КредДокумент.Вид();
    //   Если ИмяРегистрУчета="УчетКредита" Тогда
    //    НайденныйДолгЦикла=Регистр.УчетКредита.Остаток(Конт.Клиент,Запрос.КредДокумент,"Долг");
    //   ИначеЕсли  ИмяРегистрУчета="УчетКредитаПоставщиков" Тогда
    //    НайденныйДолгЦикла=Регистр.УчетКредитаПоставщиков.Остаток(Конт.Клиент,Запрос.КредДокумент,"Долг");
    //   КонецЕсли;
    //   Если (НайденныйДолгЦикла=0)  Тогда
    //   // пропускаем Погашенные документы
    //    Продолжить;
    //   КонецЕсли;
    //
    //   Если Запрос.КредДокумент<>ДД Тогда
    //    Если РежимКредита(ЗнакУчета(Запрос.КредДокумент),ДД)="Зачет" Тогда
    //    // пропускаем документы на Зачет, т.к. по FIFO нам надо только погашать!
    //	 Продолжить;
    //    КонецЕсли;
    //   Иначе
    //    // т.е. перепроводим документ, который уже сидит в регистре как кредитный документ
    //    // значит тогда его надо по новой на это же место ставить
    //    ИсполнитьПогашение(Конт,РегистрУчета,Запрос.КредДокумент,ДД,НайденныйДолгЦикла,СумПогаш);
    //    Если СумПогаш=0 Тогда
    //	 Возврат;
    //    КонецЕсли;
    //    Продолжить;
    //   КонецЕсли;
    //
    //   Если   (ВидКредДок="РасходнаяКредит")
    //	 ИЛИ (ВидКредДок="ПриходнаяКредит")
    //	 ИЛИ (ВидКредДок="ВводОстатковКредита") Тогда
    //    ДатаОплаты=Запрос.КредДокумент.ДатаОплаты;
    //    Если Число(ДатаОплаты)=0 Тогда
    //	 ДатаОплаты=Запрос.КредДокумент.ДатаДок;
    //    КонецЕсли;
    //   ИначеЕсли   (ВидКредДок="ПриходныйКассовый")
    //	  ИЛИ (ВидКредДок="РасходныйКассовый")
    //	  ИЛИ (ВидКредДок="Платежка")
    //	  ИЛИ (ВидКредДок="ОтчетРеализатора")
    //	  ИЛИ (ВидКредДок="ИнвентаризацияРеализатора")
    //	  ИЛИ (ВидКредДок="ПриходДенегНаСчет") Тогда
    //    ДатаОплаты=Запрос.КредДокумент.ДатаДок;
    //   Иначе
    //    НеПроводить(Конт,"При проведении обнаружен недопустимый вид документа кредита! "+ВидКредДок);
    //    Возврат;
    //   КонецЕсли;
    //   Если ДатаОплаты<НайденнаяДата  Тогда
    //    Мет=1;
    //    НайденнаяДата=ДатаОплаты;
    //    НайденныйДок=Запрос.КредДокумент;
    //    НайденныйДолг=НайденныйДолгЦикла;
    //   КонецЕсли;
    //  КонецЦикла;
    //  // теперь мы знаем непогашенный КредДокумент с самой ранней Датой оплаты
    //  Если Мет=1 Тогда
    //   ИсполнитьПогашение(Конт,РегистрУчета,НайденныйДок,ДД,НайденныйДолг,СумПогаш);
    //   Если СумПогаш=0 Тогда
    //    Возврат;
    //   КонецЕсли;
    //  КонецЕсли;
    // КонецЦикла;
    //
    // // если после всей этой операции осталась кое что в СумПогаш,
    // // а документы, которые надо погашать
    // // исчерпаны, то надо просто эту сумму записать в Долг, но с обратным знаком,
    //    РегистрУчета.Клиент=Конт.Клиент;
    //    РегистрУчета.КредДокумент=Конт.ТекущийДокумент();
    // РегистрУчета.Долг=СумПогаш;
    // Если ЗнакУчета(ДД)=1 Тогда
    //  // значит мы даем торговый кредит клиенту
    //  // или это значит, что мы выплачиваем от нас клиенту предоплату (аванс ему)
    //	    РегистрУчета.ДвижениеПриходВыполнить();
    // Иначе//Если ЗнакУчета(ДД)=-1 Тогда
    //  // значит клиент выдает нам авансовую проплату
    //  // или это значит клиент дает нам  торговый кредит
    //	    РегистрУчета.ДвижениеРасходВыполнить();
    // КонецЕсли;
    КонецПроцедуры
    
    //-----------------------------------------------
    Процедура ДвиженияРегистраУчетРеализации(Конт) 
    // По Регистру УчетРеализации
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
    Рег1=СоздатьОбъект("Регистр.УчетРеализации");
    Если Конт.ИтогиАктуальны()=0 Тогда
    // если итоги не актуальны, то стоимости берем из временногно расчета Регистра ОстаткиТоваров
    Рег1.ВременныйРасчет();
    Рег.ВременныйРасчет();
    Рег1.УстановитьФильтр(Конт.Клиент,);
    РассчитатьРегистрыНа(Конт.ТекущийДокумент());
    КонецЕсли;
    Конт.Регистр.УчетРеализации.Клиент=Конт.Клиент;
    Конт.ВыбратьСтроки();
    Пока( Конт.ПолучитьСтроку()>0) Цикл
    Если Конт.Товар.Выбран()=0 Тогда
    Сообщить("В документе "+Конт.Вид()+" № "+Конт.НомерДок
    +" от "+Конт.ДатаДок+"Не указан товар!");
    Продолжить;
    КонецЕсли;
    Если Конт.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда
    // услуги здесь в этих регистрах не учитываем
    Продолжить;
    КонецЕсли;
    Конт.Регистр.УчетРеализации.Товар=Конт.Товар;
    // ПродСтоимость пересчитаем в Валюту Взаиморасчетов  (с учетом НДС)
    ВалютаТовара=Константа.ВалютаВзаиморасчетов;
    СуммаВал=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс,ВалютаТовара,Конт.ДатаДок);
    
    Рег1.Товар=Конт.Товар;
    Рег1.Клиент=Конт.Клиент;
    Рег1.ОстаткиПолучить();
    ТекОстаток=Рег1.ОстатокТовара;
    ТекСтоимость=Рег1.Стоимость;
    ТекПродСтоимость=Рег1.ПродСтоимость;
    Рег.Товар=Конт.Товар;
    Рег.Склад=Конт.Склад;
    Рег.ОстаткиПолучить();
    
    ОбщееКоличество=Конт.Количество*Конт.Коэффициент;
    Конт.Регистр.УчетРеализации.ОстатокТовара=ОбщееКоличество;
    Конт.Регистр.УчетРеализации.ПродСтоимость=СуммаВал;
    
    Если Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная Тогда
    // Для расходной накладной
    Если Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда
    // При передаче товара на реализацию стоимость берем с нашего склада
    // Стоимость в ВалютеУчета товара (как в Регистре ОстаткиТоваров)
    Если Рег.ОстатокТовара>0 Тогда
    Конт.Регистр.УчетРеализации.Стоимость=Рег.ВалютнаяСтоимость
    *ОбщееКоличество/Рег.ОстатокТовара;
    Иначе
    Конт.Регистр.УчетРеализации.Стоимость=0;
    КонецЕсли;
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
    // При возврате товара поставщику стоимость списываем с УчетаРеализации
    Если ТекОстаток>0 Тогда
    Конт.Регистр.УчетРеализации.Стоимость=ТекСтоимость
    *ОбщееКоличество/ТекОстаток;
    Иначе
    Конт.Регистр.УчетРеализации.Стоимость=0;
    КонецЕсли;
    КонецЕсли;
    // Уберем ошибки округления
    Если (ТекОстаток=-ОбщееКоличество) Тогда
    Регистр.УчетРеализации.Стоимость=-ТекСтоимость;
    Регистр.УчетРеализации.ПродСтоимость=-ТекПродСтоимость;
    КонецЕсли;
    // Для расходной накладной Долг Клиента растет, поэтому делаем ДвижениеПриход
    Конт.Регистр.УчетРеализации.ДвижениеПриходВыполнить();
    ИначеЕсли Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная Тогда
    // Для приходной накладной
    Если Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.Закупка Тогда
    // При приеме товара на реализацию стоимость берем из накладной
    // Стоимость в ВалютеУчета товара (как в Регистре ОстаткиТоваров)
    Если Рег.ОстатокТовара<>0 Тогда
    ВалютаТовара=Конт.Товар.ВалютаУчета;
    Конт.Регистр.УчетРеализации.Стоимость=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс
    ,ВалютаТовара,Конт.ДатаДок);
    Иначе
    Конт.Регистр.УчетРеализации.Стоимость=0;
    КонецЕсли;
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда
    // При возврате товара от реализатора стоимость списываем с УчетаРеализации
    Если ТекОстаток<>0 Тогда
    Конт.Регистр.УчетРеализации.Стоимость=ТекСтоимость
    *ОбщееКоличество/ТекОстаток;
    Иначе
    Конт.Регистр.УчетРеализации.Стоимость=0;
    КонецЕсли;
    КонецЕсли;
    // Уберем ошибки округления
    Если ТекОстаток=ОбщееКоличество  Тогда
    Регистр.УчетРеализации.ПродСтоимость=ТекПродСтоимость;
    Регистр.УчетРеализации.Стоимость=ТекСтоимость;
    КонецЕсли;
    // Для приходной накладной Долг Клиента уменьшается, поэтому делаем ДвижениеРасход
    Конт.Регистр.УчетРеализации.ДвижениеРасходВыполнить();
    КонецЕсли;
    
    КонецЦикла;
    Рег=0;
    Рег1=0;
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ДвиженияРегистровНакладных(Конт) Экспорт
    Если Конт.Склад.Выбран()=0 Тогда
    НеПроводить(Конт,"Не указан склад!");
    Возврат;
    КонецЕсли;
    Если Конт.Клиент.Выбран()=0 Тогда
    НеПроводить(Конт,"Не указан клиент!");
    Возврат;
    КонецЕсли;
    
    УстановкаГП(Конт);
    //-------------------------------------
    // По Регистру УчетРеализации
    Если (Конт.ВидТорговли=Перечисление.ВидыТорговли.Реализация)
    И  (Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная)
    Тогда
    // Для Расходной накладной по реализации Движение по регистру "УчетРеализации"
    // надо делать до Движения по регистру "ОстаткиТоваров", чтобы правильно
    // записывать стоимости товаров
    ДвиженияРегистраУчетРеализации(Конт);
    КонецЕсли;
    //-------------------------------------
    // по Регистру ОстаткиТоваров (здесь проходят учет все типы накладных )
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
    Рег1=СоздатьОбъект("Регистр.РезервыТоваров");
    Если Конт.ВидТорговли=Перечисление.ВидыТорговли.Реализация Тогда
    Рег2=СоздатьОбъект("Регистр.УчетРеализации");
    Если Конт.ИтогиАктуальны()=0 Тогда
    // если итоги не актуальны, то стоимости берем из временногно расчета Регистра ОстаткиТоваров
    Рег2.ВременныйРасчет();
    Рег2.УстановитьФильтр(Конт.Клиент,);
    КонецЕсли;
    КонецЕсли;
    Если Конт.ИтогиАктуальны()=0  Тогда
    // если итоги не актуальны, то стоимости берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег1.ВременныйРасчет();
    РассчитатьРегистрыНа(Конт.ТекущийДокумент());
    КонецЕсли;
    Конт.ВыбратьСтроки();
    Пока( Конт.ПолучитьСтроку()>0) Цикл
    Если Конт.Товар.Выбран()=0 Тогда
    Сообщить("В документе "+Конт.Вид()+" № "+Конт.НомерДок
    +" от "+Конт.ДатаДок+"Не указан товар!");
    Продолжить;
    КонецЕсли;
    Если Конт.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда
    // услуги здесь в этих регистрах не учитываем
    Продолжить;
    КонецЕсли;
    ОбщееКоличество=Конт.Количество*Конт.Коэффициент;
    Рег.Товар=Конт.Товар;
    Рег.Склад=Конт.Склад;
    Рег.ОстаткиПолучить();
    Если (Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная) Тогда
    // Для расходной накладной
    Если (Рег.ОстатокТовара < ОбщееКоличество)
    И (НЕ(Константа.РазрешитьОтрицОстатки=Перечисление.Булево.Да)) Тогда
    Сообщить("На складе нет нужного количества товара "+Конт.Товар.Наименование);
    НеПроводить(Конт,"На складе осталось "+Рег.ОстатокТовара+" "+Конт.Товар.БазоваяЕдиница);
    Рег=0;
    Рег1=0;
    Рег2=0;
    Возврат;
    КонецЕсли;
    // проверяем резерв товара
    Если НЕ(Константа.РазрешитьПродаватьРезерв=Перечисление.Булево.Да) Тогда
    // Вычислим, сколько всего данного товара
    ПолныйОстаток= Рег.СводныйОстаток(Конт.Товар,,"ОстатокТовара");
    // Вычислим, сколько зарезервировано всего данного товара
    Резерв= Рег1.СводныйОстаток(Конт.Товар,,"РезервТовара");
    РезервПоСчету= 0;
    Если Конт.Вид()="РасходнаяКредит" Тогда
    // Если выписывается накладная на основании Счета
    Если Конт.ПоСчету.Вид()="Счет" Тогда
    // Вычислим, сколько зарезервировано именно по данному Счету
    РезервПоСчету= Рег1.Остаток(Конт.Товар,Конт.ПоСчету,"РезервТовара");
    КонецЕсли;
    КонецЕсли;
    СвободныйРесурс=ПолныйОстаток-Резерв;
    Если СвободныйРесурс<0  Тогда
    // товара не хватает на все зарезервированные Счета
    СвободныйРесурс=0;
    КонецЕсли;
    
    Если РезервПоСчету+СвободныйРесурс< ОбщееКоличество Тогда
    Сообщить("Нет нужного свободного количества товара "+Конт.Товар.Наименование);
    Сообщить("Всего осталось "+Строка(ПолныйОстаток)+" "+Конт.Товар.БазоваяЕдиница);
    Сообщить("Зарезервировано по выписанным Счетам "+Строка(Резерв-РезервПоСчету)
    +" "+Конт.Товар.БазоваяЕдиница);
    НеПроводить(Конт,"Требуемое количество "+Строка(ОбщееКоличество)
    +" "+Конт.Товар.БазоваяЕдиница);
    Рег=0;
    Рег1=0;
    Рег2=0;
    Возврат;
    КонецЕсли;
    КонецЕсли;
    Если  Рег.ОстатокТовара>0 Тогда
    Если Рег.ОстатокТовара < ОбщееКоличество Тогда
    // Если у нас отоладочный режим эксплуатации и разрешено продавать больше,
    // чем есть на складе, то стоимость в этом случае после проведения накладной
    // должна обнулиться!!!
    Конт.Регистр.ОстаткиТоваров.БазоваяСтоимость=Рег.БазоваяСтоимость;
    Конт.Регистр.ОстаткиТоваров.ВалютнаяСтоимость=Рег.ВалютнаяСтоимость;
    Иначе
    Конт.Регистр.ОстаткиТоваров.БазоваяСтоимость=Рег.БазоваяСтоимость
    *ОбщееКоличество/Рег.ОстатокТовара;
    Конт.Регистр.ОстаткиТоваров.ВалютнаяСтоимость=Рег.ВалютнаяСтоимость
    *ОбщееКоличество/Рег.ОстатокТовара;
    КонецЕсли;
    Иначе
    // Если у нас режим отладочной эксплуатации и текущий остаток товара на складе <0
    // то стоимости товаров не учитываем, делаем их =0!!!	
    Конт.Регистр.ОстаткиТоваров.БазоваяСтоимость=0;
    Конт.Регистр.ОстаткиТоваров.ВалютнаяСтоимость=0;
    КонецЕсли;
    Конт.Регистр.ОстаткиТоваров.ОстатокТовара=ОбщееКоличество;						
    Конт.Регистр.ОстаткиТоваров.Склад=Конт.Склад;
    Конт.Регистр.ОстаткиТоваров.Товар=Конт.Товар;
    Конт.Регистр.ОстаткиТоваров.ФлагУчета=2;
    Конт.Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
    ИначеЕсли  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная  Тогда
    // Для приходной накладной
    ВалютаТовара=Конт.Товар.ВалютаУчета;
    Если  (Конт.ВидТорговли=Перечисление.ВидыТорговли.Реализация)
    И (Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя) Тогда
    // При возврате товара от реализатора стоимость возвращаем на склад ту, что была записана
    // за реализатором
    Рег2.Товар=Конт.Товар;
    Рег2.Клиент=Конт.Клиент;
    Рег2.ОстаткиПолучить();
    ТекОстаток=Рег2.ОстатокТовара;
    ТекСтоимость=Рег2.Стоимость;
    Если ТекОстаток<>0 Тогда
    Стоим=ТекСтоимость*ОбщееКоличество/ТекОстаток;
    Иначе
    Стоим=0;
    КонецЕсли;
    СуммаВал=Стоим;
    СуммаРуб=Пересчет(Стоим,ВалютаТовара,Конт.ДатаДок,Рубли,1);
    ИначеЕсли  (НЕ(Конт.ВидТорговли=Перечисление.ВидыТорговли.Реализация))
    И (Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя) Тогда
    // При возврате товара от Покупателя возвращаем на склад ту стоимость, которая сейчас
    // есть по этому товару,
    // если товара нет на складе, то стоимость устанавливаем по ПриходнойЦене
    // из карточки товара, но при этом предупреждаем пользователя
    Если  Рег.ОстатокТовара<=0 Тогда
    // Если у нас отоладочный режим эксплуатации или просто
    // такого товара нет или его уже весь продали, то себестоимость
    // его нам неизвестна, значит стоимость устанавливаем по ПриходнойЦене
    // из карточки товара, но при этом предупреждаем пользователя
    ВалютаЗакупки=Конт.Товар.ВалютаЗакуп;
    Сообщить("Для возвращаемого товара "+СокрП(Конт.Товар.Наименование)+" неизвестна себестоимость!");
    Сообщить(" оприходовано по себестоимости "+Конт.Товар.Прих_Цена+" "+ВалютаЗакупки.Сокр_назв);
    СуммаВал=ОбщееКоличество*Пересчет(Конт.Товар.Прих_Цена,ВалютаЗакупки,Конт.ДатаДок,ВалютаТовара,Конт.ДатаДок);
    СуммаРуб=ОбщееКоличество*Пересчет(Конт.Товар.Прих_Цена,ВалютаЗакупки,Конт.ДатаДок,Рубли,1);
    Иначе
    СуммаВал=Рег.ВалютнаяСтоимость*ОбщееКоличество/Рег.ОстатокТовара;
    СуммаРуб=Рег.БазоваяСтоимость*ОбщееКоличество/Рег.ОстатокТовара;
    КонецЕсли;
    Иначе
    СуммаВал=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс,ВалютаТовара,Конт.ДатаДок);
    СуммаРуб=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс,Рубли,1);
    КонецЕсли;
    // Учтем возможность отрицательных остатков товара
    Если  Рег.ОстатокТовара<0 Тогда
    // если у нас режим отладочной эксплуатации и текущий остаток товара на складе <0
    Если (-Рег.ОстатокТовара) < ОбщееКоличество Тогда
    // если у нас отоладочный режим эксплуатации, то при переходе через ноль в плюс,
    // добавляем стоимость только положительной части товара
    // (учтем, что у нас здесь Рег.ОстатокТовара<0 )
    СуммаВал=СуммаВал*(ОбщееКоличество+Рег.ОстатокТовара)/ОбщееКоличество;
    СуммаРуб=СуммаРуб*(ОбщееКоличество+Рег.ОстатокТовара)/ОбщееКоличество;
    Иначе
    // если у нас отоладочный режим эксплуатации, то в отрицательной области
    // количества товаров мы стоимости не ведем !!!
    СуммаВал=0;
    СуммаРуб=0;
    КонецЕсли;
    КонецЕсли;
    Конт.Регистр.ОстаткиТоваров.Склад=Конт.Склад;
    Конт.Регистр.ОстаткиТоваров.ОстатокТовара=ОбщееКоличество;
    Конт.Регистр.ОстаткиТоваров.Товар=Конт.Товар;
    Конт.Регистр.ОстаткиТоваров.БазоваяСтоимость=СуммаРуб;
    Конт.Регистр.ОстаткиТоваров.ВалютнаяСтоимость=СуммаВал;
    Конт.Регистр.ОстаткиТоваров.ФлагУчета=2;
    Конт.Регистр.ОстаткиТоваров.ДвижениеПриходВыполнить();
    КонецЕсли;
    КонецЦикла;
    Рег=0;
    Рег1=0;
    Рег2=0;
    //-------------------------------------
    // По Регистру УчетРеализации
    Если (Конт.ВидТорговли=Перечисление.ВидыТорговли.Реализация)
    И  (Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная)
    Тогда
    // Для Приходной накладной по реализации Движение по регистру УчетРеализации
    // надо делать после Движения по регистру "ОстаткиТоваров", чтобы правильно
    // записывать стоимости товаров
    ДвиженияРегистраУчетРеализации(Конт);
    КонецЕсли;
    //-------------------------------------
    // По Регистру Касса (здесь проходят учет только наловые накладные)
    // Если Строка(Конт.ВидТорговли)=Строка(Перечисление.ВидыТорговли.ЗаНал)
    Если (1<0) Тогда
    Конт.Регистр.Касса.Валюта=Конт.Валюта;
    Конт.Регистр.Касса.Наличность=Конт.Итог("Сумма");
    Если Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная Тогда
    // при расходной накладной деньги поступают в кассу
    Конт.Регистр.Касса.ДвижениеПриходВыполнить();
    Иначе   // при приходной накладной деньги поступают из кассы
    // надо проверить наличие денег в кассе
    Рег=СоздатьОбъект("Регистр.Касса");
    Если Конт.ИтогиАктуальны()=0 Тогда
    // если итоги не актуальны
    Рег.ВременныйРасчет();
    РассчитатьРегистрыНа(Конт.ТекущийДокумент());
    КонецЕсли;
    Если (Рег.Остаток(Конт.Валюта,"Наличность")<Конт.Регистр.Касса.Наличность)
    И (НЕ(Константа.РазрешитьОтрицОстатки=Перечисление.Булево.Да))
    Тогда
    Сообщить("Нет нужной суммы в валюты.");
    НеПроводить(Конт,"В кассе осталось "+Рег.Остаток(Конт.Валюта,"Наличность")
    +Конт.Валюта.Наименование);
    Рег=0;
    Возврат;
    КонецЕсли;
    Конт.Регистр.Касса.ДвижениеРасходВыполнить();
    Рег=0;
    КонецЕсли;
    КонецЕсли;
    //-----------------------
    // по Регистру Взаиморасчеты
    // сначала определяем суммы Взаиморасчетов в Базовой валюте и в  ВалютаВзаиморасчетов
    Если Конт.СчетФактура.Выбран()=1 Тогда
    Если Конт.СчетФактура.ДатаДок>Конт.ДатаДок Тогда
    НеПроводить(Конт,"Дата накладной не может быть раньше даты Счета-Фактуры!!!");
    КонецЕсли;
    //Если Конт.Вид()="ПриходнаяКредит" Тогда
    //    Возврат;	  
    //КонецЕсли;  
    КонецЕсли;
    СуммаПолн=Конт.Итог("Сумма");
    Если Конт.СчетФактУслуги.Выбран()=1 Тогда
    СуммаПолн=СуммаПолн-Конт.СчетФактУслуги.Итог("Сумма");
    КонецЕсли;
    ВалютаТовара=Константа.ВалютаВзаиморасчетов;
    СуммаВал=Пересчет(СуммаПолн,Конт.Валюта,Конт.Курс,ВалютаТовара,Конт.Дата_курса);
    СуммаРуб=Пересчет(СуммаПолн,Конт.Валюта,Конт.Курс,Рубли,1);
    Конт.Регистр.Взаиморасчеты.Фирма=Конт.Фирма;
    Конт.Регистр.Взаиморасчеты.Клиент=Конт.Клиент;
    Конт.Регистр.Взаиморасчеты.СуммаБазовая=СуммаРуб;
    Конт.Регистр.Взаиморасчеты.СуммаВалютная=СуммаВал;
    Если НЕ(Конт.ВидТорговли=Перечисление.ВидыТорговли.ЗаНал)  Тогда
    Если Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная Тогда
    // Для расходной накладной
    Конт.Регистр.Взаиморасчеты.ДвижениеРасходВыполнить();
    ИначеЕсли  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная Тогда
    // Для приходной накладной
    Конт.Регистр.Взаиморасчеты.ДвижениеПриходВыполнить();
    КонецЕсли;
    Иначе // Для Накладных за НАЛ делаем одновременно Приход и Расход, чтобы
    // факт движения товара и денег отразился в регистре для последующего отчета.
    Если Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная Тогда
    // Для расходной накладной
    Конт.Регистр.Взаиморасчеты.ДвижениеРасходВыполнить();
    // Конт.Регистр.Взаиморасчеты.ДвижениеПриходВыполнить();
    ИначеЕсли  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная Тогда
    // Для приходной накладной
    Конт.Регистр.Взаиморасчеты.ДвижениеПриходВыполнить();
    // Конт.Регистр.Взаиморасчеты.ДвижениеРасходВыполнить();
    КонецЕсли;
    КонецЕсли;
    //------------------------
    // По Регистру УчетКредита
    Если Конт.ВидТорговли=Перечисление.ВидыТорговли.ЗаНал  Тогда
    ВидДок=Конт.Вид();
    ТипОперации="";
    Если   (ВидДок="РасходнаяНал") Тогда
    Если Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда
    ТипОперации="Продажа";
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
    ТипОперации="ВозвратПоставщику";
    КонецЕсли;
    ИначеЕсли  (ВидДок="ПриходнаяНал") Тогда
    Если Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.Закупка Тогда
    ТипОперации="Закупка";
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда
    ТипОперации="ВозвратОтПокупателя";
    КонецЕсли;
    КонецЕсли;
    // В зависимости от вида документа
    // определим РегистрУчета и
    // определим текущий курс валюты Кредита
    Клиент=Конт.Клиент;
    Клиент.ИспользоватьДату(Конт.ДатаДок);
    Если   (ТипОперации="Продажа")
    ИЛИ (ТипОперации="ВозвратОтПокупателя") Тогда
    //   ИмяРегистрУчета="УчетКредита";
    РегистрУчета=Конт.Регистр.УчетКредита;
    ПромВал=Клиент.ВалютаКредита;
    Если НЕ(Клиент.СуммаКредита=0) Тогда
    СуммаКред=Клиент.СуммаКредита;
    Иначе
    СуммаКред=0;
    КонецЕсли;
    ИначеЕсли  (ТипОперации="Закупка")
    ИЛИ (ТипОперации="ВозвратПоставщику") Тогда
    //   ИмяРегистрУчета="УчетКредитаПоставщиков";
    РегистрУчета=Конт.Регистр.УчетКредитаПоставщиков;
    ПромВал=Клиент.ВалютаКредитаПоставщика;
    Если Клиент.СуммаКредитаПоставщика<>0 Тогда
    СуммаКред=Клиент.СуммаКредитаПоставщика;
    Иначе
    СуммаКред=0;
    КонецЕсли;
    КонецЕсли;
    
    Если ПромВал.Выбран()=0 Тогда
    ПромВал=ПромКлиент.ВалютаВзаиморасчетов;
    КонецЕсли;
    Если ПромВал.Выбран()=0 Тогда
    ПромВал=Константа.ВалютаВзаиморасчетов;
    КонецЕсли;
    Если ПромВал.Выбран()=0 Тогда
    НеПроводить(Конт,"Не найдена валюта кредита клиента!");
    Возврат;
    КонецЕсли;
    
    КурсКред=ПромВал.Текущ_курс.Получить(Конт.Дата_курса);
    Если  КурсКред=0 Тогда
    НеПроводить(Конт,"Не найдено актуальное значение курса валюты кредита!"+ПромВал);
    Возврат;
    КонецЕсли;
    // Определяем Сумму по документу
    Если Конт.Валюта=Рубли  Тогда
    // Документ рублевый
    СумПогаш=Конт.Итог("Сумма")/КурсКред;
    ИначеЕсли Конт.Валюта=Константа.СтараяБазоваяВалюта  Тогда
    СумПогаш=(Конт.Итог("Сумма")*Константа.СтараяБазоваяВалюта.Текущ_курс.Получить(РабочаяДата()))/КурсКред;
    Иначе  // Документ валютный
    СумПогаш=(Конт.Итог("Сумма")*Конт.Курс)/КурсКред;
    КонецЕсли;
    
    Если НЕ(СумПогаш=0) Тогда
    РегистрУчета.Клиент=Клиент;
    РегистрУчета.КредДокумент=Конт.ТекущийДокумент();
    РегистрУчета.Долг=СумПогаш;
    // Для Накладных за НАЛ делаем одновременно Приход и Расход, чтобы
    // факт движения товара и денег отразился в регистре.
    Если Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная Тогда
    // Для расходной накладной
    РегистрУчета.ДвижениеРасходВыполнить();
    //РегистрУчета.ДвижениеПриходВыполнить();
    ИначеЕсли  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная Тогда
    // Для приходной накладной
    РегистрУчета.ДвижениеПриходВыполнить();
    //РегистрУчета.ДвижениеРасходВыполнить();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Если   (Конт.ВидТорговли=Перечисление.ВидыТорговли.Кредит)
    ИЛИ (Конт.ВидТорговли=Перечисление.ВидыТорговли.ЗаБН) Тогда
    Если (Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная) И
    (НЕ(Константа.РазрешитьПревышениеКредита=Перечисление.Булево.Да)) Тогда
    // Проверка на возможность проведения накладной
    Рег=СоздатьОбъект("Регистр.УчетКредита");
    Если Конт.ИтогиАктуальны()=0  Тогда
    // если итоги не актуальны, то дологи берем из временногно расчета Регистра
    Рег.УстановитьФильтр(Конт.Клиент,);
    Рег.ВременныйРасчет();
    РассчитатьРегистрыНа(Конт.ТекущийДокумент(),"Клиент");
    КонецЕсли;
    Просрочено=0;
    Срок=0;
    ТекущийДолг=0;
    СрочныйДолг=0; // Это тот долг,для оплаты которого осталось 7 дней сроку.
    ПросроченныйДолг=0;
    Рег.ВыбратьИтоги();
    Пока Рег.ПолучитьИтог()>0 Цикл
    Если НЕ(Рег.Клиент = Конт.Клиент) Тогда
    // фильтруем по клиенту (для случая, когда итоги по Документу Актуальны)
    Продолжить;
    КонецЕсли;
    Если (Рег.Долг=0)  Тогда
    // пропускаем Погашенные документы
    Продолжить;
    КонецЕсли;
    
    ВидКредДок=Рег.КредДокумент.Вид();
    Если   (ВидКредДок="РасходнаяКредит")
    ИЛИ (ВидКредДок="ПриходнаяКредит")
    ИЛИ (ВидКредДок="ВводОстатковКредита") Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаОплаты;
    Если Число(ДатаОплаты)=0 Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаДок;
    КонецЕсли;
    ИначеЕсли   (ВидКредДок="ПриходныйКассовый")
    ИЛИ (ВидКредДок="РасходныйКассовый")
    ИЛИ (ВидКредДок="Платежка")
    ИЛИ (ВидКредДок="ОтчетРеализатора")
    ИЛИ (ВидКредДок="ИнвентаризацияРеализатора")
    ИЛИ (ВидКредДок="ПриходДенегНаСчет") Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаДок;
    КонецЕсли;
    
    ТекущийДолг=ТекущийДолг+Рег.Долг;
    Если (Рег.Долг>0) И (Просрочено<(Конт.ДатаДок-ДатаОплаты)) Тогда
    // если еще не погашено
    Просрочено=Конт.ДатаДок-ДатаОплаты;
    Если ДатаОплаты < Конт.ДатаДок Тогда
    ПросроченныйДолг=ПросроченныйДолг+Рег.Долг;
    КонецЕсли;
    Если ДатаОплаты > (Конт.ДатаДок-7) Тогда
    СрочныйДолг=СрочныйДолг+Рег.Долг;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    Рег=0;
    
    Клиент=Конт.Клиент;
    Клиент.ИспользоватьДату(Конт.ДатаДок);
    // определим текущий курс валюты Кредита
    ПромВал=Клиент.ВалютаКредита;
    Если НЕ(Клиент.СуммаКредита=0) Тогда
    СуммаКред=Клиент.СуммаКредита;
    Глубина=Клиент.Глубина;
    Иначе
    СуммаКред=0;
    Глубина=0;
    КонецЕсли;
    
    Если ПромВал.Выбран()=0 Тогда
    ПромВал=ПромКлиент.ВалютаВзаиморасчетов;
    КонецЕсли;
    Если ПромВал.Выбран()=0 Тогда
    ПромВал=Константа.ВалютаВзаиморасчетов;
    КонецЕсли;
    Если ПромВал.Выбран()=0 Тогда
    НеПроводить(Конт,"Не найдена валюта кредита клиента!");
    Возврат;
    КонецЕсли;
    
    КурсКред=КурсДляВалюты(ПромВал,Конт.ДатаДок);
    СимвВал=СокрП(ПромВал.Сокр_назв);
    
    ОтменаПроводки=0;
    Если (ТекущийДолг+Пересчет(Конт.Итог("Сумма"),Конт.Валюта,Конт.Курс,ПромВал,КурсКред))-СуммаКред>0.01 Тогда
    Строчка="Сумма накладной вместе с текущим долгом превышает сумму MaxКредитаКлиенту=";
    ОтменаПроводки=1;
    ИначеЕсли (ПросроченныйДолг>0) Тогда
    Строчка="Просрочена оплата кредита! MaxКредитКлиенту=";
    ОтменаПроводки=1;
    КонецЕсли;
    Если ОтменаПроводки=1 Тогда
    Сообщить(Строчка+СокрП(СуммаКред)+" "+СимвВал+", на "+СокрЛ(Глубина)+" дней.");
    Сообщить("Текущий долг клиента="+СокрП(ТекущийДолг)+" "+СимвВал);
    Сообщить(?(ТекущийДолг>=СуммаКред,". КРЕДИТ ИСЧЕРПАН!",". Остаток кредита="
    +СокрП(СуммаКред-ТекущийДолг)+" "+СимвВал));
    НеПроводить(Конт,?(ПросроченныйДолг>0,"ПРОСРОЧЕНА ОПЛАТА! "+СокрП(ПросроченныйДолг)+" "+СимвВал
    +" на "+СокрП(Просрочено)+" дней.","Не просрочено.")
    +?(СрочныйДолг>0," Срочный долг="+СокрП(СрочныйДолг)+" "+СимвВал,""));
    Возврат;
    КонецЕсли;
    
    // Конец проверки на возможность проведения расходной накладной
    КонецЕсли;
    ПогашениеДолгаПоКредиту(Конт);
    КонецЕсли;
    //-------------------------------------
    // по Регистру ИздержкиОбращения
    Если  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная  Тогда
    // Только для приходных накладных
    Конт.ВыбратьСтроки();
    Пока( Конт.ПолучитьСтроку()>0) Цикл
    Если Конт.Товар.Выбран()=0 Тогда
    Сообщить("В документе "+Конт.Вид()+" № "+Конт.НомерДок
    +" от "+Конт.ДатаДок+"Не указан товар!");
    Продолжить;
    КонецЕсли;
    Если Конт.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда
    // здесь учитываем только услуги
    ВалютаТовара=Конт.Товар.ВалютаУчета;
    СуммаВал=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс,ВалютаТовара,Конт.ДатаДок);
    СуммаРуб=Пересчет(Конт.Сумма,Конт.Валюта,Конт.Курс,Рубли,1);
    
    Конт.Регистр.ИздержкиОбращения.Товар=Конт.Товар;
    Конт.Регистр.ИздержкиОбращения.БазоваяСтоимость=СуммаРуб;
    Конт.Регистр.ИздержкиОбращения.ВалютнаяСтоимость=СуммаВал;
    Конт.Регистр.ИздержкиОбращения.ДвижениеПриходВыполнить();
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    Процедура ДвиженияРеальныхРегистров(Конт) Экспорт
    //Сообщить("старт");
    Если Конт.Склад.Выбран()=0 Тогда
    НеПроводить(Конт,"Не указан склад!");
    Возврат;
    КонецЕсли;
    // по Регистру ОстаткиТоваров (здесь проходят учет все типы накладных )
    Рег=СоздатьОбъект("Регистр.РеальныеОстатки");
    Дат1=Конт.ДатаДок;
    Если Дат1>ПолучитьДатуТА() Тогда
    Дат1=ПолучитьДатуТА();
    КонецЕсли;
    Если Дат1<ПолучитьДатуТА()  Тогда
    // если итоги не актуальны, то стоимости берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    РассчитатьРегистрыНа(Дат1);
    КонецЕсли;
    Конт.ВыбратьСтроки();
    Пока( Конт.ПолучитьСтроку()>0) Цикл
    Если Конт.Товар.Выбран()=0 Тогда
    Сообщить("В документе "+Конт.Вид()+" № "+Конт.НомерДок
    +" от "+Конт.ДатаДок+"Не указан товар!");
    Продолжить;
    КонецЕсли;
    Если Конт.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга Тогда
    // услуги здесь в этих регистрах не учитываем
    Продолжить;
    КонецЕсли;
    ОбщееКоличество=Конт.Количество*Конт.Коэффициент;
    //Сообщить(ОбщееКоличество);
    Рег.Товар=Конт.Товар;
    Рег.Склад=Конт.Склад;
    Рег.ОстаткиПолучить();
    Если (Конт.ТипНакладной=Перечисление.ТипыНакладных.Расходная) Тогда
    // Для расходной накладной
    Если (Рег.ОстатокТовара < ОбщееКоличество)
    И (НЕ(Константа.РазрешитьОтрицОстатки=Перечисление.Булево.Да)) Тогда
    Сообщить("На складе нет нужного количества товара "+Конт.Товар.Наименование);
    НеПроводить(Конт,"На складе осталось "+Рег.ОстатокТовара+" "+Конт.Товар.БазоваяЕдиница);
    Рег=0;
    Возврат;
    КонецЕсли;
    Конт.Регистр.РеальныеОстатки.ОстатокТовара=ОбщееКоличество;						
    Конт.Регистр.РеальныеОстатки.Склад=Конт.Склад;
    Конт.Регистр.РеальныеОстатки.Товар=Конт.Товар;
    Конт.Регистр.РеальныеОстатки.ФлагУчета=2;
    Конт.Регистр.РеальныеОстатки.ДвижениеРасходВыполнить();
    ИначеЕсли  Конт.ТипНакладной=Перечисление.ТипыНакладных.Приходная  Тогда
    // Для приходной накладной
    //Сообщить("выполнено");
    
    Конт.Регистр.РеальныеОстатки.Склад=Конт.Склад;
    Конт.Регистр.РеальныеОстатки.ОстатокТовара=ОбщееКоличество;
    Конт.Регистр.РеальныеОстатки.Товар=Конт.Товар;
    Конт.Регистр.РеальныеОстатки.ФлагУчета=2;
    Конт.Регистр.РеальныеОстатки.ДвижениеПриходВыполнить();
    КонецЕсли;
    КонецЦикла;
    Рег=0;
    
    КонецПроцедуры
    //-----------------------------------------------
    Функция ДолгПоБН(Конт) Экспорт
    Рег=СоздатьОбъект("Регистр.Взаиморасчеты");
    Если Конт.Выбран()>0 Тогда // документ не новый, а существующий
    Если (Конт.СравнитьТА()<0)  Тогда
    // если итоги не актуальны, то Взаиморасчеты берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент);
    РассчитатьРегистрыПо(Конт.ТекущийДокумент());
    // здесь показываем Долги по Взаиморасчетам именно на момент (после) проводки Документа
    КонецЕсли;
    Иначе // документ новый
    Дат=ПолучитьДатуТА();
    Если Дат>Конт.ДатаДок Тогда
    // если итоги не актуальны, то остатки квоты берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент);
    РассчитатьРегистрыНа(Конт.ДатаДок+1);
    КонецЕсли;
    КонецЕсли;
    Рег.Клиент=Конт.Клиент;
    Рег.ОстаткиПолучить();
    Д=Рег.СуммаВалютная;
    Если Д>0 Тогда
    Знак=1;
    Иначе
    Знак=-1;
    КонецЕсли;
    Рег=0;
    Возврат ?(Д>0,"Наш долг клиенту= ","Долг клиента= ")
    +СокрЛ(Формат(Знак*Д,"Ч12.2"))+" "+Константа.ВалютаВзаиморасчетов.Сокр_назв;
    КонецФункции
    //-----------------------------------------------
    Функция ДолгРеализатора(Конт) Экспорт
    Если Конт.Клиент.Выбран()=0 Тогда
    Возврат "Выберите клиента! Иначе накладная не будет проведена!!!";
    КонецЕсли;
    Рег=СоздатьОбъект("Регистр.УчетРеализации");
    Рег1=СоздатьОбъект("Регистр.Взаиморасчеты");
    Если Конт.Выбран()>0 Тогда // документ не новый, а существующий
    Если(Конт.СравнитьТА()<0)  Тогда
    // если итоги актуальны, то смотрим итоги на ТА
    // если итоги не актуальны, то берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег1.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент,);
    Рег1.УстановитьФильтр(Конт.Клиент);
    РассчитатьРегистрыПо(Конт.ТекущийДокумент());
    // здесь показываем Долги по Взаиморасчетам именно на момент (после) проводки Документа
    КонецЕсли;
    Иначе // документ новый
    Дат=ПолучитьДатуТА();
    Если Дат>Конт.ДатаДок Тогда
    // если итоги не актуальны, то остатки квоты берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег1.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент,);
    Рег1.УстановитьФильтр(Конт.Клиент);
    РассчитатьРегистрыНа(Конт.ДатаДок+1);
    КонецЕсли;
    КонецЕсли;
    КонСтоимость=0;
    Рег.ВыбратьИтоги();
    Пока Рег.ПолучитьИтог()>0 Цикл
    Если Рег.Клиент <> Конт.Клиент Тогда
    Продолжить;
    КонецЕсли;
    КонСтоимость=КонСтоимость+Рег.ПродСтоимость;
    КонецЦикла;
    Рег1.Клиент=Конт.Клиент;
    Рег1.ОстаткиПолучить();
    Д=Рег1.СуммаВалютная;
    Если Д>0 Тогда
    Знак=1;
    Иначе
    Знак=-1;
    КонецЕсли;
    Рег=0;
    Рег1=0;
    Возврат "На реализации товаров на общую сумму " +СокрЛ(КонСтоимость)+
    " "+СокрП(Константа.ВалютаВзаиморасчетов.Сокр_назв)+". "+ ?(Д>0,"Наш долг клиенту= ","Долг клиента= ")
    +СокрЛ(Формат(Знак*Д,"Ч12.2"))+" "+Константа.ВалютаВзаиморасчетов.Сокр_назв;
    КонецФункции
    //-----------------------------------------------
    Функция ДолгПоКредиту(Конт)  Экспорт
    Если Конт.Клиент.Выбран()=0 Тогда
    Возврат "Выберите клиента! Иначе накладная не будет проведена!";
    КонецЕсли;
    Конт.Клиент.ИспользоватьДату(Конт.ДатаДок);
    ВидДок=Конт.Вид();
    ТипОперации="";
    Если   (ВидДок="РасходнаяКредит") Тогда
    Если Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.Продажа Тогда
    ТипОперации="Продажа";
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
    ТипОперации="ВозвратПоставщику";
    КонецЕсли;
    ИначеЕсли  (ВидДок="ПриходнаяКредит") Тогда
    Если Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.Закупка Тогда
    ТипОперации="Закупка";
    ИначеЕсли Конт.ПризнакНакладной=Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда
    ТипОперации="ВозвратОтПокупателя";
    КонецЕсли;
    КонецЕсли;
    // В зависимости от вида документа
    // определим РегистрУчета и
    // определим текущий курс валюты Кредита
    Если   (ТипОперации="Продажа")
    ИЛИ (ТипОперации="ВозвратОтПокупателя") Тогда
    ИмяРегистрУчета="УчетКредита";
    Знак=1;
    // значит кредит мы даем клиенту
    // значит при продаже товара мы начисляем Долг (на клиента),
    Если НЕ(Конт.Клиент.СуммаКредита=0) Тогда
    ВалютаКредита=Конт.Клиент.ВалютаКредита;
    Глубина=Конт.Клиент.Глубина;
    СуммаКред=Конт.Клиент.СуммаКредита;
    Иначе
    ВалютаКредита=Конт.Клиент.ВалютаВзаиморасчетов;
    Глубина=0;
    СуммаКред=0;
    КонецЕсли;
    ИначеЕсли  (ТипОперации="Закупка")
    ИЛИ (ТипОперации="ВозвратПоставщику") Тогда
    ИмяРегистрУчета="УчетКредитаПоставщиков";
    Знак=-1;
    // значит кредит нам дает клиент
    Если НЕ(Конт.Клиент.СуммаКредитаПоставщика=0) Тогда
    ВалютаКредита=Конт.Клиент.ВалютаКредитаПоставщика;
    Глубина=Конт.Клиент.ГлубинаКредитаПоставщика;
    СуммаКред=Конт.Клиент.СуммаКредитаПоставщика;
    Иначе
    ВалютаКредита=Конт.Клиент.ВалютаВзаиморасчетов;
    Глубина=0;
    СуммаКред=0;
    КонецЕсли;
    КонецЕсли;
    ВалютаКредита.ИспользоватьДату(Конт.ДатаДок);
    КурсКред=ВалютаКредита.Текущ_курс;
    Рег=СоздатьОбъект("Регистр."+ИмяРегистрУчета);
    Если Конт.Выбран()>0 Тогда // документ не новый, а существующий
    Если(Конт.СравнитьТА()<0)  Тогда
    // так делаем, что бы отделить новый Документ
    // если итоги актуальны, то смотрим итоги на ТА
    // если итоги не актуальны, то берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент,);
    РассчитатьРегистрыПо(Конт.ТекущийДокумент());
    // здесь показываем Долги по Взаиморасчетам именно на момент (после) проводки Документа
    КонецЕсли;
    Иначе // документ новый
    Дат=ПолучитьДатуТА();
    Если Дат>Конт.ДатаДок Тогда
    // если итоги не актуальны, то остатки квоты берем из временногно расчета Регистра
    Рег.ВременныйРасчет();
    Рег.УстановитьФильтр(Конт.Клиент,);
    РассчитатьРегистрыНа(Конт.ДатаДок+1);
    КонецЕсли;
    КонецЕсли;
    Просрочено=0;
    Срок=0;
    ТекущийДолг=0;
    СрочныйДолг=0; // Это тот долг,для оплаты которого осталось 7 дней сроку.
    ПросроченныйДолг=0;
    Рег.ВыбратьИтоги();
    Пока Рег.ПолучитьИтог()>0 Цикл
    Если Рег.Клиент <> Конт.Клиент Тогда
    // фильтруем по клиенту (для случая, когда итоги по Документу Актуальны)
    Продолжить;
    КонецЕсли;
    Если Рег.Долг=0  Тогда
    // пропускаем Погашенные документы
    Продолжить;
    КонецЕсли;
    Если Рег.КредДокумент.Выбран()=0 Тогда
    // пропускаем пустые документы
    Продолжить;
    КонецЕсли;
    ВидКредДок=Рег.КредДокумент.Вид();
    Если   (ВидКредДок="РасходнаяКредит")
    ИЛИ (ВидКредДок="ПриходнаяКредит")
    ИЛИ (ВидКредДок="ВводОстатковКредита") Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаОплаты;
    Если Число(ДатаОплаты)=0 Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаДок;
    КонецЕсли;
    ИначеЕсли   (ВидКредДок="ПриходныйКассовый")
    ИЛИ (ВидКредДок="РасходныйКассовый")
    ИЛИ (ВидКредДок="ОтчетРеализатора")
    ИЛИ (ВидКредДок="ИнвентаризацияРеализатора")
    ИЛИ (ВидКредДок="Платежка")
    ИЛИ (ВидКредДок="ПриходДенегНаСчет") Тогда
    ДатаОплаты=Рег.КредДокумент.ДатаДок;
    Иначе
    Предупреждение ("При диагностике обнаружен непонятный вид документа кредита!");
    Возврат "";
    КонецЕсли;
    ТекущийДолг=ТекущийДолг+Рег.Долг;
    Если ((Знак*Рег.Долг)>0) И (Просрочено<(Конт.ДатаДок-ДатаОплаты)) Тогда
    // если еще не погашено
    Просрочено=Конт.ДатаДок-ДатаОплаты;
    Если ДатаОплаты < Конт.ДатаДок Тогда
    ПросроченныйДолг=ПросроченныйДолг+Рег.Долг;
    КонецЕсли;
    Если ДатаОплаты > (Конт.ДатаДок-7) Тогда
    СрочныйДолг=СрочныйДолг+Рег.Долг;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    СимвВал=СокрП(ВалютаКредита.Сокр_назв);
    Рег=0;
    Возврат ?(Знак>0,"Кредит клиенту=","Кредит нам=")+СокрЛ(СуммаКред)+" "+СимвВал
    +", на "+СокрЛ(Глубина)+" дней. "
    +?(Знак>0,"Тек.Долг клиента=","Наш тек.Долг=")+СокрЛ(Знак*ТекущийДолг)+" "+СимвВал+". "
    +?(Знак*ТекущийДолг>СуммаКред,"КРЕДИТ ИСЧЕРПАН! ","Остаток кредита="
    +СокрЛ(СуммаКред-Знак*ТекущийДолг)+" "+СимвВал+". ")
    +?(Знак*ПросроченныйДолг>0,"ПРОСРОЧЕНА ОПЛАТА! "+СокрЛ(Знак*ПросроченныйДолг)+" "+СимвВал+
    " на "+СокрЛ(Просрочено)+" дней.","Не просрочено.")+
    ?(Знак*СрочныйДолг>0,"Срочный долг="+СокрЛ(Знак*СрочныйДолг)+" "+СимвВал,"");
    КонецФункции
    //--------------------------------------------
    Функция КонстантаExcel(Стр)  Экспорт
    // Эта функция возвращает значения констант Excel, которые используются
    // при выполнении процедур управления Excel через OLE. Из-за большого размера
    // функции большинство строк (не используемые в данной конфигурации)
    // закоментировано. Если требуется какая-либо константа - просто раскомментируйте
    // необходимую строчку.
    Стр=Нрег(Стр);
    Если Стр=Нрег("xlDialogSetBackgroundPicturet")  Тогда  Возврат 492;
    ИначеЕсли Стр=Нрег("xlSingle")  Тогда  Возврат 2;
    ИначеЕсли Стр=Нрег("xlRight")  Тогда  Возврат -4152;
    ИначеЕсли Стр=Нрег("xlNone")  Тогда  Возврат -4142;
    ИначеЕсли Стр=Нрег("xlLeft")  Тогда  Возврат -4131;
    ИначеЕсли Стр=Нрег("xlContinuous")  Тогда  Возврат 1;
    ИначеЕсли Стр=Нрег("xlColumn")  Тогда  Возврат 3;
    ИначеЕсли Стр=Нрег("xlCenter")  Тогда  Возврат -4108;
    ИначеЕсли Стр=Нрег("xl3DColumn")  Тогда  Возврат -4100;
    КонецЕсли;
    Возврат 0;
    КонецФункции
    //-----------------------------
    Процедура ПроверкаРазрешенияРедактирования(Конт) Экспорт
    Если Конт.ДатаДок<=Константа.ДатаЗапретаРедактирования Тогда
    Конт.Форма.ТолькоПросмотр(1);
    Предупреждение("Разрешен только просмотр документа!",4);
    Возврат;
    КонецЕсли;
    Конт.ПриЗаписиПерепроводить(1);
    КонецПроцедуры
    //-----------------------------
    Функция ПроверкаПользователя() Экспорт
    Если Пользователь.Выбран()=0 Тогда
    Предупреждение("Пользователь не зарегистрирован в справочнике сотрудников! В новых документах не будет фиксироваться автор!");
    Возврат 0;
    КонецЕсли;
    Сотр=СоздатьОбъект("Справочник.Сотрудники");
    Сотр.НайтиЭлемент(Пользователь);
    Если ТекущаяДата()>Сотр.ДатаРаб Тогда
    Сотр.ДатаРаб=ТекущаяДата();	  
    Сотр.Записать();
    //стр="Привет "+Сотр.Наименование+" сегодня "+Строка(ТекущаяДата())+", у вас все в порядке?";
    //Рез=Вопрос(стр,4,30);
    //Если Рез=6 Тогда
    //    Предупреждение("Отлично, а теперь за дело!");
    //КонецЕсли;
    //Если Рез=7 Тогда
    //    Предупреждение("Ну ничего, все поправится!");
    //КонецЕсли;
    
    //Предупреждение(Сотр.Наименование);
    КонецЕсли;
    
    Сотр=0;
    Возврат 1;
    КонецФункции
    //-----------------------------
    Рубли=Константа.БазоваяВалюта;
    Доллары=Константа.ОсновнаяВалюта;
    Да=Перечисление.Булево.Да;
    Нет=Перечисление.Булево.Нет;
    ПарСтрСпр ="ДляСправ";    // имя опций печати отчетов по справочникам (Пр-лст, Товары)
    ПарСтрДок ="ДляДокум";    // имя опций печати документов
    ПарСтрОтчДлинн ="ДляОтчДлинн";  // имя опций печати узких отчетов
    ПарСтрОтчШирок ="ДляОтчШирок";  // имя опций печати широких отчетов
    Спр=СоздатьОбъект("Справочник.Сотрудники");
    Спр.НайтиПоКоду(ИмяПользователя());
    Пользователь=Спр.ТекущийЭлемент();
    ПроверкаПользователя();
    Спр=0;
    ТекЗайТов="этокод";
    ПрефиксАвтоНумерации("Документ.РасходнаяНал",Константа.ИмяБД+"РНн-");
    ПрефиксАвтоНумерации("Документ.ПриходнаяНал",Константа.ИмяБД+"ПНн-");
    ПрефиксАвтоНумерации("Документ.РасходнаяКредит",Константа.ИмяБД+"РНк-");
    ПрефиксАвтоНумерации("Документ.ПриходнаяКредит",Константа.ИмяБД+"ПНк-");
    ПрефиксАвтоНумерации("Документ.РасходнаяРеализ",Константа.ИмяБД+"РНр-");
    ПрефиксАвтоНумерации("Документ.ПриходнаяРеализ",Константа.ИмяБД+"ПНр-");
    ПрефиксАвтоНумерации("Документ.ОтчетРеализатора",Константа.ИмяБД+"Отр-");
    ПрефиксАвтоНумерации("Документ.ИнвентаризацияРеализатора",Константа.ИмяБД+"Инр-");
    ПрефиксАвтоНумерации("Документ.Счет",Константа.ИмяБД+"Счт-");
    ПрефиксАвтоНумерации("Документ.Счет_фактура",Константа.ИмяБД+"Счф-");
    ПрефиксАвтоНумерации("Документ.ЗаписьКнигиПродаж",Константа.ИмяБД+"Зпр-");
    ПрефиксАвтоНумерации("Документ.РегистрацияСчета_фактуры",Константа.ИмяБД+"Рсф-");
    ПрефиксАвтоНумерации("Документ.ЗаписьКнигиПокупок",Константа.ИмяБД+"Зпк-");
    ПрефиксАвтоНумерации("Документ.Платежка",Константа.ИмяБД+"");
    ПрефиксАвтоНумерации("Документ.ПриходДенегНаСчет",Константа.ИмяБД+"Пдс-");
    ПрефиксАвтоНумерации("Документ.РасходныйКассовый",Константа.ИмяБД+"Ркс-");
    ПрефиксАвтоНумерации("Документ.ПриходныйКассовый",Константа.ИмяБД+"Пкс-");
    ПрефиксАвтоНумерации("Документ.НарядНаСборку",Константа.ИмяБД+"Нсб-");
    ПрефиксАвтоНумерации("Документ.НарядНаРазукомплектацию",Константа.ИмяБД+"Нрз-");
    ПрефиксАвтоНумерации("Документ.Перемещение",Константа.ИмяБД+"Прм-");
    ПрефиксАвтоНумерации("Документ.Списание",Константа.ИмяБД+"Спс-");
    ПрефиксАвтоНумерации("Документ.СписаниеИздержекОбращения",Константа.ИмяБД+"Изд-");
    ПрефиксАвтоНумерации("Документ.СнятиеРезерва",Константа.ИмяБД+"Снр-");
    ПрефиксАвтоНумерации("Документ.Доверенность",Константа.ИмяБД+"Дов-");
    ПрефиксАвтоНумерации("Документ.ВводОстатковТоваров",Константа.ИмяБД+"Вот-");
    ПрефиксАвтоНумерации("Документ.ВводОстатковВзаиморасчетов",Константа.ИмяБД+"Вов-");
    ПрефиксАвтоНумерации("Документ.ВводОстатковРеализации",Константа.ИмяБД+"Вор-");
    ПрефиксАвтоНумерации("Документ.ВводОстатковКредита",Константа.ИмяБД+"Вок-");
    ПрефиксАвтоНумерации("Документ.ПереносОстаткиТоваров",Константа.ИмяБД+"Пот-");
    ПрефиксАвтоНумерации("Документ.ПереносРезервыТоваров",Константа.ИмяБД+"Прт-");
    ПрефиксАвтоНумерации("Документ.ПереносКасса",Константа.ИмяБД+"Прс-");
    ПрефиксАвтоНумерации("Документ.ПереносВзаиморасчеты",Константа.ИмяБД+"Пвз-");
    ПрефиксАвтоНумерации("Документ.ПереносУчетКредита",Константа.ИмяБД+"Пук-");
    ПрефиксАвтоНумерации("Документ.ПереносУчетКредитаПоставщиков",Константа.ИмяБД+"Пуп-");
    ПрефиксАвтоНумерации("Документ.ПереносУчетРеализации",Константа.ИмяБД+"Пур-");
    ПрефиксАвтоНумерации("Документ.ПереносИздержкиОбращения",Константа.ИмяБД+"Пиз-");
    ПрефиксАвтоНумерации("Документ.Приходный",Константа.ИмяБД+"Пр-");
    ПрефиксАвтоНумерации("Документ.Расходный",Константа.ИмяБД+"Рс-");
    ПрефиксАвтоНумерации("Документ.Заявка",Константа.ИмяБД+"Зк-");
    ПрефиксАвтоНумерации("Документ.СчетОтПоставщика",Константа.ИмяБД+"Счп-");
    ПрефиксАвтоНумерации("Документ.ГашениеЗаявок",Константа.ИмяБД+"Гз-");
    ПрефиксАвтоНумерации("Документ.ТоварОтгружен",Константа.ИмяБД+"ТО-");
    ПрефиксАвтоНумерации("Документ.ОтпускТовара",Константа.ИмяБД+"От-");
    ПрефиксАвтоНумерации("Документ.ПринятиеТовара",Константа.ИмяБД+"Пт-");
    ПрефиксАвтоНумерации("Документ.ПолученнаяСчетФактура",Константа.ИмяБД+"ВСф-");
    ПрефиксАвтоНумерации("Документ.ВхСчетФактураУслуги",Константа.ИмяБД+"ВСфУ-");
    ПрефиксАвтоНумерации("Документ.АктПереоценки",Константа.ИмяБД+"Ап-");
    ПрефиксАвтоНумерации("Документ.РаспределениеПрихода",Константа.ИмяБД+"Рк-");
  9. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Может быть проще выслать файл конфига?
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Думаю что значительно проще....
    [off]Спасибо что код ГМ не выложили)))))[/off]
  11. TopicStarter Overlay
    Sloth
    Offline

    Sloth

    Регистрация:
    19 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Какаже не выложил, выложил. А куда конфу выслать, если поможете, то желательно при открытии документа, чтобы он пересчитывал цену.
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

Поделиться этой страницей