Групповое изменение реквизитов договоров

Опубликовал Игорь Гречкин (Grekk) в раздел Обработки - Обработка справочников

Групповое изменение реквизитов договоров для УТ 10.3.12.3

Возможно отбирать и изменять реквизиты:

  • ВидДоговора
  • ВедениеВзаиморасчетов
  • ВестиПоДокументамРасчетовСКонтрагентом

Не составит труда добавить другие реквизиты. В моем случае необходимость была только в перечисленных.

Отличия от подобных обработок:

  1. В других обработках создается ситуация когда не выполняется условие "Если НЕ ОбменДанными.Загрузка Тогда". В этой формируется запрос ко всем регистрам сведений и регистрам накопления, где присутствует измерение с типом значения "СправочникСсылка.ДоговорыКонтрагентов", который получает список всех документов, которые могут помешать изменению реквизитов договоров. Затем отмена проведения документов, изменение реквизитов договоров и проведение документов.
  2. Возможность изменить не один договор, а список который можно заполнить подбором или автоматически по определенным условиям.

Скачать файлы

Наименование Файл Версия Размер
Изменение реквизитов договоров
.epf 10,69Kb
11.09.15
11
.epf 10,69Kb 11 Скачать

См. также

Комментарии
1. Артём Алтухов (Fannasankh) 11 29.07.14 09:23 Сейчас в теме
Перепроводить очень старые документы часто плохо заканчивается
2. Игорь Гречкин (Grekk) 43 29.07.14 09:44 Сейчас в теме
(1) Fannasankh,
да если никогда не восстанавливались последовательности или внесены изменения в процедуру ОбработкаПроведения
3. юрий гулидов (gull22) 81 30.07.14 08:39 Сейчас в теме
На этапе внедрения может пригодиться, когда есть возможность "поиграть" вариантами.
4. Марина Семёнова (SemenovaMarinaV) 30.07.14 08:42 Сейчас в теме
Так есть же стандратная обрабока. Зачем изобретать велосипед?
5. Игорь Гречкин (Grekk) 43 30.07.14 11:44 Сейчас в теме
(4) SemenovaMarinaV,
чет я протупил, как называется?
6. Степашка Никулин (Styvi) 5 30.07.14 11:45 Сейчас в теме
(4) SemenovaMarinaV, согласен, что стандартная обработка поменяет реквизиты договоров... но автор обещает ещё и правильную обработку базы после этих изменений...

На этапе внедрения может пригодиться, когда есть возможность "поиграть" вариантами.

на этапе внедрения обычно времени мало для таких игр :)
7. Марина Семёнова (SemenovaMarinaV) 30.07.14 14:18 Сейчас в теме
А если нет... Лучше буду использовать стандартную
8. Кирилл Панфилов (PanKir) 61 10.09.15 15:00 Сейчас в теме
Обработка хорошая, но для кроссплатформности (в плане различных конфигураций) есть одно замечание:
не все регистры сведений имеют периодичность, чтобы использовать "СрезПоследних" - использовал в ЛВЗ (ликероводочный), там есть один такой регистр. Мне повезло, он был пустой, я просто его исключил из запроса.

второе замечание - если отбор договоров получать не по всем предоставленным фильтрам обработки, то ясное дело что и не все соответствующие реквизиты требуют изменения. В связи с этим я предлагаю немного подправить обработку:

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

ТекДоговор.ВестиПоДокументамРасчетовСКонтрагентом = НовыйВестиПоДокументамРасчетовСКонтрагентом;
Сообщить("Запись договора " + ТекДоговор.Код + " Контрагента - " + ТекДоговор.Владелец);
ТекДоговор.Записать();
КонецЦикла;
КонецПроцедуры


(Прошу прощения, что не разукрашено, нет возможности)
В двух словах - если новое значение реквизита заполнено, то меняем, иначе - ничего не делаем.
9. Игорь Гречкин (Grekk) 43 11.09.15 12:11 Сейчас в теме
(8) PanKir, Спасибо. Второе замечание учел, обработку обновил.
Также строку
ТекДоговор.ВестиПоДокументамРасчетовСКонтрагентом = НовыйВестиПоДокументамРасчетовСКонтрагентом;

заменил на
ТекДоговор.ВестиПоДокументамРасчетовСКонтрагентом = ?(ИмзменятьПоДокументам, НовыйВестиПоДокументамРасчетовСКонтрагентом, ТекДоговор.ВестиПоДокументамРасчетовСКонтрагентом);

Где ИмзменятьПоДокументам - новый реквизит на форме с типом булево.
Оставьте свое сообщение