Изменение реквизитов дока без перепроведения |
Я |
01.08.16 — 14:48
Можно ли изменить в некоторых видах доков реквизит с одного на другой без перепроведения?
Напрм. в документе «Акт сверки» был указан некорректный контрагент «Эквайер», необходимо его поменять на контрагента «Сбербанк».
Также в документах «Отчет о розн. продажах», «Платежное поручение» поменять реквизит договор с «договор эквайринга» на «договор сбербанка». Доки 2014 года, поэтому документы перепроводить нельзя. Обработка поиск и замена дублирующих не поможет так как нужно чтоб в базе остались оба реквизита, но в части доков один реквизит а в другой части новый(другой) реквизит.
1 — 01.08.16 — 14:48
Загрузка=Истина;
2 — 01.08.16 — 14:53
групповая обработка справочников и документов меняет реквизиты но не перепроводит доки.
Но толку то? В движениях будут старые справочники
3 — 01.08.16 — 14:55
(2) буду уточнять насчет движении! иначе смысла нет в смене реквизитов:).
4 — 01.08.16 — 14:58
обработка УниверсальныйРедакторРеквизитов может даже регистры менять вроде
5 — 01.08.16 — 15:09
(0) Нет, нет и ещё раз нет. Нельзя изменять реквизиты, которые участвуют в движениях или оказывают влияние на их формирование.
Хотя… с другой стороны… если очень хочется… то можно
Можно обработкой «синхронизировано» вносить изменения и в сам документ и в его движения. Это как бы не совсем «перепроведение».
6 — 01.08.16 — 15:11
объектДокумент.ОбменДанными.Загрузка = Истина;
объектДокумент.Записать(РежимЗаписиДокумента.Запись);
В принципе достаточно, чтобы в большинстве типовых документов не проводилось никаких проверок при записи документа и при записи он не делал никаких движений (не изменялись существующие и не появлялись новые).
7 — 01.08.16 — 15:13
Но если, не дай бог, кто-то перепроведет документ — то изменятся движения и могут измениться остатки и обороты. Тогда прощай баланс
8 — 01.08.16 — 15:18
(7) Ну это понятно. Но может человек хочет коммент в документе поменять, или другой реквизит не влияющий на движения, но чтобы не сбить последовательность и не отправить док в обмен.
9 — 01.08.16 — 15:19
Аааа, гоню, он таки договор хочет поменять. Ну если он точно знает что делает, то дело его.
10 — 01.08.16 — 18:15
Уточнение
1) изменить нужно реквизиты в доках, это ладно можно сделать типовой групповой обработкой
2) также нужно изменить движения во всех регистрах в которых участвует этот измененный
реквизит, иначе толку…как написал в (2)..сформируют отчет или тот же Акт сверки а данные
останутся теми же.
3) перепроводить доки нельзя так как доки еще 2014 года, конфа Управление торговлей доработанная,
доки это напрм. отчеты о розничных продажах…и неизвестно что начнется при перепроведении продаж:)
База УРИБ сразу вопрос, эти изменения нужны бухам в головной базе,
неизвестно что будет при обмене в периферийных:)
Скорее всего нужно будет написать обработку которая будет изменять движения только в тех
регистрах где по условию встречается измененный реквизит, чтоб не затронуть другие движения.
Вообщем менять только те регистры где участвует наш новый измененый реквизит.
А вот что будет с остатками и оборотами незнаю:)
И еще нужно будет посмотреть сами регистры чтоб узнать что является
регистратором для этого регистра, можно обработкой напрямую к ним обращатся и изменять их?:)
11 — 01.08.16 — 19:14
>>Скорее всего нужно будет написать обработку
b_ru
12 — 01.08.16 — 19:14
можно просто скачать «Инструменты разработчика»
Если меняю значение реквизита в документе из внешней обработки например дату, то изменения отлично сохраняются и записываются в документ без проведения
1C | ||
|
Но потребовалось по другой доработке внести изменения в этом же документе из самой формы документа и вот тут начались проблемы, даже если пишу в коде (пробовал по разному записывать по методу тыка
1C | ||
|
и все бесполезно, мои данные в документ записываются, но затем начинают срабатывать системные события при записи — ПриЗаписи(), ПередЗаписью(), ПослеЗаписи(), поттоом еще система переспрашивает надо записать или нет и записывает в конце концов с проведением (хотя я изначально выбирал запись без проведения) вопросов два:
1. Почему из обработки данные в документе изменяются и записываются и не проводятся?
2. В каких случаях срабатывают все эти системные функции (ПриЗаписи(), ПередЗаписью(), ПослеЗаписи() и тд.), и в каких случаях они не срабатывают.
Добавлено через 11 минут
о боги, сработало
1C | ||
|
бывают же чудеса на свете, вчера бился весь день, а сегодня с первого раза получилось. (с пол оборота завелось)
Добавлено через 15 секунд
о боги, сработало
1C | ||
|
бывают же чудеса на свете, вчера бился весь день, а сегодня с первого раза получилось. (с пол оборота завелось)
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Иногда необходимо разрешить редактирование некоторых реквизитов документа без перепроведения. Например: Комментарий, АдресКонтрагента, КонтактноеЛицо. Ещё бывает необходимым разрешить изменение отдельных реквизитов в закрытых документах. Например, поставить отметку о состоянии доставки и написать комментарий.
В модуле менеджера документа пишем функцию, которая определяет массив допустимых к редактированию реквизитов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Возвращает массив имён реквизитов, разрешённых для изменнения без перепроведения. // Если получен параметр типа Массив, то имена реквизитов добавляются в него Функция ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(МассивРеквизитовДопустимыхКИзменению = Неопределено) Экспорт Если Не ТипЗнч(МассивРеквизитовДопустимыхКИзменению) = Тип(«Массив») Тогда МассивРеквизитовДопустимыхКИзменению = Новый Массив; КонецЕсли; //Типовые реквизиты МассивРеквизитовДопустимыхКИзменению.Добавить(«Грузополучатель»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьДата»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьВыдана»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьЧерезКого»); МассивРеквизитовДопустимыхКИзменению.Добавить(«Комментарий»); МассивРеквизитовДопустимыхКИзменению.Добавить(«АдресДоставки»); //Добавленные реквизиты Возврат МассивРеквизитовДопустимыхКИзменению; КонецФункции |
В модуле ОбщегоНазначения пишем функции общие для всех документов.
// сравниваем реквизиты документа из базы данных с записываемым объектом // имена изменённых реквизитов запихываем в массив Функция ПолучитьСписокИзменённыхРеквизитов(ДокОбъект) Экспорт СписокИзменённыхРеквизитов = Новый Массив; Ссылка = ДокОбъект.Ссылка; мдОбъекта = ДокОбъект.Метаданные(); // сравниваем стандартные реквизиты Для Каждого Реквизит из мдОбъекта.СтандартныеРеквизиты Цикл Если ДокОбъект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда СписокИзменённыхРеквизитов.Добавить(Реквизит.Имя); КонецЕсли; КонецЦикла; |
В модуле документа ПредЗаписью разрешаем запись без пререпроведения в случае, если были изменены только реквизиты, не вызывающие перепроведение.
РедактированиеЗаднимЧислом = Ложь; МассивРеквизитовДопустимыхКИзменению = Документы.РеализацияТоваровУслуг.ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(); СписокИзменённыхРеквизитов = ОбщегоНазначения.ПолучитьСписокИзменённыхРеквизитов(ЭтотОбъект); СписокИзменённыхРеквизитовВызывающихПерепроведение = ОбщегоНазначения.МожноЗаписыватьБезПерепроведения(ЭтотОбъект, МассивРеквизитовДопустимыхКИзменению, СписокИзменённыхРеквизитов); Если СписокИзменённыхРеквизитовВызывающихПерепроведение = «» И Проведен И СписокИзменённыхРеквизитов.Количество() > 0 Тогда РежимЗаписи = РежимЗаписиДокумента.Запись; ИначеЕсли НЕ РедактированиеЗаднимЧислом и Дата < НачалоДня(ТекущаяДата()) И Не РольДоступна(«ПравоАдминистрирования») Тогда Сообщить(«Недостаточно прав для проведения реализации « + Номер + » « + Строка(Дата) + » задним числом. Изменены реквизиты: « + СписокИзменённыхРеквизитовВызывающихПерепроведение); Отказ = Истина; КонецЕсли; |
Оцените статью:
Загрузка…
Если Вы заметили ошибку, то выделите ее мышью и нажмите Ctrl+Enter
7 г. назад
Есть проведенные документы. ВводНачальныхОстатков.
После переноса нужно изменить префикс номера. Есть ли какой-то метод изменения, чтобы документ не перепроводился при записи?
(1) Если док проведенный, будет перепроведен
(2) СП почитать не предлагать?
(3) скажешь тоже… Его ещё купить надо
(3) Блин, хотел без этого обойтись. но придется
Прочитал. Ничего не нашел по сабжу.
Записать(<РежимЗаписи>, <РежимПроведения>)
Параметры:
<РежимЗаписи> (необязательный)
Тип: РежимЗаписиДокумента.
Позволяет выбрать один из возможных режимов записи.
Значение по умолчанию: Запись.
<РежимПроведения> (необязательный)
Тип: РежимПроведенияДокумента.
Позволяет выбрать один из возможных режимов проведения.
Значение по умолчанию: Неоперативный.
Описание:
Записывает документ в базу данных.
(6) если режим запись — то перепроведения не будет
tsr Записать(<РежимЗаписи>
ну, вот же
Док.ОбменДанными.Загрузка = Истина; Док.Записать();
(9) если в модуле есть проверка =)
(10) ну, в типовых есть, вроде
(9) Сенкс. В принципе можно было и самому проверить. Но тематических веток практически нет. Хоть так форум поддержать
да и про сиськи не особо много
Программная корректировка движений документа
В некоторых типовых конфигурациях фирмы 1С существует возможность ручной корректировки движений документа по регистрам. В конфигурации 1С: Бухгалтерия 8 для этого, при наличии соответствующих прав, нужно открыть движения документа и установить флаг “Ручная корректировка”. Однако, иногда возникает необходимость выполнить корректировку движений большого количества документов. В этом случае нам понадобится обработка, которая изменит движения документов без перепроведения.
Рассмотрим как изменить движения документа на примере конфигурации 1С: Бухгалтерия 8. Менять будем движения по регистру бухгалтерии “Хозрасчетный”. Пусть перед нами стоит задача заполнить суммы налогового учета по данным бухгалтерского. Предположим, что у нас уже есть обработка, которая выбирает необходимые нам документы и последовательно обрабатывает их с помощью описанной нами процедуры “ИзменитьДвиженияДокумента”. Посмотрим как должна выглядеть эта процедура.
Код
Процедура ИзменитьДвиженияДокумента(ДокументСсылка)
// прочитаем набор записей регистра по документу
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
Возврат;
КонецЕсли;
// переберем все записи набора и заполним суммы по налоговому учету
Для каждого Запись из НаборЗаписей Цикл
// перед изменением сумм проверяем ведется ли налоговый учет на выбранном счёте
Если Запись.СчетДт.НалоговыйУчет Тогда
Запись.СуммаНУДт = Запись.Сумма;
КонецЕсли;
Если Запись.СчетКт.НалоговыйУчет Тогда
Запись.СуммаНУКт = Запись.Сумма;
КонецЕсли;
КонецЦикла;
// установим признак обмена данными
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
// установим признак ручной корректировки документа,
// предварительно установив признак обмена данными
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.РучнаяКорректировка = Истина;
ДокументОбъект.Записать();
КонецПроцедуры
Хотелось бы отметить, что без проверки ведения налогового учета на счёте, при попытке записать набор, содержащий проводку с ненулевой суммой по счёту на котором не ведется налоговый учет, возникнет ошибка следующего содержания:
Запись не верна! Поле “Сумма (налоговый учет)” должно быть пустым! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)
Режим обмена данными устанавливается следующими строками:
...
НаборЗаписей.ОбменДанными.Загрузка = Истина;
...
ДокументОбъект.ОбменДанными.Загрузка = Истина;
...
Это необходимо для того, чтобы не выполнялся программный код, находящийся в обработчиках событий “ПередЗаписью” модуля набора записей регистра бухгалтерии “Хозрасчетный” и модуля корректируемого документа. В каждом из них (для типовых конфигураций) есть проверка следующего вида:
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Признак ручной корректировки документа (ДокументОбъект.РучнаяКорректировка = Истина) необходимо устанавливать для того, чтобы изменения сохранились при повторном проведении документа. При проведении такого документа в конфигурации 1С:Бухгалтерия 8 выдается следующее сообщение:
Движения документа отредактированы вручную и не могут быть автоматически актуализированы
Статья найдена на просторах интернета
Не реклама копирует жизнь, а жизнь копирует рекламу.