Как можно передать параметры в Процедуру Печать() для ВПФ с общего модуля CRM для печати?
Здравствуйте, как можно передать параметры в для ВПФ с общего модуля CRM для печати? В общий модуль CRM_ОбщегоНазначенияСервер в таком виде передаётся параметры
Сам код ВПФ
При печате пишет Печатная форма недоступна
Процедура Печать(Знач МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Функция CRM_ПолучитьВнешниеМакетыИДанныеОбъектов(ИмяМакета, ОбъектыНазначения, НомерВарианта = Неопределено) Экспорт
Сам код ВПФ
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.КоммерческоеПредложениеКлиенту");//Указываем документ к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Коммерческое предложение клиенту доработка CRM"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Коммерческое предложение клиенту внешняя доработка CRM");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Коммерческое предложение клиенту доработка CRM", "ВнешняяОбработкаКоммерческоеПредложениеКлиентуCRM", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура Печать(Знач МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВнешняяОбработкаКоммерческоеПредложениеКлиентуCRM") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ВнешняяОбработкаКоммерческоеПредложениеКлиентуCRM",
НСтр("ru = 'Коммерческое предложение клиенту';
|en = 'Sales quotation for customer'"),
Интерес_СформироватьПечатнуюФормуКоммерческогоПредложения(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция Интерес_СформироватьПечатнуюФормуКоммерческогоПредложения(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДокументЗапасы.Ссылка КАК Ссылка,
| ДокументЗапасы.Ссылка.Организация КАК Организация,
| ДокументЗапасы.Ссылка.Организация.Префикс КАК Префикс,
| ДокументЗапасы.Ссылка.Дата КАК ДатаДокумента,
| ДокументЗапасы.Ссылка.Номер КАК Номер,
| ДокументЗапасы.Ссылка.Партнер КАК Партнер,
| ДокументЗапасы.Ссылка.Валюта КАК Валюта,
| ДокументЗапасы.Ссылка.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДокументЗапасы.Ссылка.ОжидаемаяВыручка КАК ОжидаемаяВыручка,
| ДокументЗапасы.НомерСтроки КАК НомерСтроки,
| ДокументЗапасы.Номенклатура КАК Номенклатура,
| ДокументЗапасы.Характеристика КАК Характеристика,
| ДокументЗапасы.КоличествоУпаковок КАК Количество,
| ДокументЗапасы.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДокументЗапасы.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ДокументЗапасы.Сумма КАК Сумма,
| ДокументЗапасы.СтавкаНДС КАК СтавкаНДС,
| ДокументЗапасы.СуммаНДС КАК СуммаНДС,
| ДокументЗапасы.Всего КАК Всего,
| ДокументЗапасы.Содержание КАК Содержание,
| """" КАК КомментарийВарианта
|ИЗ
| Документ.CRM_Интерес.Товары КАК ДокументЗапасы
|ГДЕ
| ДокументЗапасы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|ИТОГИ
| СУММА(Всего)
|ПО
| Ссылка";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
// Запрос.УстановитьПараметр("ОтображатьСкидки", ПараметрыПечати.ОтображатьСкидки);
Запрос.Текст = ТекстЗапроса;
ВыборкаДокументов = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабличныйДокумент = Новый ТабличныйДокумент;
Пока ВыборкаДокументов.Следующий() Цикл
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Макет = ПолучитьМакет("CRM_ПФ_MXL_КоммерческоеПредложение");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьКонтактноеЛицо = Макет.ПолучитьОбласть("КонтактноеЛицо");
ОбластьПредлагаемОзнакомиться = Макет.ПолучитьОбласть("ПредлагаемОзнакомиться");
ОбластьМенеджер = Макет.ПолучитьОбласть("Менеджер");
ОбластьПустаяСтрокаТонкая = Макет.ПолучитьОбласть("ПустаяСтрокаТонкая");
ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
ОбластьСрокДействия = Макет.ПолучитьОбласть("СрокДействияЧастичныйВыкуп");
ДанныеОбъекта = Новый Структура;
ДанныеШапки = ВыборкаДокументов.Ссылка;
СведенияОрганизации = Новый Структура;
СведенияОрганизации.Вставить("Наименование");
СведенияОрганизации.Вставить("ПолноеНаименование");
СведенияОрганизации.Вставить("Телефоны");
СведенияОрганизации.Вставить("ЮридическийАдрес");
СведенияОрганизации.Вставить("ЭлектроннаяПочта");
КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеОрганизации(ДанныеШапки.Организация, СведенияОрганизации);
Если ЗначениеЗаполнено(СведенияОрганизации.ПолноеНаименование) Тогда
ПредставлениеОрганизации = СведенияОрганизации.ПолноеНаименование;
Иначе
ПредставлениеОрганизации = СведенияОрганизации.Наименование;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеШапки.Ответственный) Тогда
МассивСМенеджером = Новый Массив;
МассивСМенеджером.Добавить(ДанныеШапки.Ответственный);
ТребуемыеТипыКонтактнойИнформации = Новый Массив;
ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
МассивСМенеджером,
ТребуемыеТипыКонтактнойИнформации,,
ДанныеШапки.Дата);
АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
ТаблицаКонтактнойИнформации,
Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Иначе
ТелефонМенеджера = "";
АдресЭлектроннойПочтыМенеджера = "";
КонецЕсли;
ДанныеОбъекта.Вставить("Ссылка", ДанныеШапки.Ссылка);
ДанныеОбъекта.Вставить("Организация", ДанныеШапки.Организация);
ДанныеОбъекта.Вставить("ТелефонОрганизации", СведенияОрганизации.Телефоны);
ДанныеОбъекта.Вставить("АдресОрганизации", СведенияОрганизации.ЮридическийАдрес);
ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыОрганизации", ?(СведенияОрганизации.Свойство("ЭлектроннаяПочта"),СведенияОрганизации.ЭлектроннаяПочта, ""));
ДанныеОбъекта.Вставить("Клиент", ДанныеШапки.Партнер);
ДанныеОбъекта.Вставить("Контрагент", ДанныеШапки.Контрагент);
ДанныеОбъекта.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
ДанныеОбъекта.Вставить("ПредставлениеКлиента", КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(ДанныеОбъекта.Клиент, ДанныеШапки.Контрагент));
ДанныеОбъекта.Вставить("КонтактноеЛицо", ДанныеШапки.КонтактноеЛицо);
ДанныеОбъекта.Вставить("Менеджер", ДанныеШапки.Ответственный);
ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыМенеджера", АдресЭлектроннойПочтыМенеджера);
ДанныеОбъекта.Вставить("ТелефонМенеджера", ТелефонМенеджера);
ДанныеОбъекта.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеШапки.Номер, Ложь, Истина));
ДанныеОбъекта.Вставить("Дата", Формат(ДанныеШапки.Дата,"ДЛФ=D"));
ДанныеОбъекта.Вставить("КонтактнаяИнформацияПредложения", КонтактнаяИнформацияПредложения(ДанныеОбъекта));
КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииЗаголовкаПечатнойФормы(Макет, ОбластьЗаголовок, ДанныеОбъекта);
ДополнительныеПараметрыВывода = Неопределено;
ОбластьЗаголовок.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Если ЗначениеЗаполнено(ДанныеОбъекта.КонтактноеЛицо) Тогда
ОбластьКонтактноеЛицо.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьКонтактноеЛицо);
КонецЕсли;
ОбластьПредлагаемОзнакомиться.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьПредлагаемОзнакомиться);
КПВывестиСтрокиВарианта(ТабличныйДокумент, Макет, ВыборкаДокументов);
ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);
ОбластьСрокДействия.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьСрокДействия);
ОбластьМенеджер.Параметры.Заполнить(ДанныеОбъекта);
ТабличныйДокумент.Вывести(ОбластьМенеджер);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументов.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
Функция КонтактнаяИнформацияПредложения(ДанныеОбъекта)
МассивСтрок = Новый Массив;
Если Не ПустаяСтрока(ДанныеОбъекта.АдресОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресОрганизации);
КонецЕсли;
Если Не ПустаяСтрока(ДанныеОбъекта.ТелефонОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.ТелефонОрганизации);
КонецЕсли;
Если Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера);
ИначеЕсли Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации) Тогда
МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации);
КонецЕсли;
Возврат СтрСоединить(МассивСтрок, Символы.ПС);
КонецФункции
Функция КПВывестиСтрокиВарианта(ТабличныйДокумент, Макет, ВыборкаВариантИд) Экспорт
// шапка таблицы
//Если ОтображатьСкидки Тогда
// ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
// ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
// ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
// ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
//
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
//Иначе
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицыБезСкидок");
ТабличныйДокумент.Вывести(ОбластьДанных);
//КонецЕсли;
//Если ОтображатьСкидки Тогда
// ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
// ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
// ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
// ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
//Иначе
ОбластьДанных = Макет.ПолучитьОбласть("СтрокаБезСкидок");
//КонецЕсли;
ИтогоПоРазделу = 0;
ИтогоСумма = 0;
ИтогоСуммаНДС = 0;
ИтогоБезСкидок = 0;
Ном = 0;
ПерваяСтрока = Истина;
МассивИтогов = Новый Массив;
МассивИтоговСкидок = Новый Массив;
МассивРазделителей = Новый Массив;
ТекРазделитель = Справочники.CRM_Разделители.ПустаяСсылка();
СтруктураДопИнф = Новый Структура("Характеристика, Серия");
ОписаниеВарианта = "";
// СтрокиТаблицы
ВыборкаЗапасы = ВыборкаВариантИд.Выбрать();
Пока ВыборкаЗапасы.Следующий() Цикл
ОписаниеВарианта = ВыборкаЗапасы.КомментарийВарианта;
Если ТипЗнч(ВыборкаЗапасы.Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда
Ном = Ном + 1;
// строки номенклатуры
//Если ОтображатьСкидки Тогда
// ОбластьНомера.Параметры.Ном = Ном;
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ОбластьДанных.Параметры.Заполнить(ВыборкаЗапасы);
//Иначе
ОбластьДанных.Параметры.Ном = Ном;
ОбластьДанных.Параметры.Заполнить(ВыборкаЗапасы);
// КонецЕсли;
Если Не ЗначениеЗаполнено(ВыборкаЗапасы.ЕдиницаИзмерения) Тогда
ОбластьДанных.Параметры.ЕдиницаИзмерения = ВыборкаЗапасы.Номенклатура.ЕдиницаИзмерения;
КонецЕсли;
// +CRM
ТипНоменклатуры = ВыборкаЗапасы.Номенклатура.ТипНоменклатуры;
Если Не ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга Тогда
СтруктураДопИнф.Характеристика = ВыборкаЗапасы.Характеристика;
ХарактеристикаНоменклатуры = КППредставлениеСерий(СтруктураДопИнф);
ОбластьДанных.Параметры.Содержание = ?(ПустаяСтрока(ВыборкаЗапасы.Содержание), ВыборкаЗапасы.Номенклатура.НаименованиеПолное + ХарактеристикаНоменклатуры, ВыборкаЗапасы.Содержание);
Иначе
ОбластьДанных.Параметры.Содержание = ?(ПустаяСтрока(ВыборкаЗапасы.Содержание), ВыборкаЗапасы.Номенклатура.НаименованиеПолное, ВыборкаЗапасы.Содержание);
КонецЕсли;
// -CRM
ОбластьДанных.Область(1, 1, 1, 1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
ОбластьДанных.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Ложь, , , );
//Если ОтображатьСкидки Тогда
// ТабличныйДокумент.Присоединить(ОбластьДанных);
//КонецЕсли;
//Если ОтображатьСкидки Тогда
// ОбластьСкидок.Параметры.Скидка = ВыборкаЗапасы.Количество * ВыборкаЗапасы.Цена - ВыборкаЗапасы.Сумма;
// ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаЗапасы.Количество * ВыборкаЗапасы.Цена;
// ОбластьСкидок.Область(1, 1, 1, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
// ОбластьСкидок.Область(1, 1, 1, 2).Шрифт = Новый Шрифт(, , Ложь, , , );
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ИтогоБезСкидок = ИтогоБезСкидок + ОбластьСкидок.Параметры.СуммаБезСкидки;
// ОбластьСуммы.Параметры.Сумма = ВыборкаЗапасы.Сумма;
// ОбластьСуммы.Область(1, 1, 1, 1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
// ОбластьСуммы.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Ложь, , , );
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
//Иначе
ОбластьДанных.Параметры.Сумма = ВыборкаЗапасы.Сумма;
ТабличныйДокумент.Вывести(ОбластьДанных);
//КонецЕсли;
ИтогоСумма = ИтогоСумма + ВыборкаЗапасы.Сумма;
ИтогоСуммаНДС = ИтогоСуммаНДС + ВыборкаЗапасы.СуммаНДС;
Если МассивИтогов.Количество() > 0 Тогда
МассивИтогов[МассивИтогов.Количество() - 1] = МассивИтогов[МассивИтогов.Количество() - 1] + ВыборкаЗапасы.Сумма;
КонецЕсли;
Если МассивИтоговСкидок.Количество() > 0 Тогда
МассивИтоговСкидок[МассивИтоговСкидок.Количество() - 1] = МассивИтоговСкидок[МассивИтоговСкидок.Количество() - 1] + (ВыборкаЗапасы.Количество * ВыборкаЗапасы.Цена - ВыборкаЗапасы.Сумма);
КонецЕсли;
Иначе
Если МассивРазделителей.Количество() > 0 Тогда
ИтогоПоРазделу = МассивИтогов[МассивИтогов.Количество() - 1];
ИтогоСкидкаПоРазделу = МассивИтоговСкидок[МассивИтоговСкидок.Количество() - 1];
Разделитель = МассивРазделителей[МассивРазделителей.Количество() - 1];
МассивИтогов.Удалить(МассивИтогов.Количество() - 1);
МассивИтоговСкидок.Удалить(МассивИтоговСкидок.Количество() - 1);
МассивРазделителей.Удалить(МассивРазделителей.Количество() - 1);
Если Разделитель.Итог Тогда
// Строки итогов по иерархии (итоги).
//Если ОтображатьСкидки Тогда
// ОбластьНомера.Параметры.Ном = "";
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ОбластьДанных.Параметры.Содержание = НСтр("ru='Итого по: ';en='Total by:'") + Строка(Разделитель);
// ОбластьДанных.Параметры.Номенклатура = Разделитель;
// ОбластьДанных.Параметры.Количество = "";
// ОбластьДанных.Параметры.Цена = "";
// ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
// ОбластьДанных.Область(1, 1, 1, 1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
// ОбластьДанных.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ОбластьСкидок.Параметры.СуммаБезСкидки = СокрЛП(Формат(ИтогоПоРазделу + ИтогоСкидкаПоРазделу, "ЧЦ=15; ЧДЦ=2"));
// ОбластьСкидок.Параметры.Скидка = СокрЛП(Формат(ИтогоСкидкаПоРазделу, "ЧЦ=15; ЧДЦ=2"));
// ОбластьСкидок.Область(1, 1, 1, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
// ОбластьСкидок.Область(1, 1, 1, 2).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ОбластьСуммы.Параметры.Сумма = СокрЛП(CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоПоРазделу));
// ОбластьСуммы.Область(1, 1, 1, 1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
// ОбластьСуммы.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
//Иначе
ОбластьДанных.Параметры.Ном = "";
ОбластьДанных.Параметры.Содержание = НСтр("ru='Итого по: ';en='Total by:'") + Строка(Разделитель);
ОбластьДанных.Параметры.Номенклатура = Разделитель;
ОбластьДанных.Параметры.Количество = "";
ОбластьДанных.Параметры.Цена = "";
ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
ОбластьДанных.Параметры.Сумма = СокрЛП(CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоПоРазделу));
ОбластьДанных.Область(1, 3, 1, 3).Шрифт = Новый Шрифт(, , Истина, , , );
ОбластьДанных.Область(1, 9, 1, 9).Шрифт = Новый Шрифт(, , Истина, , , );
ТабличныйДокумент.Вывести(ОбластьДанных);
//КонецЕсли;
КонецЕсли;
КонецЕсли;
// Строки разделителей иерархии (заголовки).
//Если ОтображатьСкидки Тогда
// ОбластьНомера.Параметры.Ном = "";
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ОбластьДанных.Параметры.Содержание = ВыборкаЗапасы.Номенклатура;
// ОбластьДанных.Параметры.Номенклатура = ВыборкаЗапасы.Номенклатура;
// ОбластьДанных.Параметры.Количество = "";
// ОбластьДанных.Параметры.Цена = "";
// ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
// ОбластьДанных.Область(1, 1, 1, 1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
// ОбластьДанных.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ОбластьСкидок.Параметры.СуммаБезСкидки = "";
// ОбластьСкидок.Параметры.Скидка = "";
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ОбластьСуммы.Параметры.Сумма = "";
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
//Иначе
ОбластьДанных.Параметры.Ном = "";
ОбластьДанных.Параметры.Содержание = ВыборкаЗапасы.Номенклатура;
ОбластьДанных.Параметры.Номенклатура = ВыборкаЗапасы.Номенклатура;
ОбластьДанных.Параметры.Количество = "";
ОбластьДанных.Параметры.Цена = "";
ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
ОбластьДанных.Параметры.Сумма = "";
ТабличныйДокумент.Вывести(ОбластьДанных);
// КонецЕсли;
МассивИтогов.Добавить(0);
МассивИтоговСкидок.Добавить(0);
Если НЕ ТипЗнч(ВыборкаЗапасы.Номенклатура) = Тип("Неопределено") Тогда
МассивРазделителей.Добавить(ВыборкаЗапасы.Номенклатура);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если МассивИтогов.Количество() > 0 Тогда
ИтогоПоРазделу = МассивИтогов[МассивИтогов.Количество() - 1];
ИтогоСкидкаПоРазделу = МассивИтоговСкидок[МассивИтоговСкидок.Количество() - 1];
Разделитель = МассивРазделителей[МассивРазделителей.Количество() - 1];
МассивИтогов.Удалить(МассивИтогов.Количество()-1);
МассивИтоговСкидок.Удалить(МассивИтоговСкидок.Количество() - 1);
МассивРазделителей.Удалить(МассивРазделителей.Количество() - 1);
Если Разделитель.Итог Тогда
// Последняя строка итогов по иерархии (итоги).
//Если ОтображатьСкидки Тогда
// ОбластьНомера.Параметры.Ном = "";
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ОбластьДанных.Параметры.Содержание = НСтр("ru='Итого по: ';en='Total by:'") + Строка(Разделитель);
// ОбластьДанных.Параметры.Номенклатура = Разделитель;
// ОбластьДанных.Параметры.Количество = "";
// ОбластьДанных.Параметры.Цена = "";
// ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
// ОбластьДанных.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ОбластьСкидок.Параметры.СуммаБезСкидки = СокрЛП(Формат(ИтогоПоРазделу + ИтогоСкидкаПоРазделу, "ЧЦ=15; ЧДЦ=2"));
// ОбластьСкидок.Параметры.Скидка = СокрЛП(Формат(ИтогоСкидкаПоРазделу, "ЧЦ=15; ЧДЦ=2"));
// ОбластьСкидок.Область(1, 1, 1, 2).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
// ОбластьСкидок.Область(1, 1, 1, 2).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ОбластьСуммы.Параметры.Сумма = СокрЛП(Формат(ИтогоПоРазделу, "ЧЦ=15; ЧДЦ=2"));
// ОбластьСуммы.Область(1, 1, 1, 1).Шрифт = Новый Шрифт(, , Истина, , , );
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Иначе
ОбластьДанных.Параметры.Ном = "";
ОбластьДанных.Параметры.Содержание = НСтр("ru='Итого по: ';en='Total by:'") + Строка(Разделитель);
ОбластьДанных.Параметры.Номенклатура = Разделитель;
ОбластьДанных.Параметры.Количество = "";
ОбластьДанных.Параметры.Цена = "";
ОбластьДанных.Параметры.ЕдиницаИзмерения = "";
ОбластьДанных.Область(1, 3, 1, 3).Шрифт = Новый Шрифт(, , Истина, , , );
ОбластьДанных.Параметры.Сумма = СокрЛП(Формат(ИтогоПоРазделу, "ЧЦ=15; ЧДЦ=2"));
ОбластьДанных.Область(1, 9, 1, 9).Шрифт = Новый Шрифт(, , Истина, , , );
ТабличныйДокумент.Вывести(ОбластьДанных);
// КонецЕсли;
КонецЕсли;
КонецЕсли;
// итоги
//Если ОтображатьСкидки Тогда
//
// ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
// ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
// ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
// ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
//
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ОбластьСкидок.Параметры.ВсегоБезСкидок = ИтогоБезСкидок;
// ОбластьСкидок.Параметры.ВсегоСкидок = ИтогоБезСкидок - ИтогоСумма;
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ОбластьСуммы.Параметры.Всего = CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоСумма);
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
//
// // итоги НДС
// //Если УчитыватьНДС Тогда
// ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
// ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
// ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
// ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
// ТабличныйДокумент.Вывести(ОбластьНомера);
// ОбластьДанных.Параметры.НДС = ?(ВыборкаВариантИд.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:';en='Including VAT:'"), НСтр("ru='Сумма НДС:'"));
// ТабличныйДокумент.Присоединить(ОбластьДанных);
// ТабличныйДокумент.Присоединить(ОбластьСкидок);
// ОбластьСуммы.Параметры.ВсегоНДС = CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоСуммаНДС);
// ТабличныйДокумент.Присоединить(ОбластьСуммы);
// //КонецЕсли;
//
//
//Иначе
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоБезСкидок");
ОбластьДанных.Параметры.Всего = CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоСумма);
ТабличныйДокумент.Вывести(ОбластьДанных);
// итоги НДС
//Если УчитыватьНДС Тогда
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДСБезСкидок");
ОбластьДанных.Параметры.НДС = ?(ВыборкаВариантИд.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:';en='Including VAT:'"), НСтр("ru='Сумма НДС:'"));
ОбластьДанных.Параметры.ВсегоНДС = CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(ИтогоСуммаНДС);
ТабличныйДокумент.Вывести(ОбластьДанных);
//КонецЕсли;
// КонецЕсли;
// сумма прописью
СуммаКПрописи = ИтогоСумма + ?(ВыборкаВариантИд.ЦенаВключаетНДС, 0, ИтогоСуммаНДС);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.ИтоговаяСтрока = НСтр("ru='Всего наименований ';en='All items '") + Ном + НСтр("ru=', на сумму '") + CRM_ОбщегоНазначенияКлиентСервер.ФорматСумм(СуммаКПрописи, ВыборкаВариантИд.Валюта);
ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ВыборкаВариантИд.Валюта);
ТабличныйДокумент.Вывести(ОбластьМакета);
// заголовок таблицы
Если ЗначениеЗаполнено(ОписаниеВарианта) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ОписаниеВарианта");
ОбластьМакета.Параметры.ПредставлениеОписания = ОписаниеВарианта;
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецФункции
Функция КППредставлениеСерий(Выборка)
Результат = "(";
Если ЗначениеЗаполнено(Выборка.Характеристика) Тогда
Результат = Результат + Выборка.Характеристика;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Серия) Тогда
Результат = ?(Результат = "(", Результат, Результат + "; ");
Результат = Результат + Выборка.Серия;
КонецЕсли;
Результат = Результат + ")";
Возврат ?(Результат = "()", "", " " + Результат)
КонецФункции // ПредставлениеСерий()
// Функция - КППолучить данные объекта
//
// Параметры:
// СсылкаНаОбъект - -
// НомерВарианта - -
//
// Возвращаемое значение:
// Структура - Данные объекта
//
Функция КППолучитьДанныеОбъекта(СсылкаНаОбъект, знач НомерВарианта = Неопределено) Экспорт
Объект = СсылкаНаОбъект.ПолучитьОбъект();
Если НомерВарианта = Неопределено Тогда
// Печатаем утвержденный вариант.
СтрокаУтвержденного = Объект.Товары.Найти(Истина, "CRM_Утвержден");
Если Не СтрокаУтвержденного = Неопределено Тогда
НомерВарианта = СтрокаУтвержденного.CRM_ИДВарианта;
Иначе
НомерВарианта = 0;
КонецЕсли;
КонецЕсли;
ДанныеОбъекта = Новый Структура;
Если CRM_ОбщегоНазначенияСервер.НайтиВМетаданныхПоИмени("Константы", "CRM_ПечататьНомераДокументовБезПрефиксов") Тогда
ФлагУдалитьПрефикс = Константы["CRM_ПечататьНомераДокументовБезПрефиксов"].Получить();
Иначе
ФлагУдалитьПрефикс = Ложь;
КонецЕсли;
НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Объект.Номер, ФлагУдалитьПрефикс, ФлагУдалитьПрефикс);
ДанныеОбъекта.Вставить("Дата", Формат(CRM_ОбщегоНазначенияСервер.ПолучитьТекущуюДатуСеанса(),"ДЛФ=D"));
ДанныеОбъекта.Вставить("Номер", НомерДокумента);
СведенияОбОрганизации = CRM_ОбщегоНазначенияСервер.СведенияОЮрФизЛице(Объект.Организация, CRM_ОбщегоНазначенияСервер.ПолучитьТекущуюДатуСеанса(), ,);
НаименованиеОрганизации = CRM_ОбщегоНазначенияСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование");
АдресОрганизации = CRM_ОбщегоНазначенияСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ФактическийАдрес");
ТелефоныОрганизации = CRM_ОбщегоНазначенияСервер.ОписаниеОрганизации(СведенияОбОрганизации, "Телефоны");
СведенияОКонтрагенте = CRM_ОбщегоНазначенияСервер.СведенияОЮрФизЛице(Объект.Партнер, CRM_ОбщегоНазначенияСервер.ПолучитьТекущуюДатуСеанса(), ,);
НаименованиеКонтрагента = CRM_ОбщегоНазначенияСервер.ОписаниеОрганизации(СведенияОКонтрагенте, "ПолноеНаименование");
ДанныеОбъекта.Вставить("Организация", НаименованиеОрганизации);
ДанныеОбъекта.Вставить("АдресОрганизации", АдресОрганизации);
ДанныеОбъекта.Вставить("ТелефонОрганизации", ТелефоныОрганизации);
ДанныеОбъекта.Вставить("ТелефонОрганизации_1", ТелефоныОрганизации);
ДанныеОбъекта.Вставить("Клиент", НаименованиеКонтрагента);
Если ЗначениеЗаполнено(Объект.КонтактноеЛицо) Тогда
КЛ_Контрагента = Объект.КонтактноеЛицо;
Иначе
КЛ_Контрагента = КПВернутьКЛКонтрагента(Объект.Партнер);
КонецЕсли;
ДанныеОбъекта.Вставить("КонтактноеЛицо", КЛ_Контрагента);
ДанныеОбъекта.Вставить("КонтактноеЛицо_1", КЛ_Контрагента);
НадписьУважаемый = "Уважаемый(ая)";
Если ЗначениеЗаполнено(КЛ_Контрагента) И ЗначениеЗаполнено(КЛ_Контрагента.Пол) Тогда
Если КЛ_Контрагента.Пол = Перечисления.ПолФизическогоЛица.Мужской Тогда
НадписьУважаемый = "Уважаемый";
Иначе
НадписьУважаемый = "Уважаемая";
КонецЕсли;
КонецЕсли;
ДанныеОбъекта.Вставить("Уважаемый", НадписьУважаемый);
ДанныеОбъекта.Вставить("Ответственный", Объект.Менеджер);
ДанныеОбъекта.Вставить("Ответственный_1", Объект.Менеджер);
СтруктураДанных = Новый Структура("Телефон, EmailПользователя","","");
Если ЗначениеЗаполнено(Объект.Менеджер) Тогда
КППолучитьКонтактныеДанные(Объект.Менеджер, СтруктураДанных);
КонецЕсли;
ДанныеОбъекта.Вставить("ТелефонОтветственного", СтруктураДанных.Телефон);
ДанныеОбъекта.Вставить("EmailОтветственного", СтруктураДанных.EmailПользователя);
ДанныеОбъекта.Вставить("ИсходныеУсловия", Объект.CRM_ИсходныеУсловия);
ДанныеОбъекта.Вставить("ПорядокВыполненияРабот", Объект.CRM_ПорядокВыполненияРабот);
ДанныеОбъекта.Вставить("Варианты", Новый Массив);
//ДанныеОбъекта.Вставить("Товары", Новый Массив);
СписокВариантов = КППолучитьВарианты(СсылкаНаОбъект);
Для Каждого ЭлементСписка Из СписокВариантов Цикл
Если (Не НомерВарианта = 0) И НЕ ЭлементСписка.Значение = НомерВарианта Тогда
Продолжить;
КонецЕсли;
ИтогоБезСкидки = 0;
ИтоговаяСумма = 0;
ИтоговаяСуммаНДС = 0;
НомерСтрокиПоПорядку = 0;
ЕстьРазделители = Ложь;
ТекущийРазделитель = Неопределено;
ИтогПоРазделу = 0;
СтруктураВарианта = Новый Структура;
СтруктураВарианта.Вставить("идВарианта",ЭлементСписка.Значение);
СтруктураВарианта.Вставить("Утвержден",ЭлементСписка.Пометка);
СтруктураВарианта.Вставить("СтрокаВарианта","Вариант "+Строка(ЭлементСписка.Значение)+?(ЭлементСписка.Пометка," (Утвержден)",""));
СтруктураВарианта.Вставить("Товары", Новый Массив);
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл
Если СтрокаТабличнойЧасти.CRM_ИДВарианта = ЭлементСписка.Значение Тогда
СтрокаТаблицыТовары = Новый Структура;
Если СтрокаТабличнойЧасти.CRM_ЭтоРазделитель Тогда
Если Не ТекущийРазделитель = Неопределено И ТекущийРазделитель.Итог Тогда
// Если предусмотрен вывод итогов, добавим строку с итогами в массив.
СтрокаТаблицыТовары.Вставить("НомерСтроки", " ");
СтрокаТаблицыТовары.Вставить("Номенклатура", "Итого по " + ТекущийРазделитель + ":");
СтрокаТаблицыТовары.Вставить("Количество", " ");
СтрокаТаблицыТовары.Вставить("Цена", " ");
СтрокаТаблицыТовары.Вставить("Единица", " ");
СтрокаТаблицыТовары.Вставить("Скидка", " ");
СтрокаТаблицыТовары.Вставить("Сумма", Формат(ИтогПоРазделу, "ЧЦ=15; ЧДЦ=2"));
СтрокаТаблицыТовары.Вставить("ТипСтроки", "ИтогПоРазделу");
СтруктураВарианта.Товары.Добавить(СтрокаТаблицыТовары);
СтрокаТаблицыТовары = Новый Структура;
КонецЕсли;
СтрокаТаблицыТовары.Вставить("НомерСтроки", " ");
СтрокаТаблицыТовары.Вставить("Номенклатура", СтрокаТабличнойЧасти.Номенклатура);
СтрокаТаблицыТовары.Вставить("Количество", " ");
СтрокаТаблицыТовары.Вставить("Цена", " ");
СтрокаТаблицыТовары.Вставить("Единица", " ");
СтрокаТаблицыТовары.Вставить("Скидка", " ");
СтрокаТаблицыТовары.Вставить("Сумма", " ");
СтрокаТаблицыТовары.Вставить("ТипСтроки", "Разделитель");
ЕстьРазделители = Истина;
ТекущийРазделитель = СтрокаТабличнойЧасти.Номенклатура;
ИтогПоРазделу = 0;
Иначе
НомерСтрокиПоПорядку = НомерСтрокиПоПорядку + 1;
СтрокаТаблицыТовары.Вставить("НомерСтроки", НомерСтрокиПоПорядку);
СтрокаТаблицыТовары.Вставить("Номенклатура", ?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Содержание), СтрокаТабличнойЧасти.Содержание, СтрокаТабличнойЧасти.Номенклатура));
СтрокаТаблицыТовары.Вставить("Количество", Формат(СтрокаТабличнойЧасти.Количество,"ЧЦ=15; ЧДЦ=3"));
СтрокаТаблицыТовары.Вставить("Цена", Формат(СтрокаТабличнойЧасти.Цена,"ЧЦ=15; ЧДЦ=2"));
СтрокаТаблицыТовары.Вставить("Единица", СтрокаТабличнойЧасти.ЕдиницаИзмерения);
СуммаБезСкидки = СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.Количество;
СкидкаНаценка = ?(СуммаБезСкидки >= СтрокаТабличнойЧасти.Сумма, СуммаБезСкидки - СтрокаТабличнойЧасти.Сумма,СтрокаТабличнойЧасти.Сумма - СуммаБезСкидки);
ИтогоБезСкидки = ИтогоБезСкидки + СуммаБезСкидки;
СтрокаТаблицыТовары.Вставить("Скидка", Формат(СкидкаНаценка,"ЧЦ=15; ЧДЦ=2"));
СтрокаТаблицыТовары.Вставить("Сумма", Формат(СтрокаТабличнойЧасти.Сумма,"ЧЦ=15; ЧДЦ=2"));
ИтоговаяСумма = ИтоговаяСумма + СтрокаТабличнойЧасти.Сумма;
ИтоговаяСуммаНДС = ИтоговаяСуммаНДС + СтрокаТабличнойЧасти.СуммаНДС;
ИтогПоРазделу = ИтогПоРазделу + СтрокаТабличнойЧасти.Сумма;
СтрокаТаблицыТовары.Вставить("ТипСтроки", "Номенклатура");
КонецЕсли;
СтруктураВарианта.Товары.Добавить(СтрокаТаблицыТовары);
КонецЕсли;
КонецЦикла;
// Итоги по последнему разделителю не выведены в цикле
// если предусмотрен вывод итогов, добавим строку с итогами в массив.
Если Не ТекущийРазделитель = Неопределено И ТекущийРазделитель.Итог Тогда
СтрокаТаблицыТовары = Новый Структура;
СтрокаТаблицыТовары.Вставить("НомерСтроки", " ");
СтрокаТаблицыТовары.Вставить("Номенклатура", "Итого по " + ТекущийРазделитель + ":");
СтрокаТаблицыТовары.Вставить("Количество", " ");
СтрокаТаблицыТовары.Вставить("Цена", " ");
СтрокаТаблицыТовары.Вставить("Единица", " ");
СтрокаТаблицыТовары.Вставить("Скидка", " ");
СтрокаТаблицыТовары.Вставить("Сумма", Формат(ИтогПоРазделу, "ЧЦ=15; ЧДЦ=2"));
СтрокаТаблицыТовары.Вставить("ТипСтроки", "ИтогПоРазделу");
СтруктураВарианта.Товары.Добавить(СтрокаТаблицыТовары);
КонецЕсли;
СтруктураВарианта.Вставить("ЕстьРазделители", ЕстьРазделители);
// выводим итоги
СтруктураВарианта.Вставить("Всего", Формат(ИтоговаяСумма,"ЧЦ=15; ЧДЦ=2"));
Если ИтоговаяСуммаНДС = 0 Тогда
СтруктураВарианта.Вставить("СтрокаНДС", НСтр("ru='без налога (НДС)';en='Without tax (VAT)'"));
СтруктураВарианта.Вставить("ВсегоНДС", "");
Иначе
СтруктураВарианта.Вставить("СтрокаНДС", ?(Объект.ЦенаВключаетНДС, НСтр("ru='в том числе НДС:';en='Including VAT:'"), НСтр("ru='Сумма НДС:'")));
СтруктураВарианта.Вставить("ВсегоНДС", Формат(ИтоговаяСуммаНДС, "ЧЦ=15; ЧДЦ=2"));
КонецЕсли;
СтруктураВарианта.Вставить("ВсегоКОплате", Формат(ИтоговаяСумма + ?(Объект.ЦенаВключаетНДС, 0, ИтоговаяСуммаНДС),"ЧЦ=15; ЧДЦ=2"));
СтруктураВарианта.Вставить("ТелефонОтвественного", СтруктураДанных.Телефон);
СтруктураВарианта.Вставить("EmailОтвественного", СтруктураДанных.EmailПользователя);
СтруктураВарианта.Вставить("СтоимостьПропись", НРег(РаботаСКурсамиВалют.СформироватьСуммуПрописью(ИтоговаяСумма + ?(Объект.ЦенаВключаетНДС, 0, ИтоговаяСуммаНДС), Объект.Валюта)));
ДанныеОбъекта.Варианты.Добавить(СтруктураВарианта);
КонецЦикла;
ДанныеОбъекта.Вставить("Валюта", Объект.Валюта);
ДанныеОбъекта.Вставить("Валюта_1", Объект.Валюта);
ДанныеОбъекта.Вставить("Курс", Формат(Объект.Курс,"ЧЦ=10; ЧДЦ=4"));
ДанныеОбъекта.Вставить("Кратность", Формат(Объект.Кратность,"ЧЦ=10"));
ДанныеОбъекта.Вставить("Комментарий", Объект.Комментарий);
Возврат ДанныеОбъекта;
КонецФункции
Функция КПВернутьКЛКонтрагента(КонтрагентСсылка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| КонтактныеЛица.Ссылка КАК КонтактноеЛицо
|ИЗ
| Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛица
|ГДЕ
| (НЕ КонтактныеЛица.ПометкаУдаления)
| И КонтактныеЛица.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", КонтрагентСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КонтактноеЛицо;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Процедура КППолучитьКонтактныеДанные(ОбъектСсылка, СтруктураДанных) Экспорт
Для Каждого КлючИЗначение Из СтруктураДанных Цикл
Попытка
ВидКИ = Справочники.ВидыКонтактнойИнформации[КлючИЗначение.Ключ];
НайденаяСтрока = ОбъектСсылка.КонтактнаяИнформация.Найти(ВидКИ,"Вид");
Исключение
НайденаяСтрока = ОбъектСсылка.КонтактнаяИнформация.Найти(Перечисления.ТипыКонтактнойИнформации["Телефон"],"Тип");
КонецПопытки;
Если НЕ НайденаяСтрока = Неопределено Тогда
СтруктураДанных[КлючИЗначение.Ключ] = НайденаяСтрока.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Функция - КППолучить варианты
//
// Параметры:
// КоммерческоеПредложение - ДокументСсылка - Коммерческое предложение.
//
// Возвращаемое значение:
// СписокЗначений - Список вариантов.
//
Функция КППолучитьВарианты(КоммерческоеПредложение) Экспорт
СписокВариантов = Новый СписокЗначений;
//Запрос = Новый Запрос;
//Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
// | ДокументТовары.CRM_ИДВарианта КАК ИДВарианта,
// | ДокументТовары.CRM_Утвержден КАК Утвержден,
// | МАКСИМУМ(ДокументТовары.CRM_ИмяВарианта) КАК ИмяВарианта
// |ИЗ
// | Документ.КоммерческоеПредложениеКлиенту.Товары КАК ДокументТовары
// |ГДЕ
// | ДокументТовары.Ссылка = &Ссылка
// |
// |СГРУППИРОВАТЬ ПО
// | ДокументТовары.CRM_ИДВарианта,
// | ДокументТовары.CRM_Утвержден";
//
//Запрос.УстановитьПараметр("Ссылка", КоммерческоеПредложение);
//
//Выборка = Запрос.Выполнить().Выбрать();
//
//Пока Выборка.Следующий() Цикл
//
// СписокВариантов.Добавить(Выборка.ИДВарианта, ?(ЗначениеЗаполнено(Выборка.ИмяВарианта), Выборка.ИмяВарианта, НСтр("ru='Вариант ';en='Option'")+Строка(Выборка.ИДВарианта))+?(Выборка.Утвержден,НСтр("ru=' (Утв.)'"),""),Выборка.Утвержден);
//
//КонецЦикла;
ТаблицаВариантов = КоммерческоеПредложение.Товары.Выгрузить();
ТаблицаВариантов.Свернуть("CRM_ИДВарианта, CRM_Утвержден, CRM_ИмяВарианта");
ТаблицаВариантов.Колонки["CRM_ИДВарианта"].Имя = "ИДВарианта";
ТаблицаВариантов.Колонки["CRM_Утвержден"].Имя = "Утвержден";
ТаблицаВариантов.Колонки["CRM_ИмяВарианта"].Имя = "ИмяВарианта";
Для Каждого Выборка Из ТаблицаВариантов Цикл
СписокВариантов.Добавить(Выборка.ИДВарианта, ?(ЗначениеЗаполнено(Выборка.ИмяВарианта), Выборка.ИмяВарианта, НСтр("ru='Вариант ';en='Option'")+Строка(Выборка.ИДВарианта))+?(Выборка.Утвержден,НСтр("ru=' (Утв.)'"),""),Выборка.Утвержден);
КонецЦикла;
СписокВариантов.СортироватьПоЗначению(НаправлениеСортировки.Возр);
Возврат СписокВариантов;
КонецФункции
ПоказатьПри печате пишет Печатная форма недоступна
Прикрепленные файлы:
По теме из базы знаний
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот