&НаСервере
Функция ВыгрузитьУстановкиЦенВJSON(ПутьКФайлу, ДатаНачала, ДатаОкончания, ВидыЦен, ИдентификаторыВидовЦенПриемника)
ТекущийДокументСсылка = Неопределено;
ОписаниеДокумента = Неопределено;
МассивСтрок = Новый Массив;
МассивДанных = Новый Соответствие;
Записано = 0;
КоличествоТоваров = 0;
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.ОткрытьФайл(ПутьКФайлу,,, ПараметрыЗаписи);
// Начало массива документов
ЗаписьJSON.ЗаписатьНачалоМассива();
Если ВыгружатьАвтораДокумента Тогда
ДопПолеОтветственный = СтрШаблон("
| УстановкаЦенНоменклатуры.%1 КАК %1,", ИмяРеквизитаОтветственный);
Иначе
ДопПолеОтветственный = "";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = СтрШаблон(
"ВЫБРАТЬ
| УстановкаЦенНоменклатуры.Ссылка КАК Ссылка,
| УНИКАЛЬНЫЙИДЕНТИФИКАТОР(УстановкаЦенНоменклатуры.Ссылка) КАК ИдДокумента,
| УстановкаЦенНоменклатуры.Номер КАК Номер,
| УстановкаЦенНоменклатуры.Дата КАК Дата," + ДопПолеОтветственный + "
| ЗапросТоваров.Номенклатура КАК Номенклатура,
| УНИКАЛЬНЫЙИДЕНТИФИКАТОР(ЗапросТоваров.Номенклатура) КАК ИдНоменклатуры,
| ЗапросТоваров.Характеристика КАК Характеристика,
| ЗапросТоваров.ВидЦены КАК ВидЦены,
| УНИКАЛЬНЫЙИДЕНТИФИКАТОР(ЗапросТоваров.ВидЦены) КАК ИдВидаЦены,
| ЗапросТоваров.Цена КАК Цена%3
|ИЗ
| Документ.%1 КАК УстановкаЦенНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| УстановкаЦенНоменклатурыТовары.Ссылка КАК Ссылка,
| УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
| УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
| УстановкаЦенНоменклатурыТовары.Характеристика КАК Характеристика,
| УстановкаЦенНоменклатурыТовары.ВидЦены КАК ВидЦены,
| УстановкаЦенНоменклатурыТовары.Цена КАК Цена%4
| ИЗ
| Документ.%1.%2 КАК УстановкаЦенНоменклатурыТовары) КАК ЗапросТоваров
| ПО УстановкаЦенНоменклатуры.Ссылка = ЗапросТоваров.Ссылка
|ГДЕ
| УстановкаЦенНоменклатуры.Проведен = ИСТИНА И УстановкаЦенНоменклатуры.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗапросТоваров.ВидЦены В(&ВидыЦен)", ИмяДокументаУстановкаЦенНоменклатуры, ИмяТаблицыТоваровДокумента,
?(ВыгружатьПолеЦенаИзмененаВручную, ", ЗапросТоваров.ЦенаИзмененаВручную КАК ЦенаИзмененаВручную", ""), ?(ВыгружатьПолеЦенаИзмененаВручную, ", УстановкаЦенНоменклатурыТовары.ЦенаИзмененаВручную КАК ЦенаИзмененаВручную", ""));
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Запрос.УстановитьПараметр("ВидыЦен", ВидыЦен);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Цена = 0 Тогда
Продолжить;
КонецЕсли;
// Если перешли к новому документу — записываем предыдущий (если был)
Если ТекущийДокументСсылка <> Неопределено И ТекущийДокументСсылка <> Выборка.Ссылка Тогда
ЗаписатьДокументВJSON(ЗаписьJSON, ОписаниеДокумента, МассивСтрок, ИмяТаблицыТоваровДокумента);
Записано = Записано + 1;
КоличествоТоваров = КоличествоТоваров + МассивСтрок.Количество();
МассивСтрок.Очистить();
ТекущийДокументСсылка = Неопределено;
ОписаниеДокумента = Неопределено;
КонецЕсли;
Если ОписаниеДокумента = Неопределено Тогда
ОписаниеДокумента = Новый Структура;
ОписаниеДокумента.Вставить("Документ", Строка(Выборка.ИдДокумента));
ОписаниеДокумента.Вставить("Номер", Выборка.Номер);
ОписаниеДокумента.Вставить("Дата", Выборка.Дата);
Если ВыгружатьАвтораДокумента Тогда
ОписаниеДокумента.Вставить(ИмяРеквизитаОтветственный, Строка(Выборка[ИмяРеквизитаОтветственный]));
КонецЕсли;
КонецЕсли;
Если ТекущийДокументСсылка = Неопределено Тогда
ТекущийДокументСсылка = Выборка.Ссылка;
МассивСтрок = Новый Массив;
КонецЕсли;
СтрокаТЧ = Новый Структура;
СтрокаТЧ.Вставить("Номенклатура", Строка(Выборка.ИдНоменклатуры));
Если ВыгружатьНаименованиеНоменклатуры Тогда
СтрокаТЧ.Вставить("НаименованиеНоменклатуры", Строка(Выборка.Номенклатура));
КонецЕсли;
ИдВидаЦены = ИдентификаторыВидовЦенПриемника[Выборка.ВидЦены];
Если Не ЗначениеЗаполнено(ИдВидаЦены) Тогда
ИдВидаЦены = Строка(Выборка.ИдВидаЦены);
КонецЕсли;
СтрокаТЧ.Вставить("ВидЦены", ИдВидаЦены);
Если ВыгружатьНаименованиеВидаЦены Тогда
СтрокаТЧ.Вставить("НаименованиеВидаЦены", Строка(Выборка.ВидЦены));
КонецЕсли;
СтрокаТЧ.Вставить("Цена", Выборка.Цена);
Если ВыгружатьПолеЦенаИзмененаВручную Тогда
СтрокаТЧ.Вставить("ЦенаИзмененаВручную", Выборка.ЦенаИзмененаВручную);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТЧ);
КонецЦикла;
// Записываем последний документ
Если ТекущийДокументСсылка <> Неопределено Тогда
ЗаписатьДокументВJSON(ЗаписьJSON, ОписаниеДокумента, МассивСтрок, ИмяТаблицыТоваровДокумента);
Записано = Записано + 1;
КоличествоТоваров = КоличествоТоваров + МассивСтрок.Количество();
КонецЕсли;
// Конец массива документов
ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.Закрыть();
Результат = Новый Структура;
Результат.Вставить("ИмяФайла", ПутьКФайлу);
Результат.Вставить("Записано", Записано);
Результат.Вставить("КоличествоТоваров", КоличествоТоваров);
Возврат Результат;
КонецФункции