Как скопировать движения документа 1с
Есть обработка, читающая и изменяющая движения документа, текст примерно следующий:
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
ДокОтбор = НаборЗаписей.Отбор.регистратор;
ДокОтбор.установить(ВыбДок.Ссылка);
НаборЗаписей.Прочитать();
Для каждого Зап из НаборЗаписей Цикл
//
Конеццикла;
Так вот как проще сделать копирование движений, то есть я бегу по движениям и создаю такое же,с изменением только сумма (задача очень специфичная), как в коде проще сделать, чтобы не писать новый набор, потом добавить и т.д. Помогите, плиз..
и для чего такая муть нужна?
Геморрой еще тот: но в общем цель такая: есть реализация с обычным набором проводок, затем по итогам месяца контрагенту дается определенная скидка, поэтому нужно обычную проводку разделить на 2 части, общая сумма и сумма скидки с разными значениями субконто, вот и приходится такую муть писать..вот так..
(3) лучше это делать дополнительным документом, а не программно править проводки у существующего документа. например часть суммы отсторнировать и сделать дополнительную проводку
опять же нужно обратиться к движениям другого документа и исправить только часть реквизитов в проводке, а все остальное тоже самое..может и туплю, но как проще это сделать, без перебора все рекизитов Движения?
Перезапись движений документа другим документом

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия: Разработчик 1С, Москва, удалёнка/гибрид, 200-300 net от yskinkurogova
Вчера в 13:25 - Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
25 января 2024 г. - Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
23 января 2024 г.
Добавление отчета Движения документа в новый документ
В типовых конфигурациях, основанных на БСП, в документах заполняется список отчетов, в числе которых есть Движение документа и Связанные документы. Данные отчеты очень помогают при работе с документами, поэтому если вы добавили в дерево метаданных новый документ, то добавление этих двух отчетов будет хорошим тоном при доработке типовой конфигурации.

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

Важно! В свойствах Источник команд скопированных групп может прописаться Форма, необходимо очистить это поле, чтобы было как на скриншоте.

После этого переходим к написанию кода. В модуле формы в обработчике ПриСозданииНаСервере прописываем строку:
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
В модуле формы добавляем следующие процедуры:
// СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); КонецПроцедуры &НаСервере Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В модуле менеджера документа добавляем процедуру:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов) Экспорт ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов); ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуДвиженияДокумента(КомандыОтчетов); КонецПроцедуры
После этого в нашем документе должно появиться меню с отчетами.
Как Получить, Прочитать, Изменить Движения документа по регистру?
В запросе выбираем все поля (кроме виртуальных) из таблицы регистра РегистрНакопления.ОстаткиНоменклатуры с отбором по регистратору. Значением параметра Регистратор нужно будет установить ссылку на документ.
Если же нужно чтение с последующей модификацией движений, следует воспользоваться объектной моделью представления информации: в свойстве Движения объекта документа обратиться к нужному регистру (в нашем случае это регистр ОстаткиНоменклатуры) и прочитать набор записей регистра.
Код 1C v 8.х
// Чтение движений документа
НаборЗаписейРегистра = Движения.ОстаткиНоменклатуры;
НаборЗаписейРегистра.Прочитать();
Для Каждого Запись из НаборЗаписейРегистра Цикл
// Чтение и модификация очередного движения.
КонецЦикла;
Если требуется изменить движения документа по всем регистрам, нужно обойти фиксированную коллекцию, содержащуюся в свойстве Движения:
Код 1C v 8.х

// Изменение движений документа
Для Каждого НаборЗаписейРегистра из Движения Цикл
НаборЗаписейРегистра.Прочитать();
Для Каждого Запись из НаборЗаписейРегистра Цикл
// Чтение и модификация очередного движения.
КонецЦикла;
КонецЦикла;
Сначала открываем цикл перебора свойств свойства Движения – коллекций наборов записей регистров, для которых наш документ является регистратором.
Далее читаем наборы записей каждой коллекции и открываем цикл перебора записей данного набора записей.