Запись строкового поля в табличную часть документа
Пишу обработку для документов "Акт сверки взаиморасчетов" БП ред. 3.0
В базе формируются документы "Операция", которые должны попадать в Акт сверки взаиморасчетов. В печатную форму выводится поле "Представление", которое можно откорректировать вручную.
Задача - откорректировать поле "Представление" с помощью обработки в случае использования ручных операций.
[/1C-CODE]
Пока не вижу ошибки в тексте модуля, но не работает.
Всем помогающим заранее спасибо.
В базе формируются документы "Операция", которые должны попадать в Акт сверки взаиморасчетов. В печатную форму выводится поле "Представление", которое можно откорректировать вручную.
Задача - откорректировать поле "Представление" с помощью обработки в случае использования ручных операций.
[1C-CODE]&НаСервере
Процедура Заполнить()
//Датаконца=Конмесяца
//// Вставить содержимое обработчика.
Док = Документы.АктСверкиВзаиморасчетов.Выбрать(Датаначала, датаконца);
Пока Док.Следующий() Цикл
ЭтотОбъект= Док.ПолучитьОбъект();
// Действия с документом - элементом выборки,
// его значение содержится в переменной ВыборкаДокументов
КоличествоСтрок = ЭтотОбъект.ПоДаннымОрганизации.Количество();
Если КоличествоСтрок <> 0 Тогда
Для Каждого стр из ЭтотОбъект.ПоДаннымОрганизации Цикл
ТекКомментарий = стр.Документ.Комментарий;
Если найти(ТекКомментарий,"№") >0 тогда
ЭтотОбъект.ПоДаннымОрганизации.Представление=ТекКомментарий;
ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись);
Конецесли;
КонецЦикла;
КонецЕсли;
КонецЦикла
КонецПроцедуры
ПоказатьПока не вижу ошибки в тексте модуля, но не работает.
Всем помогающим заранее спасибо.
По теме из базы знаний
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Редактор информационной базы через универсальный отчет БСП 3+ (редактор реквизитов, табличных частей, регистров)
- Универсальный редактор табличных частей документов РеСольДо
Найденные решения
с запросом конечно лучше. Решение с ним уже дали.
Но, вот переделанное начальное решение без запроса:
Но, вот переделанное начальное решение без запроса:
&НаСервере
Процедура Заполнить()
Док = Документы.АктСверкиВзаиморасчетов.Выбрать(Датаначала,Датаконца);
Пока Док.Следующий() Цикл
Акт= Док.ПолучитьОбъект();
НужноЗаписать = Ложь;
Для Каждого стр из Акт.ПоДаннымОрганизации Цикл
ТекДокумент = стр.Документ;
ТекКомментарий = ТекДокумент.Комментарий;
Если найти(ТекКомментарий,"№") >0 тогда
ТекКомментарий =ТекКомментарий+" на складе Родники-2";
стр.Представление=ТекКомментарий;
НужноЗаписать = Истина;
Конецесли;
КонецЦикла;
Если НужноЗаписать тогда
Акт.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЦикла
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Я так понимаю Что Представление это реквизит Ссылки, а не табличной части
(2)Безусловно запросом оптимальней. Мы сразу отсекам документы, где отсутствует подстрока "№"
Вот набросал в блокноте
(2)Безусловно запросом оптимальней. Мы сразу отсекам документы, где отсутствует подстрока "№"
Вот набросал в блокноте
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Ссылка,
| Комментарий
| ИЗ
| Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации
|ГДЕ
| Ссылка.Дата Между &ДатаНачала и &ДатаОкончания
| И Комментарий подобно ""%№%""
|ИТОГИ
| ПО Ссылка
|";
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ДатаОкончания));
ВыборкаДокументы = Запрос.Выполнить.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокументы.Следующий() Цикл
Представление = "";
ВыбокаСтроки = ВыборкаДокументы.Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
Представление = Представление+?(ПустаяСтрока(Представление),"","; ")
+ ВыборкаСтроки.Комментарий;;
КонецЦикла;
ДокОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект();
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.Представление = Представление;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
Показать
первое:
ЭтотОбъект.ПоДаннымОрганизации.Представление=ТекКомментарий - неверно, должно быть
стр.Представление=ТекКомментарий
второе
записывать документ нужно только после обхода табчасти а не в процессе.
проверить, изменился ли документ после обхода табчасти поможет метод Модифицированность()
ЭтотОбъект.ПоДаннымОрганизации.Представление=ТекКомментарий - неверно, должно быть
стр.Представление=ТекКомментарий
второе
записывать документ нужно только после обхода табчасти а не в процессе.
проверить, изменился ли документ после обхода табчасти поможет метод Модифицированность()
Обработка не видит документы "Акт сверки взаиморасчетов" за период. Документы есть. Стоит ли переписывать с использованием запроса.
Прикрепленные файлы:
ОбработкаДокументовАКТОВ.epf
с запросом конечно лучше. Решение с ним уже дали.
Но, вот переделанное начальное решение без запроса:
Но, вот переделанное начальное решение без запроса:
&НаСервере
Процедура Заполнить()
Док = Документы.АктСверкиВзаиморасчетов.Выбрать(Датаначала,Датаконца);
Пока Док.Следующий() Цикл
Акт= Док.ПолучитьОбъект();
НужноЗаписать = Ложь;
Для Каждого стр из Акт.ПоДаннымОрганизации Цикл
ТекДокумент = стр.Документ;
ТекКомментарий = ТекДокумент.Комментарий;
Если найти(ТекКомментарий,"№") >0 тогда
ТекКомментарий =ТекКомментарий+" на складе Родники-2";
стр.Представление=ТекКомментарий;
НужноЗаписать = Истина;
Конецесли;
КонецЦикла;
Если НужноЗаписать тогда
Акт.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЦикла
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот