Версия для печати темы (https://pro1c.org.ua/index.php?s=2d0b3c1ee6899bfa9d34bed4d9811312&showtopic=46432)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Проблема вигрузки залишків номенклатури з регістру.

Автор: Sirius83 23.06.18, 22:12

Конфігурація бухгалтерия+торговля+производство+зарплата+кадры+Cash&Carry+розница+(торговля)+урб support, присутній як бухгалтерський облік так і оперативний, документи по оперативному і бух. обліку при проведенні записують дані в Регистр.Остатки. Задача вигрузити в текстовий файл згруповані залишки ТМЦ на кожну дату в періоді.
написав таке:

Код

Процедура Сформировать()
    КаталогВыгрузкиФайлы = КаталогВыгрузки + "\CSVFiles";
    Текст = СоздатьОбъект("Текст");
    Текст.ДобавитьСтроку("ProductID;Data;Qty;Summ");
    ДатаТек = ДатаНачало;
    
        Запр = СоздатьОбъект("Запрос");
                
        ТекстЗапр = "
    
        |Период с ДатаНачало по ВыбКонПериода;
        |ТМЦ = Регистр.Остатки.ТМЦ;
        |Кво = Регистр.Остатки.Кво;
        |СуммаОсн = Регистр.Остатки.СуммаОсн;
        |Условие (ТМЦ в выбТМЦ);
        |Группировка ТМЦ;
        |Функция ККво = КонОст(Кво);
        |Функция КСуммаОсн = КонОст(СуммаОсн);";

        
        Если Запр.Выполнить(ТекстЗапр)=0 Тогда
            Возврат;
        КонецЕсли;
        
        Пока ДатаТек <= ВыбКонПериода Цикл
            
            Пока Запр.Группировка("ТМЦ")=1 Цикл
                Если Запр.ТМЦ.Выбран()=0 Тогда
                    Продолжить;
                КонецЕсли;
                Если Запр.ТМЦ.ЭтоГруппа()=1 Тогда
                    Продолжить;
                Иначе
                    Текст.ДобавитьСтроку(СокрЛП(Запр.ТМЦ.Код) + ";" + ПреобразоватьДату(ДатаТек) + ";" + ОбработкаСтроки(СокрЛП(Запр.ККво)) + ";" +  СтрЗаменить(СокрЛП(Запр.КСуммаОсн), ",", "."));
                КонецЕсли;
            КонецЦикла;
            ДатаТек = ДатаТек + 1;
        КонецЦикла;
    
    Текст.ДобавитьСтроку("");
    Текст.Записать(КаталогВыгрузкиФайлы + "\Stocks.csv");

КонецПроцедуры


Результат на кожну дату один й той самий результат, та ще й відрізняється від реального.
Будь-ласка допоможіть, (сильно не сваріть, ятільки вчуся)

Автор: Sirius83 24.06.18, 1:23

Sirius83 @ Вчера, 23:12 * ,
Хочу поправити, результат у всіх строках на кожну дату отримуємо такий який відповідає результату на ВыбКонПериода.

Автор: Sirius83 24.06.18, 13:32

Sirius83 @ Сегодня, 2:23 * ,
Сам запитав, сам і відповім.

 Процедура Сформировать()
    КаталогВыгрузкиФайлы = КаталогВыгрузки + "\CSVFiles";
    Текст = СоздатьОбъект("Текст");
    Текст.ДобавитьСтроку("ProductID;Data;Qty;Summ");
    ДатаТек = ДатаНачало;
    Пока ДатаТек <= ВыбКонПериода Цикл
        Запр = СоздатьОбъект("Запрос");
                
        ТекстЗапр = "
    
        |Период с ДатаНачало по ДатаТек;
        |ТМЦ = Регистр.Остатки.ТМЦ;
        |Кво = Регистр.Остатки.Кво;
        |СуммаОсн = Регистр.Остатки.СуммаОсн;
        |Условие (ТМЦ в выбТМЦ);
        |Группировка ТМЦ;
        |Функция ККво = КонОст(Кво);
        |Функция КСуммаОсн = КонОст(СуммаОсн);";

        
        Если Запр.Выполнить(ТекстЗапр)=0 Тогда
            Возврат;
        КонецЕсли;
        
            Пока Запр.Группировка("ТМЦ")=1 Цикл
                Если Запр.ТМЦ.Выбран()=0 Тогда
                    Продолжить;
                КонецЕсли;
                Если Запр.ТМЦ.ЭтоГруппа()=0 Тогда
                    Текст.ДобавитьСтроку(СокрЛП(Запр.ТМЦ.Код) + ";" + ПреобразоватьДату(ДатаТек) + ";" + ОбработкаСтроки(СокрЛП(Запр.ККво)) + ";" +  СтрЗаменить(СокрЛП(Запр.КСуммаОсн), ",", "."));
                КонецЕсли;
                
            КонецЦикла;
            ДатаТек = ДатаТек + 1;
        КонецЦикла;
    
    Текст.ДобавитьСтроку("");
    Текст.Записать(КаталогВыгрузкиФайлы + "\Stocks.csv");

КонецПроцедуры

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua