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