Программно перевыбрать реквизит формы документа (1С 8.3 УФ)

1. dikd 17 10.06.21 12:01 Сейчас в теме
Имеется КА 2.4, ведется торговля комиссионными товарами, что-то бухи напутали с соглашениями и куча документов "Приобретение товаров и услуг" ввелось с видом запасов с налогообложением "Облагается НДС", хотя вся торговля не облагается НДС.
В итоге из-за этого товар пришел на 004 счет, а списывается документом "Отчет о розничных продажах" с 41.01, т.к. разное налогообложение, в приходе "Облагается НДС", в "Отчет о розн. продажах" - "не облагается НДС"

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

Я в итоге сделал обработку, в которой заполняется список документов, для которых нужно перевыбрать соглашение, затем пребирая ссылки на эти доки открываю Форму документа, программно вызываю ту же процедуру, которая вызывается при изменение соглашения, всё проходит на ура, затем провожу документ программно, но результат нулевой!

Хотя отладчиком обработка заходит в те же места, что и просто ручной перевыбор реквизита.

Вот код и скриншоты:
&НаКлиенте
Процедура Перевыбрать(Док)
	 стрПараметры = Новый Структура("Ключ", Док);
	Ф = ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.ФормаОбъекта", стрПараметры);
	Ф.Открыть();
	Ф.СоглашениеПриИзмененииВопросЗавершение(ложь, Неопределено);
	Ф.Записать();
	Ф.Закрыть();
КонецПроцедуры	

&НаСервере
Функция СформироватьНаСервере()
Запрос = новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ПриобретениеТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
|	Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
|ГДЕ
|	ПриобретениеТоваровУслуг.Проведен
|	И ПриобретениеТоваровУслуг.ХозяйственнаяОперация = &ХозяйственнаяОперация
|
|УПОРЯДОЧИТЬ ПО
|	ПриобретениеТоваровУслуг.Дата";
Запрос.УстановитьПараметр("ХозяйственнаяОперация",Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);

Масс = Новый Массив;

Выборка = запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() цикл
	Масс.Добавить(Выборка.ссылка);
КонецЦикла;	

Возврат Масс;

КонецФункции

&НаСервере
Процедура ЗаписатьДокНаСервере(ДокС)
	ДокОб = ДокС.ПолучитьОбъект();
	ДокОб.Записать(РежимЗаписиДокумента.Проведение);	
КонецПроцедуры	

&НаКлиенте
Процедура Сформировать(Команда)
	Для Каждого Эл из Доки цикл
		ДокС = Эл.Значение;
		Перевыбрать(ДокС);
		ЗаписатьДокНаСервере(ДокС);
	КонецЦикла;	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСписок(Команда)
	масс = СформироватьНаСервере();
	Доки.ЗагрузитьЗначения(масс);
КонецПроцедуры
Показать
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 120 10.06.21 12:18 Сейчас в теме
Вы работаете с формой. Если надо, чтобы документ перепровелся, то в параметры записать надо добавить структуру РежимЗаписи, РежимЗаписиДокумента.Проведение.
4. dikd 17 10.06.21 12:39 Сейчас в теме
(2)
Вы работаете с формой. Если надо, чтобы документ перепровелся, то в параметры записать надо добавить структуру РежимЗаписи, РежимЗаписиДокумента.Проведение.

В коде отдельно документ затем проводится, с этим всё ок.
6. dikd 17 10.06.21 13:15 Сейчас в теме
(2)
в параметры записать надо добавить структуру РежимЗаписи, РежимЗаписиДокумента.Проведение

Хотя, надо будет попробовать, может и правда надо сразу в форме проводить.
Спасибо!
3. bmk74 235 10.06.21 12:23 Сейчас в теме
Вообще 004 счет не должен зависеть он налогообложения,004 это товары принятые на комиссию, и соответственно договор с комитетом должен был быть...а не с поставщиком.
Второй вопрос, у вас настройка стоит какая , там есть два способа заполнения счетов,либо счета указываются в самом документе и есть колонки со счетами, либо их не видно в документах и они заполняются при проведении документа..ну и в третьих в Бух есть функция
Отбор = Новый Структура;
	Отбор.Вставить("НеЗаполненныеРеквизиты", Истина);
	
	СчетаУчетаВДокументах.Заполнить(Объект, Отбор);

Только перед этим нужно очистить в табличных частях эти самые счета заполненные
5. dikd 17 10.06.21 12:43 Сейчас в теме
(3)
договор с комитетом должен был быть...а не с поставщиком..

Договор конечно же с комитентом, по запаре написал с поставщиком.


(3)
Второй вопрос, у вас настройка стоит какая , там есть два способа заполнения счетов,либо счета указываются в самом документе и есть колонки со счетами, либо их не видно в документах и они заполняются при проведении документа..ну и в третьих в Бух есть функция


Да ну нет! дело именно в том, что реквизит "НалогообложениеНДС" стоит "ОблагаетсяНДС", а должно быть "НеОблагаетсяНДС", поэтому и тема не про учет, а про программный перевыбор реквизита.
Про учет написал для того, что бы было какое-то понимание зачем это всё нужно.

С учетом, со счетами учета всё ок.
7. bmk74 235 10.06.21 13:26 Сейчас в теме
(5)
"НалогообложениеНДС" стоит "ОблагаетсяНДС", а должно быть "НеОблагаетсяНДС", поэтому и тема не про учет, а про программный перевыбор реквизита.

Так вам надо было только реквизит "НалогообложениеНДС" поменять, счета должны были теми же остаться ?,
8. dikd 17 11.06.21 15:39 Сейчас в теме
(7)
Так вам надо было только реквизит "НалогообложениеНДС" поменять, счета должны были теми же остаться ?,

Это Комплексная автоматизация 2.4
там нет в документах счетов учета, они настраиваются отдельно и проводки формируются отдельной операцией "Отражение документов в регл. учете"

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

В итоге нормального решения программного вызова процедуры формы так и я не нашел.

Можно конечно было бы эту процедуру вынести с формы во внешнюю обработку, но там она ооочень много что за собой "клиентского" (процедур и функций &НаКлиенте) тянет.
9. bmk74 235 11.06.21 16:15 Сейчас в теме
(8) Сразу не заметил что у вас КА, ссори...
Просто ни разу так не вызывал функции формы, они не работают как надо обычно, да и не нужно это в большинстве случаев...так как там много лишнего именно для заполнения именно реквизитов формы.
Кстати а после изменения соглашения и НДС вы документ распроводили ?, так как там очень часто при перепроведении документов, движения могут не обновиться, нужно именно распроводить и проводить заново, и кстати у вас должна была и хозяйственная операция поменяться в документе, а не только налогообложения, так как она в большей степени влияет на отражение документов в регл учете
10. user1156861 11.08.23 07:09 Сейчас в теме
Здраствуйте! как удалось решить проблему перевыбора договора программно? Подскажите пожалуйста
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот