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