Типовая обработка по свертке ЕРП. Возможные проблемы и их решение

02.01.22

База данных - Свертка базы

Добрый день, коллеги. Хочу рассказать про опыт использования типовой обработки свертки ЕРП.  А именно про ряд ошибок, которые могут встречаться в типовой обработке свертки ЕРП.

Скачать файлы

Наименование Файл Версия Размер
Обработка по типовой свертке ЕРП с исправленными ошибками.
.epf 130,77Kb
26
.epf 130,77Kb 26 Скачать

Добрый день, коллеги. Хочу рассказать про опыт использования типовой обработки свертки ерп.  А именно про ряд ошибок, которые могут встречаться в типовой обработке свертки ЕРП. У меня обработка заработала после их исправления. Ошибки актуальны для версии ерп 2.4.12.83. 

Вот пример ошибок. 

1.  Использование несуществующего метода табличной части документа - УдалитьСтроку();

Пример

 
 Пример ошибки из процедуры СформироватьДокументыВводаОстатковЗаказыНаПроизводство()
Для Каждого СтрокаГрафик Из СтрокиГрафик Цикл
	ДокОст.ТрудозатратыГрафик.УдалитьСтроку(СтрокаГрафик);
КонецЦикла;	
// Заменил его таким образом 
Для Каждого СтрокаГрафик Из СтрокиГрафик Цикл
	ДокОст.ТрудозатратыГрафик.Удалить(СтрокаГрафик);
КонецЦикла;	
//Аналогичное надо сделать для всех таких случаев 

 

 

 

2.  Не всегда в метода НайтиСледующий() в параметр передается структура.

 
 Пример ошибки из процедуры СформироватьДокументыВводаОстатковЗаказыНаПроизводство()

 

Для Каждого СтрокаТЧ Из МассивСтрокВыходныеИзделияКУдалению Цикл
            СтрокиГрафик = ДокОст.ВыходныеИзделияГрафик.НайтиСтроки("КлючСвязиВыходныеИзделия", СтрокаТЧ.КлючСвязи);
            Для Каждого СтрокаГрафик Из СтрокиГрафик Цикл
                ДокОст.ВыходныеИзделияГрафик.Удалить(СтрокаГрафик);
            КонецЦикла;
            ДокОст.ВыходныеИзделия.Удалить(СтрокаТЧ);
        КонецЦикла;
// Заменил его таким образом 
Для Каждого СтрокаТЧ Из МассивСтрокВыходныеИзделияКУдалению Цикл
            СтрокиГрафик = ДокОст.ВыходныеИзделияГрафик.НайтиСтроки(Новый Структура("КлючСвязиВыходныеИзделия", СтрокаТЧ.КлючСвязи));
            Для Каждого СтрокаГрафик Из СтрокиГрафик Цикл
                ДокОст.ВыходныеИзделияГрафик.Удалить(СтрокаГрафик);
            КонецЦикла;
            ДокОст.ВыходныеИзделия.Удалить(СтрокаТЧ);
КонецЦикла;
//Аналогичное надо сделать для всех таких случаев 

 

