Имя: Пароль:
1C
1C 7.7
v7: Печать товарной накладной
,
0 VIP_O
 
22.02.13
14:28
Здравствуйте!
Подскажите пожалуйста, что нужно исправить и в какой строчке документа для того чтобы напечатать приходный кассовый ордер в 1с 7.7 ЗУП 1463?
При нажатии на кнопку печать выдает следующие ошибки:
Док<<?>>.Договор.Наименование
Переменная не определена (Док)
Док<<?>>.ДатаДок
Переменная не определена (Док)
?(ПустаяСтрока(Док<<?>>.Товар.ПолнНаименование) = 1, Док.Товар.Наименование, Док.Товар.ПолнНаименование)
Переменная не определена (Док)
Док<<?>>.Товар.ЕдиницаИзмерения
Переменная не определена (Док)
СокрЛП(Док<<?>>.Товар.ЕдиницаИзмерения.Код)
Переменная не определена (Док)
Док<<?>>.Количество
Переменная не определена (Док)
КолВсего <<?>>
Переменная не определена (КолВсего)
Док<<?>>.КоличествоСтрок()
Переменная не определена (Док)
ФИО(Константа.Руководитель.Получить(Док<<?>>.ДатаДок))
Переменная не определена (Док)
ФИО(Константа.ГлБухгалтер.Получить(Док<<?>>.ДатаДок))
Переменная не определена (Док)
Док<<?>>.ДатаДок
Переменная не определена (Док)
1 Тролль главный
 
22.02.13
14:29
2 VIP_O
 
22.02.13
14:31
Та же самая проблема, а почему она возникает? при обновлении 1С может возникать?
3 2S
 
22.02.13
14:32
"1с 7.7 ЗУП 1463"
бухой?
4 ЧеловекДуши
 
22.02.13
14:33
(2)Переменная не определена (Док)

Как бы 1С намекает... :)

Переменная - wiki:Переменная_(программирование)
5 2S
 
22.02.13
14:33
Накуя Док в модуле формы объекта? Или печатаешь другой док?
6 ЧеловекДуши
 
22.02.13
14:33
Казалось, при чем тут 1С 7.7 ?
7 VIP_O
 
22.02.13
14:35
товарная накладная при нажатии на кнопку печать выдает такие ошибки? просто не понятно, проблема возникает уже у второго документа, почему она происходит? бухой не бухой...но проблема остается...
8 Тролль главный
 
22.02.13
14:38
(7) ага, да ты тот еще тролль
9 Попытка1С
 
22.02.13
14:47
"1с 7.7 ЗУП "

сильно..
10 Privalov
 
22.02.13
14:49
Тролль ))
12 VIP_O
 
22.02.13
14:59
2S, печатаю товарную накладную, просто в теме ошиблась и написала про приходный ордер...:)))
13 VIP_O
 
22.02.13
15:04
*тьфу блин в тексте вопроса
14 Соло
 
22.02.13
15:17
где фото?
15 VIP_O
 
22.02.13
15:28
причем тут фото?
16 VIP_O
 
22.02.13
15:31
я у вас знающих, умных программистов, спрашиваю совета, а н е на кастинг мисс мира прошусь...
17 VIP_O
 
22.02.13
15:34
Подскажите пожалуйста, что нужно исправить и в какой строчке документа для того чтобы напечатать товарную накладную в 1с 7.7 ЗУП 1463?
При нажатии на кнопку печать выдает следующие ошибки:
Док<<?>>.Договор.Наименование
Переменная не определена (Док)
Док<<?>>.ДатаДок
Переменная не определена (Док)
?(ПустаяСтрока(Док<<?>>.Товар.ПолнНаименование) = 1, Док.Товар.Наименование, Док.Товар.ПолнНаименование)
Переменная не определена (Док)
Док<<?>>.Товар.ЕдиницаИзмерения
Переменная не определена (Док)
СокрЛП(Док<<?>>.Товар.ЕдиницаИзмерения.Код)
Переменная не определена (Док)
Док<<?>>.Количество
Переменная не определена (Док)
КолВсего <<?>>
Переменная не определена (КолВсего)
Док<<?>>.КоличествоСтрок()
Переменная не определена (Док)
ФИО(Константа.Руководитель.Получить(Док<<?>>.ДатаДок))
Переменная не определена (Док)
ФИО(Константа.ГлБухгалтер.Получить(Док<<?>>.ДатаДок))
Переменная не определена (Док)
Док<<?>>.ДатаДок
Переменная не определена (Док)
18 VIP_O
 
22.02.13
15:37
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ
//
Перем ТаблицаПечФорм;  // список печатных форм документа
Перем НомерТекущейФормы;
Перем НачальнаяДатаДокумента;
Перем КонтекстФормыПодбора;
Перем Новый;
Перем СписокДействий;
Перем СтарыйДоговор;
Перем СтарыйКурс;
Перем КодВидаОтгрузки;  
Перем ТекущийВариантРасчетаНалогов;

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//
//******************************************************************************
// ПолучитьКодВидаОтгрузки();
//                                                    
Функция ПолучитьКодВидаОтгрузки()
   ПромежуточныйКод = ВидОтгрузки - 10;
   Если (МестоХранения.Выбран() = 0) Тогда
       Возврат ПромежуточныйКод;
   КонецЕсли;    
   Если (МестоХранения.ТипСклада.Выбран() = 0) Тогда
       Возврат ПромежуточныйКод;
   КонецЕсли;
   Если (МестоХранения.ТипСклада = Перечисление.ТипыСкладов.Розничный) и (ПромежуточныйКод = 3) Тогда
       ПромежуточныйКод = ПромежуточныйКод + 1;
   КонецЕсли;
   Возврат ПромежуточныйКод;
КонецФункции

//******************************************************************************
// ИнформацияОДоговоре()
//
// Возвращаемое значение:
//  Строка - Наименование валюты договора и валюты оплаты.
//
// Вызывается из формул элементов диалога:
//  Текст "ИнформацияОДоговоре".
//
// Описание:
//  Формирует строку, содержащую наименование валюты договора и валюты оплаты.
//
Функция ИнформацияОДоговоре()
   
   Стр = "";
   Если Договор.Выбран() = 1 Тогда
       Если Договор.ВалютаДоговора.Выбран() = 1 Тогда
           Стр = "Валюта договора: " + Договор.ВалютаДоговора;
       КонецЕсли;        
   КонецЕсли;
   Возврат Стр;
   
КонецФункции // ИнформацияОДоговоре()

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

//******************************************************************************
// ПриВыбореВариантаЗачетаАванса()
//
// Вызывается из формул элементов диалога:
//  Поле со списком "ВариантыЗачетаАванса".
//
// Описание:
//  Устанавливает значение реквизита "ЗачитыватьАванс".
//
Процедура ПриВыбореВариантаЗачетаАванса()
   
   ЗачитыватьАванс = ВариантЗачетаАванса.ПолучитьЗначение(ВариантЗачетаАванса.ТекущаяСтрока());
   
КонецПроцедуры // ПриВыбореВариантаЗачетаАванса()

//*****************************************************************************
// УправлениеВидимостьюГТД(РежимПроверки)
//
// Параметры:
//  Режим: 1 - анализировать всю таблицу
//         0 - анализировать только текущую строку.
//
// Вызывается из формул элементов диалога:
//  Нет.
//
// Описание:
//  Анализиреутся необходимость в рекизите "ГТД" табличной части.
//
Процедура УправлениеВидимостьюГТД(РежимПроверки = 0)

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

//******************************************************************************
// УправлениеВидимостьюСлояКомиссия()
//
// Параметры:
//  РежимПроверки: 1 - анализировать все строки табличной части;
//                 0 - анализировать только текущую строку табличной части.
//
// Вызывается из формул элементов диалога:
//  Нет.
//
// Описание:
//  Анализиреутся необходимость в слое "Комиссия".
//
Процедура УправлениеВидимостьюСлояКомиссия(РежимПроверки = 0)
   
   СлойНужен = 0;
                                                                                           
   // Этот слой нужен только в случае реализации (отгрузке) товаров, принятых на комиссию.
   Если КодВидаОтгрузки >= 3 Тогда // если возврат поставщику.
       Форма.ИспользоватьСлой("Комиссия", 0);
             
   // если слой уже виден, то и аналировать не надо
   ИначеЕсли Форма.ПодписьКомитента.Видимость() = 0 Тогда
       Если РежимПроверки = 0 Тогда
           Если Товар.Выбран() = 1 Тогда
               Если (Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар)
                  и (Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии) Тогда
                   СлойНужен = 1;
               КонецЕсли;
           КонецЕсли;
           
       Иначе // анализировать все строки табличной части
           ВыбратьСтроки();
           Пока ПолучитьСтроку() = 1 Цикл
               Если (Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар)
                  и (Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии) Тогда
                     СлойНужен = 1;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   
       Если СлойНужен = 1 Тогда
           Форма.ИспользоватьСлой("Комиссия", 1);
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры // УправлениеВидимостьюСлояКомиссия()

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

//*****************************************************************************
// Пересчет(ИмяРеквизита)
//
// Параметры:
//  ИмяРеквизита - Строка. Идентификатор колонки из формулы которой вызывается
//                 процедура.
//
// Вызывается из формул элементов диалога:
//  Колонка "Товар",
//  Колонка "Количество",
//  Колонка "Цена",
//  Колонка "Сумма",
//  Колонка "НДС",
//  Колонка "НП",
//  Колонка "Всего".
//
// Описание:
//  Пересчитывает значения численных реквизитов табличной части документа.
//
Процедура Пересчет(ИмяРеквизита="")
       
   Если ИмяРеквизита = "" Тогда // вызов из формулы колонки табличной части
       ИмяРеквизита = Форма.ТекущаяКолонка();
   КонецЕсли;

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

КонецПроцедуры // Пересчет()

//******************************************************************************
Процедура ПересчитатьЦены()
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       Пересчет("Товар");
   КонецЦикла;
КонецПроцедуры

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

//*****************************************************************************  
// ПриВыбореТипаЦен()
//
// Вызывается из формул элементов диалога:
//  Поле ввода "Тип цен"
//
// Описание:
//  Проверяет соответствие типа цен.
//
Процедура ПриВыбореТипаЦен()
   Если (ТипЦен.Выбран()=1)и(КоличествоСтрок()>0) Тогда
       Если Вопрос("Перезаполнить цены в документе?","Да+Нет",60) = "Да" Тогда
           ПересчитатьЦены();
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

//*****************************************************************************  
// ПроверитьДоговор()
//
Процедура ПроверитьДоговор()
   
   СтараяВалюта = ПолучитьПустоеЗначение("Справочник.Валюты");
   НоваяВалюта = ПолучитьПустоеЗначение("Справочник.Валюты");
   НовыйКурс = ?(Курс = 0, 1, Курс);

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

//*****************************************************************************
// ПриВыбореДоговора()
//
// Вызывается из формул элементов диалога:
//  Поле ввода "Договор"
//
// Описание:
//  Проверяет соответствие договора выбранному контрагенту.
//
Процедура ПриВыбореДоговора()

   глПриВыбореДоговора(Контрагент, Договор);
   УправлениеКурсом(1);
   ПроверитьДоговор();
   
КонецПроцедуры // ПриВыбореДоговора()

//*****************************************************************************
// ПриВыбореКонтрагента()
//
// Вызывается из формул элементов диалога:
//  Поле ввода "Контрагент".
//
// Описание:
//  Проверяет соответствие договора выбранному контрагенту.
//
Процедура ПриВыбореКонтрагента()
   
   Плательщик = Контрагент;
   глПриВыбореКонтрагента(Контрагент, Договор);
   УправлениеКурсом(1);
   ПроверитьДоговор()
   
КонецПроцедуры // ПриВыбореКонтрагента()

//*****************************************************************************  
// ПриВыбореКурса()
//
// Вызывается из формул элементов диалога:
//  Поле ввода "Курс"
//
// Описание:
//  Проверяет соответствие типа цен.
//
Процедура ПриВыбореКурса()
   
   //
   
КонецПроцедуры

//******************************************************************************
// ПредставлениеКомитента()
//
// Вызывается из формул элементов диалога:
//  Текст "ПредставлениеКомитента"
//
// Возвращаемое значение:
//  Стрка - наименование комитента.
//
// Описание:
//  Формурует строку с наименованием комитента, поставившего товар.
//
Функция ПредставлениеКомитента()
   
   Перем Предст;

   Если Комитент.Выбран() = 1 Тогда
       Предст = СокрЛП(Комитент.Наименование);
   Иначе
       Предст = "<Автовыбор>";
   КонецЕсли;
   Возврат Предст;
   
КонецФункции // ПредставлениеКомитента()

//******************************************************************************
// ПредставлениеДоговораКомиссии()
//
// Вызывается из формул элементов диалога:
//  Текст "ПредставлениеДоговораКомиссии"
//
// Возвращаемое значение:
//  Стрка - наименование договора.
//
// Описание:
//  Формурует строку с наименованием договора с комитентом, по которому был
// поставлен товар.
//
Функция ПредставлениеДоговораКомиссии()
   
   Перем Предст;

   Если ДоговорКомиссии.Выбран() = 1 Тогда
       Предст = СокрЛП(ДоговорКомиссии.Наименование);
   Иначе
       Предст = "<Автовыбор>";
   КонецЕсли;
   Возврат Предст;
   
КонецФункции // ПредставлениеДоговораКомиссии()

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

       ИначеЕсли ПунктМеню = 2 Тогда
           Если ДатаДок > КонецРассчитанногоПериодаБИ() Тогда
               Предупреждение("На " + ДатаДок + " бухгалтерские итоги не рассчитаны!
                               |Расчет итогов выполняется в режиме
                               |""Операции - Управление бухгалтерскими итогами"".");
               
           ИначеЕсли (Выбран() = 0) или (Модифицированность() = 1) Тогда
               Предупреждение("Для подбора комитента по данным бухгалтерского учета
                               |необходимо записать документ.");
           
           Иначе
               БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
               ТаблицаКомитентов = СоздатьОбъект("ТаблицаЗначений");
               ТаблицаКомитентов.НоваяКолонка("Комитент",,,,,20);
               ТаблицаКомитентов.НоваяКолонка("ДоговорКомиссии",,,,"Договор",20);
               ТаблицаКомитентов.НоваяКолонка("Остаток",,,,,10,"Ч10.2.,",2);
               ТаблицаКомитентов.НоваяКолонка("Сумма",,,,,15,"Ч15.2-,",2);
               ТаблицаКомитентов.НоваяКолонка("Цена",,,,,10,"Ч10.2-,",2);
               
               БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);
               БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
               БухИт.ИспользоватьСубконто(ВидыСубконто.Договоры);
               БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");
               БухИт.ВыбратьСубконто(2);
               Пока БухИт.ПолучитьСубконто(2) = 1 Цикл
                   ТаблицаКомитентов.НоваяСтрока();
                   ТаблицаКомитентов.Комитент = БухИт.Субконто(2);
                   ТаблицаКомитентов.ДоговорКомиссии = "Всего:";
                   ТаблицаКомитентов.Остаток = БухИт.СНД("К");
                   ТаблицаКомитентов.Сумма = БухИт.СНД("С");
                   ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;
                   
                   БухИт.ВыбратьСубконто(3);
                   Пока БухИт.ПолучитьСубконто(3) = 1 Цикл
                       ТаблицаКомитентов.НоваяСтрока();
                       ТаблицаКомитентов.Комитент = БухИт.Субконто(2);
                       ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);
                       ТаблицаКомитентов.Остаток = БухИт.СНД("К");
                       ТаблицаКомитентов.Сумма = БухИт.СНД("С");
                       ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;
                   КонецЦикла;
               КонецЦикла;
               Позиция = 1;
               Если ТаблицаКомитентов.ВыбратьСтроку(Позиция,"Выберите комитента") = 0 Тогда
               ИначеЕсли Позиция > 0 Тогда
                   Комитент = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"Комитент");
                   Дог = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"ДоговорКомиссии");
                   Если ТипЗначенияСтр(Дог) = "Справочник" Тогда
                       ДоговорКомиссии = Дог;
                   Иначе
                       ДоговорКомиссии = "";
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;

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

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

       ИначеЕсли ПунктМеню = 2 Тогда
           Если ДатаДок > КонецРассчитанногоПериодаБИ() Тогда
               Предупреждение("На " + ДатаДок + " бухгалтерские итоги не рассчитаны!
                               |Расчет итогов выполняется в режиме
                               |""Операции - Управление бухгалтерскими итогами"".");
               
           ИначеЕсли (Выбран() = 0) или (Модифицированность() = 1) Тогда
               Предупреждение("Для подбора договора комиссии по данным бухгалтерского учета
                               |необходимо записать документ.");
           
           Иначе
               БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
               ТаблицаКомитентов = СоздатьОбъект("ТаблицаЗначений");
               Если Комитент.Выбран() = 0 Тогда
                   ТаблицаКомитентов.НоваяКолонка("Комитент",,,,,20);
               КонецЕсли;
               ТаблицаКомитентов.НоваяКолонка("ДоговорКомиссии",,,,"Договор",20);
               ТаблицаКомитентов.НоваяКолонка("Остаток",,,,,10,"Ч10.2.,",2);
               ТаблицаКомитентов.НоваяКолонка("Сумма",,,,,15,"Ч15.2-,",2);
               ТаблицаКомитентов.НоваяКолонка("Цена",,,,,10,"Ч10.2-,",2);
               
               Если Комитент.Выбран() = 0 Тогда
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Договоры);
                   БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");
                   БухИт.ВыбратьСубконто(2);
                   Пока БухИт.ПолучитьСубконто(2) = 1 Цикл
                       ТаблицаКомитентов.НоваяСтрока();
                       ТаблицаКомитентов.Комитент = БухИт.Субконто(2);
                       ТаблицаКомитентов.ДоговорКомиссии = "Всего:";
                       ТаблицаКомитентов.Остаток = БухИт.СНД("К");
                       ТаблицаКомитентов.Сумма = БухИт.СНД("С");
                       ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;
                       
                       БухИт.ВыбратьСубконто(3);
                       Пока БухИт.ПолучитьСубконто(3) = 1 Цикл
                           ТаблицаКомитентов.НоваяСтрока();
                           ТаблицаКомитентов.Комитент = БухИт.Субконто(2);
                           ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);
                           ТаблицаКомитентов.Остаток = БухИт.СНД("К");
                           ТаблицаКомитентов.Сумма = БухИт.СНД("С");
                           ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;
                       КонецЦикла;
                   КонецЦикла;
                   
               Иначе
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Комитент);
                   БухИт.ИспользоватьСубконто(ВидыСубконто.Договоры);
                   БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"004");
                   БухИт.ВыбратьСубконто(3);
                   Пока БухИт.ПолучитьСубконто(3) = 1 Цикл
                       ТаблицаКомитентов.НоваяСтрока();
                       ТаблицаКомитентов.ДоговорКомиссии = БухИт.Субконто(3);
                       ТаблицаКомитентов.Остаток = БухИт.СНД("К");
                       ТаблицаКомитентов.Сумма = БухИт.СНД("С");
                       ТаблицаКомитентов.Цена = ТаблицаКомитентов.Сумма / ТаблицаКомитентов.Остаток;
                   КонецЦикла;
               КонецЕсли;
               Позиция = 1;
               Если Комитент.Выбран() = 1 Тогда
                   ЗаголовокВыбора = "Выберите договор комиссии";
               Иначе
                   ЗаголовокВыбора = "Выберите комитента";
               КонецЕсли;
               Если ТаблицаКомитентов.ВыбратьСтроку(Позиция,"Выберите комитента") = 0 Тогда
               ИначеЕсли Позиция > 0 Тогда
                   Если Комитент.Выбран() = 0 Тогда
                       Комитент = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"Комитент");
                   КонецЕсли;
                   Дог = ТаблицаКомитентов.ПолучитьЗначение(Позиция,"ДоговорКомиссии");
                   Если ТипЗначенияСтр(Дог) = "Справочник" Тогда
                       ДоговорКомиссии = Дог;
                   Иначе
                       ДоговорКомиссии = "";
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;

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

