Добрый день !
Имеется база торговли. До 2013 года вели учет без контроля отрицательных остатков. Начиная с 2014 это дело закрыли. Восстановили ГП. Но с партиями беда - до 2014 много отрицательных. Соответственно, себестоимость плывет. Решили обрезать базу. На 1 января 2015 года завести единую партию на основании остатков и закупочных цен. Потом все доки перепровести. Доки и партии до 2015 года грохнуть. Подскажите, чем этот способ череват и какие есть подводные камни ? Какую обработку посоветуете для проведения данной операции ?
Имеется база торговли. До 2013 года вели учет без контроля отрицательных остатков. Начиная с 2014 это дело закрыли. Восстановили ГП. Но с партиями беда - до 2014 много отрицательных. Соответственно, себестоимость плывет. Решили обрезать базу. На 1 января 2015 года завести единую партию на основании остатков и закупочных цен. Потом все доки перепровести. Доки и партии до 2015 года грохнуть. Подскажите, чем этот способ череват и какие есть подводные камни ? Какую обработку посоветуете для проведения данной операции ?
По теме из базы знаний
- Подготовка для свертки ТиС 9.2x (Чистка Документов+Отчет)
- Свертка ТиС 9.2
- Свертка ТиС 9.2 7.7 ole Действительно клевая и простая + Создание новой базы без документов с сохранением всех справочников
- Учет с нуля на основе имеющейся файл-серверной базы данных 1С 7.7
- Стандартная свертка базы 1С:Розница не работает? Тогда вам сюда
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А вам нужны эти партии? Если в учете бардак, зачем еще и с партиями связываться?
Включить учетную политику "по средневзвешенной" и очистить все партии в документах и их движениях. Посмотреть на состояние учета, оценить. Может быть и не стоит обрезать базу.
В заключение стандартненько, вне зависимости от обрезаем или нет - инвентаризация и приведения учета в соответствие факту.
Включить учетную политику "по средневзвешенной" и очистить все партии в документах и их движениях. Посмотреть на состояние учета, оценить. Может быть и не стоит обрезать базу.
В заключение стандартненько, вне зависимости от обрезаем или нет - инвентаризация и приведения учета в соответствие факту.
(4) Black Cat,
Это слабо сочетается с
Достоверность вашего "от кого и по какой цене" получается низковатой.
Ну не хотите отказываться от партий, сделайте документ (можно закрытие месяца допилить, можно отдельный сделать), который позволит вам закрыть пересорт. Можно в ручном режиме, если сделать документ типа "пересортица". Можно в автоматическом. "Рыбу" могу подбросить. У меня есть в своём проекте и ручной пересорт и автоматический. Но допиливать ручками однозначно придётся.
партии нужны нам, чтоб видеть от кого пришел товар и по какой цене
Это слабо сочетается с
Но с партиями беда - до 2014 много отрицательных
Достоверность вашего "от кого и по какой цене" получается низковатой.
Ну не хотите отказываться от партий, сделайте документ (можно закрытие месяца допилить, можно отдельный сделать), который позволит вам закрыть пересорт. Можно в ручном режиме, если сделать документ типа "пересортица". Можно в автоматическом. "Рыбу" могу подбросить. У меня есть в своём проекте и ручной пересорт и автоматический. Но допиливать ручками однозначно придётся.
(6) Black Cat,
Рядом с каждой красной партией есть чёрная. Свернутый остаток по номенклатуре, например 3 шт, по первой партии 5 шт, по второй 2 шт, по третьей -4 шт. Тоже своего рода пересорт. Учетный.
А причем тут пересортица, если на данный момент мешаются отрицательные партии.
Рядом с каждой красной партией есть чёрная. Свернутый остаток по номенклатуре, например 3 шт, по первой партии 5 шт, по второй 2 шт, по третьей -4 шт. Тоже своего рода пересорт. Учетный.
(8) vcv, ну это да, согласен. Ну тут уже лучше начать партионный учет по новой чем жить так, как сейчас. Вот и хочу на основании остатков на 01.01.15 00:00:01 на основании остатков номенклатуры, создать единую партию, цену для партии взять из закупочной цены на это же время, как посоветовал (7) CheBurator.
Подскажите, какую обработку лучше использовать из готовых (можно даже с минимальными доработками) для сворачивания таким образом базы.
Подскажите, какую обработку лучше использовать из готовых (можно даже с минимальными доработками) для сворачивания таким образом базы.
(9) Black Cat,
Ну какая обработка, если вам нужно сформировать движения по регистру? Это документ нужен.
Вот гляньте для примера. У меня используется в модуле проведения закрытия месяца.
Ну какая обработка, если вам нужно сформировать движения по регистру? Это документ нужен.
Вот гляньте для примера. У меня используется в модуле проведения закрытия месяца.
Процедура ЗачетПересортаПоРегистру(Идентификатор,ВремПартии,РеквизитКоличества="Количество",РеквизитКоличестваВПачке="КоличествоВПачке")
Перем РегПартии;
Состояние("Зачет пересорта по регистру "+Идентификатор+"...");
ТаблицаИтоговРегистра = СоздатьОбъект("ТаблицаЗначений");
ВремПартии.ВыгрузитьИтоги(ТаблицаИтоговРегистра,1,1);
РегПартии = Регистр.ПолучитьАтрибут(Идентификатор);
ТаблицаПартий = СоздатьОбъект("ИндексированнаяТаблица");
ТаблицаПартий.Загрузить(ТаблицаИтоговРегистра);
Если Идентификатор = "ПартииОтданные" Тогда
ТаблицаПартий.Группировать("СтатусПартии:Фирма,Договор,Номенклатура,СтатусПартии;Партия:Партия,ДокументПередачи","Количество,КоличествоВПачке,СуммаУпр,СуммаРуб,СуммаБезНДС,ПродСтоимость");
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
ТаблицаПартий.Группировать("СтатусПартии:Фирма,Договор,Склад,Номенклатура,ДокПродажи;Партия:Партия","Количество,КоличествоВПачке,ПродСтоимость,ПродСтоимостьБезНДС,СуммаСкидки");
ИначеЕсли Идентификатор = "ПринятыйТовар" Тогда
ТаблицаПартий.Группировать("СтатусПартии:Фирма,Договор,Склад,Номенклатура,ДокДвижения,НомерСтрокиДокумента;Партия:Партия","Количество,КоличествоВПачке,КоличествоСписано,КоличествоВПачкеСписано");
Иначе
глВнутренняяОшибка("Не поддерживаемый регистр "+Идентификатор,"ЗачетПересортаПоРегистру");
Возврат;
КонецЕсли;
ТаблицаПартий.ВыбратьСтроки();
Счетчик = 0;
МаксСчетчик = ТаблицаПартий.КоличествоСтрок();
Пока ТаблицаПартий.ПолучитьСтроку() = 1 Цикл
Счетчик = Счетчик + 1;
Если Счетчик % 10 = 1 Тогда
Состояние("Зачет пересорта по регистру "+Идентификатор+" ["+Цел(Счетчик/МаксСчетчик*100)+"%]...");
КонецЕсли;
Если ТаблицаПартий.Номенклатура.АвтоНаименование = 0 Тогда
Продолжить;
КонецЕсли;
//
ТаблицаОстатковПартий = ТаблицаПартий.тзПотомки;
//
ТребуетсяЗачетПересорта = 0;
КоличествоЧерным = 0;
ТаблицаОстатковПартий.ВыбратьСтроки();
Пока ТаблицаОстатковПартий.ПолучитьСтроку() = 1 Цикл
КоличествоОстатка = ТаблицаОстатковПартий.ПолучитьЗначение(ТаблицаОстатковПартий.НомерСтроки,РеквизитКоличества);
Если КоличествоОстатка < 0 Тогда
ТребуетсяЗачетПересорта = 1;
Иначе
КоличествоЧерным = КоличествоЧерным + КоличествоОстатка;
КонецЕсли;
КонецЦикла;
//
Если ТребуетсяЗачетПересорта = 1 Тогда
СтрокаТаблицыКрасная = 1;
КоличествоСтрокТаблицыОстатковПартий = ТаблицаОстатковПартий.КоличествоСтрок();
Пока СтрокаТаблицыКрасная <= КоличествоСтрокТаблицыОстатковПартий Цикл
Количество = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,РеквизитКоличества);
КоличествоВПачке = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,РеквизитКоличестваВПачке);
Если Идентификатор = "ПартииОтданные" Тогда
СуммаУпр = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"СуммаУпр");
СуммаРуб = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"СуммаРуб");
СуммаБезНДС = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"СуммаБезНДС");
ПродСтоимость = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимость");
ПродСтоимостьБезНДС = 0;
СуммаСкидки = 0;
ДокументПередачи = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"ДокументПередачи");
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
СуммаУпр = 0;
СуммаРуб = 0;
СуммаБезНДС = 0;
ПродСтоимость = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимость");
ПродСтоимостьБезНДС = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимостьБезНДС");
СуммаСкидки = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"СуммаСкидки");
ИначеЕсли Идентификатор = "ПринятыйТовар" Тогда
СуммаУпр = 0;
СуммаРуб = 0;
СуммаБезНДС = 0;
ПродСтоимостьБезНДС = 0;
СуммаСкидки = 0;
КонецЕсли;
Партия = ТаблицаОстатковПартий.ПолучитьЗначение(СтрокаТаблицыКрасная,"Партия");
//
Если Количество < 0 Тогда
ТаблицаОстатковПартий.ВыбратьСтроки();
Пока ТаблицаОстатковПартий.ПолучитьСтроку() = 1 Цикл
КоличествоОстатка = ТаблицаОстатковПартий.ПолучитьЗначение(ТаблицаОстатковПартий.НомерСтроки,РеквизитКоличества);
КоличествоОстаткаВПачке = ТаблицаОстатковПартий.ПолучитьЗначение(ТаблицаОстатковПартий.НомерСтроки,РеквизитКоличестваВПачке);
Если КоличествоОстатка > 0 Тогда
Коэффициент = ?(-Количество<=КоличествоОстатка,1,КоличествоОстатка/(-Количество));
Если Коэффициент = 1 Тогда
СписатьКоличество = Количество;
СписатьКоличествоВПачке = КоличествоВПачке;
СписатьСуммаУпр = СуммаУпр;
СписатьСуммаРуб = СуммаРуб;
СписатьСуммаБезНДС = СуммаБезНДС;
СписатьПродСтоимость = ПродСтоимость;
СписатьПродСтоимостьБезНДС = ПродСтоимостьБезНДС;
СписатьСуммаСкидки = СуммаСкидки;
Иначе
СписатьКоличество = Окр(Количество * Коэффициент,6);
СписатьКоличествоВПачке = Окр(КоличествоВПачке * Коэффициент,6);
СписатьСуммаУпр = Окр(СуммаУпр * Коэффициент,2);
СписатьСуммаРуб = Окр(СуммаРуб * Коэффициент,2);
СписатьСуммаБезНДС = Окр(СуммаБезНДС * Коэффициент,2);
СписатьПродСтоимость = Окр(ПродСтоимость * Коэффициент,2);
СписатьПродСтоимостьБезНДС = Окр(ПродСтоимостьБезНДС * Коэффициент,2);
СписатьСуммаСкидки = Окр(СуммаСкидки * Коэффициент,2);
КонецЕсли;
ТаблицаОстатковПартий.УстановитьЗначение(ТаблицаОстатковПартий.НомерСтроки, РеквизитКоличества, КоличествоОстатка + СписатьКоличество);
ТаблицаОстатковПартий.УстановитьЗначение(ТаблицаОстатковПартий.НомерСтроки, РеквизитКоличестваВПачке, КоличествоОстаткаВПачке + СписатьКоличествоВПачке);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,РеквизитКоличества,Количество-СписатьКоличество);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,РеквизитКоличестваВПачке,КоличествоВПачке-СписатьКоличествоВПачке);
Если Идентификатор = "ПартииОтданные" Тогда
ТаблицаОстатковПартий.СуммаУпр = ТаблицаОстатковПартий.СуммаУпр + СписатьСуммаУпр;
ТаблицаОстатковПартий.СуммаРуб = ТаблицаОстатковПартий.СуммаРуб + СписатьСуммаРуб;
ТаблицаОстатковПартий.СуммаБезНДС = ТаблицаОстатковПартий.СуммаБезНДС + СписатьСуммаБезНДС;
ТаблицаОстатковПартий.ПродСтоимость = ТаблицаОстатковПартий.ПродСтоимость + СписатьПродСтоимость;
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"СуммаУпр",СуммаУпр-СписатьСуммаУпр);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"СуммаРуб",СуммаРуб-СписатьСуммаРуб);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"СуммаБезНДС",СуммаБезНДС-СписатьСуммаБезНДС);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимость",ПродСтоимость-СписатьПродСтоимость);
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
ТаблицаОстатковПартий.ПродСтоимость = ТаблицаОстатковПартий.ПродСтоимость + СписатьПродСтоимость;
ТаблицаОстатковПартий.ПродСтоимостьБезНДС = ТаблицаОстатковПартий.ПродСтоимостьБезНДС + СписатьПродСтоимостьБезНДС;
ТаблицаОстатковПартий.СуммаСкидки = ТаблицаОстатковПартий.СуммаСкидки + СписатьСуммаСкидки;
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимость",ПродСтоимость-СписатьПродСтоимость);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"ПродСтоимостьБезНДС",ПродСтоимостьБезНДС-СписатьПродСтоимостьБезНДС);
ТаблицаОстатковПартий.УстановитьЗначение(СтрокаТаблицыКрасная,"СуммаСкидки",СуммаСкидки-СписатьСуммаСкидки);
КонецЕсли;
Количество = Количество - СписатьКоличество;
КоличествоВПачке = КоличествоВПачке - СписатьКоличествоВПачке;
СуммаУпр = СуммаУпр - СписатьСуммаУпр;
СуммаРуб = СуммаРуб - СписатьСуммаРуб;
СуммаБезНДС = СуммаБезНДС - СписатьСуммаБезНДС;
ПродСтоимость = ПродСтоимость - СписатьПродСтоимость;
ПродСтоимостьБезНДС = ПродСтоимостьБезНДС - СписатьПродСтоимостьБезНДС;
СуммаСкидки = СуммаСкидки - СписатьСуммаСкидки;
РегПартии.Фирма = ТаблицаОстатковПартий.Фирма;
РегПартии.Договор = ТаблицаОстатковПартий.Договор;
РегПартии.Номенклатура = ТаблицаОстатковПартий.Номенклатура;
Если Идентификатор = "ПартииОтданные" Тогда
РегПартии.СтатусПартии = ТаблицаОстатковПартий.СтатусПартии;
РегПартии.ДокументПередачи = ДокументПередачи;
РегПартии.КодОперации = глКО.Прочее;
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
РегПартии.Склад = ТаблицаПартий.Склад;
РегПартии.ДокПродажи = ТаблицаПартий.ДокПродажи;
ИначеЕсли Идентификатор = "ПринятыйТовар" Тогда
РегПартии.Склад = ТаблицаПартий.Склад;
РегПартии.ДокДвижения = ТаблицаПартий.ДокДвижения;
РегПартии.НомерСтрокиДокумента = ТаблицаПартий.НомерСтрокиДокумента;
КонецЕсли;
РегПартии.Сторно = 0;
РегПартии.Корректировка = ЭтоДокументКорректировки;
РегПартии.КорректируемыйДокумент = КорректируемыйДокумент;
//
РегПартии.Партия = Партия;
РегПартии.УстановитьАтрибут(РеквизитКоличества,СписатьКоличество);
РегПартии.УстановитьАтрибут(РеквизитКоличестваВПачке,СписатьКоличествоВПачке);
Если Идентификатор = "ПартииОтданные" Тогда
РегПартии.СуммаУпр = СписатьСуммаУпр;
РегПартии.СуммаРуб = СписатьСуммаРуб;
РегПартии.СуммаБезНДС = СписатьСуммаБезНДС;
РегПартии.ПродСтоимость = СписатьПродСтоимость;
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
РегПартии.ПродСтоимость = СписатьПродСтоимость;
РегПартии.ПродСтоимостьБезНДС = СписатьПродСтоимостьБезНДС;
РегПартии.СуммаСкидки = СписатьСуммаСкидки;
КонецЕсли;
Если (СписатьКоличество<>0)ИЛИ(СписатьКоличествоВПачке<>0)ИЛИ(СписатьСуммаУпр<>0)ИЛИ(СписатьСуммаРуб<>0)ИЛИ(СписатьСуммаБезНДС<>0)ИЛИ(СписатьПродСтоимость<>0)ИЛИ(СписатьПродСтоимостьБезНДС<>0)ИЛИ(СписатьСуммаСкидки<>0) Тогда
РегПартии.ДвижениеРасходВыполнить();
КонецЕсли;
//
РегПартии.Партия = ТаблицаОстатковПартий.Партия;
РегПартии.УстановитьАтрибут(РеквизитКоличества,-СписатьКоличество);
РегПартии.УстановитьАтрибут(РеквизитКоличестваВПачке,-СписатьКоличествоВПачке);
Если Идентификатор = "ПартииОтданные" Тогда
РегПартии.СуммаУпр = -СписатьСуммаУпр;
РегПартии.СуммаРуб = -СписатьСуммаРуб;
РегПартии.СуммаБезНДС = -СписатьСуммаБезНДС;
РегПартии.ПродСтоимость = -СписатьПродСтоимость;
РегПартии.ДокументПередачи = ТаблицаОстатковПартий.ДокументПередачи;
ИначеЕсли Идентификатор = "РеализованныйТовар" Тогда
РегПартии.ПродСтоимость = -СписатьПродСтоимость;
РегПартии.ПродСтоимостьБезНДС = -СписатьПродСтоимостьБезНДС;
РегПартии.СуммаСкидки = -СписатьСуммаСкидки;
РегПартии.ДокПродажи = ТаблицаПартий.ДокПродажи;
КонецЕсли;
Если (СписатьКоличество<>0)ИЛИ(СписатьКоличествоВПачке<>0)ИЛИ(СписатьСуммаУпр<>0)ИЛИ(СписатьСуммаРуб<>0)ИЛИ(СписатьСуммаБезНДС<>0)ИЛИ(СписатьПродСтоимость<>0)ИЛИ(СписатьПродСтоимостьБезНДС<>0)ИЛИ(СписатьСуммаСкидки<>0) Тогда
РегПартии.ДвижениеРасходВыполнить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СтрокаТаблицыКрасная = СтрокаТаблицыКрасная + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ЗачетПересортаПоРегистру
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот