Вернуться   Бухгалтерский форум www.nado.in > Главная категория > Главный раздел

Главный раздел Описание главного раздела

Ответ
 
Опции темы
Старый 25.06.2026, 14:53   #1
Alexey78
Новичок
 
Регистрация: 25.06.2026
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Alexey78 пока не определено
По умолчанию Сложный запрос

Всем привет!я не спец в 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);

	//КонецЦикла;

	//Сообщить("БП: строк выгружено: " + Строка(КоличествоСтрок));

КонецПроцедуры
//===========================================
Alexey78 вне форума   Ответить с цитированием
Ответ

Любые журналы Актион-МЦФЭР регулярно !!! Пишите https://www.nado.in/private.php?do=newpm&u=12191 или на электронный адрес pantera@nado.ws


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В СКД (и консоли) 1-й запрос есть данные,во втором запросе обращаемся к 1-му -пусто redking 1C: Предприятие + конфигурации для Украины 1 27.01.2025 15:29
ТСЖ. Отчет - внешний отчет. Странности работы. Запрос. at000b 1C: Предприятие + конфигурации 8.3 2 25.05.2023 09:09
Запрос цены и возможности перехода avkilyus Раздел для фрилансеров 1С 3 02.03.2017 10:44


Текущее время: 10:19. Часовой пояс GMT +1.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot

vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.