Загрузка данных
&НаКлиенте
Процедура ВыполнитьВыгрузку(Команда)
// Получаем сформированные строки JSON с сервера
СтрокаJSONКонтрагенты = СформироватьJSONКонтрагентов();
СтрокаJSONНоменклатура = СформироватьJSONНоменклатуры();
// Вызываем диалоги сохранения файлов
СохранитьТекстВФайл(СтрокаJSONКонтрагенты, "Контрагенты");
СохранитьТекстВФайл(СтрокаJSONНоменклатура, "Номенклатура");
Сообщить("Выгрузка успешно завершена!");
КонецПроцедуры
&НаКлиенте
Процедура СохранитьТекстВФайл(Текст, ИмяПоУмолчанию)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "Файл JSON (*.json)|*.json";
Диалог.ПолноеИмяФайла = ИмяПоУмолчанию + ".json";
Диалог.Заголовок = "Выберите файл для сохранения: " + ИмяПоУмолчанию;
Если Диалог.Выбрать() Тогда
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(Текст);
ТекстовыйДокумент.Записать(Диалог.ПолноеИмяФайла, КодировкаТекста.UTF8);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СформироватьJSONНоменклатуры()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| ЕСТЬNULL(Номенклатура.Артикул, """") КАК Артикул,
| ПРЕДСТАВЛЕНИЕ(Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмерения
|ПОМЕСТИТЬ ВТ_Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа
|;
|ВЫБРАТЬ
| ВТ_Номенклатура.Ссылка КАК Ссылка,
| ВТ_Номенклатура.Наименование КАК Наименование,
| ВТ_Номенклатура.Артикул КАК Артикул,
| ВТ_Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|ИЗ
| ВТ_Номенклатура КАК ВТ_Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ВТ_Номенклатура.Ссылка = ШтрихкодыНоменклатуры.Номенклатура
|ИТОГИ ПО
| Ссылка";
МассивДанных = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл
Данные = Новый Структура;
Данные.Вставить("Наименование", Выборка.Наименование);
Данные.Вставить("Артикул", Выборка.Артикул);
Данные.Вставить("ЕдиницаИзмерения", Выборка.ЕдиницаИзмерения);
Штрихкоды = Новый Массив;
ДетальнаяВыборка = Выборка.Выбрать();
Пока ДетальнаяВыборка.Следующий() Цикл
Если ЗначениеЗаполнено(ДетальнаяВыборка.Штрихкод) Тогда
Штрихкоды.Добавить(ДетальнаяВыборка.Штрихкод);
КонецЕсли;
КонецЦикла;
Данные.Вставить("Штрихкоды", Штрихкоды);
МассивДанных.Добавить(Данные);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб));
ЗаписатьJSON(ЗаписьJSON, МассивДанных);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
&НаСервере
Функция СформироватьJSONКонтрагентов()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| Контрагенты.Наименование КАК Наименование,
| ЕСТЬNULL(Контрагенты.ИНН, """") КАК ИНН,
| ЕСТЬNULL(Контрагенты.КПП, """") КАК КПП
|ПОМЕСТИТЬ ВТ_Контрагенты
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ПометкаУдаления
|;
|ВЫБРАТЬ
| ВТ_Контрагенты.Ссылка КАК Ссылка,
| ВТ_Контрагенты.Наименование КАК Наименование,
| ВТ_Контрагенты.ИНН КАК ИНН,
| ВТ_Контрагенты.КПП КАК КПП,
| КонтактнаяИнформация.Вид.Наименование КАК ВидКИ,
| КонтактнаяИнформация.Представление КАК ПредставлениеКИ
|ИЗ
| ВТ_Контрагенты КАК ВТ_Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация
| ПО ВТ_Контрагенты.Ссылка = КонтактнаяИнформация.Ссылка
|ИТОГИ ПО
| Ссылка";
МассивДанных = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл
Данные = Новый Структура;
Данные.Вставить("Наименование", Выборка.Наименование);
Данные.Вставить("ИНН", Выборка.ИНН);
Данные.Вставить("КПП", Выборка.КПП);
Контакты = Новый Массив;
ДетальнаяВыборка = Выборка.Выбрать();
Пока ДетальнаяВыборка.Следующий() Цикл
Если ЗначениеЗаполнено(ДетальнаяВыборка.ПредставлениеКИ) Тогда
Контакт = Новый Структура("Вид, Значение", ДетальнаяВыборка.ВидКИ, ДетальнаяВыборка.ПредставлениеКИ);
Контакты.Добавить(Контакт);
КонецЕсли;
КонецЦикла;
Данные.Вставить("КонтактнаяИнформация", Контакты);
МассивДанных.Добавить(Данные);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб));
ЗаписатьJSON(ЗаписьJSON, МассивДанных);
Возврат ЗаписьJSON.Закрыть();
КонецФункции