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