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

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

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

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

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


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


Останется. Не путайте конфигурацию поставщика и основную конфигурацию
6. ipoloskov 120 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 120 28.04.20 15:47 Сейчас в теме
(7) я думал вызывать только при обновлении. Но потом решил, что лучше при каждом запуске, чтобы проверялось и при обычной разработке. Тормозов это не добавляет, и вызывается только для ограниченного количества пользователей: только для тех, у кого полные права.
9. i.s.o 23.06.20 11:31 Сейчас в теме
Спасибо, возьму это на заметку.
Но, я пошел немного другим путем - для всех "моих" регистров есть один регистратор - это, скажем, ДокументРегистраторДляДополнийКонфигурации с реквизитом "ДокументИсточник" - ссылка на документ стандартной конфигурации. Также есть и другие необходимые мне реквизиты. Каждый "мой" регистр обязательно содержит измерение "ДокументИсточник" - ссылки на документы стандартной конфигурации.
Есть "свои" подписки на события, где описано для каких документов необходимо создавать документ ДокументРегистраторДляДополнийКонфигурации, и все дальнейшие действия происходят уже с этим документом. И всегда есть доступ к ДокументуИсточнику, и из ДокументаИсточника можно посмотреть движения по ДокументРегистраторДляДополнийКонфигурации для этого ДокументаИсточника (отдельно для форм при открытии формируются кнопки для этого, и то для пользователей, кому это необходимо).
Отдельно могу перепроводить ДокументРегистраторДляДополнийКонфигурации, совсем не затрагивая ДокументИсточник (только чтение его).
И при обновлении вообще никогда не сталкиваюсь с тем, что будут мои дополнения затронуты.
10. ipoloskov 120 24.06.20 12:23 Сейчас в теме
(9) я так сделал на одном проекте ERP. Потом отказался от этой схемы и переделал на обычную.
Причина в том, что однажды мне при проведении потребовались остатки на дату документа, естественно, без учета движений этого документа. На обычной схеме это делается просто: берем остатки по регистру на дату документа, и вычитаем движения по регистру этого документа. Запрос получается простой.

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

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

Вакансии

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

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

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

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

Ведущий программист 1С (УТ 11)
Москва
зарплата до 200 000 руб.
Полный день