Snippets
Created by
Василий Котов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | &НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ОбработкаВыбораФайлов", ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораФайлов(СписокФайлов, ДополнительныеПараметры) Экспорт
ПутьКФайлу = СписокФайлов[0];
КонецПроцедуры // ()
&НаКлиенте
Процедура ЗаполнитьExcel()
Попытка
COMОбъект = Новый COMОбъект("Excel.Application");
Исключение
СообщениеОбОшибке = НСтр("ru = 'Не удалось загрузить данные из файла Excel.
|Убедитесь, что на сервере установлена программа Microsoft Excel.
|Подробности:'")
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
Попытка
Workbook = COMОбъект.Workbooks.Open(ПутьКФайлу);
Sheet = Workbook.Worksheets("Orders");
SheetVehicles = Workbook.Worksheets("Vehicles");
Исключение
COMОбъект.Quit();
COMОбъект = 0;
СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности:'") + " "
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
// Загрузка данных
Попытка
Данные = Данные();
НомерСтроки = 4;
Для каждого Заказ из Данные.Заказы Цикл
Sheet.Cells(НомерСтроки, 1).Value = Заказ.Заказ; //Номер заказа
Sheet.Cells(НомерСтроки, 4).Value = Заказ.КонтрагентНаименование;
Sheet.Cells(НомерСтроки, 5).Value = Заказ.Адрес;
Sheet.Cells(НомерСтроки, 7).Value = Заказ.ВремянноеОкно;
Sheet.Cells(НомерСтроки, 9).Value = Заказ.ВремяОбслуживанияАдрес;
Sheet.Cells(НомерСтроки, 10).Value = Заказ.ВремяОбслуживанияЗаказ;
Sheet.Cells(НомерСтроки, 11).Value = Заказ.Вес;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
НомерСтроки = 5;
Для каждого Транспорт из Данные.Транспорт Цикл
SheetVehicles.Cells(НомерСтроки, 2).Value = Транспорт.Номер; //Номер машины
SheetVehicles.Cells(НомерСтроки, 3).Value = Транспорт.Грузоподъемность; //Грузоподъемность
SheetVehicles.Cells(НомерСтроки, 18).Value = Транспорт.ВозвратНаСклад;
SheetVehicles.Cells(НомерСтроки, 22).Value = Транспорт.ВремяНачалаКонцаСмены;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Workbook.Save();
COMОбъект.Visible = Истина;
Исключение
COMОбъект.Quit();
COMОбъект = 0;
СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности:'") + " "
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиТранспорт()
Возврат Новый Структура("Номер, Грузоподъемность, ВозвратНаСклад, ВремяНачалаКонцаСмены");
КонецФункции // ()
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиЗаказ()
Возврат Новый Структура("Заказ, КонтрагентНаименование,
|Адрес, ВремянноеОкно, ВремяОбслуживанияАдрес,
|ВремяОбслуживанияЗаказ, Вес");
КонецФункции // ()
&НаСервере
Функция Данные()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТранспортныеСредства.Ссылка КАК Ссылка,
| ТранспортныеСредства.Код КАК Номер,
| ТранспортныеСредства.Наименование КАК Наименование,
| ТранспортныеСредства.ГрузоподъемностьВТоннах * 1000 КАК Грузоподъемность,
| ТранспортныеСредства.ВместимостьВКубическихМетрах КАК ВместимостьВКубическихМетрах,
| ""09:00 - 18:00"" КАК ВозвратНаСклад,
| ""TRUE"" КАК ВремяНачалаКонцаСмены
|ИЗ
| Справочник.ТранспортныеСредства КАК ТранспортныеСредства
|ГДЕ
| ТранспортныеСредства.ГрузоподъемностьВТоннах > 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Заказ,
| ЗаказКлиента.Контрагент.Наименование КАК КонтрагентНаименование,
| ЗаказКлиента.АдресДоставки КАК Адрес,
| СУММА(ВЫБОР
| КОГДА ЗаказКлиентаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ИЛИ ЗаказКлиентаТовары.Упаковка.Вес = 0
| ТОГДА ЗаказКлиентаТовары.Номенклатура.Вес
| ИНАЧЕ ЗаказКлиентаТовары.Упаковка.Вес
| КОНЕЦ * ЗаказКлиентаТовары.КоличествоУпаковок) КАК Вес,
| ""09:00 - 18:00"" КАК ВремянноеОкно,
| 600 КАК ВремяОбслуживанияАдрес,
| 120 КАК ВремяОбслуживанияЗаказ
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО ЗаказКлиента.Ссылка = ЗаказКлиентаТовары.Ссылка
|ГДЕ
| ЗаказКлиента.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗаказКлиента.Проведен = ИСТИНА
|
|СГРУППИРОВАТЬ ПО
| ЗаказКлиента.Ссылка,
| ЗаказКлиента.Номер,
| ЗаказКлиента.Контрагент.Наименование,
| ЗаказКлиента.АдресДоставки";
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ТекущаяДата()));
РезультатЗапроса = Запрос.ВыполнитьПакет();
Транспорт = РезультатЗапроса[0].Выгрузить();
Заказы = РезультатЗапроса[1].Выгрузить();
СписокЗаказов = Новый Массив;
СписокТранспорта = Новый Массив;
Для каждого ТранспортСтрока Из Транспорт Цикл
Транспорт = КолонкиТранспорт();
ЗаполнитьЗначенияСвойств(Транспорт, ТранспортСтрока);
СписокТранспорта.Добавить(Транспорт);
КонецЦикла;
Для каждого ЗаказСтрока Из Заказы Цикл
Заказ = КолонкиЗаказ();
ЗаполнитьЗначенияСвойств(Заказ, ЗаказСтрока);
СписокЗаказов.Добавить(Заказ);
КонецЦикла;
Возврат Новый Структура("Заказы, Транспорт", СписокЗаказов, СписокТранспорта);
КонецФункции // ()
&НаКлиенте
Процедура Заполнить(Команда)
ЗаполнитьExcel();
КонецПроцедуры
|
Comments (0)
You can clone a snippet to your computer for local editing. Learn more.