#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
Если НастройкиУчета.НеВыводитьСкидкиВДокументахПродажи Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Картинка = БиблиотекаКартинок.Печать;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
ИначеЕсли НастройкиУчета.ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту (со скидками)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту (без скидок)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
Иначе
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
КомандаПечати.Картинка = БиблиотекаКартинок.Печать;
КонецЕсли;
КонецПроцедуры
Процедура Печать(Знач МассивОбъектов, Знач ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КоммерческоеПредложениеКлиенту") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"КоммерческоеПредложениеКлиенту",
НСтр("ru = 'Коммерческое предложение клиенту'"),
ПечатнаяФормаКоммерческоеПредложениеКлиенту(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КомандыОтчетов
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриДобавленииКомандОтчетов("Документ.КоммерческоеПредложениеКлиенту",
КомандыОтчетов,
Параметры);
КонецПроцедуры
#КонецОбласти
#Область ИнтеграцияШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриПодготовкеШаблонаСообщения(Реквизиты,
Вложения,
ДополнительныеПараметры);
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииСообщения(Сообщение,
ПредметСообщения,
ДополнительныеПараметры);
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS,
ПредметСообщения);
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма,
ПредметСообщения);
КонецПроцедуры
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
Доступность = ПравоДоступа("Редактирование", Метаданные.Документы.КоммерческоеПредложениеКлиенту)
И ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияКоммерческихПредложенийКлиентам);
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииСпискаТекущихДелКоммерческихПредложений(ТекущиеДела, "КоммерческоеПредложениеКлиенту");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура ЗаполнитьДанныеПоКоммерческомуПредложению(Знач СсылкаНаОбъект, ДанныеДокумента, Отказ) Экспорт
ТипыДанныхЭлектронныхДокументов = КоммерческиеПредложенияДокументы.ТипыДанныхЭлектронныхДокументов();
СтандартнаяОбработка = Истина;
ПодготовленныеДанные = Новый Структура;
ПодготовленныеДанные.Вставить("РезультатЗапросаНоменклатура");
ПодготовленныеДанные.Вставить("РезультатЗапросаХарактеристика");
ПодготовленныеДанные.Вставить("РезультатЗапросаЕдиницыИзмерения");
ПодготовленныеДанные.Вставить("РезультатЗапросаДляПолученияШтрихкодов");
ПодготовленныеДанные.Вставить("РезультатЗапросаТовары");
ПодготовленныеДанные.Вставить("РезультатЗапросаШапка");
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииДанныхЭлектронногоДокумента(СсылкаНаОбъект, ПодготовленныеДанные, СтандартнаяОбработка);
Если СтандартнаяОбработка Тогда
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| &УсловияЕдиницыИзмерения КАК ЕдиницаИзмерения,
| Товары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &СсылкаНаОбъект
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Номенклатура КАК Номенклатура
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Характеристика КАК Характеристика
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КоммерческоеПредложениеКлиентуТовары.НомерСтроки КАК НомерСтроки,
| КоммерческоеПредложениеКлиентуТовары.ИдентификаторСтрокиЗапроса КАК ИдентификаторСтроки,
| ВсеТовары.Номенклатура КАК Номенклатура,
| ВсеТовары.Характеристика КАК Характеристика,
| ВсеТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
| КоммерческоеПредложениеКлиентуТовары.Цена КАК Цена,
| КоммерческоеПредложениеКлиентуТовары.СтавкаНДС КАК СтавкаНДС,
| КоммерческоеПредложениеКлиентуТовары.СуммаНДС КАК СуммаНДС,
| КоммерческоеПредложениеКлиентуТовары.Сумма КАК СуммаБезНДС,
| КоммерческоеПредложениеКлиентуТовары.СуммаСНДС КАК СуммаСНДС,
| КоммерческоеПредложениеКлиентуТовары.СуммаРучнойСкидки + КоммерческоеПредложениеКлиентуТовары.СуммаАвтоматическойСкидки КАК СуммаСкидки,
| ВЫБОР
| КОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентАвтоматическойСкидки = 0 И КоммерческоеПредложениеКлиентуТовары.ПроцентРучнойСкидки = 0 ТОГДА 0
| КОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентАвтоматическойСкидки <> 0 И КоммерческоеПредложениеКлиентуТовары.ПроцентРучнойСкидки <> 0 ТОГДА -1
| КОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентАвтоматическойСкидки <> 0 И КоммерческоеПредложениеКлиентуТовары.ПроцентРучнойСкидки = 0 ТОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентАвтоматическойСкидки
| КОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентАвтоматическойСкидки = 0 И КоммерческоеПредложениеКлиентуТовары.ПроцентРучнойСкидки <> 0 ТОГДА КоммерческоеПредложениеКлиентуТовары.ПроцентРучнойСкидки
| КОНЕЦ КАК ПроцентСкидки,
| КоммерческоеПредложениеКлиентуТовары.СрокПоставки КАК СрокПоставки,
| КоммерческоеПредложениеКлиентуТовары.КомментарийДляПокупателя КАК Комментарий,
| КоммерческоеПредложениеКлиенту.ВариантУказанияСрокаПоставки КАК ВариантУказанияСрокаПоставки
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
| ПО КоммерческоеПредложениеКлиентуТовары.Ссылка = КоммерческоеПредложениеКлиенту.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК ВсеТовары
| ПО КоммерческоеПредложениеКлиентуТовары.НомерСтроки = ВсеТовары.НомерСтроки
|ГДЕ
| КоммерческоеПредложениеКлиентуТовары.Ссылка = &СсылкаНаОбъект
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КоммерческоеПредложениеКлиенту.ИдентификаторЗКПВСервисе КАК ИдентификаторЗапроса,
| КоммерческоеПредложениеКлиенту.Статус КАК Статус,
| КоммерческоеПредложениеКлиенту.Проведен КАК Проведен,
| КоммерческоеПредложениеКлиенту.Ссылка КАК Ссылка,
| КоммерческоеПредложениеКлиенту.Организация КАК Организация,
| КоммерческоеПредложениеКлиенту.Контрагент КАК Контрагент,
| КоммерческоеПредложениеКлиенту.Менеджер КАК Менеджер,
| Пользователи.Наименование КАК ПредставлениеМенеджера,
| КоммерческоеПредложениеКлиенту.УсловияДоставкиТекст КАК УсловияДоставки,
| КоммерческоеПредложениеКлиенту.УсловияОплатыТекст КАК УсловияОплаты,
| КоммерческоеПредложениеКлиенту.ПрочаяДополнительнаяИнформацияТекст КАК УсловияПрочие,
| КоммерческоеПредложениеКлиенту.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийКоммерческихПредложений.ПриемНаКомиссию) КАК ПриемПередачаНаКомиссию,
| НЕ КоммерческоеПредложениеКлиенту.МожетВыкупатьсяЧастично КАК ВсеИлиНичего,
| КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| КоммерческоеПредложениеКлиенту.Валюта.Код КАК ВалютаКод,
| КоммерческоеПредложениеКлиенту.Валюта.Наименование КАК ВалютаНаименование,
| НЕ КоммерческоеПредложениеКлиенту.Налогообложение КАК УСН,
| КоммерческоеПредложениеКлиенту.СрокДействия КАК СрокДействия,
| КоммерческоеПредложениеКлиенту.ДополнительнаяИнформацияКлиентуHTML КАК ДополнительнаяИнформацияКлиентуHTML
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
| ПО КоммерческоеПредложениеКлиенту.Валюта = Валюты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
| ПО (Пользователи.Ссылка = КоммерческоеПредложениеКлиенту.Менеджер)
|ГДЕ
| КоммерческоеПредложениеКлиенту.Ссылка = &СсылкаНаОбъект";
УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);
Запрос.УстановитьПараметр("СсылкаНаОбъект" , СсылкаНаОбъект);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ПодготовленныеДанные.РезультатЗапросаНоменклатура = РезультатЗапроса[1];
ПодготовленныеДанные.РезультатЗапросаХарактеристика = РезультатЗапроса[2];
ПодготовленныеДанные.РезультатЗапросаЕдиницыИзмерения = РезультатЗапроса[3];
ПодготовленныеДанные.РезультатЗапросаДляПолученияШтрихкодов = РезультатЗапроса[4];
ПодготовленныеДанные.РезультатЗапросаТовары = РезультатЗапроса[5];
ПодготовленныеДанные.РезультатЗапросаШапка = РезультатЗапроса[6];
КонецЕсли;
Если ПодготовленныеДанные.РезультатЗапросаШапка = Неопределено Тогда
Возврат;
КонецЕсли;
ШапкаЗапроса = ПодготовленныеДанные.РезультатЗапросаШапка;
ДанныеШапки = ШапкаЗапроса.Выбрать();
ДанныеШапки.Следующий();
ПроверитьПравильностьСтатуса(Отказ, ДанныеШапки);
Если Отказ Тогда
Возврат;
КонецЕсли;
ЗначенияПолейНоменклатуры = ЗначенияПолейНоменклатуры(ПодготовленныеДанные.РезультатЗапросаНоменклатура);
ЗначенияПолейХарактеристик = ЗначенияПолейХарактеристик(ПодготовленныеДанные.РезультатЗапросаХарактеристика);
ЗначенияПолейЕдиницыИзмерения = ЗначенияПолейЕдиницыИзмерения(ПодготовленныеДанные.РезультатЗапросаЕдиницыИзмерения);
РезультатШтрихКоды = ПодготовленныеДанные.РезультатЗапросаДляПолученияШтрихкодов;
ТаблицаШтриховыхКодовНоменклатуры = ТаблицаШтриховыхКодовНоменклатуры(РезультатШтрихКоды, ТипыДанныхЭлектронныхДокументов);
РезультатТовары = ПодготовленныеДанные.РезультатЗапросаТовары;
ЗагрузитьТаблицуТоваровВДеревоДанныхЭД(СсылкаНаОбъект, ДанныеДокумента, РезультатТовары,
ЗначенияПолейНоменклатуры, ЗначенияПолейХарактеристик,
ЗначенияПолейЕдиницыИзмерения, ТаблицаШтриховыхКодовНоменклатуры);
УстановитьДанныеШапкиВДеревоДанныхЭД(СсылкаНаОбъект, ДанныеДокумента, ДанныеШапки);
ЗагрузитьПрисоединенныеФайлыВДеревоДанныхЭД(ДанныеДокумента, СсылкаНаОбъект);
УстановитьДанныеДополнительнаяИнформация(ДанныеДокумента, СсылкаНаОбъект, ДанныеШапки.ДополнительнаяИнформацияКлиентуHTML);
КонецПроцедуры
Процедура ПередЗаписьюВладельцаЭлектронногоДокумента(Объект, ИзменилисьКлючевыеРеквизиты,
Знач СостояниеЭлектронногоДокумента, ПодлежитОбменуЭД, Отказ) Экспорт
ДокументБылПроведен = Ложь;
Если КлючевыеРеквизитыИзменены(Объект, ДокументБылПроведен) Тогда
ИзменилисьКлючевыеРеквизиты = Истина;
КонецЕсли;
Объект.ДополнительныеСвойства.Вставить("ИзменилисьКлючевыеРеквизиты", ИзменилисьКлючевыеРеквизиты);
Если Не (ДокументБылПроведен Или Объект.ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение)
И (СостояниеЭлектронногоДокумента = Перечисления.СостоянияДокументовЭДО.НеСформирован
Или Не ЗначениеЗаполнено(СостояниеЭлектронногоДокумента)) Тогда
ПодлежитОбменуЭД = Ложь;
КонецЕсли;
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура ПриОпределенииСоставаКомандЭДО(СоставКоманд) Экспорт
СоставКоманд.Исходящие.Добавить("Документ.КоммерческоеПредложениеКлиенту");
СоставКоманд.БезПодписи.Добавить("Документ.КоммерческоеПредложениеКлиенту");
КонецПроцедуры
Процедура ЗаполнитьПараметрыЭлектронногоДокумента(Источник, Параметры) Экспорт
ТипИсточника = ТипЗнч(Источник);
Если Метаданные.ОпределяемыеТипы.КоммерческоеПредложениеКлиенту.Тип.СодержитТип(ТипИсточника) Тогда
ДанныеДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник, "Организация, Контрагент");
Организация = ДанныеДокумента.Организация;
Контрагент = ДанныеДокумента.Контрагент;
ИначеЕсли Метаданные.ОпределяемыеТипы.КоммерческоеПредложениеКлиентуОбъект.Тип.СодержитТип(ТипИсточника) Тогда
Организация = Источник.Организация;
Контрагент = Источник.Контрагент;
Иначе
Возврат;
КонецЕсли;
Параметры.Вставить("Тип", Перечисления.ТипыДокументовЭДО.КоммерческоеПредложение);
Параметры.Вставить("Направление", Перечисления.НаправленияЭДО.Исходящий);
Параметры.Вставить("Организация", Организация);
Параметры.Вставить("Контрагент", Контрагент);
КонецПроцедуры
Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт
Списки.Вставить(Метаданные.Документы.КоммерческоеПредложениеКлиенту, Истина);
Списки.Вставить(Метаданные.Справочники.КоммерческоеПредложениеКлиентуПрисоединенныеФайлы, Истина);
КонецПроцедуры
Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(
"Документ.КоммерческоеПредложениеКлиенту", Описание);
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(
"Справочник.КоммерческоеПредложениеКлиентуПрисоединенныеФайлы", Описание);
КонецПроцедуры
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ПриЗаполненииОграниченияДоступа(
"Документ.КоммерческоеПредложениеКлиенту", Ограничение);
КонецПроцедуры
#КонецОбласти
#Область КомандыСозданияНаОсновании
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Результат = Неопределено;
КоммерческиеПредложенияДокументыПереопределяемый.ИнициализацияКомандФормы("ДобавитьКомандуСоздатьНаОсновании",
Метаданные.Документы.КоммерческоеПредложениеКлиенту.Имя, КомандыСозданияНаОсновании, Результат);
Возврат Результат;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
КоммерческиеПредложенияДокументыПереопределяемый.ИнициализацияКомандФормы("ДобавитьКомандыСозданияНаОсновании",
Метаданные.Документы.КоммерческоеПредложениеКлиенту.Имя, КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Печать
Функция ПечатнаяФормаКоммерческоеПредложениеКлиенту(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ДанныеДляПечати = ДанныеДляПечати(МассивОбъектов, ПараметрыПечати);
ДанныеШапки = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ТаблицаТовары = ДанныеДляПечати.РезультатПоТоварам.Выгрузить();
ТаблицаТоварыДокумента = Новый ТаблицаЗначений;
Для Каждого КолонкаТаблицыЗначений Из ТаблицаТовары.Колонки Цикл
ТаблицаТоварыДокумента.Колонки.Добавить(КолонкаТаблицыЗначений.Имя, КолонкаТаблицыЗначений.ТипЗначения);
КонецЦикла;
ПервыйДокумент = Истина;
Пока ДанныеШапки.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ТаблицаТоварыДокумента.Очистить();
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("Ссылка", ДанныеШапки.Ссылка);
НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыПоиска);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НоваяСтрока = ТаблицаТоварыДокумента.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяСтрока);
КонецЦикла;
ДанныеОбъекта = ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТоварыДокумента);
ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеШапки.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати)
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.КоммерческоеПредложениеКлиенту.ПФ_MXL_КоммерческоеПредложениеКлиенту");
Если ПараметрыПечати.Свойство("ОтображатьСкидки")
И Не ПараметрыПечати.ОтображатьСкидки Тогда
Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
ИмяОбластиШапкаТаблицы = "ШапкаТаблицыТовары";
ИмяОбластиСтрокаТаблицы = "СтрокаТаблицыТовары";
ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТовары";
Иначе
ИмяОбластиШапкаТаблицы = "ШапкаТаблицыТоварыСрокПоставки";
ИмяОбластиСтрокаТаблицы = "СтрокаТаблицыТоварыСрокПоставки";
ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСрокПоставки";
КонецЕсли;
Иначе
Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
ИмяОбластиШапкаТаблицы = "ШапкаТаблицыТоварыСкидка";
ИмяОбластиСтрокаТаблицы = "СтрокаТаблицыТоварыСкидка";
ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСкидка";
Иначе
ИмяОбластиШапкаТаблицы = "ШапкаТаблицыТоварыСрокПоставкиСкидка";
ИмяОбластиСтрокаТаблицы = "СтрокаТаблицыТоварыСрокПоставкиСкидка";
ИмяИменованнойОбластиСтрокаТаблицы = "ОбластьТоварыСрокПоставкиСкидка";
КонецЕсли;
КонецЕсли;
ОбластьШтрихкода = Макет.ПолучитьОбласть("ОбластьШтрихкода");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьКонтактноеЛицо = Макет.ПолучитьОбласть("КонтактноеЛицо");
ОбластьПредлагаемОзнакомиться = Макет.ПолучитьОбласть("ПредлагаемОзнакомиться");
ОбластьШапкаТаблицыТовары = Макет.ПолучитьОбласть(ИмяОбластиШапкаТаблицы);
ОбластьСтрокаТаблицыТовары = Макет.ПолучитьОбласть(ИмяОбластиСтрокаТаблицы);
ИменованнаяОбластьСтрокаТовары = ИмяИменованнойОбластиСтрокаТаблицы;
ОбластьПодвалТаблицыТовары = Макет.ПолучитьОбласть("ПодвалТаблицыТовары");
ОбластьМенеджер = Макет.ПолучитьОбласть("Менеджер");
ОбластьПустаяСтрокаТонкая = Макет.ПолучитьОбласть("ПустаяСтрокаТонкая");
ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
ОбластьСрокДействия = Макет.ПолучитьОбласть("СрокДействияЧастичныйВыкуп");
КоммерческиеПредложенияДокументыПереопределяемый.ПриВыводеШтриховогоКодаВПечатныеФормы(ТабличныйДокумент, Макет, ОбластьШтрихкода, ДанныеОбъекта);
КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииЗаголовкаПечатнойФормы(Макет, ОбластьЗаголовок, ДанныеОбъекта);
ДополнительныеПараметрыВывода = Неопределено;
ОбластьЗаголовок.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Если ЗначениеЗаполнено(ДанныеОбъекта.КонтактноеЛицо) Тогда
ОбластьКонтактноеЛицо.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьКонтактноеЛицо);
КонецЕсли;
ОбластьПредлагаемОзнакомиться.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьПредлагаемОзнакомиться);
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыТовары);
Для Каждого СтрокаТовары Из ДанныеОбъекта.Товары Цикл
СтандартнаяОбработка = Истина;
КоммерческиеПредложенияДокументыПереопределяемый.ПриВыводеСтрокиТоварыПечатнуюФорму(ТабличныйДокумент,
СтрокаТовары,
ОбластьСтрокаТаблицыТовары,
ИменованнаяОбластьСтрокаТовары,
ДополнительныеПараметрыВывода,
СтандартнаяОбработка);
Если СтандартнаяОбработка Тогда
ОбластьСтрокаТаблицыТовары.Параметры.Заполнить(СтрокаТовары);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыТовары);
КонецЕсли;
КонецЦикла;
ОбластьПодвалТаблицыТовары.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыТовары);
ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);
ОбластьСрокДействия.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьСрокДействия);
Если Не ПустаяСтрока(ДанныеОбъекта.УсловияПоставкиПредставление) Тогда
ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);
ОбластьДополнительнаяИнформация.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьДополнительнаяИнформация);
КонецЕсли;
ОбластьМенеджер.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьМенеджер);
КонецПроцедуры
Функция ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТовары)
ДанныеОбъекта = Новый Структура;
#Область ДанныеОрганизации
СведенияОрганизации = Новый Структура;
СведенияОрганизации.Вставить("Наименование");
СведенияОрганизации.Вставить("ПолноеНаименование");
СведенияОрганизации.Вставить("Телефоны");
СведенияОрганизации.Вставить("ЮридическийАдрес");
СведенияОрганизации.Вставить("ЭлектроннаяПочта");
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеОрганизации(ДанныеШапки.Организация, СведенияОрганизации);
Если ЗначениеЗаполнено(СведенияОрганизации.ПолноеНаименование) Тогда
ПредставлениеОрганизации = СведенияОрганизации.ПолноеНаименование;
Иначе
ПредставлениеОрганизации = СведенияОрганизации.Наименование;
КонецЕсли;
#КонецОбласти
#Область КонтактнаяИнформация
Если ЗначениеЗаполнено(ДанныеШапки.Менеджер) Тогда
МассивСМенеджером = Новый Массив;
МассивСМенеджером.Добавить(ДанныеШапки.Менеджер);
ТребуемыеТипыКонтактнойИнформации = Новый Массив;
ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
МассивСМенеджером,
ТребуемыеТипыКонтактнойИнформации,,
ДанныеШапки.Дата);
АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
ТаблицаКонтактнойИнформации,
Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Иначе
ТелефонМенеджера = "";
АдресЭлектроннойПочтыМенеджера = "";
КонецЕсли;
#КонецОбласти
#Область Товары
ЕстьСкидки = Ложь;
ДанныеОбъекта.Вставить("СуммаВсего", 0);
ДанныеОбъекта.Вставить("СуммаВсегоНДС", 0);
ДанныеОбъекта.Вставить("КоличествоТоваров", 0);
ДанныеОбъекта.Вставить("Товары", Новый Массив);
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
Если СтрокаТовары.СуммаСкидки <> 0 Тогда
ЕстьСкидки = Истина;
КонецЕсли;
ДанныеОбъекта.СуммаВсего = ДанныеОбъекта.СуммаВсего + СтрокаТовары.Сумма;
ДанныеОбъекта.СуммаВсегоНДС = ДанныеОбъекта.СуммаВсегоНДС + СтрокаТовары.СуммаНДС;
ДанныеОбъекта.КоличествоТоваров = ДанныеОбъекта.КоличествоТоваров + 1;
СтрокаТаблицыТовары = Новый Структура;
НаименованиеТовара = КоммерческиеПредложенияДокументыКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаТовары.Номенклатура, СтрокаТовары.Характеристика);
СтрокаТаблицыТовары.Вставить("НомерСтроки", СтрокаТовары.НомерСтроки);
СтрокаТаблицыТовары.Вставить("Номенклатура", НаименованиеТовара);
СтрокаТаблицыТовары.Вставить("Количество", СтрокаТовары.Количество);
СтрокаТаблицыТовары.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмерения);
СтрокаТаблицыТовары.Вставить("Цена", Формат(СтрокаТовары.Цена,"ЧДЦ=2; ЧРД=."));
СтрокаТаблицыТовары.Вставить("СуммаСНДС", Формат(СтрокаТовары.СуммаСНДС,"ЧДЦ=2; ЧРД=."));
СтрокаТаблицыТовары.Вставить("СуммаСкидки", Формат(СтрокаТовары.СуммаСкидки,"ЧДЦ=2; ЧРД=."));
СтрокаТаблицыТовары.Вставить("СрокПоставки", КоммерческиеПредложенияДокументыКлиентСервер.СрокПоставкиСтрокой(ДанныеШапки.ВариантУказанияСрокаПоставки,
СтрокаТовары.СрокПоставки));
КоммерческиеПредложенияДокументыПереопределяемый.ДополнитьДанныеОбъектаДляПечати(СтрокаТаблицыТовары, СтрокаТовары, ДанныеОбъекта);
ДанныеОбъекта.Товары.Добавить(СтрокаТаблицыТовары);
КонецЦикла;
#КонецОбласти
#Область ЗаполнениеДанныхОбъекта
ПредставлениеСуммДокумента = КоммерческиеПредложенияДокументы.ПредставлениеСуммДокументаДляПечати(ДанныеШапки,
ДанныеОбъекта.СуммаВсего,
ДанныеОбъекта.СуммаВсегоНДС,
ДанныеОбъекта.КоличествоТоваров);
ДанныеОбъекта.Вставить("Ссылка", ДанныеШапки.Ссылка);
ДанныеОбъекта.Вставить("Организация", ДанныеШапки.Организация);
ДанныеОбъекта.Вставить("ТелефонОрганизации", СведенияОрганизации.Телефоны);
ДанныеОбъекта.Вставить("АдресОрганизации", СведенияОрганизации.ЮридическийАдрес);
ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыОрганизации", ?(СведенияОрганизации.Свойство("ЭлектроннаяПочта"),СведенияОрганизации.ЭлектроннаяПочта, ""));
ДанныеОбъекта.Вставить("Клиент", ДанныеШапки.Клиент);
ДанныеОбъекта.Вставить("Контрагент", ДанныеШапки.Контрагент);
ДанныеОбъекта.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
ДанныеОбъекта.Вставить("ПредставлениеКлиента", ПредставлениеКлиента(ДанныеОбъекта.Клиент, ДанныеОбъекта.Контрагент));
ДанныеОбъекта.Вставить("КонтактноеЛицо", ДанныеШапки.КонтактноеЛицо);
ДанныеОбъекта.Вставить("Менеджер", ДанныеШапки.Менеджер);
ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыМенеджера", АдресЭлектроннойПочтыМенеджера);
ДанныеОбъекта.Вставить("ТелефонМенеджера", ТелефонМенеджера);
ДанныеОбъекта.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеШапки.Номер, Ложь, Истина));
ДанныеОбъекта.Вставить("Дата", Формат(ДанныеШапки.Дата,"ДЛФ=D"));
ДанныеОбъекта.Вставить("ВариантУказанияСрокаПоставки", ДанныеШапки.ВариантУказанияСрокаПоставки);
ДанныеОбъекта.Вставить("УсловияОплаты", ДанныеШапки.УсловияОплаты);
ДанныеОбъекта.Вставить("УсловияДоставки", ДанныеШапки.УсловияДоставки);
ДанныеОбъекта.Вставить("ПрочиеУсловия", ДанныеШапки.ПрочиеУсловия);
ДанныеОбъекта.Вставить("КонтактнаяИнформацияПредложения", КонтактнаяИнформацияПредложения(ДанныеОбъекта));
ДанныеОбъекта.Вставить("ИтоговаяСтрока", ПредставлениеСуммДокумента.ИтоговаяСтрока);
ДанныеОбъекта.Вставить("СуммаПрописью", ПредставлениеСуммДокумента.СуммаПрописью);
ДанныеОбъекта.Вставить("ЕстьСкидки", ЕстьСкидки);
ДанныеОбъекта.Вставить("ПредставлениеСрокаДействия", КоммерческиеПредложенияДокументы.ПредставлениеСрокаДействияДляПечати(ЕстьСкидки, ДанныеШапки.СрокДействия));
ДанныеОбъекта.Вставить("ПредставлениеЧастичногоВыкупа", КоммерческиеПредложенияДокументы.ПредставлениеЧастичногоВыкупаДляПечати(ДанныеШапки.МожетВыкупатьсяЧастично));
ДанныеОбъекта.Вставить("УсловияПоставкиПредставление", КоммерческиеПредложенияДокументы.ПредставлениеУсловийПоставкиДляПечати(ДанныеОбъекта.УсловияОплаты,
ДанныеОбъекта.УсловияДоставки,
ДанныеОбъекта.ПрочиеУсловия));
#КонецОбласти
Возврат ДанныеОбъекта;
КонецФункции
Функция ПредставлениеКлиента(Клиент, Контрагент)
Возврат КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(Клиент, Контрагент);
КонецФункции
Функция КонтактнаяИнформацияПредложения(ДанныеОбъекта)
МассивСтрок = Новый Массив;
Если Не ПустаяСтрока(ДанныеОбъекта.АдресОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресОрганизации);
КонецЕсли;
Если Не ПустаяСтрока(ДанныеОбъекта.ТелефонОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.ТелефонОрганизации);
КонецЕсли;
Если Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера);
ИначеЕсли Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации);
КонецЕсли;
Возврат СтрСоединить(МассивСтрок, Символы.ПС);
КонецФункции
Функция ДанныеДляПечати(МассивОбъектов, ПараметрыПечати)
СтруктураДанныхДляПечати = Неопределено;
СтандартнаяОбработка = Истина;
КоммерческиеПредложенияДокументыПереопределяемый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанныхПечати(
МассивОбъектов,
СтруктураДанныхДляПечати,
ПараметрыПечати,
СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат СтруктураДанныхДляПечати;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
ОтображатьСкидки = Истина;
Если ПараметрыПечати.Свойство("ОтображатьСкидки")
И Не ПараметрыПечати.ОтображатьСкидки Тогда
ОтображатьСкидки = Ложь;
КонецЕсли;
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.Текст =
"ВЫБРАТЬ
| КоммерческоеПредложениеКлиенту.Ссылка КАК Ссылка,
| КоммерческоеПредложениеКлиенту.Дата КАК Дата,
| КоммерческоеПредложениеКлиенту.Номер КАК Номер,
| КоммерческоеПредложениеКлиенту.Менеджер КАК Менеджер,
| КоммерческоеПредложениеКлиенту.КонтактноеЛицо КАК КонтактноеЛицо,
| КоммерческоеПредложениеКлиенту.Организация КАК Организация,
| КоммерческоеПредложениеКлиенту.СрокДействия КАК СрокДействия,
| КоммерческоеПредложениеКлиенту.Валюта КАК Валюта,
| КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| КоммерческоеПредложениеКлиенту.Налогообложение КАК УчитыватьНДС,
| КоммерческоеПредложениеКлиенту.УсловияДоставкиТекст КАК УсловияДоставки,
| КоммерческоеПредложениеКлиенту.УсловияОплатыТекст КАК УсловияОплаты,
| КоммерческоеПредложениеКлиенту.ПрочаяДополнительнаяИнформацияТекст КАК ПрочиеУсловия,
| КоммерческоеПредложениеКлиенту.Клиент КАК Клиент,
| КоммерческоеПредложениеКлиенту.Контрагент КАК Контрагент,
| КоммерческоеПредложениеКлиенту.ВариантУказанияСрокаПоставки КАК ВариантУказанияСрокаПоставки,
| КоммерческоеПредложениеКлиенту.МожетВыкупатьсяЧастично КАК МожетВыкупатьсяЧастично
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
|ГДЕ
| КоммерческоеПредложениеКлиенту.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Товары.ПроцентРучнойСкидки + Товары.ПроцентАвтоматическойСкидки КАК ПроцентСкидки,
| &УсловияЕдиницыИзмерения КАК ЕдиницаИзмерения,
| Товары.Количество КАК Количество,
|ВЫБОР
| КОГДА &ОтображатьСкидки
| ТОГДА Товары.Цена
| ИНАЧЕ ВЫБОР
| КОГДА Товары.Количество = 0
| ТОГДА 0
| ИНАЧЕ Товары.Сумма / Товары.Количество
| КОНЕЦ
|КОНЕЦ КАК Цена,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Сумма КАК Сумма,
| Товары.СуммаНДС КАК СуммаНДС,
| Товары.СрокПоставки КАК СрокПоставки
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТоварам", ПакетРезультатовЗапроса[1]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
#КонецОбласти
#Область ЗаполнениеЭД
Процедура УстановитьДанныеДополнительнаяИнформация(ДанныеДокумента, СсылкаНаОбъект, ДополнительнаяИнформацияHTML)
ЭлектронноеВзаимодействие.ЗаполнитьЗначениеРеквизитаВДереве(ДанныеДокумента, "ДополнительнаяИнформация.ФорматированныйТекст.ТекстHTML", ДополнительнаяИнформацияHTML);
ТаблицаПрисоединенныхФайлов = КоммерческиеПредложенияДокументы.ТаблицаПрисоединенныхФайловДляЭД(СсылкаНаОбъект, Истина);
ТаблицаПрисоединенныхФайлов.Колонки.Добавить("ДвоичныеДанные");
ТаблицаПрисоединенныхФайлов.Колонки.Добавить("ContentID");
Для Каждого Файл Из ТаблицаПрисоединенныхФайлов Цикл
Файл.ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Файл.Ссылка);
Файл.ContentID = СтрЗаменить(Прав(Файл.ИмяФайла, СтрДлина(Файл.ИмяФайла) - 1), "_", "-");
КонецЦикла;
Если ТаблицаПрисоединенныхФайлов.Количество() > 0 Тогда
ЭлектронноеВзаимодействие.ЗагрузитьТаблицуВДерево(ДанныеДокумента, ТаблицаПрисоединенныхФайлов,
"ДополнительнаяИнформация.ФорматированныйТекст.ПрисоединенныеФайлы");
КонецЕсли;
КонецПроцедуры
Процедура ЗагрузитьПрисоединенныеФайлыВДеревоДанныхЭД(ДанныеДокумента, СсылкаНаОбъект)
ТаблицаПрисоединенныхФайлов = КоммерческиеПредложенияДокументы.ТаблицаПрисоединенныхФайловДляЭД(СсылкаНаОбъект, Ложь);
ТаблицаПрисоединенныхФайлов.Колонки.Добавить("ДвоичныеДанные");
Для Каждого Файл Из ТаблицаПрисоединенныхФайлов Цикл
Файл.ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Файл.Ссылка);
КонецЦикла;
Если ТаблицаПрисоединенныхФайлов.Количество() > 0 Тогда
ЭлектронноеВзаимодействие.ЗагрузитьТаблицуВДерево(ДанныеДокумента, ТаблицаПрисоединенныхФайлов, "ПрисоединенныеФайлы");
КонецЕсли;
КонецПроцедуры
Процедура УстановитьДанныеШапкиВДеревоДанныхЭД(СсылкаНаОбъект, ДанныеДокумента, ДанныеШапки)
ЭлектронноеВзаимодействие.ЗаполнитьЗначениеРеквизитаВДереве(ДанныеДокумента, "ИдентификаторЗапроса", ДанныеШапки.ИдентификаторЗапроса);
ДанныеОрганизации = КоммерческиеПредложенияДокументы.ДанныеУчастникаКоммерческихПредложений(ДанныеШапки.Организация);
ЭлектронноеВзаимодействие.ЗагрузитьСтруктуруВГруппуДерева(ДанныеДокумента, ДанныеОрганизации, "Организация");
ПараметрыОбработкиОшибок = ЭлектронноеВзаимодействиеКлиентСервер.НовыеПараметрыОбработкиОшибки(
ДанныеШапки.Организация);
ЭлектронноеВзаимодействие.ДобавитьВРеквизитОбработкуОшибки(ДанныеДокумента,
"Организация.ЮридическийАдрес.Представление", ПараметрыОбработкиОшибок);
ДанныеКонтрагента = КоммерческиеПредложенияДокументы.ДанныеУчастникаКоммерческихПредложений(ДанныеШапки.Контрагент);
ЭлектронноеВзаимодействие.ЗагрузитьСтруктуруВГруппуДерева(ДанныеДокумента, ДанныеКонтрагента, "Получатель");
ПараметрыОбработкиОшибок = ЭлектронноеВзаимодействиеКлиентСервер.НовыеПараметрыОбработкиОшибки(
ДанныеШапки.Контрагент);
ЭлектронноеВзаимодействие.ДобавитьВРеквизитОбработкуОшибки(ДанныеДокумента,
"Получатель.ЮридическийАдрес.Представление", ПараметрыОбработкиОшибок);
ДанныеКонтактногоЛица = КоммерческиеПредложенияДокументы.ДанныеМенеджераКакКонтактногоЛицаПредложений(ДанныеШапки.Менеджер,
ДанныеШапки.ПредставлениеМенеджера);
ЭлектронноеВзаимодействие.ЗагрузитьСтруктуруВГруппуДерева(ДанныеДокумента, ДанныеКонтактногоЛица, "КонтактноеЛицо");
УсловияИПоложения = Новый Структура;
УсловияИПоложения.Вставить("УсловияДоставки", ДанныеШапки.УсловияДоставки);
УсловияИПоложения.Вставить("УсловияОплаты", ДанныеШапки.УсловияОплаты);
УсловияИПоложения.Вставить("УсловияПрочие", ДанныеШапки.УсловияПрочие);
УсловияИПоложения.Вставить("ПриемПередачаНаКомиссию", ДанныеШапки.ПриемПередачаНаКомиссию);
УсловияИПоложения.Вставить("ВсеИлиНичего", ДанныеШапки.ВсеИлиНичего);
УсловияИПоложения.Вставить("ЦенаВключаетНДС", ДанныеШапки.ЦенаВключаетНДС);
УсловияИПоложения.Вставить("ВалютаКод", ДанныеШапки.ВалютаКод);
УсловияИПоложения.Вставить("ВалютаНаименование", ДанныеШапки.ВалютаНаименование);
УсловияИПоложения.Вставить("УСН", ДанныеШапки.УСН);
УсловияИПоложения.Вставить("СрокДействия", ДанныеШапки.СрокДействия);
УсловияИПоложения.Вставить("ВалютаКод", СтроковыеФункцииКлиентСервер.СтрокаВЧисло(УсловияИПоложения.ВалютаКод));
ЭлектронноеВзаимодействие.ЗагрузитьСтруктуруВГруппуДерева(ДанныеДокумента, УсловияИПоложения, "УсловияИПоложения");
ПараметрыОбработкиОшибок = ЭлектронноеВзаимодействиеКлиентСервер.НовыеПараметрыОбработкиОшибки(СсылкаНаОбъект,
"Объект.СрокДействия");
ЭлектронноеВзаимодействие.ДобавитьВРеквизитОбработкуОшибки(ДанныеДокумента,
"УсловияИПоложения.СрокДействия", ПараметрыОбработкиОшибок);
КонецПроцедуры
Процедура ЗагрузитьТаблицуТоваровВДеревоДанныхЭД(СсылкаНаОбъект, ДанныеДокумента, РезультатЗапроса,
ЗначенияПолейНоменклатуры, ЗначенияПолейХарактеристик,
ЗначенияПолейЕдиницыИзмерения, ТаблицаШтриховыхКодовНоменклатуры)
ВыборкаТовары = РезультатЗапроса.Выбрать();
ТаблицаТоваров = ПустаяТаблицаТоварыДляДереваЭлектронныхДокументов();
Пока ВыборкаТовары.Следующий() Цикл
НоваяСтрока = ТаблицаТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТовары);
Если НоваяСтрока.ПроцентСкидки = -1 Тогда
НоваяСтрока.ПроцентСкидки = ?(НоваяСтрока.СуммаСНДС = 0 Или НоваяСтрока.СуммаСкидки = 0,
0,
Окр(100 * НоваяСтрока.СуммаСкидки/(НоваяСтрока.СуммаСкидки + НоваяСтрока.СуммаСНДС), 2, РежимОкругления.Окр15как20));
КонецЕсли;
НоваяСтрока.ЛогистическаяУпаковка = КоммерческиеПредложенияДокументы.ЛогистическаяУпаковкаДляЭД(ВыборкаТовары.ЕдиницаИзмерения, ЗначенияПолейЕдиницыИзмерения);
Если ЗначениеЗаполнено(ВыборкаТовары.СрокПоставки) Тогда
Если ВыборкаТовары.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.УказываетсяВДняхСМоментаЗаказа Тогда
НоваяСтрока.СрокПоставки.Вставить("ВДнях", ВыборкаТовары.СрокПоставки);
ИначеЕсли ВыборкаТовары.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.УказываетсяНаОпределеннуюДату Тогда
НоваяСтрока.СрокПоставки.Вставить("НаДату", ВыборкаТовары.СрокПоставки);
КонецЕсли;
КонецЕсли;
НоваяСтрока.Товар = КоммерческиеПредложенияДокументы.ДанныеТовараДляЭД(ВыборкаТовары, ЗначенияПолейНоменклатуры,
ЗначенияПолейХарактеристик, ЗначенияПолейЕдиницыИзмерения, ТаблицаШтриховыхКодовНоменклатуры);
КонецЦикла;
ЭлектронноеВзаимодействие.ДобавитьВТаблицуОбработкуОшибкиЧерезСообщениеПользователю(ТаблицаТоваров,
"Цена", СсылкаНаОбъект, "Объект.Товары.Цена",, "НомерСтроки");
ЭлектронноеВзаимодействие.ЗагрузитьТаблицуВДерево(ДанныеДокумента, ТаблицаТоваров, "Товары");
КонецПроцедуры
Функция ЗначенияПолейНоменклатуры(РезультатЗапроса)
МассивСтрок = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Номенклатура");
ПоляЗаполнения = Новый Структура("НоменклатураСсылка, НоменклатураНаименование");
ЗначенияПолейНоменклатуры = КоммерческиеПредложенияДокументы.КонструкторЗначенияПолей(МассивСтрок, ПоляЗаполнения);
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеНоменклатуры(МассивСтрок, ЗначенияПолейНоменклатуры);
Возврат ЗначенияПолейНоменклатуры;
КонецФункции
Функция ЗначенияПолейХарактеристик(РезультатЗапроса)
МассивСтрок = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Характеристика");
ПоляЗаполнения = Новый Структура("ХарактеристикаСсылка, ХарактеристикаНаименование");
ЗначенияПолейХарактеристик = КоммерческиеПредложенияДокументы.КонструкторЗначенияПолей(МассивСтрок, ПоляЗаполнения);
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеХарактеристикНоменклатуры(МассивСтрок, ЗначенияПолейХарактеристик);
Возврат ЗначенияПолейХарактеристик;
КонецФункции
Функция ЗначенияПолейЕдиницыИзмерения(РезультатЗапроса)
МассивСтрок = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ЕдиницаИзмерения");
ПоляЗаполнения = Новый Структура("ЕдиницаИзмеренияСсылка, ЕдиницаИзмеренияКодОКЕИ, ЕдиницаИзмеренияНаименование, ЛогистическаяУпаковкаНаименование");
ПоляЗаполнения.Вставить("Числитель", 1);
ПоляЗаполнения.Вставить("Знаменатель", 1);
ЗначенияПолейЕдиницыИзмерения = КоммерческиеПредложенияДокументы.КонструкторЗначенияПолей(МассивСтрок, ПоляЗаполнения);
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеЕдиницИзмерения(МассивСтрок, ЗначенияПолейЕдиницыИзмерения);
Возврат ЗначенияПолейЕдиницыИзмерения;
КонецФункции
Функция ТаблицаШтриховыхКодовНоменклатуры(РезультатЗапроса, ТипыДанныхЭлектронныхДокументов)
ТаблицаШтриховыхКодовНоменклатуры = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
ТаблицаШтриховыхКодовНоменклатуры.Колонки.Добавить("ШтрихКод", ТипыДанныхЭлектронныхДокументов.Строка);
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеШтрихКодовНоменклатуры(ТаблицаШтриховыхКодовНоменклатуры);
ТаблицаШтриховыхКодовНоменклатуры.Индексы.Добавить("Номенклатура, Характеристика, ЕдиницаИзмерения");
Возврат ТаблицаШтриховыхКодовНоменклатуры;
КонецФункции
Функция ПустаяТаблицаТоварыДляДереваЭлектронныхДокументов()
ТипыДанныхЭлектронныхДокументов = КоммерческиеПредложенияДокументы.ТипыДанныхЭлектронныхДокументов();
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("НомерСтроки" , ТипыДанныхЭлектронныхДокументов.Число);
Таблица.Колонки.Добавить("ИдентификаторСтроки" , ТипыДанныхЭлектронныхДокументов.Строка);
Таблица.Колонки.Добавить("Количество" , ТипыДанныхЭлектронныхДокументов.ЧислоКоличество);
Таблица.Колонки.Добавить("ЛогистическаяУпаковка", ТипыДанныхЭлектронныхДокументов.Структура);
Таблица.Колонки.Добавить("СрокПоставки" , ТипыДанныхЭлектронныхДокументов.Структура);
Таблица.Колонки.Добавить("Цена" , ТипыДанныхЭлектронныхДокументов.ЧислоСумма);
Таблица.Колонки.Добавить("СтавкаНДС" , );
Таблица.Колонки.Добавить("СуммаСНДС" , ТипыДанныхЭлектронныхДокументов.ЧислоСумма);
Таблица.Колонки.Добавить("СуммаБезНДС" , ТипыДанныхЭлектронныхДокументов.ЧислоСумма);
Таблица.Колонки.Добавить("СуммаНДС" , ТипыДанныхЭлектронныхДокументов.ЧислоСумма);
Таблица.Колонки.Добавить("Товар" , ТипыДанныхЭлектронныхДокументов.Структура);
Таблица.Колонки.Добавить("ПроцентСкидки" , ТипыДанныхЭлектронныхДокументов.ЧислоПроцент);
Таблица.Колонки.Добавить("СуммаСкидки" , ТипыДанныхЭлектронныхДокументов.ЧислоСумма);
Таблица.Колонки.Добавить("Комментарий" , ТипыДанныхЭлектронныхДокументов.Строка);
Возврат Таблица;
КонецФункции
Процедура ПроверитьПравильностьСтатуса(Отказ, ДанныеШапки)
Если Не ДанныеШапки.Проведен Тогда
ТекстОшибки = СтрШаблон(НСтр("ru = 'Документ %1 не проведен, отправка доступна только для проведенных документов.'"),
ДанныеШапки.Ссылка);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ДанныеШапки.Ссылка);
Отказ = Истина;
Возврат;
КонецЕсли;
НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
Если НастройкиУчета.ИспользуютсяСтатусыКоммерческихПредложенийКлиентам
И НастройкиУчета.СтатусыКоммерческихПредложенийКлиентамДействует.Количество() > 0 Тогда
Если НастройкиУчета.СтатусыКоммерческихПредложенийКлиентамДействует.Найти(ДанныеШапки.Статус) = Неопределено Тогда
ТекстОшибки = СтрШаблон(НСтр("ru = 'Документ %1 находится в статусе ""%2"", отправка в котором недоступна.'"),
ДанныеШапки.Ссылка,
ДанныеШапки.Статус);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ДанныеШапки.Ссылка, ,"Объект.Статус");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция КлючевыеРеквизитыИзменены(Объект, ДокументБылПроведен)
Если Объект.Ссылка.Пустая() Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| КоммерческоеПредложениеКлиенту.Организация КАК Организация,
| КоммерческоеПредложениеКлиенту.Проведен КАК Проведен,
| КоммерческоеПредложениеКлиенту.Клиент КАК Клиент,
| КоммерческоеПредложениеКлиенту.Контрагент КАК Контрагент,
| КоммерческоеПредложениеКлиенту.Валюта КАК Валюта,
| КоммерческоеПредложениеКлиенту.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| КоммерческоеПредложениеКлиенту.Налогообложение КАК Налогообложение,
| КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| КоммерческоеПредложениеКлиенту.СрокДействия КАК СрокДействия,
| КоммерческоеПредложениеКлиенту.УсловияДоставкиТекст КАК УсловияДоставкиТекст,
| КоммерческоеПредложениеКлиенту.УсловияОплатыТекст КАК УсловияОплатыТекст,
| КоммерческоеПредложениеКлиенту.ПрочаяДополнительнаяИнформацияТекст КАК ПрочаяДополнительнаяИнформацияТекст,
| КоммерческоеПредложениеКлиенту.МожетВыкупатьсяЧастично КАК МожетВыкупатьсяЧастично,
| КоммерческоеПредложениеКлиенту.ВариантУказанияСрокаПоставки КАК ВариантУказанияСрокаПоставки,
| КоммерческоеПредложениеКлиенту.СуммаДокумента КАК СуммаДокумента
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
|ГДЕ
| КоммерческоеПредложениеКлиенту.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| КоммерческоеПредложениеКлиентуТовары.ИдентификаторСтрокиЗапроса КАК ИдентификаторСтрокиЗапроса,
| КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
| КоммерческоеПредложениеКлиентуТовары.Характеристика КАК Характеристика,
| КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
| КоммерческоеПредложениеКлиентуТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| КоммерческоеПредложениеКлиентуТовары.Цена КАК Цена,
| КоммерческоеПредложениеКлиентуТовары.СтавкаНДС КАК СтавкаНДС,
| КоммерческоеПредложениеКлиентуТовары.СуммаСНДС КАК СуммаСНДС,
| КоммерческоеПредложениеКлиентуТовары.СуммаРучнойСкидки + КоммерческоеПредложениеКлиентуТовары.СуммаАвтоматическойСкидки КАК СуммаСкидки,
| КоммерческоеПредложениеКлиентуТовары.СрокПоставки КАК СрокПоставки,
| КоммерческоеПредложениеКлиентуТовары.КомментарийДляПокупателя КАК КомментарийДляПокупателя
|ПОМЕСТИТЬ ЗаписанныеДанные
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
|ГДЕ
| КоммерческоеПредложениеКлиентуТовары.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ТекущиеДанные.ИдентификаторСтрокиЗапроса КАК ИдентификаторСтрокиЗапроса,
| ТекущиеДанные.Номенклатура КАК Номенклатура,
| ТекущиеДанные.Характеристика КАК Характеристика,
| ТекущиеДанные.Количество КАК Количество,
| ТекущиеДанные.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТекущиеДанные.Цена КАК Цена,
| ТекущиеДанные.СтавкаНДС КАК СтавкаНДС,
| ТекущиеДанные.СуммаСНДС КАК СуммаСНДС,
| ТекущиеДанные.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТекущиеДанные.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ТекущиеДанные.СрокПоставки КАК СрокПоставки,
| ТекущиеДанные.КомментарийДляПокупателя КАК КомментарийДляПокупателя
|ПОМЕСТИТЬ ТекущиеДанные
|ИЗ
| &ТекущиеДанныеТовары КАК ТекущиеДанные
|;
|
|
|ВЫБРАТЬ
| СУММА(ВложенныйЗапрос.КоличествоОтличий) КАК КоличествоОтличий
|ИЗ
| (ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ТекущиеДанные.ИдентификаторСтрокиЗапроса ЕСТЬ NULL
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК КоличествоОтличий
| ИЗ
| ЗаписанныеДанные КАК ЗаписанныеДанные
| ЛЕВОЕ СОЕДИНЕНИЕ ТекущиеДанные КАК ТекущиеДанные
| ПО (ТекущиеДанные.ИдентификаторСтрокиЗапроса = ЗаписанныеДанные.ИдентификаторСтрокиЗапроса)
| И (ТекущиеДанные.Номенклатура = ЗаписанныеДанные.Номенклатура)
| И (ТекущиеДанные.Характеристика = ЗаписанныеДанные.Характеристика)
| И (ТекущиеДанные.Количество = ЗаписанныеДанные.Количество)
| И (ТекущиеДанные.ЕдиницаИзмерения = ЗаписанныеДанные.ЕдиницаИзмерения)
| И (ТекущиеДанные.Цена = ЗаписанныеДанные.Цена)
| И (ТекущиеДанные.СтавкаНДС = ЗаписанныеДанные.СтавкаНДС)
| И (ТекущиеДанные.СуммаСНДС = ЗаписанныеДанные.СуммаСНДС)
| И (ТекущиеДанные.СуммаРучнойСкидки + ТекущиеДанные.СуммаАвтоматическойСкидки = ЗаписанныеДанные.СуммаСкидки)
| И (ТекущиеДанные.СрокПоставки = ЗаписанныеДанные.СрокПоставки)
| И (ТекущиеДанные.КомментарийДляПокупателя = ЗаписанныеДанные.КомментарийДляПокупателя)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ТекущиеДанные.ИдентификаторСтрокиЗапроса ЕСТЬ NULL
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ)
| ИЗ
| ТекущиеДанные КАК ТекущиеДанные
| ЛЕВОЕ СОЕДИНЕНИЕ ЗаписанныеДанные КАК ЗаписанныеДанные
| ПО ТекущиеДанные.ИдентификаторСтрокиЗапроса = ЗаписанныеДанные.ИдентификаторСтрокиЗапроса
| И ТекущиеДанные.Номенклатура = ЗаписанныеДанные.Номенклатура
| И ТекущиеДанные.Характеристика = ЗаписанныеДанные.Характеристика
| И ТекущиеДанные.Количество = ЗаписанныеДанные.Количество
| И ТекущиеДанные.ЕдиницаИзмерения = ЗаписанныеДанные.ЕдиницаИзмерения
| И ТекущиеДанные.Цена = ЗаписанныеДанные.Цена
| И ТекущиеДанные.СтавкаНДС = ЗаписанныеДанные.СтавкаНДС
| И ТекущиеДанные.СуммаСНДС = ЗаписанныеДанные.СуммаСНДС
| И (ТекущиеДанные.СуммаРучнойСкидки + ТекущиеДанные.СуммаАвтоматическойСкидки = ЗаписанныеДанные.СуммаСкидки)
| И ТекущиеДанные.СрокПоставки = ЗаписанныеДанные.СрокПоставки
| И ТекущиеДанные.КомментарийДляПокупателя = ЗаписанныеДанные.КомментарийДляПокупателя) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("ТекущиеДанныеТовары", Объект.Товары.Выгрузить());
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.ВыполнитьПакет();
ТаблицаШапка = Результат[0].Выгрузить();
Для Каждого Колонка Из ТаблицаШапка.Колонки Цикл
ИмяРеквизита = Колонка.Имя;
Если ИмяРеквизита = "Проведен" Тогда
ДокументБылПроведен = ТаблицаШапка[0][ИмяРеквизита];
Иначе
Если ТаблицаШапка[0][ИмяРеквизита] <> Объект[ИмяРеквизита] Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВыборкаТовары = Результат[3].Выбрать();
Если ВыборкаТовары.Следующий()
И ВыборкаТовары.КоличествоОтличий > 0 Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция ПрисоединенныеФайлыСНеПустымCID(ВладелецФайлов) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ПрисоединенныеФайлы.Наименование КАК Наименование,
| ПрисоединенныеФайлы.Размер КАК Размер,
| ПрисоединенныеФайлы.CIDВложенияHTML КАК CIDВложенияHTML
|ИЗ
| Справочник.КоммерческоеПредложениеКлиентуПрисоединенныеФайлы КАК ПрисоединенныеФайлы
|ГДЕ
| ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайлов
| И (НЕ ПрисоединенныеФайлы.ПометкаУдаления)
| И ПрисоединенныеФайлы.CIDВложенияHTML <> """"";
Запрос.УстановитьПараметр("ПустаяСтрока","");
Запрос.УстановитьПараметр("ВладелецФайлов",ВладелецФайлов);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#КонецЕсли