Выровнять партионный учет со складским в 1С 7.7 (Производство+Услуги+Бухгалтерия)

1. dikd 17 15.03.20 13:36 Сейчас в теме
Привет, коллеги.

Имеется база 1С:Производство+Услуги+Бухгалтерия
не идут остатки Партионного и Складского учета.

Может кто-то сталивался, писал обработку по их выравниванию?

P.S. База обрезана, но каким-то странным образом, как мне сказал клиент "обрезана через внешние компоненты".
Есть документ "Свертка ИБ", но отредактировать его не возможно. В модуле этого документа пусто, в форме пусто (в смысле нет кода)
ХЗ как её так обрезали, но движения по регистрам этот документ сделал.
Вознаграждение за ответ
Показать полностью
Найденные решения
4. Sergex 58 15.03.20 15:09 Сейчас в теме +2 $m
А какая цель стоит? Прировнять остатки партионного учета к складским или наоборот?
По сути надо либо корректировкой регистров либо эти самым новым регистратором "Свертка ИБ" сторнировать в ноль, текущие остатки по регистру который мы корректируем, и следующим по оси времени документом оформить остатки идентичные тому учету по которому мы выравниваемся. И с момента второго документа остатки по обеим учетам сделаются идентичными.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user856012 13 15.03.20 14:54 Сейчас в теме
(1)
как мне сказал клиент "обрезана через внешние компоненты".
Наверное, таким образом у клиента в памяти отложилось "внешней обработкой".
Есть документ "Свертка ИБ"
В типовой ПУБ 385 (другой у меня нету) такой документ вообще отсутствует.
В модуле этого документа пусто, в форме пусто (в смысле нет кода)
См. п.1 - добавили документ в метаданные, программно создали и программно же сформировали его движения.
Может кто-то сталивался, писал обработку по их выравниванию?
Есть мнение, что это не обязательно: http://1c-pro.ru/threads/1s-pub-7-7-partionnyj-skladskoj-uchjot-tmc.49820/
5. Shreki2015 2 15.03.20 19:39 Сейчас в теме
(1)
Свертка ИБ

свертку ИБ создали, провели. потом в модуле убрали обработку проведения чтобы не перепроводили в будущем. итого: документ есть, движения по нему остались, а перепровести нельзя.
вариант: добавить проведение в этом документе чтобы и партии и остатки были одни и те же.
7. dikd 17 16.03.20 14:55 Сейчас в теме
(5) Да, скорее всего так и было. Поэтому исправить этот док и привести его к "складским" остаткам по регистру "Партии" вручную не выйдет.

Есть мысль программно изменить движения это документа по регистру Партии, и привести остатки партий к складским.
Но я с 7.7 очень давно тесно общался, вот и обратился сюда, мож у кого есть пример какой.
Причём легко изменить ВСЕ движения документа, а вот движения только одного регистра я пока не придумал как.
11. Shreki2015 2 17.03.20 11:03 Сейчас в теме
(7) движения регистра делаются просто.
регистр.названиерегистра.его измерения и ресурсы=чему хотите присвоить;
регистр.названиерегистра.ДвижениеПриходВыполнить();


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

и в пустую копию базы загрузить как ввод остатков.
думаю, так и делали раньше.
2. dikd 17 15.03.20 13:58 Сейчас в теме
Добавил вознаграждение
4. Sergex 58 15.03.20 15:09 Сейчас в теме +2 $m
А какая цель стоит? Прировнять остатки партионного учета к складским или наоборот?
По сути надо либо корректировкой регистров либо эти самым новым регистратором "Свертка ИБ" сторнировать в ноль, текущие остатки по регистру который мы корректируем, и следующим по оси времени документом оформить остатки идентичные тому учету по которому мы выравниваемся. И с момента второго документа остатки по обеим учетам сделаются идентичными.
8. dikd 17 16.03.20 14:56 Сейчас в теме
(4)
момента
О, а это идея... сторнировать движения по документу!
Попробую, если прокатит, то 2$m Ваши)
9. Sergex 58 16.03.20 15:26 Сейчас в теме
(8) Сторнировать не хватит я думаю. Там же скорее всего как обычно при свертках, рассчитали сальдо и прописали его в движения документа "Свертка ИБ". А на то, что сальдо расходится по партионному и складским учетам - внимания не обратили. Сложность в приведении партионного учета к складскому будет в том, что надо будет выдумать партии ибо насколько я помню их в складском нет :) вот привести складские остатки к партионным заметно проще так как аналитика партионного учета шире чем складского на эти самые партии.

Вырожденный случай оставить партии пустыми - некрасиво будут отчеты выглядеть...
6. PeterVP 15.03.20 23:54 Сейчас в теме
Вообще-то все подобные выравнивания обычно осуществляются простым перепроведением (складских) документов.
После корректной свёртки базы должны оставаться документы ввода остатков по каждому регистру, причём остатки по товарам должны биться в первую очередь в их табличных частях (если, конечно, свёртка была проведена корректно и остатки до самой свёртки бились, были выровнены, корректны).

Кроме документов ввода остатков будут ещё документы, которые были созданы уже после свёртки базы. Нужно просто взять и все-все-все документы, двигающие регистры остатков и партий, перепровести. Посмотреть что получится. В принципе, для типовых, не исковерканных говнокодерами, конфигураций этого должно быть достаточно.

Ну а если после перепроведения остатки по-прежнему не бьются, то можно уже будет копать дальше. Я бы запустил сравнение конфигураций и посмотрел насколько конфигурация вашего клиента отличается от типовой, насколько она исковеркана/переписана, обращая внимание, в первую очередь, на алгоритмы документов, которые двигают регистр остатков и регистр партий (то есть всех "складских" документов: ПоступлениеТМЦ, РеализацияТМЦ, СписаниеТМЦ и тд и тп).

То есть первоначальный план такой:
1) Перепроведение либо всех документов, либо только "складских". Если учёт не выровнялся, то переходим к пункту 2.
2) Сравнение конфигурации клиента с типовой конфигурацией.
10. Sergex 58 16.03.20 15:31 Сейчас в теме
(6) Широкий ряд самодельных сверток баз, в том числе и актуальных из этого магазина, фиксирует остатки регистров документами корректировки, а не ввода начальных остатков. При таком способе среза остатков типовые приемы не помогут, так как самих документов, история движений которых обусловила остатки уже может и не быть, а есть только срез регистрового сальдо зафиксированный документом корректировки регистра. Или как в данном примере с учетом архаичности конфигураций 7.7 - регистратором по нужному регистру нового типа. Ему просто движения записали обработкой, а сам документ - пустышка.
12. dikd 17 17.03.20 11:26 Сейчас в теме
(10)
Да, так оно и есть.
В итоге создал такой же свой документ "Пустышку" и в обработке проведения написал следующее (может кому пригодится):
Сторнировал все остатки по регистру "Партии" и ввёл остатки по регистру "МестаХранения" (обычне складкие остатки), правда стоимость партий было решено брыть как среднюю стоимость из "кривых" партий и в дальнейшем руками править:

Процедура ОбработкаПроведения()
    Перем Запрос, ТекстЗапроса;
	
    РегПартии = СоздатьОбъект("Регистр.Партии");
	ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
	ТЗСумм  = СоздатьОбъект("ТаблицаЗначений");
	РегПартии.ВременныйРасчет();
  	РассчитатьРегистрыНа(ДатаДок); 
	РегПартии.ВыгрузитьИтоги(ТабЗнач);
	ТЗСумм.Загрузить(ТабЗнач);
	ТабЗнач.ВыбратьСтроки();
	Пока ТабЗнач.ПолучитьСтроку()=1 Цикл		
		Регистр.Партии.Партия = ТабЗнач.Партия;
		Регистр.Партии.ВидМПЗ = ТабЗнач.ВидМПЗ;
		Регистр.Партии.МПЗ = ТабЗнач.МПЗ;
		Регистр.Партии.МестоХранения = ТабЗнач.МестоХранения;
		Регистр.Партии.Качество = ТабЗнач.Качество;
		Регистр.Партии.СрокЭксплуатации = ТабЗнач.СрокЭксплуатации;
		//Регистр.Партии.ПрямыеРасходыНУ = ТабЗнач.ПрямыеРасходыНУ;
		Регистр.Партии.Заявка = ТабЗнач.Заявка; 
		Регистр.Партии.Владелец = ТабЗнач.Владелец; 
		Регистр.Партии.Количество = ТабЗнач.Количество; 
		Регистр.Партии.КоличествоОС = 0;
		
		Регистр.Партии.Сумма = ТабЗнач.Сумма; ;
		Регистр.Партии.СуммаНУ = ТабЗнач.СуммаНУ; 
		Регистр.Партии.СуммаПР = 0;
		           
		Регистр.Партии.ДвижениеРасходВыполнить();
	КонецЦикла;
	 

	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ДатаДок по ДатаДок;
	|ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
	|МПЗ = Регистр.МестаХранения.МПЗ;
	|Владелец = Регистр.МестаХранения.Владелец;
	|Качество = Регистр.МестаХранения.Качество;
	|Количество = Регистр.МестаХранения.Количество;
	|МестоХранения = Регистр.МестаХранения.МестоХранения;
	|Функция КоличествоКонОст = КонОст(Количество);
	|Группировка МПЗ без групп;
	|"//}}ЗАПРОС
	;
	// Если ошибка в запросе, то выход из процедуры
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ТЗСумм.Свернуть("МПЗ","Количество,Сумма");
	ТЗСумм.НоваяКолонка("Цена","Число",,,,,,); 
	ТЗСумм.ВыбратьСтроки();
	Пока ТЗСумм.ПолучитьСтроку()=1 Цикл
      	ТЗСумм.Цена = ТЗСумм.Сумма/?(ТЗСумм.Количество=0,1,ТЗСумм.Количество); 
	КонецЦикла;	
	

	Пока Запрос.Группировка(1) = 1 Цикл     
		Если Запрос.Количество<=0 тогда
			Продолжить;
		КонецЕсли;	
		Регистр.Партии.Партия = ТекущийДокумент();
		Регистр.Партии.ВидМПЗ = Запрос.ВидМПЗ;
		Регистр.Партии.МПЗ = Запрос.МПЗ;
		Регистр.Партии.МестоХранения = Запрос.МестоХранения;
		Регистр.Партии.Качество = Запрос.Качество;
		//Регистр.Партии.СрокЭксплуатации = ТабЗнач.СрокЭксплуатации;
		//Регистр.Партии.ПрямыеРасходыНУ = ТабЗнач.ПрямыеРасходыНУ;
		//Регистр.Партии.Заявка = ТабЗнач.Заявка; 
		Регистр.Партии.Владелец = Запрос.Владелец; 
		Регистр.Партии.Количество = Запрос.Количество; 
		//Регистр.Партии.КоличествоОС = 0;
		          
		Сумма = 0;  
		Стр= 0;
		Если ТЗСумм.НайтиЗначение(Запрос.МПЗ,Стр,"МПЗ")=1 тогда
			Сумма = ТЗСумм.ПолучитьЗначение(Стр,"Цена")*Запрос.Количество;	
		КонецЕсли;	
		
		Регистр.Партии.Сумма = Сумма;
		Регистр.Партии.СуммаНУ = Сумма; 
		Регистр.Партии.СуммаПР = 0;
		
		Регистр.Партии.ДвижениеПриходВыполнить();
	КонецЦикла;
	
КонецПроцедуры  
Показать
13. Sergex 58 17.03.20 14:05 Сейчас в теме
(12) Я уже за семерку не помню просто, там что нельзя отобрать набор записей по регистратору, по нужному регистру, пересобрать его и записать? Чтобы не включать код в сам документ регистратор? В 8.х такое на ура прокатывает...
14. dikd 17 17.03.20 16:08 Сейчас в теме
(13)
Я уже за семерку не помню просто, там что нельзя отобрать набор записей по регистратору, по нужному регистру, пересобрать его и записать? Чтобы не включать код в сам документ регистратор? В 8.х такое на ура прокатывает...


Вот и я тоже тыщу лет с 7.7 дело не имел, а тут вот пришлось.

Думаю можно и обработкой перелопатить движения и заново их прицепить к документу.
Но не стал заморачиваться и сделал просто в обработке проведения, провёл, и код ОбработкиПроведения заремил от греха, это ведь разовая операция)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот