Нетабличная часть, или Как я провел выходные

0. 79 21.11.20 22:00 Сейчас в теме
Групповое изменение полей таблицы документа "Операция (бухгалтерская)" в конфигурации БГУ 2.0, созданного без использования типовых операций. Разработка выполнена на платформе 8.3.13.1644, БГУ 2.0.68.18, протестирована и применена на платформе 8.3.18.1128, БГУ 2.0.74.35.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. gubanoff 50 24.11.20 12:11 Сейчас в теме
С таким же успехом можно было autoit запустить, чтобы нащелкал строчки за вас.
2. AnatolPopov 79 24.11.20 13:11 Сейчас в теме
(1) Опасаюсь я таких инструментов. Неизвестно, чего он там нащелкает.

А кроме того, цель была - дать инструмент коллегам, которые больше бухгалтера, чем программисты или админы. То есть понятную обработку с понятными полями и кнопками.
3. dfgdsfgsdfg2011 25.11.20 17:43 Сейчас в теме
Теперь мне не стыдно смотреть на восемьсот вредных строчек
- ахахаха
В условные 10 строк можно было программно поменять значения счета и субконто в движениях по регистру
4. AnatolPopov 79 25.11.20 18:42 Сейчас в теме
(3) До недавнего времени я не имел дела с регистром бухгалтерии. Так что не стал соваться в него. Решил, что проще запустить исправления через ту же дверь, куда обычно идут данные, а дальше их проводят.

Кстати, с удовольствием посмотрю на "условные 10 строк" в виде готовой обработки. Или просто в виде строк.

Задача, конечно, специфическая и, надеюсь, редкая, но неплохо так размялся ;)
5. dfgdsfgsdfg2011 26.11.20 16:17 Сейчас в теме
	Счет10960 = БухгалтерскиеОперации.СчетПоКоду("109.60", ТекущаяДата());
	
	НаборЗаписей = РегистрыБухгалтерии.ЖурналПроводокЕПСБУ.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(Объект.ОперацияБух);
	НаборЗаписей.Прочитать();
	Если НаборЗаписей.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	 Для Каждого Запись Из НаборЗаписей Цикл
	  Если Запись.СчетДт = Счет10960 И Запись.СчетКт = Счет10960 Тогда
	  
		  ЕСли Запись.КПСДт = Объект.СтарыйКПС Тогда
	    	    Запись.КПСДт = Объект.НовыйКПС;
	      КонецЕсли;	  
	    	
	  КонецЕсли;
	  
  КонецЦикла;	  
	  
  НаборЗаписей.Записать();	
Показать
AnatolPopov; +1 Ответить
6. AnatolPopov 79 26.11.20 16:58 Сейчас в теме
(5) Два вопроса

Можно ли так же безнаказанно поменять сами счета?

Как насчет субконто?
7. dfgdsfgsdfg2011 26.11.20 18:16 Сейчас в теме
(6)
конечно можно
Запись.СчетКт             = Счет20531;
			  Запись.КПСКт				= СтрокаТЧ.КПС;
			  Запись.КЭККт   			= КОСГУ667;
			  Запись.СубконтоКт.Контрагенты = СтрокаТЧ.Контрагент;
			  Запись.СубконтоКт.Договоры= СтрокаТЧ.Договор;
AnatolPopov; +1 Ответить
8. AnatolPopov 79 26.11.20 19:32 Сейчас в теме
(7) Насчет последних двух строк. Когда я посмотрел, что за поля у регистра бухгалтерии, решил, что ну его нафиг. Особенно с субконто. Вообще не понял, что там за дебри такие.

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

Я ведь делал инструмент прежде всего для бухгалтера. То есть чтобы можно было из списка корректно выбрать, что заменить и на что заменить соответственно настройкам счета. Чтобы руками не лазить и циферки не путать.

В итоге получается, что ваше решение позволяет отказаться от обработчиков события ПриИзменении, потому что не трогаем форму. Значит, не нужно расширение. А все остальное, что касается интерфейса, остается.

Будет время - сделаю другой вариант обработки, который может с колес работать. Спасибо!
9. AnatolPopov 79 02.12.20 14:01 Сейчас в теме
(7) Извините за настырность, но я сделал вариант с регистром. И выяснилось, что первый вариант совсем не так плох, как казалось раньше. См. дополнение в конце статьи.
10. dfgdsfgsdfg2011 02.12.20 17:13 Сейчас в теме
(9)
Не смотрел вашу обработку, но типы субконто можно приводить через "СвязьПоТипу" https://its.1c.ru/db/metod8dev/content/2876/
Если нужна универсальность, то можно посмотреть реализацию в справочниках и документах где вызывается "БухгалтерскийУчетКлиентСервер.УстановитьЗаголовкиИДоступностьСубконто"
12. AnatolPopov 79 02.12.20 20:35 Сейчас в теме
(10) Спасибо, связь по типу используется на форме обработки. Новые значения выбираются в зависимости от типа значения, которое нужно заменить.

А речь шла о том, что поля вроде номера счета (наверно, только эти?) требуют изменения ещё нескольких полей. И если работать непосредственно с регистром, то делать это надо одновременно. А значит, выбирать и вводить кучу значений сразу. При работе с формой документа это можно разложить на сколько угодно шагов, причём каждый контролировать. Несомненно, это гораздо комфортнее для пользователя.
Оставьте свое сообщение
Вопросы с вознаграждением