//*****************************************************************************
// ИтоговаяСтрока()
//
// Вызывается из формул элементов диалога:
//  Текст ИтоговаяСтрока.
//
// Описание:
//  Формирует строку, содержащую итоговые суммы колонок табличной части.
//
Функция ИтоговаяСтрока()
   
   ИтСтр = "Итого отгружено на сумму: " + СокрЛ(Формат(Итог("Всего"),"Ч20.2-,")) + ", "+
           "в т.ч. НДС: " + СокрЛ(Формат(Итог("НДС"),"Ч20.2-,"));
   Если Итог("НП") > 0 Тогда
       ИтСтр = ИтСтр + ", НП: " + СокрЛ(Формат(Итог("НП"),"Ч20.2-,"));
   КонецЕсли;
   Возврат ИтСтр;
   
КонецФункции // ИтоговаяСтрока()

//******************************************************************************
// Печать()
//
// Вызывается из формул элементов диалога:
//  Кнопка "Печать".
//
// Описание:
//  Формирование печатной формы документа.
//
Процедура Печать()
   
   НомерДокПечатнойФормы = глПреобразоватьНомерДок(НомерДок, 0, 0);
 
   //Для простоты настройки печатной формы примем следующие соглашения:
   //    -    высота строк в таблице печатной формы задана жестко,
   //        тогда известно, сколько строк помещается на странице;
   СтрокНаСтранице = 20;
   //    -    высота шапки и подвала задана жестко и кратна высоте строк таблицы,
   //        тогда можно указать, сколько строк занимают шапка и подвал
   //        в пересчете на строки таблицы;
   СтрокШапки = 11;
   СтрокПодвала = 8;
   //    -    для нормальной работы алгоритма необходимо, чтобы шапка и подвал
   //        могли поместиться на одной странице + хотя бы одна строка таблицы:
   //        СтрокНаСтранице >= СтрокШапки + СтрокПодвала + 1
   //    -    если подвал не помещается на странице, он переносится на другую
   //        страницу с последней строкой; исключение составляет случай,
   //        когда в таблице всего одна строка.
   Если КоличествоСтрок() <= 3 Тогда
       ПереноситьПоследнююСтроку = 0;
   Иначе
       ЦелыхСтраницСПодвалом = Цел((СтрокШапки+КоличествоСтрок()+СтрокПодвала)/СтрокНаСтранице);
       ЦелыхСтраницБезПодвала = Цел((СтрокШапки+КоличествоСтрок()-1)/СтрокНаСтранице);
       ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
   КонецЕсли;
   //Если ПереноситьПоследнююСтроку = 1 - переносить,
   //если ПереноситьПоследнююСтроку = 0 - не надо переносить.

   Если Итог("НП") > 0 Тогда
       ФлагНП = 1;
   Иначе
       ФлагНП = 0;
   КонецЕсли;
   
   Если Договор.ВалютаДоговора.Выбран() = 1 Тогда
       ЦеныВДоговоре = 2;
       Кратность = Договор.ВалютаДоговора.Кратность.Получить(ДатаДок);
       Кратность = ?(Кратность = 0, 1, Кратность);
       Если Договор.ВестиУчетРасчетовУЕ = 1 Тогда
           Кратность = Кратность * 100 / (100 + Договор.ПроцентКорректировкиКурсаУЕ);
       КонецЕсли;
       
   Иначе
       ЦеныВДоговоре = 1;
   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");
   ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\1cbt-12.mxl";
   Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда
       Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
   Иначе
       Таб.ИсходнаяТаблица("ТОРГ-12");
   КонецЕсли;
     // формирование адреса поставщика
   Если СтрДлина(СокрЛП(Константа.ИННОрганизации))<13 Тогда
       ИННОрганизации = СокрЛП(Константа.ИННОрганизации);
   ИначеЕсли Найти("0123456789",СРЕД(Константа.ИННОрганизации,11,1))=0 Тогда
       ИННОрганизации = СРЕД(Константа.ИННОрганизации,1,10);
   Иначе
       ИННОрганизации = СРЕД(Константа.ИННОрганизации,1,12);
   КонецЕсли;

   ОрганизацияАдрес = СокрЛП(Константа.НазваниеОрганизации);
   глДобавитьРеквизит(ОрганизацияАдрес, ", ИНН ", ИННОрганизации);
   глДобавитьРеквизит(ОрганизацияАдрес, ", ", глПредставлениеАдреса(Константа.АдресОрганизации));
   глДобавитьРеквизит(ОрганизацияАдрес, ", тел. : ", Константа.ТелефоныОрганизации);
   Если РасчетныйСчет.Выбран() = 1 Тогда
       глДобавитьРеквизит(ОрганизацияАдрес, ", р/с ", СокрЛП(РасчетныйСчет.Номер) + " в " + РасчетныйСчет.БанкОрганизации);
       глДобавитьРеквизит(ОрганизацияАдрес, ", БИК ", СокрЛП(РасчетныйСчет.БанкОрганизации.Код));
       гл