Формирование декларации по алкогольной продукции 5,6,7,8 формы в 1С 7.7 (Комплексная)

Формирование декларации по алкогольной продукции 5,6,7,8 формы в 1С 7.7 (Комплексная)

Эта обработка предназначена  для комплексной конфигурации на платформе 1С 7.7

Написана для немного переработанной комплексной. в частности для регистрации автомобилей перевозчиков в 8 форме к накладным использован документ маршруты. А в самом автомобиле уже сведения о перевозчике.

Обработка формирует сведения об оборотах, закупках, продажах и перевозках как в разрезе обособленных подразделений так и по всей организации. Так же формирует файлы XML 5,6,7 и 8 формы.

возможен отбор по обособленному подразделению, контрагенту и номенклатуре и периоду отчетности и номеру/номерам формируемой формы.

Так же если данных очень много возможен отказ от отчетов для экономии оперативной памяти, в таком случае сформируются только XML файлы.

Возможен вывод анализируемых показателей в количестве, взамен тонн и далл.

Также выводит список ошибок, исправить которые необходимо для получения корректных данных для формирования правильного XML файла.

9 Comments

  1. ivanov_alex

    при формировании хотя бы 2 форм валит 1с с надписью has requested runtime блабла

    видимо большой объем данных или что

    6 сформировать не вышло также

    очень странно как-то

    Reply ↓
  2. darkxxx

    (1) ivanov_alex,

    6 форма вылетает скорее всего с ошибкой на внутреннюю ошибку анализатора: это проблема XML после 16 — 17 мб данных 1С парсер начинает как то криворуко работать. совет включать флажок не использовать отчеты. и брать бубен в руки, я дома запускал 20 раз подряд после перезагрузки компа 50 / 50 формирует отчет, по статистике 20 раз запуска, 4 раза сформировалось успешно. у меня получался файл объемом 19 мб. Если у вас больше советую сделать разбиение на 2 файла а потом их слить в текстовом редакторе, ведь XML это обычный текст, только определенного формата.

    А по поводу формирования сразу нескольких форм тут напряг в оперативке не секрет что 1С 7.7 32 битная и максимум оперативки которая может быть использована 2 гб и в зависимости от объема данных у нас доходило до 1.6 Гб все таблицы, а у вас скорее всего возможно даже больше. Вы скорее всего используете в SQL версию рекомендую попробовать DBF в этом случае. В SQL у нас не формировалась, а вот DBF без проблем.

    Reply ↓
  3. ivanov_alex

    (2)

    не анализатор, когда в проверку загоняется организация с пустым КПП выдает ошибку и если ставить попытка и исключение в этот кусок нужно перечислять все требуемые реквизиты, а я в исключение только КПП загонял, остальные реквизиты не определены ДО возврата были, потому и валились

    кстати, хорошая годная обработка, хоть и долгая…

    партии такие партии

    Reply ↓
  4. ivanov_alex
    ТЗПродаж.Свернуть(«Фирма,КодПродукции,Производитель,Получатель,Документ»,»Количество»);
    ТЗПродаж.Сортировать(«Фирма,КодПродукции,Производитель,Получатель,-Документ»);
    ТЗПродажОбщий = СоздатьОбъект(«ТаблицаЗначений»);
    ТЗПродажОбщий.Загрузить(ТЗПродаж);
    ТЗПродажОбщий.Свернуть(«КодПродукции,Производитель,Получатель,Документ»,»Количество»);
    ТЗПродажОбщий.Сортировать(«КодПродукции,Производитель,Получатель,-Документ»);
    

    ТЗПродажОбщий.Загрузить(ТЗПродаж);

    при большом объеме строк вот тут падает 1с с runtime error

    попытаться как то обойти эту загрузку в другую ТЗ можно?

    Reply ↓
  5. darkxxx

    (4) ivanov_alex, обойти никак нельзя а вот количество колонок в таблице можно попробовать сократить. Брать все из документа на 2 — 3 колонки сократить можно, я не пробовал, но попробовать стоит. Либо второй вариант если 1 не поможет попробовать отдельно файлы сформировать для общей, а потом для подразделений если продаж очень много, а судя по всему у вас именно такой случай, раз у вас на методе загрузить вываливается с ошибкой видимо оперативка забивается под завязку, проверьте так ли это и попробуйте вышеописанные действия.

    Reply ↓
  6. darkxxx

    (4) кстати возможно поможет я доработал файл обработки чтобы он поменьше оперативы жрал возможно есть смысл попробовать скачать…еще раз.

    Reply ↓
  7. ivanov_alex

    (6) я видел и вносил изменения

    память действительно очищается до примерно 250 мб с 2,5 гигабайт

    но xml не пишется почему-то, решение так и не нашел

    пока пользуюсь примером выгрузки, там ТЗ поменьше

    Reply ↓
  8. ivanov_alex

    В ощем что сделал я:

    первое

    для 6 формы в ТЗ

     Если Форма6 = 1 Тогда
    //переиначим колонку документ как номер документа и добавим ещё дату документа и добавим вид документа для сортировки по виду
    ТЗПродаж =создатьОбъект(«ТаблицаЗначений»);
    ТЗПродаж.НоваяКолонка(«Фирма»);
    ТЗПродаж.НоваяКолонка(«КодПродукции»);
    ТЗПродаж.НоваяКолонка(«Производитель»);
    ТЗПродаж.НоваяКолонка(«Получатель»);
    ТЗПродаж.НоваяКолонка(«Документ»);//СтавимДату изза памяти
    ТЗПродаж.НоваяКолонка(«ДокументНомер»);//СтавимДату изза памяти
    ТЗПродаж.НоваяКолонка(«ВидДок»);
    
    ТЗПродаж.НоваяКолонка(«Количество»);
    КонецЕсли;
    
    //Для возвратов присвоим виддок=3 это важно для сортировки
    Если Форма6 = 1 Тогда
    
    
    ТЗПродаж.НоваяСтрока();
    ТЗПродаж.Фирма=Запрос.Фирма;
    ТЗПродаж.КодПродукции = КодПродукции;
    ТЗПродаж.Производитель = Производитель;
    ТЗПродаж.Получатель  = Док.Контрагент;
    ТЗПродаж.Документ  = Док.ДатаДок;
    ТзПродаж.ДокументНомер =Док.НомерДок;
    ТЗПродаж.ВидДок=3;
    ТЗПродаж.Количество = РасчитатьДалы((0-Запрос.КолПриход),НомЕмкость);
    //конецесли
    КонецЕсли;
    //для реализаций виддок=2 опять сортировка
    
    Если Форма6 = 1 Тогда
    ТЗПродаж.НоваяСтрока();
    ТЗПродаж.Фирма   = Запрос.Фирма;
    ТЗПродаж.КодПродукции = КодПродукции;
    ТЗПродаж.Производитель = Производитель;
    ТЗПродаж.Получатель  = Док.Контрагент;
    ТЗПродаж.Документ  = Док.датаДок;
    ТзПродаж.ДокументНомер =Док.НомерДок;
    ТЗПродаж.ВидДок=2;
    ТЗПродаж.Количество  = РасчитатьДалы(Запрос.КолРасход,НомЕмкость);
    КонецЕсли;
    //свернем и отсортируем чтоб СНАЧАЛА шла поставка потом возврат,иначе ругается декларант
    Если Форма6 = 1 Тогда
    ТЗПродаж.Свернуть(«Фирма,КодПродукции,Производитель,Получатель,ВидДок,Документ,ДокументНомер»,»Количество»);
    ТЗПродаж.Сортировать(«Фирма,КодПродукции,Производитель,Получатель,ВидДок,Документ,ДокументНомер»);
    ТЗПродажОбщий =СоздатьОбъект(«ТаблицаЗначений»);
    ТЗПродажОбщий.Загрузить(ТЗПродаж);
    ТЗПродажОбщий.Свернуть(«КодПродукции,Производитель,Получатель,ВидДок,Документ,ДокументНомер»,»Количество»);
    ТЗПродажОбщий.Сортировать(«КодПродукции,Производитель,Получатель,ВидДок,Документ,ДокументНомер»);
    
    СформироватФорму6(ТЗПродажОбщий, ТЗПродаж);
    ТЗПроизводители.УдалитьСтроки();
    ТЗПродаж = «»;
    ТЗПродажОбщий = «»;
    КонецЕсли;
    //И в сформироватформу6
    перДатаДок   = ТЗПродаж.Документ;
    перномердок=ТЗПродаж.ДокументНомер
    

    Показать

    Этим добились чтоб в ТЗ не выгружались документы а значения из них, в результате пишется и хмл и формируется отчет и памяти уйма

    Вдруг кому пригодится

    Reply ↓
  9. darkxxx

    (8) все верно седня поправлю этот момент во всех формах и выложу снова.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *