Модификация документа в 1С — это изменение данных существующего документа. Способы модификации зависят от контекста, прав доступа, и необходимости сохранения истории изменений.
Важно: Модификация документов напрямую в базе данных (например, через SQL) Строго не рекомендуется, так как это может привести к нарушению целостности данных и проблемам с учетом.
Основные способы модификации документа через интерфейс 1С:
Редактирование документа в режиме “Предприятие” (стандартный способ):
Описание: Самый распространенный и безопасный способ. Откройте документ в режиме “Предприятие”, внесите необходимые изменения и сохраните документ. Требования:
У пользователя должны быть права на изменение данного типа документов. Документ должен быть доступен для редактирования (не проведен, не закрыт для редактирования).
Действия:
1. Откройте журнал документов: Найдите нужный документ в соответствующем журнале документов (например, “Реализация (акты, накладные)”, “Поступление товаров и услуг”).
2. Откройте документ: Дважды щелкните по документу, чтобы открыть его для просмотра и редактирования.
3. Внесите изменения: Измените необходимые поля, добавьте или удалите строки в табличных частях.
4. Сохраните документ: Нажмите кнопку “Записать” или “Провести и закрыть”.
Преимущества:
Простота и удобство. Автоматическое сохранение истории изменений (если настроено). Контроль прав доступа.
Недостатки:
Требует прав на изменение документа. Не подходит для массового изменения документов.
Использование групповой обработки справочников и документов:
Описание: Инструмент для массового изменения реквизитов документов (и справочников). Раздел: “Администрирование” -> “Обслуживание” -> “Групповое изменение реквизитов”. Действия:
Укажите тип объекта: Выберите тип объекта, который необходимо изменить (например, “Документ. РеализацияТоваровУслуг”). Настройте отбор: Укажите условия отбора документов, которые нужно изменить (например, по дате, организации, контрагенту). Укажите изменяемые реквизиты: Выберите реквизиты, которые необходимо изменить, и укажите новые значения. Выполните обработку: Нажмите кнопку “Изменить реквизиты”. Преимущества:
Возможность массового изменения документов.
Недостатки:
Ограниченный набор изменяемых реквизитов (только реквизиты, доступные для изменения в групповой обработке). Требует прав на использование групповой обработки.
Программное изменение документа (через код):
Описание: Изменение документа с помощью кода на языке 1С. Этот способ требует навыков программирования и используется для автоматизации сложных задач. Действия:
Получите объект документа:
1. ДокументОбъект = Документы. РеализацияТоваровУслуг. НайтиПоНомеру("РТУ-00001").ПолучитьОбъект();
Внесите изменения в реквизиты документа:
3. ДокументОбъект. Контрагент = Справочники. Контрагенты. НайтиПоНаименованию("Новый контрагент");
4. ДокументОбъект. СуммаДокумента = 12345;
Измените табличную часть:
6. Для Каждого СтрокаТЧ Из ДокументОбъект. Товары Цикл
7. СтрокаТЧ. Цена = СтрокаТЧ. Цена * 1.1; // Увеличение цены на 10%
8. КонецЦикла;
Запишите документ:
10. ДокументОбъект. Записать(); // Или ДокументОбъект. Записать(РежимЗаписиДокумента. Проведение);
Преимущества:
Гибкость и возможность реализации сложных алгоритмов. Автоматизация процесса изменения документов.
Недостатки:
Требует навыков программирования. Высокий риск внесения ошибок. Необходимо учитывать права доступа и блокировки данных.
Важные моменты:
Права доступа: У пользователя должны быть права на изменение документа (необходимо для всех способов). Блокировки: Перед изменением документа программно необходимо установить блокировку, чтобы избежать конфликтов с другими пользователями. Транзакции: При программном изменении документа используйте транзакции для обеспечения целостности данных. История изменений: Включите ведение истории изменений, чтобы отслеживать, кто и когда вносил изменения в документ. Журнал регистрации: Используйте журнал регистрации для записи информации об изменении документов. Конфигурация 1С: Конкретные шаги и названия разделов и кнопок могут отличаться в зависимости от конфигурации 1С.
Рекомендации:
Используйте стандартный способ редактирования документа в режиме “Предприятие” для простых изменений. Используйте групповую обработку справочников и документов для массового изменения реквизитов. Используйте программное изменение документа только для автоматизации сложных задач и при наличии необходимых навыков программирования. Всегда делайте резервную копию базы данных перед внесением изменений. Тщательно тестируйте код перед использованием в рабочей среде. Обратитесь к специалисту 1С: Если у вас возникают сложности, обратитесь к специалисту 1С.
Пример программного изменения документа:
&НаСервере
Процедура ИзменитьКонтрагента(НомерДокумента, НовыйКонтрагент)
// Получаем объект документа
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг. Ссылка
|ИЗ
| Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг. Номер = &НомерДокумента";
Запрос. УстановитьПараметр("НомерДокумента", НомерДокумента);
РезультатЗапроса = Запрос. Выполнить();
Если РезультатЗапроса. Пустой() Тогда
Сообщить("Документ с номером " + НомерДокумента + " не найден!");
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса. Выбрать();
Выборка. Следующий();
ДокументОбъект = Выборка. Ссылка. ПолучитьОбъект();
// Проверяем, что документ не проведен
Если ДокументОбъект. Проведен Тогда
Сообщить("Документ " + НомерДокумента + " проведен и не может быть изменен!");
Возврат;
КонецЕсли;
// Получаем объект нового контрагента
НовыйКонтрагентОбъект = Справочники. Контрагенты. НайтиПоНаименованию(НовыйКонтрагент);
Если НовыйКонтрагентОбъект. Пустая() Тогда
Сообщить("Контрагент " + НовыйКонтрагент + " не найден!");
Возврат;
КонецЕсли;
// Устанавливаем блокировку
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка. Добавить("Документ. РеализацияТоваровУслуг");
ЭлементБлокировки. ИсточникДанных = ДокументОбъект. Ссылка;
Блокировка. Заблокировать();
Попытка
// Изменяем контрагента
ДокументОбъект. Контрагент = НовыйКонтрагентОбъект. Ссылка;
// Записываем документ
ДокументОбъект. Записать();
Сообщить("Контрагент в документе " + НомерДокумента + " успешно изменен!");
Исключение
Сообщить("Ошибка при изменении документа: " + ОписаниеОшибки());
КонецПопытки;
// Снимаем блокировку
Блокировка. Разблокировать();
КонецПроцедуры
Этот код получает объект документа “Реализация товаров и услуг” по номеру, проверяет, что документ не проведен, устанавливает блокировку, изменяет контрагента и записывает документ. В случае возникновения ошибки выводит сообщение об ошибке.