public object РегламентФормированияДокументовПоОрдерам_СформироватьДокументы(/*Настройка, ДатаНачала, ДатаОкончания,
Ошибка = "", СформированныеДокументы = Неопределено, УчтенныеДокументы = Неопределено*/)
{
/*//На основании указанных в настройке параметров будут созданы документы "ПТиУ" или "РТиУ".
*/
//СформированныеДокументы = Новый Массив;
//УчтенныеДокументы = Новый Массив;
//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
/*//используется для всех запросов функции
*/
/*//Получим перечень документов для обработки в соответствии с фильтрами
*/
//Запрос = Новый Запрос();
/*//Определим аргумент функции КонецПериода в зависимости от периодичности
*/
//ОписаниеПериодаДетализации = Строка(Настройка.ПериодДетализации);
/*//Получим список обрабатываемых ордеров в соответствии с отбором в настройке и поместим его в массив
*/
//СхемаКомпоновкиДанных = Справочники.НастройкиФормированияДокументовПоОрдерам.ПолучитьМакет("Настройка");
//КомпоновщикМакетаКомпоновкиДанных = Новый КомпоновщикМакетаКомпоновкиДанных;
//МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, Настройка.НастройкиКомпоновщика.Получить());
//Запрос = Новый Запрос(МакетКомпоновкиДанных.НаборыДанных.СписокОрдеров.Запрос);
//ОписаниеПараметровЗапроса = Запрос.НайтиПараметры();
//Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
//Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания));
if(true/*ТаблицаОрдеров.Количество() = 0*/)
{
//Ошибка = "Не обнаружены данные для обработки";
}
/*//Запрос обрабатывает данные ордеров для создания документов ПТиУ или РТиУ
*/
//Запрос = Новый Запрос();
//Запрос.УстановитьПараметр("ТаблицаОрдеров", ТаблицаОрдеров);
//Запрос.УстановитьПараметр("ГраницаНачала", ДатаНачала);
//Запрос.УстановитьПараметр("ГраницаОкончания", КонецДня(ДатаОкончания));
//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
/*// Порядок запросов в пакете важен, так как потом выполняем его методом ВыполнитьПакет()
*/
/*Запрос.Текст = "
|ВЫБРАТЬ *
|ПОМЕСТИТЬ ВременнаяТаблицаОрдеров
|ИЗ
| &ТаблицаОрдеров КАК ТаблицаОрдеров
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяТаблицаОрдеров.СкладскойОрдер.Ссылка КАК Ссылка,
| ВременнаяТаблицаОрдеров.СкладскойОрдер.Организация КАК Организация,
| ВременнаяТаблицаОрдеров.СкладскойОрдер.Склад КАК Склад,
| ВременнаяТаблицаОрдеров.СкладскойОрдер.Контрагент КАК Контрагент,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
| ТОГДА &ГраницаОкончания
| КОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, МЕСЯЦ)
| ТОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, МЕСЯЦ)
| ИНАЧЕ КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+")
| КОНЕЦ, ДЕНЬ) КАК Дата,
| ВЫБОР
| КОГДА ВременнаяТаблицаОрдеров.СкладскойОрдер ССЫЛКА Документ.ПриходныйОрдерНаТовары ТОГДА
| ВременнаяТаблицаОрдеров.СкладскойОрдер.ЗаказПоставщику
| КОГДА ВременнаяТаблицаОрдеров.СкладскойОрдер ССЫЛКА Документ.РасходныйОрдерНаТовары
| И ВременнаяТаблицаОрдеров.СкладскойОрдер.ДокументПередачи ССЫЛКА Документ.ЗаказПокупателя ТОГДА
| ВременнаяТаблицаОрдеров.СкладскойОрдер.ДокументПередачи
| ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| КОНЕЦ КАК Заказ
|ПОМЕСТИТЬ ДокументыИсточники
|ИЗ
| ВременнаяТаблицаОрдеров КАК ВременнаяТаблицаОрдеров
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Дата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыИсточники.Ссылка КАК Документ,
| ДокументыИсточники.Дата КАК Дата
|ИЗ
| ДокументыИсточники КАК ДокументыИсточники
|УПОРЯДОЧИТЬ ПО Дата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыИсточники.Дата КАК Дата,
| ДокументыИсточники.Организация КАК Организация,
| ДокументыИсточники.Склад КАК Склад,
| ДокументыИсточники.Контрагент КАК Контрагент,
| ДокументыИсточники.Заказ КАК Заказ
|
|ИЗ
| ДокументыИсточники КАК ДокументыИсточники
|УПОРЯДОЧИТЬ ПО Дата
|;";*/
/*//Третий запрос пакета содержит выборку документов-источников заполнения
*/
/*//Запоминаем документы, на основании которых проводим заполнение.
*/
//УчтенныеДокументы = РезультатыЗапросов[2].Выгрузить().ВыгрузитьКолонку("Документ");
/*//Четвертый запрос пакета содержит выборку по ключевым полям создаваемых документов
*/
//ВыборкаКлючейДокументов = РезультатыЗапросов[3].Выбрать();
/*//Получим не зависящие от результатов запросов данные
*/
//ОсновнойОтветственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный");
//мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
//ВидДокумента = Настройка.ВидРегулярногоДокумента;
//МетаданныеДокумента = Метаданные.Документы[ВидДокумента];
//ШаблонДокумента = Настройка.ШаблонРегулярногоДокумента;
if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
{
//СтруктураПараметровДляПолученияДоговора = ЗаполнениеДокументов.ПолучитьСтруктуруПараметровДляПолученияДоговораПокупки();
}
/*// Структура реквизитов для заполнения цен.
*/
//СтруктураРеквизитовДокументаДляЦенообразования = Новый Структура;
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("ТипЦен");
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("ВалютаДокумента");
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("КурсВзаиморасчетов");
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("КратностьВзаиморасчетов");
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("УчитыватьНДС");
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("СуммаВключаетНДС");
if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
{
//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("НДСВключенВСтоимость");
//СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов;
//ИмяРегистраЦен = "ЗаказыПоставщикам";
//ИмяИзмеренияОтбора = "ЗаказПоставщику";
}
/*//Подготовим пакет запросов для получения данных о номенклатуре указанной в ордерах
*/
/*//Данные для заполнения формируемых документов выбираются запросом с индексом [2]
*/
//ЗапросТовары = Новый Запрос();
//ЗапросТовары.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
/*ЗапросТовары.Текст =
"ВЫБРАТЬ
| ОстаткиЗаказов.Номенклатура,
| ОстаткиЗаказов.ХарактеристикаНоменклатуры,
| МИНИМУМ(ВЫРАЗИТЬ(ОстаткиЗаказов.Цена * ОстаткиЗаказов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЕСТЬNULL(ОстаткиЗаказов.ЕдиницаИзмерения.Коэффициент, 1) КАК ЧИСЛО(15, 2))) КАК Цена
|ПОМЕСТИТЬ ВТЦеныНоменклатуры
|ИЗ
| РегистрНакопления." + ИмяРегистраЦен + ".Остатки(, " + ИмяИзмеренияОтбора + " = &Заказ) КАК ОстаткиЗаказов
|
|СГРУППИРОВАТЬ ПО
| ОстаткиЗаказов.Номенклатура,
| ОстаткиЗаказов.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПриходныйОрдерТовары.Номенклатура КАК Номенклатура,
| ПриходныйОрдерТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПриходныйОрдерТовары.СерияНоменклатуры КАК СерияНоменклатуры,
| ПриходныйОрдерТовары.Коэффициент КАК Коэффициент,
| ПриходныйОрдерТовары.Количество КАК Количество
|ПОМЕСТИТЬ ВТНоменклатураОрдеров
|ИЗ
| Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
| ПО ПриходныйОрдерТовары.Ссылка = ДокументыИсточники.Ссылка
|ГДЕ
| ДокументыИсточники.Дата = &Дата
| И ДокументыИсточники.Склад = &Склад
| И ДокументыИсточники.Организация = &Организация
| И ДокументыИсточники.Контрагент = &Контрагент
| И ДокументыИсточники.Заказ = &Заказ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РасходныйОрдерТовары.Номенклатура,
| РасходныйОрдерТовары.ХарактеристикаНоменклатуры,
| РасходныйОрдерТовары.СерияНоменклатуры,
| РасходныйОрдерТовары.Коэффициент,
| РасходныйОрдерТовары.Количество
|ИЗ
| Документ.РасходныйОрдерНаТовары.Товары КАК РасходныйОрдерТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
| ПО РасходныйОрдерТовары.Ссылка = ДокументыИсточники.Ссылка
|ГДЕ
| ДокументыИсточники.Дата = &Дата
| И ДокументыИсточники.Склад = &Склад
| И ДокументыИсточники.Организация = &Организация
| И ДокументыИсточники.Контрагент = &Контрагент
| И ДокументыИсточники.Заказ = &Заказ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТНоменклатураОрдеров.Номенклатура,
| ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры,
| ВТНоменклатураОрдеров.СерияНоменклатуры,
| ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
| ВТНоменклатураОрдеров.Номенклатура.СтавкаНДС КАК СтавкаНДС,
| ЕСТЬNULL(ВТЦеныНоменклатуры.Цена, 0) КАК Цена,
| СУММА(ВТНоменклатураОрдеров.Количество * ВТНоменклатураОрдеров.Коэффициент / ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Количество
|ИЗ
| ВТНоменклатураОрдеров КАК ВТНоменклатураОрдеров
| ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныНоменклатуры КАК ВТЦеныНоменклатуры
| ПО ВТНоменклатураОрдеров.Номенклатура = ВТЦеныНоменклатуры.Номенклатура
| И ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры = ВТЦеныНоменклатуры.ХарактеристикаНоменклатуры
|
|СГРУППИРОВАТЬ ПО
| ВТНоменклатураОрдеров.СерияНоменклатуры,
| ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры,
| ВТНоменклатураОрдеров.Номенклатура,
| ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков,
| ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
| ВТНоменклатураОрдеров.Номенклатура.СтавкаНДС,
| ЕСТЬNULL(ВТЦеныНоменклатуры.Цена, 0)
|
|ИМЕЮЩИЕ
| СУММА(ВТНоменклатураОрдеров.Количество * ВТНоменклатураОрдеров.Коэффициент / ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) > 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВТЦеныНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВТНоменклатураОрдеров";*/
/*//Если документов больше двух, то покажем индикатор процесса
*/
if(true/*ВыборкаКлючейДокументов.Количество()>2*/)
{
//ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
//ФормаИндикатора.МаксимальноеЗначение = ВыборкаКлючейДокументов.Количество();
//ФормаИндикатора.КомментарийОбработкиДанных = "Формирование документов";
//ФормаИндикатора.НаименованиеОбработкиДанных = "Формирование документов";
//ФормаИндикатора.Открыть();
}
while(true/*ВыборкаКлючейДокументов.Следующий()*/)
{
/*//Получим исходные данные для заполнения документа.
*/
/*//Параметрами запросов будут значения ключа формируемого документа.
*/
//КлючДокумента = Новый Структура("Дата,Организация,Склад,Контрагент,Заказ");
//ЗаполнитьЗначенияСвойств(КлючДокумента, ВыборкаКлючейДокументов);
//ЗаполнитьЗначенияПараметровЗапроса(ЗапросТовары, КлючДокумента);
//ДанныеТовары = ЗапросТовары.ВыполнитьПакет().Получить(2);
/*//ДОКУМЕНТ "ПТиУ" / "РТиУ"
*/
//НовыйДокумент = Документы[ВидДокумента].СоздатьДокумент();
/*//По ключам документа заполняем реквизиты шапки
*/
//ЗаполнитьЗначенияСвойств(НовыйДокумент, КлючДокумента);
/*//Если в настройке указан шаблон - реквизиты шапки возьмем из шаблона
*/
if(true/*ЗначениеЗаполнено(ШаблонДокумента)*/)
{
}
/*//Признаки отражения в учете берем из настройки
*/
//ЗаполнитьЗначенияСвойств(НовыйДокумент, Настройка, "ОтражатьВУправленческомУчете,ОтражатьВБухгалтерскомУчете,ОтражатьВНалоговомУчете");
//НовыйДокумент.Дата = КлючДокумента.Дата;
if(true/*ЗначениеЗаполнено(КлючДокумента.Заказ) И НЕ ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
{
//НовыйДокумент.Сделка = КлючДокумента.Заказ;
}
//НовыйДокумент.Ответственный = ОсновнойОтветственный;
//НовыйДокумент.Комментарий = "Заполнено по ордерам";
/*//Заполняем реквизиты, специфические для вида документа
*/
if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
{
//НовыйДокумент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
//НовыйДокумент.СкладОрдер = КлючДокумента.Склад;
//НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
}
/*//Заполняем реквизиты шапки, зависимые от других реквизитов
*/
if(true/*ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
{
//ЗаполнитьЗначенияСвойств(НовыйДокумент, НовыйДокумент.Сделка, "Контрагент, ДоговорКонтрагента, ВалютаДокумента, ТипЦен, Организация, УчитыватьНДС, СуммаВключаетНДС");
}
if(true/*ЗначениеЗаполнено(НовыйДокумент.ДоговорКонтрагента)*/)
{
if(true/*НЕ ЗначениеЗаполнено(НовыйДокумент.ВалютаДокумента)*/)
{
//НовыйДокумент.ВалютаДокумента = НовыйДокумент.ДоговорКонтрагента.ВалютаВзаиморасчетов;
}
//СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(НовыйДокумент.ДоговорКонтрагента.ВалютаВзаиморасчетов, НовыйДокумент.Дата);
//НовыйДокумент.КурсВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Курс;
//НовыйДокумент.КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
}
//НовыйДокумент.Товары.Загрузить(ДанныеТовары.Выгрузить());
/*//Заполнение цен
*/
if(true/*ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
{
/*//Цены в табличной части заполняются по заказу. Необходимо рассчитать сумму и сумму НДС
*/
}
if(true/*НовыйДокумент.ОтражатьВБухгалтерскомУчете*/)
{
/*//счета учета номенклатуры в ТЧ
*/
//НовыйДокумент.ЗаполнитьСчетаУчетаВТабЧасти(НовыйДокумент.Товары, "Товары", НовыйДокумент.ОтражатьВБухгалтерскомУчете, НовыйДокумент.ОтражатьВНалоговомУчете);
/*//счета в шапке
*/
//ЗаполнитьЗначенияСвойств(НовыйДокумент, НовыйДокумент.ЗаполнитьСтруктуруСчетовУчетаШапки(НовыйДокумент.ОтражатьВБухгалтерскомУчете, НовыйДокумент.ОтражатьВНалоговомУчете));
}
/*//Сохраняем документ
*/
//Сообщение = "Ошибка при записи документа " + НовыйДокумент.Метаданные().Синоним + ": ";
/*//Запоминаем созданный документ
*/
//СформированныеДокументы.Добавить(НовыйДокумент.Ссылка);
/*//Обновим индикатор выполнения
*/
if(true/*ФормаИндикатора <> Неопределено*/)
{
//ФормаИндикатора.КомментарийЗначения = "" + НовыйДокумент.Ссылка;
//ФормаИндикатора.Значение = ФормаИндикатора.Значение + 1;
//ОбработкаПрерыванияПользователя();
}
}
if(true/*ФормаИндикатора <> Неопределено*/)
{
//ФормаИндикатора.Закрыть();
}
return null;
}