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

02.01.22

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка по типовой свертке ЕРП с исправленными ошибками.
.epf 130,77Kb
26
26 Скачать (1 SM) Купить за 1 850 руб.

Добрый день, коллеги. Хочу рассказать про опыт использования типовой обработки свертки ерп.  А именно про ряд ошибок, которые могут встречаться в типовой обработке свертки ЕРП. У меня обработка заработала после их исправления. Ошибки актуальны для версии ерп 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 я увидел, что часть ошибок уже поправили, поэтому, возможно, типовая свертка отработает без проблем на новых релизах. 

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

См. также

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7768    55    22    

66

Перенос данных 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    171919    364    397    

334

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

Универсальная свертка баз данных под 1С разработана для свертки баз данных различного объема и сложности. Обработка работает на простых и управляемых формах. Обработка позволяет легко и интуитивно понятно проводить работы по свертке базы данных и других необходимых операций связанных с обслуживанием баз данных.

6000 руб.

22.05.2024    2985    13    7    

22

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

Обработка свертки базы 1С УНФ 1.6 выполнена в виде расширения конфигурации, которое встраивается в вашу базу без снятия с поддержки, и адаптирована под релиз УНФ 1.6.

4800 руб.

20.04.2021    16878    51    34    

58

Свертка базы Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Разработка универсальна, работает на любой конфигурации, на версиях платформ 8.1 и 8.2. Исходные коды открыты. Усекаются сразу все разделы учета (регистры бухгалтерии, регистры накопления, регистры сведений). Разработка представляет из себя cf-файл с одним единственным документом: ЗакрытиеПериода. В нём содержится функционал как по заполнению, так и по очистке регистров. Так же для версии 8.2 возможна переброска данных в "чистую" базу нажатием одной кнопки.

4800 руб.

21.02.2011    109398    113    248    

303

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

Правила переноса остатков из конфигурации Бухгалтерия 3.0 в конфигурацию Бухгалтерия 3.0. Правила могут быть полезны для свертки рабочей базы документами "Ввод начальных остатков" или для перехода из типовой Бухгалтерии в отраслевую конфигурацию, основанную на ней, или для перехода с УСН на ОСНО.

2 стартмани

26.09.2024    480    16    kumi2012    7    

4

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

Обработка предназначена для опытного программиста 1С в качестве универсального инструмента для срезки баз 1С на обычных формах. Свертка выполняется стандартными средствами, без прямой записи в базу средствами СУБД. Для работы необходимо скопировать код из модуля объекта в общий модуль и поменять имя общего модуля в нескольких местах модуля формы.

5 стартмани

18.09.2024    265    4    aserge93    5    

2

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

Представлена рабочая обработка для перехода на учет партий в учете запасов (не универсальная). Дополнительно расписана технология работы с документом ОперацияБух и с аналитиками учета (основная цель).

1 стартмани

19.08.2024    646    1    RustIG    5    

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