3. После выполнения запросов для ввода остатков выбираются неверные элементы пакета. 

 
  Пример ошибки из процедуры СформироватьДокументыВводаОстатковЗаказыДавальцу()
     Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |ТабРег.ЗаказКлиента КАК Заказ,
    |ТабРег.Номенклатура КАК Номенклатура,
    |ТабРег.Характеристика КАК Характеристика,
    |ТабРег.КодСтроки КАК КодСтроки,
    |ТабРег.Склад КАК Склад,
    |ТабРег.Серия КАК Серия,
    |ВЫБОР КОГДА ЕстьNULL(ТабУслуги.ЗаказаноОстаток, 0) = 0 Или ЕстьNULL(ТабУслуги.СуммаОстаток, 0) = 0 Тогда
    |    0
    |ИНАЧЕ ВЫРАЗИТЬ(ТабУслуги.СуммаОстаток/ТабУслуги.ЗаказаноОстаток КАК Число(15,2)) КОНЕЦ КАК Цена,
    |ТабРег.ЗаказаноОстаток КАК Количество
    |ПОМЕСТИТЬ Продукция
    |ИЗ РегистрНакопления.ЗаказыКлиентов.Остатки(&ГраницаОст, ЗаказКлиента ССЫЛКА Документ.ЗаказДавальца
    |                                    И ЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовДавальцев.Закрыт)) КАК ТабРег
    |ЛЕВОЕ СОЕДИНЕНИЕ
    | РегистрНакопления.УслугиДавальцуКОформлению.Остатки(&ГраницаОст, ЗаказДавальца.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовДавальцев.Закрыт)) КАК ТабУслуги
    |ПО ТабРег.Номенклатура = ТабУслуги.Номенклатура
    |    И ТабРег.Характеристика = ТабУслуги.Характеристика
    |    И ТабРег.ЗаказКлиента = ТабУслуги.ЗаказДавальца
    |ГДЕ ТабРег.ЗаказаноОстаток>0  
    |;
    |////////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |ТабРег.ЗаказПоставщику КАК Заказ,
    |ТабРег.Номенклатура КАК Номенклатура,
    |ТабРег.Характеристика КАК Характеристика,
    |ТабРег.КодСтроки КАК КодСтроки,
    |ТабРег.Склад КАК Склад,
    |ТабРег.ЗаказаноОстаток КАК Количество
    |ПОМЕСТИТЬ Материалы
    |ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ГраницаОст, ЗаказПоставщику ССЫЛКА Документ.ЗаказДавальца
    |                                        И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовДавальцев.Закрыт)) КАК ТабРег
    |ГДЕ ТабРег.ЗаказаноОстаток>0
    |;
    |////////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Заказ
    |ИЗ (
    |ВЫБРАТЬ Заказ ИЗ Продукция
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ Заказ ИЗ Материалы
    |) КАК Свод
    |;
    |////////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ * ИЗ Продукция
    |;
    |////////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ * ИЗ Материалы
    |";
    ЗаполнитьПараметрыЗапросаДатаСвертки(Запрос);
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Возврат;
    КонецЕсли;
    ТаблицаЗаказов = Результат[0].Выгрузить();
    Если ТаблицаЗаказов.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    ТаблицаПродукция = Результат[1].Выгрузить();
    ТаблицаМатериалы = Результат[2].Выгрузить();

// Заменил его таким образом, написал, только кусочек после запроса.  


    ЗаполнитьПараметрыЗапросаДатаСвертки(Запрос);
    
    Результат = Запрос.ВыполнитьПакет();
    Если Результат[2].Пустой() Тогда
        Возврат;
    КонецЕсли;
    ТаблицаЗаказов = Результат[2].Выгрузить();
    ТаблицаПродукция = Результат[3].Выгрузить();
    ТаблицаМатериалы = Результат[4].Выгрузить();

//Нужно проанализировать запросы нескольких процедур, чтобы правильно поправить код

 

 

Подобная ошибка встречается в процедурах:
СформироватьДокументыВводаОстатковЗаказыНаПроизводство()
СформироватьДокументыВводаОстатковЗаказыДавальцу()
СформироватьДокументыВводаОстатковЗаказыНаРемонт()
СформироватьДокументыВводаОстатковЗаказыПереработчику()

 

4. Присвоение значения несуществующему реквизиту табличной части. Касается реквизита "Отменено" и "ПричинаОтмены". 

 
 Пример ошибки из процедуры СформироватьДокументыВводаОстатковЗаказыДавальцу()
Для Каждого СтрокаТЧ Из ДокОст.Материалы Цикл
    Если СтрокаТЧ.Отменено Тогда
        Продолжить;
          ИначеЕсли СтрокиМатериалы = Неопределено Тогда
         СтрокаТЧ.Отменено = Истина;
         СтрокаТЧ.ПричинаОтмены = ПричинаОтменыЗаказа;
         Продолжить;
   КонецЕсли;
// Заменил его таким образом, просто закомментировал обращение к "отменено".
        Для Каждого СтрокаТЧ Из ДокОст.Материалы Цикл
    
            //Если СтрокаТЧ.Отменено Тогда
            //    Продолжить;
            //ИначеЕсли СтрокиМатериалы = Неопределено Тогда
            //    СтрокаТЧ.Отменено = Истина;
            //    СтрокаТЧ.ПричинаОтмены = ПричинаОтменыЗаказа;
            //    Продолжить;
            //КонецЕсли;
           
  

 

 

Подобную ошибку я нашел в процедурах:
СформироватьДокументыВводаОстатковЗаказыДавальцу() 
СформироватьДокументыВводаОстатковЗаказыПереработчику()

5. Также, есть нюанс связанная с переполнение тч документа для процедуры СформироватьДокументыВводаОстатковМатериалыВПроизводстве()
Возможно, эта ошибка возникла только у меня, все равно здесь опишу её решение, я ограничил количество тч для документа.

 
 Данная проблема у меня возникла только для СформироватьДокументыВводаОстатковМатериалыВПроизводстве()
 
Прикладываю обработку, в которой я поправил все найденные мной ошибки.
Обработка актуальна для версии ЕРП 2.4.12.83. 
Для базы, которую я сворачивал - обработка отработала без ошибок. Для другой базы возможно вылетят новые. Большую часть исправленного кода я пометил комментариями, но часть однотипных ошибок вроде - Новый Структура() я оставил без изменения.
В более актуальных релизах, например 2.4.13.103 я увидел, что часть ошибок уже поправили, поэтому, возможно, типовая свертка отработает без проблем на новых релизах. 

Обработка Свертка Ерп

См. также

Оптимизированная свертка Бухгалтерии 3.0

Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Платные (руб)

Расширение позволяет за 1-2 дня свернуть базу с десятками миллионов документов. Использует оптимизированный алгоритм определения документов, на которые нет ссылок, для последующего удаления 16 фоновыми заданиями. Не помечает документы на удаление.

38400 руб.

08.02.2024    480    7    0    

2

Многофункциональная выгрузка из 1С:УТ 11/ УТ 10 в 1С:БП2, БП3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС

Обмен между базами 1C Оптовая торговля Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Хотите точно знать, что вы выгружаете? Хотите сворачивать товары по НДС или фильтровать товары по доп. реквизиту? Вы волшебник, которому необходимо превращать одних контрагентов в других? Хотите при выгрузке превратить группу товаров в один? Или просто нужен удобный OLE обмен между 1C:Управление торговлей (ред. 11 или 10) и 1С:Бухгалтерия предприятия (ред. 2 или 3). Тогда эта обработка для вас!

10900 руб.

19.04.2013    168443    350    395    

327

Обрезание базы 1С

Свертка базы 8.3.8 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Механизм обрезания базы 1С. Описан процесс переноса среза остатков в копию базы. Представлено прикладное решение - обработка по переносу данных. Реализован способ обмена между базами без длительного отключения рабочей базы.

7200 руб.

27.03.2023    4168    11    2    

13

Сравнение остатков по регистрам накопления

Свертка базы Платформа 1С v8.3 1С:Управление торговлей 10 Управленческий учет Абонемент ($m)

Внешняя обработка (для конфигураций на обычных формах) сравнивает остатки на дату и в разрезе организации по всем регистрам накопления. Сравнение происходит между базами по технологии Com-соединение. Используется при свертке базы.

3 стартмани

27.03.2024    323    0    RustIG    0    

3

Свертка остатков по 41 счету в корреспонденции с 91 счетом

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Обработка обращается к остаткам по счету 41.1 на дату, что выбрал пользователь, пробегается по ним и заполняет документ "Операция, введенная вручную".

1 стартмани

18.03.2024    209    5    config    3    

2

Свертка ЗУП 3.1 и ЗКГУ 3.1

Свертка базы Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Вопрос, который мучает всех: в связи с развитием возможностей программ 1С размеры/объем очень быстро растут (уже объем пустой базы более 1 Гб) и не секрет, что чем "тяжелее" база, тем она медленнее работает. Для БП-3.0 разработчики 1С сделали вшитый типовой механизм свертки базы, суть которого вывести остатки по счетам на дату свертки и удалить все документы/движения до этой даты. А вот для ЗУП пока ничего подобного нет, а база растет быстрее, чем на дрожжах. Я долго анализировал и искал возможные решения для свертки ЗУП, поиск в интернете дал кучу различных вариантов. А когда начинаешь их рассматривать, в основном – только "перенос" среднего заработка, а остальное – "доделай сам". Только фирмы-франчайзи предлагают что-то более серьезное, но за хорошую плату.

5 стартмани

28.02.2024    1017    34    ivnik    16    

16

Свертка выбранных остатков

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Обработка позволяет свернуть выбранные остатки по счету на выбранный счет.

1 стартмани

13.02.2024    222    3    medm    0    

3

Свертка ЗУП 3

Свертка базы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Свертка ЗУП 3.1 по трем регистрам с возможностью чистки базы от документов движения и чистки сотрудников от уволенных.

5 стартмани

16.01.2024    1163    32    AlexHelmer    1    

6
Оставьте свое сообщение