Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Функция СведенияОВнешнейОбработке() Экспорт
- СведенияОбОбработке = Новый Структура;
- // 1. Вид - вид обработки.
- // Тип данных - строка, допустимо одно из 6 значений.
- // Значения.
- // 1) Глобальные - "ДополнительнаяОбработка", "ДополнительныйОтчет"
- // 2) Назначаемые - "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма" или "СозданиеСвязанныхОбъектов".
- СведенияОбОбработке.Вставить("Вид", "ПечатнаяФорма");
- // 2. Назначение - объект, для которого назначается данная обработка,
- // Массив строк имен объектов метаданных.
- // Примеры значений массива - "Документ.АвансовыйОтчет" или "Справочник.*", где * - означает все объекта данного вида.
- // Для глобальных (не назначаемых) обработок параметр не имеет смысла.
- ОбъектыМетаданных = Новый Массив;
- ОбъектыМетаданных.Добавить("Документ.РеализацияТоваровУслуг");
- СведенияОбОбработке.Вставить("Назначение", ОбъектыМетаданных);
- // 3. Наименование - название обработки, произвольное наименование
- // Тип данных - произвольная строка.
- // Данное наименование будет отображаться в списке дополнительных обработок.
- СведенияОбОбработке.Вставить("Наименование ", "Печать РасходнойНакладной");
- // 4. Версия - номер версии обработки
- // Тип данных - строка в формате "ХХ.ХХ".
- // Обозначает версию данной обработки, данная версия будет отображаться в списке дополнительных отчетов и обработок.
- СведенияОбОбработке.Вставить("Версия ", "1.0");
- // 5. БезопасныйРежим - режим контроля прав пользователя.
- // Тип данных - булево.
- СведенияОбОбработке.Вставить("БезопасныйРежим", Ложь);
- // 6. Информация - краткое описание обработки.
- // Тип данных - строка.
- // Данное описание будет отображаться в списке дополнительных обработок.
- СведенияОбОбработке.Вставить("Информация", "Печать Расходной Накладной");
- // 7. Команды - действия предоставляемые обработкой.
- // Тип данных - таблица значений.
- // Таблица содержит 5 колонок:
- // 1) Представление. Наименование команды в пользовательском интерфейсе;
- // 2) Идентификатор. Для печатных форм список макетов, для остальных обработок любая строка, уникальная для данной обработки.
- // 3) Использование. Строка, одно из значений -
- // - ОткрытиеФормы. Открывает форму обработки.
- // - ВызовКлиентскогоМетода. Вызов клиентского экспортного метода модуля формы
- // - ВызовСерверногоМетода. Вызов экспортного серверного метода модуля объекта.
- // Для внешних печатных форм нужно указывать последнее значение.
- // 4) ПоказыватьОповещение. Булево, нужно ли показывать оповещение при начале и окончании действия.
- // 5) Модификатор. Для внешних печатных форм должно содержаться значение "ПечатьMXL".
- ТаблицаКоманд = ПолучитьТаблицуКоманд();
- ДобавитьКоманду(ТаблицаКоманд, "Печать Расходная Накаладная", "ПФ_MXL_РасходнаяНакладная", "ВызовСерверногоМетода", Ложь, "ПечатьMXL" );
- СведенияОбОбработке.Вставить("Команды", ТаблицаКоманд);
- Возврат СведенияОбОбработке;
- КонецФункции // СведенияОВнешнейОбработке()
- Функция ПолучитьТаблицуКоманд()
- ТаблицаКоманд = Новый ТаблицаЗначений;
- ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
- ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
- ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
- ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
- ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
- Возврат ТаблицаКоманд;
- КонецФункции
- Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
- НоваяКоманда = ТаблицаКоманд.Добавить();
- НоваяКоманда.Представление = Представление;
- НоваяКоманда.Идентификатор = Идентификатор;
- НоваяКоманда.Использование = Использование;
- НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
- НоваяКоманда.Модификатор = Модификатор;
- КонецПроцедуры
- Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты) Экспорт
- КонецПроцедуры
- Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода = Неопределено) Экспорт
- УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ПФ_MXL_РасходнаяНакладная", "Заголовок табличного документа", СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати, Неопределено));
- //Код на печать в документе //УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"РасходнаяНакладная","Расходная накладная",СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати, Неопределено),,"Документ.РеализацияТоваровУслуг.ПФ_MXL_РасходнаяНакладная");
- КонецПроцедуры // Печать()
- Функция СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
- УстановитьПривилегированныйРежим(Истина);
- ТабличныйДокумент = Новый ТабличныйДокумент;
- ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_РасходнаяНакладная";
- КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
- ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
- ИспользоватьРучныеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
- ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
- ИспользоватьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
- ЗапросПоСкладам = Новый Запрос;
- ЗапросПоСкладам.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
- | РеализацияТоваровУслугТовары.Склад КАК Склад,
- | РеализацияТоваровУслугТовары.Склад.ИспользоватьСерииНоменклатуры КАК ИспользоватьСерииНоменклатуры
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
- |ГДЕ
- | РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
- | И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
- |
- |УПОРЯДОЧИТЬ ПО
- | Ссылка
- |ИТОГИ ПО
- | ИспользоватьСерииНоменклатуры";
- ЗапросПоСкладам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
- // Создание массива для проверки: какие из докуметов не попали в выборку
- МассивПроверки = Новый Массив;
- Для Каждого Ссылка Из МассивОбъектов Цикл
- МассивПроверки.Добавить(Ссылка);
- КонецЦикла;
- ДеревоОбъектов = ЗапросПоСкладам.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
- Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
- ЗапросПоТоварам = Новый Запрос;
- ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
- ЗапросПоТоварам.УстановитьПараметр("МассивСкладов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Склад"));
- Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
- ТекстЗапросаПоТоварам =
- "ВЫБРАТЬ
- | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
- | РеализацияТоваровУслугТовары.Склад КАК Склад,
- | РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
- | РеализацияТоваровУслугТовары.Количество КАК Количество,
- | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
- | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
- | РеализацияТоваровУслугТовары.Упаковка КАК Упаковка,
- | """" КАК Серия
- |ПОМЕСТИТЬ ТаблицаТоваров
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
- |ГДЕ
- | РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
- | И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
- | И НЕ(РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
- | И РеализацияТоваровУслугТовары.СтатусУказанияСерий В (2, 4, 6, 8, 10))
- |
- |ОБЪЕДИНИТЬ ВСЕ
- |
- |ВЫБРАТЬ
- | РеализацияТоваровУслугСерии.Ссылка,
- | РеализацияТоваровУслугСерии.Склад,
- | РеализацияТоваровУслугСерии.Количество,
- | РеализацияТоваровУслугСерии.Количество,
- | РеализацияТоваровУслугСерии.Номенклатура,
- | РеализацияТоваровУслугСерии.Характеристика,
- | ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка),
- | РеализацияТоваровУслугСерии.Серия
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
- | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
- | ПО РеализацияТоваровУслугСерии.Ссылка = ТаблицаТовары.Ссылка
- | И РеализацияТоваровУслугСерии.Номенклатура = ТаблицаТовары.Номенклатура
- | И РеализацияТоваровУслугСерии.Характеристика = ТаблицаТовары.Характеристика
- | И РеализацияТоваровУслугСерии.Склад = ТаблицаТовары.Склад
- | И РеализацияТоваровУслугСерии.ДокументРезерваСерий = ТаблицаТовары.ДокументРезерваСерий
- |ГДЕ
- | РеализацияТоваровУслугСерии.Ссылка В(&МассивОбъектов)
- | И РеализацияТоваровУслугСерии.Склад В(&МассивСкладов)
- | И РеализацияТоваровУслугСерии.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
- |
- |СГРУППИРОВАТЬ ПО
- | РеализацияТоваровУслугСерии.Ссылка,
- | РеализацияТоваровУслугСерии.Склад,
- | РеализацияТоваровУслугСерии.Номенклатура,
- | РеализацияТоваровУслугСерии.Характеристика,
- | РеализацияТоваровУслугСерии.Серия,
- | РеализацияТоваровУслугСерии.Количество,
- | РеализацияТоваровУслугСерии.Количество
- |
- |ИМЕЮЩИЕ
- | МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (2, 4, 6, 8, 10)
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | ТаблицаТоваров.Ссылка,
- | ТаблицаТоваров.Склад,
- | СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
- | СУММА(ТаблицаТоваров.Количество) КАК Количество,
- | ТаблицаТоваров.Номенклатура,
- | ТаблицаТоваров.Характеристика,
- | ТаблицаТоваров.Упаковка,
- | ВЫБОР
- | КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
- | ТОГДА NULL
- | ИНАЧЕ ТаблицаТоваров.Серия
- | КОНЕЦ КАК Серия
- |ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
- |ИЗ
- | ТаблицаТоваров КАК ТаблицаТоваров
- |
- |СГРУППИРОВАТЬ ПО
- | ТаблицаТоваров.Ссылка,
- | ТаблицаТоваров.Склад,
- | ТаблицаТоваров.Номенклатура,
- | ТаблицаТоваров.Характеристика,
- | ТаблицаТоваров.Упаковка,
- | ВЫБОР
- | КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
- | ТОГДА NULL
- | ИНАЧЕ ТаблицаТоваров.Серия
- | КОНЕЦ
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | ТаблицаТоваров.Ссылка КАК Ссылка,
- | ТаблицаТоваров.Ссылка.Организация КАК Организация,
- | ТаблицаТоваров.Ссылка.Контрагент КАК Контрагент,
- | ТаблицаТоваров.Ссылка.Номер КАК Номер,
- | ТаблицаТоваров.Ссылка.Дата КАК Дата,
- | ТаблицаТоваров.Ссылка.Организация.Префикс КАК Префикс,
- | ТаблицаТоваров.Склад КАК Склад,
- | ВЫБОР
- | КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
- | ТОГДА ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения)
- | ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Упаковка.ЕдиницаИзмерения)
- | КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
- | ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
- | ТаблицаТоваров.КоличествоУпаковок КАК КоличествоУпаковок,
- | ТаблицаТоваров.Количество КАК Количество,
- | ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
- | ТаблицаТоваров.Номенклатура.Код КАК Код,
- | ТаблицаТоваров.Номенклатура.Артикул КАК Артикул,
- | ТаблицаТоваров.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
- | ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
- | ТаблицаТоваров.Номенклатура КАК Номенклатура,
- | ТаблицаТоваров.Характеристика КАК Характеристика,
- | ВЫБОР
- | КОГДА ЕСТЬNULL(ТаблицаТоваров.Упаковка.Коэффициент, 1) = 1
- | ТОГДА НЕОПРЕДЕЛЕНО
- | ИНАЧЕ ТаблицаТоваров.Упаковка.Наименование
- | КОНЕЦ КАК Упаковка,
- | ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии,
- | ВЫБОР
- | КОГДА ТаблицаТоваров.Ссылка.ВернутьМногооборотнуюТару
- | И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
- | ТОГДА ИСТИНА
- | ИНАЧЕ ЛОЖЬ
- | КОНЕЦ КАК ЭтоВозвратнаяТара
- |ИЗ
- | СуммированнаяТаблицаТоваров КАК ТаблицаТоваров
- |
- |УПОРЯДОЧИТЬ ПО
- | Ссылка,
- | Склад,
- | Номенклатура,
- | Характеристика
- |ИТОГИ ПО
- | Ссылка,
- | Склад,
- | Номенклатура,
- | Характеристика
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | ТаблицаТоваров.Ссылка КАК Ссылка,
- | ТаблицаТоваров.Склад КАК Склад,
- | ТаблицаТоваров.Номенклатура КАК Номенклатура,
- | ТаблицаТоваров.Характеристика КАК Характеристика,
- | ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
- |ИЗ
- | ТаблицаТоваров КАК ТаблицаТоваров
- |ГДЕ
- | ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
- | И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL
- |
- |УПОРЯДОЧИТЬ ПО
- | Ссылка,
- | Склад,
- | Номенклатура,
- | Характеристика,
- | ПредставлениеСерии";
- ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
- РезультатЗапроса = ЗапросПоТоварам.ВыполнитьПакет();
- ДанныеПечати = РезультатЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- ВыборкаПоСериям = РезультатЗапроса[3].Выбрать();
- Иначе
- ТекстЗапросаПоТоварам =
- "ВЫБРАТЬ
- | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
- | РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация,
- | РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
- | РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
- | РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
- | РеализацияТоваровУслугТовары.Ссылка.Организация.Префикс КАК Префикс,
- | РеализацияТоваровУслугТовары.Склад КАК Склад,
- | ВЫБОР
- | КОГДА РеализацияТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
- | ТОГДА ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения)
- | ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Упаковка.ЕдиницаИзмерения)
- | КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
- | ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
- | РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
- | РеализацияТоваровУслугТовары.Количество КАК Количество,
- | РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
- | РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
- | РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
- | РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
- | """" КАК ПредставлениеСерии,
- | ВЫБОР
- | КОГДА ЕСТЬNULL(РеализацияТоваровУслугТовары.Упаковка.Коэффициент, 1) = 1
- | ТОГДА НЕОПРЕДЕЛЕНО
- | ИНАЧЕ РеализацияТоваровУслугТовары.Упаковка.Наименование
- | КОНЕЦ КАК Упаковка,
- | ВЫБОР
- | КОГДА РеализацияТоваровУслугТовары.Ссылка.ВернутьМногооборотнуюТару
- | И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
- | ТОГДА ИСТИНА
- | ИНАЧЕ ЛОЖЬ
- | КОНЕЦ КАК ЭтоВозвратнаяТара,
- | NULL КАК НастройкаИспользованияСерий,
- | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
- | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
- |ГДЕ
- | РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
- | И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
- | И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
- |
- |УПОРЯДОЧИТЬ ПО
- | Ссылка,
- | Склад,
- | РеализацияТоваровУслугТовары.НомерСтроки
- |ИТОГИ ПО
- | Ссылка,
- | Склад,
- | Номенклатура,
- | Характеристика";
- ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
- ДанныеПечати = ЗапросПоТоварам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- КонецЕсли;
- ПервыйДокумент = Истина;
- //Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_РасходнаяНакладная");
- Макет=ПолучитьМакет("ПФ_MXL_РасходнаяНакладная");
- ШиринаОтсутствующихОбластей = 0;
- Если НЕ ВыводитьКоды Тогда
- ШиринаОтсутствующихОбластей = Макет.Область("КолонкаКодов").ШиринаКолонки;
- КонецЕсли;
- Если Не ИспользоватьУпаковки Тогда
- ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаКоличестваУпаковок").ШиринаКолонки;
- ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаПредставленияУпаковок").ШиринаКолонки;
- КонецЕсли;
- // Раздвинуть колонку "КолонкаТоваров" на ширину отсутствующих областей
- Макет.Область("КолонкаТоваров").ШиринаКолонки = Макет.Область("КолонкаТоваров").ШиринаКолонки + ШиринаОтсутствующихОбластей;
- РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление");
- Пока ДанныеПечати.Следующий() Цикл
- ИндексМассиваПроверки = МассивПроверки.Найти(ДанныеПечати.Ссылка);
- Если ИндексМассиваПроверки <> Неопределено Тогда
- МассивПроверки.Удалить(ИндексМассиваПроверки);
- КонецЕсли;
- // Для печати комплектов
- Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено Тогда
- КомплектПечатиПоСсылке = КомплектыПечати.Найти(ДанныеПечати.Ссылка,"Ссылка");
- Если КомплектПечатиПоСсылке = Неопределено Тогда
- КомплектПечатиПоСсылке = КомплектыПечати[0];
- КонецЕсли;
- Если КомплектПечатиПоСсылке.Экземпляров = 0 Тогда
- Продолжить
- КонецЕсли;
- КонецЕсли;
- НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
- ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
- ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- Пока ВыборкаПоСкладам.Следующий() Цикл
- Если Не ПервыйДокумент Тогда
- ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
- КонецЕсли;
- ПервыйДокумент = Ложь;
- Область = Макет.ПолучитьОбласть("Заголовок");
- СтруктураДанныхЗаголовок = Новый Структура;
- СтруктураДанныхЗаголовок.Вставить("ТекстЗаголовка", НСтр("ru='Расходная накладная'"));
- ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, Область, ДанныеПечати.Ссылка);
- Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
- ТабличныйДокумент.Вывести(Область);
- Область = Макет.ПолучитьОбласть("Шапка");
- СтруктураДанныхШапка = Новый Структура;
- СтруктураДанныхШапка.Вставить("ПредставлениеРаспоряжения", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, НСтр("ru='Реализация товаров'")));
- СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ВыборкаПоСкладам.Склад);
- СтруктураДанныхШапка.Вставить("Склад", ВыборкаПоСкладам.Склад);
- Область.Параметры.Заполнить(СтруктураДанныхШапка);
- ТабличныйДокумент.Вывести(Область);
- Область = Макет.ПолучитьОбласть("Поставщик");
- СтруктураДанныхПоставщик = Новый Структура;
- СтруктураДанныхПоставщик.Вставить("ПредставлениеОрганизации",
- ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Организация, ВыборкаПоСкладам.Дата),
- "ПолноеНаименование"));
- СтруктураДанныхПоставщик.Вставить("Организация", ВыборкаПоСкладам.Организация);
- Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
- ТабличныйДокумент.Вывести(Область);
- Область = Макет.ПолучитьОбласть("Покупатель");
- СтруктураДанныхПокупатель = Новый Структура;
- СтруктураДанныхПоставщик.Вставить("ПредставлениеПартнера",
- ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Контрагент, ВыборкаПоСкладам.Дата),
- "ПолноеНаименование"));
- СтруктураДанныхПоставщик.Вставить("Контрагент", ВыборкаПоСкладам.Контрагент);
- Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
- ТабличныйДокумент.Вывести(Область);
- Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
- ТабличныйДокумент.Вывести(Область);
- Если ВыводитьКоды Тогда
- Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
- СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", КолонкаКодов);
- Область.Параметры.Заполнить(СтруктураДанныхКоды);
- ТабличныйДокумент.Присоединить(Область);
- КонецЕсли;
- Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
- ТабличныйДокумент.Присоединить(Область);
- Если ИспользоватьУпаковки Тогда
- Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиУпаковок");
- ТабличныйДокумент.Присоединить(Область);
- КонецЕсли;
- Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиКоличества");
- ТабличныйДокумент.Присоединить(Область);
- ОбластьНачалоСтроки = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
- ОбластьКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
- ОбластьКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
- ОбластьКолонкаУпаковок = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиУпаковок");
- ОбластьКолонкаКоличества = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиКоличества");
- СчетСтрок = 1;
- ВыборкаПоСсылкамТЧ = ВыборкаПоСкладам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- Пока ВыборкаПоСсылкамТЧ.Следующий() Цикл
- ВыборкаПоНоменклатуреТЧ = ВыборкаПоСсылкамТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- Пока ВыборкаПоНоменклатуреТЧ.Следующий() Цикл
- ВыборкаПоСтрокамТЧ = ВыборкаПоНоменклатуреТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- ПерваяСтрока = Истина;
- СтрокаУпаковок = "";
- СтрокаКоличесткаУпаковок = "";
- СтрокаЕдиницИзмерений = "";
- СтрокаКоличества = "";
- Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
- Если ВыборкаПоСтрокамТЧ.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
- Если ПерваяСтрока Тогда
- СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
- ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
- СчетСтрок = СчетСтрок + 1;
- ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
- Если ВыводитьКоды Тогда
- СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[КолонкаКодов]);
- ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
- КонецЕсли;
- СтруктураПоиска = Новый Структура;
- СтруктураПоиска.Вставить("Ссылка", ВыборкаПоСтрокамТЧ.Ссылка);
- СтруктураПоиска.Вставить("Склад", ВыборкаПоСтрокамТЧ.Склад);
- СтруктураПоиска.Вставить("Номенклатура", ВыборкаПоСтрокамТЧ.Номенклатура);
- СтруктураПоиска.Вставить("Характеристика", ВыборкаПоСтрокамТЧ.Характеристика);
- СтрокаСерий = "";
- Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
- СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
- КонецЦикла;
- Если СтрДлина(СтрокаСерий) <> 0 Тогда
- СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
- КонецЕсли;
- Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
- ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
- ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
- ,
- СтрокаСерий,
- ,
- ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара);
- СтруктураДанныхТовар = Новый Структура("Товар", Товар);
- ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
- ПерваяСтрока = Ложь;
- КонецЕсли;
- Если ИспользоватьУпаковки Тогда
- СтрокаУпаковок = СтрокаУпаковок + ВыборкаПоСтрокамТЧ.ПредставлениеЕдининицыИзмеренияУпаковки + Символы.ПС;
- СтрокаКоличесткаУпаковок = СтрокаКоличесткаУпаковок + ВыборкаПоСтрокамТЧ.КоличествоУпаковок + Символы.ПС;
- КонецЕсли;
- СтрокаЕдиницИзмерений = СтрокаЕдиницИзмерений + ВыборкаПоСтрокамТЧ.ПредставлениеБазовойЕдиницыИзмерения + Символы.ПС;
- СтрокаКоличества = СтрокаКоличества + ВыборкаПоСтрокамТЧ.Количество + Символы.ПС;
- ТоварССериейЭкземпляром = Истина;
- Иначе
- СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
- ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
- СчетСтрок = СчетСтрок + 1;
- ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
- Если ВыводитьКоды Тогда
- СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[КолонкаКодов]);
- ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
- КонецЕсли;
- Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
- ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
- ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
- ,
- ВыборкаПоСтрокамТЧ.ПредставлениеСерии,
- ,
- ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара);
- СтруктураДанныхТовар = Новый Структура("Товар", Товар);
- ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
- Если ИспользоватьУпаковки Тогда
- ОбластьКолонкаУпаковок.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаУпаковок);
- КонецЕсли;
- ОбластьКолонкаКоличества.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
- ТоварССериейЭкземпляром = Ложь;
- КонецЕсли;
- КонецЦикла;
- Если ТоварССериейЭкземпляром Тогда
- Если ИспользоватьУпаковки Тогда
- СтруктураДанныхКолонкаУпаковок = Новый Структура;
- СтруктураДанныхКолонкаУпаковок.Вставить("КоличествоУпаковок", СтрокаКоличесткаУпаковок);
- СтруктураДанныхКолонкаУпаковок.Вставить("ПредставлениеЕдининицыИзмеренияУпаковки", СтрокаУпаковок);
- ОбластьКолонкаУпаковок.Параметры.Заполнить(СтруктураДанныхКолонкаУпаковок);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаУпаковок);
- КонецЕсли;
- СтруктураДанныхКолонкаКоличества = Новый Структура;
- СтруктураДанныхКолонкаКоличества.Вставить("Количество", СтрокаКоличества);
- СтруктураДанныхКолонкаКоличества.Вставить("ПредставлениеБазовойЕдиницыИзмерения", СтрокаЕдиницИзмерений);
- ОбластьКолонкаКоличества.Параметры.Заполнить(СтруктураДанныхКолонкаКоличества);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
- ////////////////
- ////////////////////
- ЗапросПоУслугам=Новый Запрос;
- ЗапросПоУслугам.УстановитьПараметр("Ссылка", ВыборкаПоСкладам.Ссылка);
- ТекстЗапросаПоУслугам =
- "ВЫБРАТЬ
- | РеализацияТоваровУслугТовары.Склад КАК Склад,
- | РеализацияТоваровУслугТовары.Количество КАК Количество,
- | РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
- | РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
- | РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
- | РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
- | РеализацияТоваровУслугТовары.Номенклатура КАК Услуга,
- | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
- | РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения КАК БазоваяЕдиница,
- | РеализацияТоваровУслугТовары.КоличествоУпаковок,
- | ВЫБОР
- | КОГДА РеализацияТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
- | ТОГДА ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения)
- | ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Упаковка.ЕдиницаИзмерения)
- | КОНЕЦ КАК УпаковкаПредставление,
- | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
- |ГДЕ
- | РеализацияТоваровУслугТовары.Ссылка = &Ссылка
- | И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))";
- ЗапросПоУслугам.Текст = ТекстЗапросаПоУслугам;
- ВыборкаПоСтрокамТЧУслуг = ЗапросПоУслугам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- ////////////////////
- //Пока ДанныеПечатиУслуг.Следующий() Цикл
- //
- //ВыборкаПоСсылкамУслуг=ДанныеПечатиУслуг.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- //Пока ВыборкаПоСсылкамУслуг.Следующий() цикл
- ////ВыборкаПоСтрокамТЧУслуг = ДанныеПечатиУслуг.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- //ВыборкаПоСтрокамТЧУслуг = ВыборкаПоСсылкамУслуг.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
- Пока ВыборкаПоСтрокамТЧУслуг.СледуЮщий() цикл
- СтрокаУпаковок = "";
- СтрокаКоличесткаУпаковок = "";
- СтрокаЕдиницИзмерений = "";
- СтрокаКоличества = "";
- СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
- ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
- СчетСтрок = СчетСтрок + 1;
- ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
- Если ВыводитьКоды Тогда
- СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧУслуг[КолонкаКодов]);
- ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
- КонецЕсли;
- Если СтрДлина(СтрокаСерий) <> 0 Тогда
- СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
- КонецЕсли;
- Товар = ВыборкаПоСтрокамТЧУслуг.Услуга;
- СтруктураДанныхТовар = Новый Структура("Товар", Товар);
- ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
- СтрокаКоличества = СтрокаКоличества + ВыборкаПоСтрокамТЧУслуг.Количество + Символы.ПС;
- СтруктураДанныхКолонкаУпаковок = Новый Структура;
- //СтруктураДанныхКолонкаУпаковок.Вставить("КоличествоУпаковок", "");
- //СтруктураДанныхКолонкаУпаковок.Вставить("ПредставлениеЕдининицыИзмеренияУпаковки", "");
- СтруктураДанныхКолонкаУпаковок.Вставить("КоличествоУпаковок", ВыборкаПоСтрокамТЧУслуг.КоличествоУпаковок);
- СтруктураДанныхКолонкаУпаковок.Вставить("ПредставлениеЕдининицыИзмеренияУпаковки", ВыборкаПоСтрокамТЧУслуг.УпаковкаПредставление);
- ОбластьКолонкаУпаковок.Параметры.Заполнить(СтруктураДанныхКолонкаУпаковок);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаУпаковок);
- СтруктураДанныхКолонкаКоличества = Новый Структура;
- СтруктураДанныхКолонкаКоличества.Вставить("Количество", ВыборкаПоСтрокамТЧУслуг.Количество);
- СтруктураДанныхКолонкаКоличества.Вставить("ПредставлениеБазовойЕдиницыИзмерения", ВыборкаПоСтрокамТЧУслуг.БазоваяЕдиница);
- ОбластьКолонкаКоличества.Параметры.Заполнить(СтруктураДанныхКолонкаКоличества);
- ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
- КонецЦикла;
- //КонецЦикла;
- //КонецЦикла;
- ////////////////
- Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
- ТабличныйДокумент.Вывести(Область);
- Если ВыводитьКоды Тогда
- Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
- ТабличныйДокумент.Присоединить(Область);
- КонецЕсли;
- Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
- ТабличныйДокумент.Присоединить(Область);
- Если ИспользоватьУпаковки Тогда
- Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиУпаковок");
- ТабличныйДокумент.Присоединить(Область);
- КонецЕсли;
- Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиКоличества");
- ТабличныйДокумент.Присоединить(Область);
- Область = Макет.ПолучитьОбласть("Подписи");
- ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%'");
- ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", СчетСтрок-1);
- СтруктураДанныхИтоговаяСтрока = Новый Структура;
- СтруктураДанныхЗаголовок.Вставить("ИтоговаяСтрока", ТекстИтоговойСтроки);
- Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
- ТабличныйДокумент.Вывести(Область);
- КонецЦикла;
- // Выведем нужное количество экземпляров (при печати комплектов)
- Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено И КомплектПечатиПоСсылке.Экземпляров > 1 Тогда
- ОбластьКопирования = ТабличныйДокумент.ПолучитьОбласть(НомерСтрокиНачало,,ТабличныйДокумент.ВысотаТаблицы);
- Для Итератор = 2 По КомплектПечатиПоСсылке.Экземпляров Цикл
- ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
- ТабличныйДокумент.Вывести(ОбластьКопирования);
- КонецЦикла;
- КонецЕсли;
- УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
- КонецЦикла;
- КонецЦикла;
- Для Каждого Ссылка Из МассивПроверки Цикл
- Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'В документе %1 отсутствуют товары. Печать расходной накладной не требуется.'"),
- Ссылка);
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
- Текст,
- Ссылка);
- КонецЦикла;
- ТабличныйДокумент.АвтоМасштаб = Истина;
- Если ПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Ложь);
- КонецЕсли;
- Возврат ТабличныйДокумент;
- КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement