0. ipoloskov 121 23.04.20 09:33 Сейчас в теме

Проверка регистраторов при обновлении конфигурации

При обновлении конфигурации состав движений документов может быть изменен. Если в них были сделаны движения по своим регистрам, то их нужно восстановить. Если забыть это сделать - данные будут утеряны.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. cleaner_it 240 26.04.20 16:09 Сейчас в теме
При обновлении конфигурации поставщика может быть изменен состав движений документа. Если разработчиком в конфигурацию были добавлены свои регистры, и в качестве регистраторов выбраны документы основной поставки, то этот регистратор у них при этом слетит. Их надо восстановить вручную.


Неправильно обновляли, раз в основной конфигурации состав движений был заменён на состав движений из конфигурации поставщика. Есть ведь возможность объединения состава движений.
2. ipoloskov 121 26.04.20 18:07 Сейчас в теме
(1) если поставщик исключил движение по определенному регистратору - при объединении состава движений, он будет удален?
4. cleaner_it 240 27.04.20 15:46 Сейчас в теме
(2)
регистратору


Останется. Не путайте конфигурацию поставщика и основную конфигурацию
6. ipoloskov 121 27.04.20 16:25 Сейчас в теме
(4) поэтому я и не использую режим объединения состава движений
3. GAS.tlt 5 26.04.20 18:14 Сейчас в теме
(1)
А теперь представте кейс:
Вам постоянно нужно обновлять 15 разных измененных больших конфигураций. И релизов нужно накатить не 1 а штук 5. Можно конечно на каждом этапе галочки проверять (15*5=75 раз ), а можно использовать метод автора, плюс написать в autoIT скрипт обновления который без пользователя работает и если уже движения слетели (это будет происходить очень редко) ты об этом узнаешь, откатишься на резервную копию и обновишь руками установив нужную галочку.
Автору жирный плюс. Буду использовать. (Жалко что я сам до этого не додумался)
5. cleaner_it 240 27.04.20 15:52 Сейчас в теме
(3) Автообновлениями не занимался) Если дописывать через расширения, подписки на события, и переопределяемые модули - то контролировать попросту нечего. А если лезть глубже - то никакому скрипту я обновление не доверю. Не один, и не два раза встречался, когда добавленная дописка теряет актуальность, и её нужно убрать, или переместить, или ещё немного дописать. Со старыми конфигурациями на обычных формах сложнее, конечно, но с другой стороны - там в последние годы ничего и не пишут особо.

Автору плюс в любом случае - разработка концептуальная, пригодиться может и в других случаях
wolfsoft; +1 Ответить
7. astratek 2 28.04.20 14:23 Сейчас в теме
Небольшое замечание, отрази в статье, что вызывать надо только при обновлении конфигурации, а не при каждом запуске системы.
8. ipoloskov 121 28.04.20 15:47 Сейчас в теме
(7) я думал вызывать только при обновлении. Но потом решил, что лучше при каждом запуске, чтобы проверялось и при обычной разработке. Тормозов это не добавляет, и вызывается только для ограниченного количества пользователей: только для тех, у кого полные права.
9. i.s.o 23.06.20 11:31 Сейчас в теме
Спасибо, возьму это на заметку.
Но, я пошел немного другим путем - для всех "моих" регистров есть один регистратор - это, скажем, ДокументРегистраторДляДополнийКонфигурации с реквизитом "ДокументИсточник" - ссылка на документ стандартной конфигурации. Также есть и другие необходимые мне реквизиты. Каждый "мой" регистр обязательно содержит измерение "ДокументИсточник" - ссылки на документы стандартной конфигурации.
Есть "свои" подписки на события, где описано для каких документов необходимо создавать документ ДокументРегистраторДляДополнийКонфигурации, и все дальнейшие действия происходят уже с этим документом. И всегда есть доступ к ДокументуИсточнику, и из ДокументаИсточника можно посмотреть движения по ДокументРегистраторДляДополнийКонфигурации для этого ДокументаИсточника (отдельно для форм при открытии формируются кнопки для этого, и то для пользователей, кому это необходимо).
Отдельно могу перепроводить ДокументРегистраторДляДополнийКонфигурации, совсем не затрагивая ДокументИсточник (только чтение его).
И при обновлении вообще никогда не сталкиваюсь с тем, что будут мои дополнения затронуты.
10. ipoloskov 121 24.06.20 12:23 Сейчас в теме
(9) я так сделал на одном проекте ERP. Потом отказался от этой схемы и переделал на обычную.
Причина в том, что однажды мне при проведении потребовались остатки на дату документа, естественно, без учета движений этого документа. На обычной схеме это делается просто: берем остатки по регистру на дату документа, и вычитаем движения по регистру этого документа. Запрос получается простой.

