Может кому то пригодится для перезагрузки данных отчётов продаж по этой ошибке
код на 7.7, на форме только две кнопки, Сформировать и Закрыть.
Названия загружаемого и записываемого фалов просто для примера, ведь у каждого свои.
Обработка просто открывает файл отчёта продаж и проходит его построчно.
Если встречена транзакция №11, то просматривается следующая строка в файле и если там транзакция №17 - то происходит обработка строки с транзакцией №17.
Находит в через "СтрЗаменить" фрагмент с полями 12 и 13 и заменяет в них значения на значения умноженные на кол-во ед. товара из строки с транзакцией №11.
Обращаю внимание на подстроки для поиска и замены!!
";номерККТ;17;" тут "номерККТ" это заводской номер ФР, прописать надо ваш номер.
На оригинальность не претендует, но работу свою сделала.
С одной кассы почти за 3 месяца перезагружать пришлось, разница по скидкам была под 20 000.
Файл отчётов продаж был сформирован заново, с даты проявления ошибки.
Из ИБ прежние данные о продажах были удалены, отчёт обработан данным кодом и повторно загружены данные о продажах
- Код: Выделить всё
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
ФайлВыгрузки = СоздатьОбъект("Текст");
КолвоСтрок = 0;
ФайлТовара = СоздатьОбъект("Текст");
ФайлТовара.Открыть("C:\007\report_fail.txt");
Строчек=Число(ФайлТовара.ПолучитьСтроку(13));
Строчек0=Число(ФайлТовара.ПолучитьСтроку(Строчек));
Сообщить ("В конце строчек = "+Строчек0);
Для Ном=1 по Строчек+14 Цикл
//Для Ном=1 по 300 Цикл
Стр=ФайлТовара.ПолучитьСтроку(Ном);
СтрХ = СтрЗаменить( ФайлТовара.ПолучитьСтроку(Ном), ";", РазделительСтрок );
ТипТранзакцииХ = Число( СтрПолучитьСтроку( СтрХ, 9 ) );
Если ТипТранзакцииХ=11 Тогда
СтрХ0 = СтрЗаменить( ФайлТовара.ПолучитьСтроку(Ном+1), ";", РазделительСтрок );
КолвоТовараХ = Число( СтрПолучитьСтроку( СтрХ, 12 ) );
СуммаСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 12 ) );
ТипСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 10 ) );
СтавкаСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 11 ) );
ТипТранзакцииХ0 = Число( СтрПолучитьСтроку( СтрХ0, 9 ) );
Если ТипТранзакцииХ0=17 Тогда
Стр0=ФайлТовара.ПолучитьСтроку(Ном+1);
// Вместо "номерККТ" прописать своё значение!!! Подстрока1=";номерККТ;17;"+ТипСкидкиПозиции+";"+СтавкаСкидкиПозиции+";"+СуммаСкидкиПозиции+";"+СуммаСкидкиПозиции+";";
Подстрока2=";номерККТ;17;"+ТипСкидкиПозиции+";"+СтавкаСкидкиПозиции+";"+Число(СуммаСкидкиПозиции)*Число(КолвоТовараХ)+";"+Число(СуммаСкидкиПозиции)*Число(КолвоТовараХ)+";";
Стр1 = СтрЗаменить(Стр0,Подстрока1,Подстрока2);
ФайлВыгрузки.ДобавитьСтроку(Стр);
ФайлВыгрузки.ДобавитьСтроку(Стр1);
Ном=Ном+1;
Иначе
ФайлВыгрузки.ДобавитьСтроку(Стр);
КонецЕсли;
Продолжить;
КонецЕсли;
ФайлВыгрузки.ДобавитьСтроку(Стр);
КонецЦикла;
ФайлВыгрузки.ДобавитьСтроку(""); // заполнить информацию об окончании файла
ФайлВыгрузки.Записать("C:\007\report_true.txt");
Сообщить(" - Изменение ЗАВЕРШЕНО !!!");
КонецПроцедуры