| Главный раздел Описание главного раздела |
25.06.2026, 14:53
|
#1
|
|
Новичок
Регистрация: 25.06.2026
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Сложный запрос
Всем привет!я не спец в 1С,но надо сделать унифицированную внешнюю обработку а именно вытянуть из бд Артикль,Номенклатура,Себест_остат,Остаток,Количест во_прод_всего,Выручка_всего,Средняя_цена_прод,Дата _последней_продажи.ПОД УТ11 я написал и все ок но в бухгалтерии нет таких полей и конечно обработка упала.вроде надо так - Для получения остатков используется бухгалтерский регистр Хозрасчетный.
Штатный отчет "Остатки товаров" строится по данным бухгалтерского учета и набору товарных счетов (10, 21, 41, 43, 45 и их субсчета).я скачал учебную версию и там в остатках один товар и без кол-ва,вообщем не под силу мне этот квест..есть ли тут кто сможет помочь переписать обработку под бухгалтерию или подскажите это бд такая и поэтому не могу остатки получить?
СЕЙЧАС ТАК -
Код HTML:
&НаКлиенте
Процедура СформироватьCSV(Команда)
ПолныйКаталог = РабочийКаталогДанныхПользователя();
ВызватьНаСервере(ПолныйКаталог, ДатаАнализа);
КонецПроцедуры
//==============================
//ГЛАВНАЯ ФУНКЦИЯ!!!
&НаСервере
Функция ВызватьНаСервере(ПолныйКаталог, ДатаАнализа)
Попытка
//чтобы отчет был узнаваем
ДатаОтчет = ТекущаяДата();
// Обрезаем для Windows И Linux
Позиция1C = Найти(ВРег(ПолныйКаталог), ВРег("\1C\")); // Windows
Если Позиция1C = 0 Тогда
Позиция1C = Найти(ВРег(ПолныйКаталог), ВРег("/1c/")); // Linux
КонецЕсли;
Если Позиция1C > 0 Тогда
БазовыйКаталог = Лев(ПолныйКаталог, Позиция1C - 1);
Иначе
БазовыйКаталог = ПолныйКаталог;
КонецЕсли;
Сообщить("Базовый каталог: " + БазовыйКаталог);
// Linux: ~/local/share (стандарт для данных)
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоLinux = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86)
Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64);
Если ЭтоLinux Тогда
// Берём домашний каталог (отрезаем всё после /. )
ПозицияТочки = Найти(БазовыйКаталог, "/.");
Если ПозицияТочки > 0 Тогда
ДомашнийКаталог = Лев(БазовыйКаталог, ПозицияТочки - 1);
Иначе
ДомашнийКаталог = БазовыйКаталог;
КонецЕсли;
ПутьКФайлу = ДомашнийКаталог
+ "/.local/share/ZZZ/Отчет_Товары_"
+ Формат(ДатаОтчет,"ДФ=dd-MM-yyyy_ЧЧ-mm")
+ ".csv";
// === БЛОК ДЛЯ MAC ===
ИначеЕсли (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86)
ИЛИ (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86_64) Тогда
// В macOS путь обычно: /Users/username/Library/Application Support/1C/1cv8/...
// Нам нужно получить: /Users/username/Library/Application Support
Позиция1C_Mac = Найти(ВРег(ПолныйКаталог), ВРег("/1C/"));
Если Позиция1C_Mac > 0 Тогда
// Отрезаем всё до /1C/
БазовыйКаталог = Лев(ПолныйКаталог, Позиция1C_Mac - 1);
// Формируем путь: .../Application Support/ZZZ/file.csv
ПутьКФайлу = БазовыйКаталог + "/ZZZ/" + "Отчет_Товары_" + Формат(ДатаОтчет, "ДФ=dd-MM-yyyy_ЧЧ-mm") + ".csv";
Иначе
// Если не нашли стандартный путь 1С, пробуем просто собрать
ПутьКФайлу = ПолныйКаталог + "/ZZZ/" + "Отчет_Товары_" + Формат(ДатаОтчет, "ДФ=dd-MM-yyyy_ЧЧ-mm") + ".csv";
КонецЕсли;
Иначе
// Windows: C:\Users\a_korsakov\AppData\Roaming
ПутьКФайлу = БазовыйКаталог + "\ZZZ\Отчет_Товары_" + Формат(ДатаОтчет, "ДФ=dd-MM-yyyy_ЧЧ-mm") + ".csv";
КонецЕсли;
Сообщить("Финальный путь: " + ПутьКФайлу);
// Проверяем/создаем каталог для файла
ФайлПути = Новый Файл(ПутьКФайлу);
КаталогФайла = ФайлПути.Путь;
ФайлКаталога = Новый Файл(КаталогФайла);
Если НЕ ФайлКаталога.Существует() Тогда
СоздатьКаталог(КаталогФайла);
Сообщить("Создан каталог: " + КаталогФайла);
КонецЕсли;
//Подстраховка в темпу на всякий
Попытка
// 1) пробуем основной путь
ФайлПути = Новый Файл(ПутьКФайлу);
КаталогФайла = ФайлПути.Путь;
ФайлКаталога = Новый Файл(КаталогФайла);
Если НЕ ФайлКаталога.Существует() Тогда
СоздатьКаталог(КаталогФайла);
КонецЕсли;
//ВызватьИсключение "TEST";
Файл = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
Исключение
// 2) если что-то пошло не так — пишем во временные
Сообщить("Не удалось записать в: " + ПутьКФайлу);
Сообщить("Пишу во временный каталог...");
Сообщить(КаталогВременныхФайлов());
// temp\ZZZ
ПапкаTemp = КаталогВременныхФайлов() + "ZZZ/";
ФайлПапкиTemp = Новый Файл(ПапкаTemp);
Если НЕ ФайлПапкиTemp.Существует() Тогда
СоздатьКаталог(ПапкаTemp);
КонецЕсли;
// файл внутри ZZZ
ПутьКФайлу = ПапкаTemp
+ "Отчет_Товары_"
+ Формат(ДатаОтчет, "ДФ=dd-MM-yyyy_ЧЧ-mm")
+ ".csv";
Файл = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
Сообщить("### FALLBACK TEMP СРАБОТАЛ ###");
Сообщить("ПИШУ В: " + ПутьКФайлу);
КонецПопытки;
//Файл = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
// === Заголовки ===
Файл.ЗаписатьСтроку(
"Артикль;Номенклатура;Себест_остат;Остаток;" +
"Количество_прод_всего;Выручка_всего;Средняя_цена_прод;" +
"Дата_последней_продажи;Продано_30;Продано_90;Продано_180;Продано_365;Прогноз;" +
"Категория;Производитель;Бренд;ЕдИзм;СрокГодности"
);
//=========== ВЕТКА БУХГАЛТЕРИЯ ==============================
Если ЭтоБухгалтерия() Тогда
ТекДата = КонецДня(ДатаАнализа);
СформироватьCSV_БП3(Файл, ТекДата);
Файл.Закрыть();
Сообщить("Файл сформирован для Бухгалтерии: " + ПутьКФайлу);
Возврат Истина;
КонецЕсли;
//============================================================
// === Периоды ===
// ТекДата = ТекущаяДата();
//ТекДата = Дата(2022,12,31,23,59,59); // для проверки
ТекДата = КонецДня(ДатаАнализа);
//=========== ВЕТКА УТ11 =====================================
Если ЭтоУТ11() Тогда
СформироватьCSV_УТ11(Файл, ТекДата);
Иначе
Файл.Закрыть();
Сообщить("Конфигурация не поддерживается: " + Метаданные.Имя);
Возврат Ложь;
КонецЕсли;
//============================================================
Файл.Закрыть();
Сообщить("Файл сформирован: " + ПутьКФайлу);
Возврат Истина;
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
//==============================
//не забыть поменять периоды для нормальной базы!!!(ОТ КАКОЙ СЧИТАТЬ)
&НаСервере
Функция ПолучитьСрокиГодностиПоОтчетнойЛогике(ТекДата)
Результат = Новый Соответствие;
Попытка
ОтчетОбъект = Отчеты.ТоварыНаСкладахПоСрокамГодности.Создать();
Компоновщик = ОтчетОбъект.КомпоновщикНастроек;
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
Компоновщик.Настройки,
"ПериодОкончанияГодности",
Неопределено,
Ложь
);
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
Компоновщик.Настройки,
"НачалоПериодаОГ",
Дата(2010,1,1),
Истина
);
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
Компоновщик.Настройки,
"ОкончаниеПериодаОГ",
ТекДата,
Истина
);
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
Компоновщик.Настройки,
"ТекущаяДата",
ТекДата,
Истина
);
ТабДок = Новый ТабличныйДокумент;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
ОтчетОбъект.СкомпоноватьРезультат(
ТабДок,
ДанныеРасшифровки
);
Сообщить(
"ОК: отчет сформирован в памяти. Размер: "
+ Строка(ТабДок.ВысотаТаблицы)
+ " x "
+ Строка(ТабДок.ШиринаТаблицы)
);
ТекущаяНоменклатура = "";
Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл
Кол1 = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Кол2 = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
Кол4 = СокрЛП(ТабДок.Область(НомерСтроки, 4).Текст);
Кол5 = СокрЛП(ТабДок.Область(НомерСтроки, 5).Текст);
Кол6 = СокрЛП(ТабДок.Область(НомерСтроки, 6).Текст);
// Строка товара: есть номенклатура, единица, срок годности товара, общий остаток
Если Кол2 <> ""
И Кол4 <> ""
И Кол5 <> ""
И Кол6 <> ""
И НЕ ЭтоДатаДДММГГГГ(Кол1)
И Найти(Кол2, "Номенклатура") = 0 Тогда
ТекущаяНоменклатура = ОчиститьИмяНоменклатурыИзОтчета(Кол2);
КонецЕсли;
// Строка даты срока: дата + остаток
Если ТекущаяНоменклатура <> ""
И ЭтоДатаДДММГГГГ(Кол1)
И Кол6 <> "" Тогда
Часть = Кол1 + ": " + ОчиститьКоличествоИзОтчета(Кол6);
УжеЕсть = Результат.Получить(ТекущаяНоменклатура);
Если УжеЕсть = Неопределено Тогда
Результат.Вставить(ТекущаяНоменклатура, Часть);
Иначе
Результат.Вставить(ТекущаяНоменклатура, УжеЕсть + ", " + Часть);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Сообщить("ОК: сроки взяты из штатного отчета. Найдено: " + Строка(Результат.Количество()));
Исключение
Сообщить("ОШИБКА чтения штатного отчета из ТабДок: " + ОписаниеОшибки());
КонецПопытки;
Возврат Результат;
КонецФункции
//==============================
//===хэлперы для сроков=========
&НаСервере
Функция ЭтоДатаДДММГГГГ(Текст)
Текст = СокрЛП(Текст);
Если СтрДлина(Текст) <> 10 Тогда
Возврат Ложь;
КонецЕсли;
Возврат Сред(Текст, 3, 1) = "."
И Сред(Текст, 6, 1) = ".";
КонецФункции
&НаСервере
Функция ОчиститьИмяНоменклатурыИзОтчета(Имя)
Имя = СокрЛП(Имя);
Если Прав(Имя, 1) = "," Тогда
Имя = Лев(Имя, СтрДлина(Имя) - 1);
КонецЕсли;
Возврат СокрЛП(Имя);
КонецФункции
&НаСервере
Функция ОчиститьКоличествоИзОтчета(Количество)
Количество = СокрЛП(Количество);
Если Прав(Количество, 4) = ",000" Тогда
Количество = Лев(Количество, СтрДлина(Количество) - 4);
КонецЕсли;
Возврат Количество;
КонецФункции
//=============================
//читаем при открытии версию 1С
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.ВерсияКонфигурации.Заголовок = ПолучитьВерсиюКонфигурации();
Если НЕ ЗначениеЗаполнено(ДатаАнализа) Тогда
ДатаАнализа = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьВерсиюКонфигурации()
Возврат
"Версия 1С: " + Метаданные.Имя
+ " " + Метаданные.Версия;
КонецФункции
//=============================
//определяем, что открыта Бухгалтерия,УТ??
&НаСервере
Функция ЭтоБухгалтерия()
Возврат Найти(ВРег(Метаданные.Имя), "БУХГАЛТЕРИЯ") > 0;
КонецФункции
&НаСервере
Функция ЭтоУТ11()
Возврат Найти(ВРег(Метаданные.Имя), "УПРАВЛЕНИЕТОРГОВЛЕЙ") > 0;
КонецФункции
//=============================
//============= АДАПТЕР УТ11 ================
&НаСервере
Процедура СформироватьCSV_УТ11(Файл, ТекДата)
СекундВДне = 24 * 60 * 60;
СрокиГодностиПоНом = ПолучитьСрокиГодностиПоОтчетнойЛогике(ТекДата);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата30", ТекДата - 30 * СекундВДне);
Запрос.УстановитьПараметр("Дата90", ТекДата - 90 * СекундВДне);
Запрос.УстановитьПараметр("Дата180", ТекДата - 180 * СекундВДне);
Запрос.УстановитьПараметр("Дата365", ТекДата - 365 * СекундВДне);
Запрос.УстановитьПараметр("ТекДата", ТекДата);
// === Запрос ===
Запрос.Текст =
"ВЫБРАТЬ
| Ном.Артикул КАК Артикль,
| Ном.Ссылка КАК Номенклатура,
|
| // ? Себест_остат = (СебестСумма / СебестКолво) * ОстатокСклад
| ВЫБОР
| КОГДА ЕСТЬNULL(СебестоимостьАгр.СебестКолво,0) > 0
| ТОГДА (ЕСТЬNULL(СебестоимостьАгр.СебестСумма,0) / СебестоимостьАгр.СебестКолво)
| * ЕСТЬNULL(ОстаткиАгр.Остаток,0)
| ИНАЧЕ 0
| КОНЕЦ КАК Себест_остат,
|
| ЕСТЬNULL(ОстаткиАгр.Остаток, 0) КАК Остаток,
| ЕСТЬNULL(Продажи.ОбщееКоличество, 0) КАК Количество_прод_всего,
| ЕСТЬNULL(Продажи.ОбщаяСумма, 0) КАК Выручка_всего,
|
| ВЫБОР КОГДА ЕСТЬNULL(Продажи.ОбщееКоличество,0)=0
| ТОГДА 0
| ИНАЧЕ Продажи.ОбщаяСумма / Продажи.ОбщееКоличество
| КОНЕЦ КАК Средняя_цена_прод,
|
| Продажи.ДатаПоследнейПродажи КАК Дата_последней_продажи,
| ЕСТЬNULL(Продажи.Продано_30,0) КАК Продано_30,
| ЕСТЬNULL(Продажи.Продано_90,0) КАК Продано_90,
| ЕСТЬNULL(Продажи.Продано_180,0) КАК Продано_180,
| ЕСТЬNULL(Продажи.Продано_365,0) КАК Продано_365,
| ЕСТЬNULL(ПрогнозЗаказы.ПрогнозКоличество, 0) КАК Прогноз,
|
| Ном.ВидНоменклатуры КАК Категория,
| Ном.Производитель КАК Производитель,
| Ном.Марка КАК Бренд,
| ЕСТЬNULL(Продажи.ЕдИзм, """") КАК ЕдИзм
|
|ИЗ
| Справочник.Номенклатура КАК Ном
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| База.Номенклатура КАК Номенклатура,
| МАКСИМУМ(База.ЕдИзм) КАК ЕдИзм,
| СУММА(База.Количество) КАК ОбщееКоличество,
| СУММА(База.Сумма) КАК ОбщаяСумма,
| МАКСИМУМ(База.Дата) КАК ДатаПоследнейПродажи,
|
| СУММА(ВЫБОР КОГДА База.Дата >= &Дата30 ТОГДА База.Количество ИНАЧЕ 0 КОНЕЦ) КАК Продано_30,
| СУММА(ВЫБОР КОГДА База.Дата >= &Дата90 ТОГДА База.Количество ИНАЧЕ 0 КОНЕЦ) КАК Продано_90,
| СУММА(ВЫБОР КОГДА База.Дата >= &Дата180 ТОГДА База.Количество ИНАЧЕ 0 КОНЕЦ) КАК Продано_180,
| СУММА(ВЫБОР КОГДА База.Дата >= &Дата365 ТОГДА База.Количество ИНАЧЕ 0 КОНЕЦ) КАК Продано_365
|
| ИЗ
| (
| ВЫБРАТЬ
| ТОпт.Номенклатура КАК Номенклатура,
| ТОпт.Количество КАК Количество,
| ТОпт.Сумма КАК Сумма,
| ТОпт.Ссылка.Дата КАК Дата,
| ТОпт.Упаковка.Наименование КАК ЕдИзм
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТОпт
| ГДЕ
| ТОпт.Ссылка.Проведен = ИСТИНА
| И ТОпт.Ссылка.Дата <= &ТекДата
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТРозн.Номенклатура КАК Номенклатура,
| ТРозн.Количество КАК Количество,
| ТРозн.Сумма КАК Сумма,
| ТРозн.Ссылка.Дата КАК Дата,
| ТРозн.Упаковка.Наименование КАК ЕдИзм
| ИЗ
| Документ.ОтчетОРозничныхПродажах.Товары КАК ТРозн
| ГДЕ
| ТРозн.Ссылка.Проведен = ИСТИНА
| И ТРозн.Ссылка.Дата <= &ТекДата
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТКом.Номенклатура КАК Номенклатура,
| ТКом.Количество КАК Количество,
| ТКом.Сумма КАК Сумма,
| ТКом.Ссылка.Дата КАК Дата,
| ТКом.Упаковка.Наименование КАК ЕдИзм
| ИЗ
| Документ.ОтчетКомиссионера.Товары КАК ТКом
| ГДЕ
| ТКом.Ссылка.Проведен = ИСТИНА
| И ТКом.Ссылка.Дата <= &ТекДата
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТВозвр.Номенклатура КАК Номенклатура,
| -ТВозвр.Количество КАК Количество,
| -ТВозвр.Сумма КАК Сумма,
| ТВозвр.Ссылка.Дата КАК Дата,
| ТВозвр.Упаковка.Наименование КАК ЕдИзм
| ИЗ
| Документ.ВозвратТоваровОтКлиента.Товары КАК ТВозвр
| ГДЕ
| ТВозвр.Ссылка.Проведен = ИСТИНА
| И ТВозвр.Ссылка.Дата <= &ТекДата
|
| ) КАК База
|
| СГРУППИРОВАТЬ ПО База.Номенклатура) КАК Продажи
|ПО Продажи.Номенклатура = Ном.Ссылка
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| ЗаказыТовары.Номенклатура КАК Номенклатура,
| СУММА(ЗаказыТовары.Количество) КАК ПрогнозКоличество
| ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказыТовары
| ГДЕ
| ЗаказыТовары.Ссылка.Проведен = ИСТИНА
| И НЕ ЗаказыТовары.Ссылка.ПометкаУдаления
| И ЗаказыТовары.Ссылка.Дата <= &ТекДата
| И ЗаказыТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| СГРУППИРОВАТЬ ПО
| ЗаказыТовары.Номенклатура) КАК ПрогнозЗаказы
|ПО ПрогнозЗаказы.Номенклатура = Ном.Ссылка
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| СУММА(Остатки.ВНаличииОстаток) КАК Остаток
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата) КАК Остатки
| СГРУППИРОВАТЬ ПО Остатки.Номенклатура) КАК ОстаткиАгр
|ПО ОстаткиАгр.Номенклатура = Ном.Ссылка
|
|ЛЕВОЕ СОЕДИНЕНИЕ
|(
| ВЫБРАТЬ
| КА.Номенклатура КАК Номенклатура,
| СУММА(
| ЕСТЬNULL(СТОИМ.СтоимостьРеглОстаток, 0) +
| ЕСТЬNULL(СТОИМ.ДопРасходыРеглОстаток, 0)
| ) КАК СебестСумма,
| СУММА(ЕСТЬNULL(СТОИМ.КоличествоОстаток, 0)) КАК СебестКолво
| ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(&ТекДата) КАК СТОИМ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КА
| ПО КА.Ссылка = СТОИМ.АналитикаУчетаНоменклатуры
| СГРУППИРОВАТЬ ПО
| КА.Номенклатура
|) КАК СебестоимостьАгр
|ПО СебестоимостьАгр.Номенклатура = Ном.Ссылка
|
|УПОРЯДОЧИТЬ ПО Артикль";
// === Выполнение ===
СкладскиеОперацииПриемки = Перечисления.СкладскиеОперации.СкладскиеОперацииПриемки();
СкладскиеОперацииПриемки.Добавить(Перечисления.СкладскиеОперации.ПеремещениеМеждуПомещениями);
СкладскиеОперацииПриемки.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаПоПеремещению);
Запрос.УстановитьПараметр("СкладскиеОперацииПриемки", СкладскиеОперацииПриемки);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
СрокГодностиСтрока = "";
СрокГодностиЗначение = СрокиГодностиПоНом.Получить(Строка(Результат.Номенклатура));
Если Результат.Остаток > 0 И СрокГодностиЗначение <> Неопределено Тогда
СрокГодностиСтрока = СрокГодностиЗначение;
КонецЕсли;
СтрокаCSV =
Строка(Результат.Артикль) + ";" +
Строка(Результат.Номенклатура) + ";" +
Строка(Результат.Себест_остат) + ";" +
Строка(Результат.Остаток) + ";" +
Строка(Результат.Количество_прод_всего) + ";" +
Строка(Результат.Выручка_всего) + ";" +
Строка(Результат.Средняя_цена_прод) + ";" +
Строка(Результат.Дата_последней_продажи) + ";" +
Строка(Результат.Продано_30) + ";" +
Строка(Результат.Продано_90) + ";" +
Строка(Результат.Продано_180) + ";" +
Строка(Результат.Продано_365) + ";" +
Строка(Результат.Прогноз) + ";" +
Строка(Результат.Категория) + ";" +
Строка(Результат.Производитель) + ";" +
Строка(Результат.Бренд) + ";" +
Строка(Результат.ЕдИзм) + ";" +
СрокГодностиСтрока;
Файл.ЗаписатьСтроку(СтрокаCSV);
КонецЦикла;
КонецПроцедуры
//===========================================
//============= АДАПТЕР Бухгал ==============
&НаСервере
Процедура СформироватьCSV_БП3(Файл, ТекДата)
Сообщить("Бухгалтерия 3.0: адаптер запущен.");
Сообщить("Для полноценной аналитики продаж/сроков/прогноза используйте УТ11.");
//Сообщить("БП: выгружаем остатки по логике штатного отчета Остатки товаров.");
//СчетаУчетаТоваров = БухгалтерскиеОтчеты.СчетаУчетаТоваров();
//Запрос = Новый Запрос;
//Запрос.УстановитьПараметр("ТекДата", ТекДата);
//Запрос.УстановитьПараметр("СчетаУчетаТоваров", СчетаУчетаТоваров);
//Запрос.УстановитьПараметр(
// "СубконтоНоменклатура",
// Новый Массив
//);
//СубконтоНоменклатура = Новый Массив;
//СубконтоНоменклатура.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
//Запрос.УстановитьПараметр("СубконтоНоменклатура", СубконтоНоменклатура);
//Запрос.Текст =
//"ВЫБРАТЬ
//| Остатки.Субконто1 КАК Номенклатура,
//| МАКСИМУМ(Остатки.Субконто1.Артикул) КАК Артикль,
//| СУММА(Остатки.СуммаОстаток) КАК Себест_остат,
//| СУММА(Остатки.КоличествоОстаток) КАК Остаток
//|ИЗ
//| РегистрБухгалтерии.Хозрасчетный.Остатки(
//| &ТекДата,
//| Счет В (&СчетаУчетаТоваров),
//| &СубконтоНоменклатура
//| ) КАК Остатки
//|ГДЕ
//| Остатки.Субконто1 ССЫЛКА Справочник.Номенклатура
//| И (
//| Остатки.СуммаОстаток <> 0
//| ИЛИ Остатки.КоличествоОстаток <> 0
//| )
//|СГРУППИРОВАТЬ ПО
//| Остатки.Субконто1
//|УПОРЯДОЧИТЬ ПО
//| Номенклатура";
//Результат = Запрос.Выполнить().Выбрать();
//КоличествоСтрок = 0;
//Пока Результат.Следующий() Цикл
// КоличествоСтрок = КоличествоСтрок + 1;
// СтрокаCSV =
// Строка(Результат.Артикль) + ";" +
// Строка(Результат.Номенклатура) + ";" +
// Строка(Результат.Себест_остат) + ";" +
// Строка(Результат.Остаток) + ";" +
// "0" + ";" +
// "0" + ";" +
// "0" + ";" +
// "" + ";" +
// "0" + ";" +
// "0" + ";" +
// "0" + ";" +
// "0" + ";" +
// "0" + ";" +
// "" + ";" +
// "" + ";" +
// "" + ";" +
// "" + ";" +
// "";
// Файл.ЗаписатьСтроку(СтрокаCSV);
//КонецЦикла;
//Сообщить("БП: строк выгружено: " + Строка(КоличествоСтрок));
КонецПроцедуры
//===========================================
|
|
|
     
Любые журналы Актион-МЦФЭР регулярно !!! Пишите https://www.nado.in/private.php?do=newpm&u=12191 или на электронный адрес pantera@nado.ws
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 21:24. Часовой пояс GMT +1.
| |