На схеме с отдельным документом мне нужно найти вспомогательный документ и вычесть его движения. Получился такой вот монстр:
	Если ПолучатьОстаткиПроверенныхОТКНаДату=Неопределено
		И ЗначениеЗаполнено(ИсключатьДвиженияДокумента) Тогда
		
		//В целом ряде документов движения по мт_ДеталиПроверенныеОТК делает другой документ, а именно мт_УчетОстатковСерийныхНомеров.
		ДвижениеПоРегистру_ДеталиПроверенныеОТК_ДелаетОтдельныйДокум­ент_УчетОстатковСерийныхНомеров = 
			ТипЗнч(ИсключатьДвиженияДокумента) <> Тип("ДокументСсылка.мт_СборочнаяВедомость");
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПОМЕСТИТЬ ВТ_ПрошлиПроверкуОТК", "ПОМЕСТИТЬ ВТ_ПрошлиПроверкуОТК_Предварительно");
		Запрос.УстановитьПараметр("ИсключатьДвиженияДокумента", ИсключатьДвиженияДокумента);
		
		Запрос.Текст = Запрос.Текст + ";
						|
	               		|////////////////////////////////////////////////////////////­////////////////////
						|ВЫБРАТЬ
						|	ВТ_ПрошлиПроверкуОТК_Предварительно.Номенклатура КАК Номенклатура,
						|	ВТ_ПрошлиПроверкуОТК_Предварительно.Характеристика КАК Характеристика,
						|	ВТ_ПрошлиПроверкуОТК_Предварительно.Серия КАК Серия,
						|	ВТ_ПрошлиПроверкуОТК_Предварительно.ПровереноОстаток КАК ПровереноОстаток,
						|	ВТ_ПрошлиПроверкуОТК_Предварительно.ГодныеОстаток КАК ГодныеОстаток
						|ПОМЕСТИТЬ ВТ_ПрошлиПроверкуОТК_Объединенная
						|ИЗ
						|	ВТ_ПрошлиПроверкуОТК_Предварительно КАК ВТ_ПрошлиПроверкуОТК_Предварительно
						|
						|ОБЪЕДИНИТЬ ВСЕ
						|
						|ВЫБРАТЬ
						|	мт_ДеталиПроверенныеОТК.Номенклатура,
						|	мт_ДеталиПроверенныеОТК.Характеристика,
						|	мт_ДеталиПроверенныеОТК.Серия,
						|	СУММА(ВЫБОР
						|			КОГДА мт_ДеталиПроверенныеОТК.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
						|				ТОГДА -мт_ДеталиПроверенныеОТК.Проверено
						|			ИНАЧЕ мт_ДеталиПроверенныеОТК.Проверено
						|		КОНЕЦ),
						|	СУММА(ВЫБОР
						|			КОГДА мт_ДеталиПроверенныеОТК.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
						|				ТОГДА -мт_ДеталиПроверенныеОТК.Годные
						|			ИНАЧЕ мт_ДеталиПроверенныеОТК.Годные
						|		КОНЕЦ)
						|ИЗ";
		
		Если ДвижениеПоРегистру_ДеталиПроверенныеОТК_ДелаетОтдельныйДокум­ент_УчетОстатковСерийныхНомеров Тогда
			
			Запрос.Текст = Запрос.Текст + "
						|	Документ.мт_УчетОстатковСерийныхНомеров КАК мт_УчетОстатковСерийныхНомеров
						|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.мт_ДеталиПроверенныеОТК КАК мт_ДеталиПроверенныеОТК
						|		ПО мт_УчетОстатковСерийныхНомеров.Ссылка = мт_ДеталиПроверенныеОТК.Регистратор
						|ГДЕ
						|	мт_УчетОстатковСерийныхНомеров.ДокументОснование = &ИсключатьДвиженияДокумента";
			
		Иначе
			
			Запрос.Текст = Запрос.Текст + "
						|	РегистрНакопления.мт_ДеталиПроверенныеОТК КАК мт_ДеталиПроверенныеОТК
						|ГДЕ
						|	мт_ДеталиПроверенныеОТК.Регистратор = &ИсключатьДвиженияДокумента";
			
		КонецЕсли;
		
		Запрос.Текст = Запрос.Текст + "
						|
						|СГРУППИРОВАТЬ ПО
						|	мт_ДеталиПроверенныеОТК.Номенклатура,
						|	мт_ДеталиПроверенныеОТК.Характеристика,
						|	мт_ДеталиПроверенныеОТК.Серия
						|;
						|
						|////////////////////////////////////////////////////////////­////////////////////
						|ВЫБРАТЬ
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Номенклатура КАК Номенклатура,
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Характеристика КАК Характеристика,
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Серия КАК Серия,
						|	СУММА(ВТ_ПрошлиПроверкуОТК_Объединенная.ПровереноОстаток) КАК ПровереноОстаток,
						|	СУММА(ВТ_ПрошлиПроверкуОТК_Объединенная.ГодныеОстаток) КАК ГодныеОстаток
						|ПОМЕСТИТЬ ВТ_ПрошлиПроверкуОТК
						|ИЗ
						|	ВТ_ПрошлиПроверкуОТК_Объединенная КАК ВТ_ПрошлиПроверкуОТК_Объединенная
						|
						|СГРУППИРОВАТЬ ПО
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Номенклатура,
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Характеристика,
						|	ВТ_ПрошлиПроверкуОТК_Объединенная.Серия";
		
	КонецЕсли;
Показать

А монстров я не люблю.
Кроме того, если возникает ошибка при проведении вспомогательного документа, ее оказалось трудно поймать.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 70 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Разработчик 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству