Имя: Пароль:
1C
 
Заполнение нетипового субконто
0 berkoot
 
18.09.25
15:23
БП корп 3.0.181.31 типовая, 8.3.27.1606
В расширении(режим совместимости 8.3.24) добавлен тип субконто "Сотрудники" для ПВХ ВидыСубконтоХозрасчетные. Тип данных - Справочник Сотрудники.
В этом же расширении документу Выдача денежных документов добавлен реквизит "Сотрудник"
В этом же расширении есть обработка, в ее модуле объекта есть процедура

&НаСервере
Процедура ЗаполнитьСотрудника(ДокСсылка) экспорт
	ПВХСотрудник = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Сотрудник");  
	НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка);
	НаборЗаписей.Прочитать(); 
	Для каждого Запись Из НаборЗаписей Цикл
		Если Лев(Запись.СчетКт.Код,5) = "50.03" Тогда 
			БухгалтерскийУчет.УстановитьСубконто(Запись.СчетКт, Запись.СубконтоКт,	ПВХСотрудник, ДокСсылка.Сотрудник);
		КонецЕсли;
	КонецЦикла;   
	НаборЗаписей.Записать(); 
КонецПроцедуры


Если эту процедуру запускать из этой внешней обработки, то код работает и аналитика заполняется.
Если эту процедуру запустить из расширения "после" "ОбработкаПроведения" документа Выдача денежных документов, то код отрабатывает, но субконто не заполняется.
что сделать для решения?
1 Amra
 
18.09.25
15:25
Потому что движения в момент проведения еще не записаны, по идее. Надо перебирать Движения.Хозрасчетный
2 berkoot
 
18.09.25
15:51
(1) Если бы движения не были записаны, то набор записей был бы пуст и код внутри цикла не исполнялся бы. На деле в обоих случаях набор записей не пуст и код внутри цикла исполняется.
3 Мультук
 
гуру
18.09.25
16:01
(2)
Тогда давайте сократим высказывание (1) до

Надо перебирать Движения.Хозрасчетный
4 Ботаник Гарден Меран
 
18.09.25
16:37
Что-то как-то не очень развернулись.
Не хватает еще видов субконто "Поставщики", "Покупатели", "ИФНСы", "БанкиИОбменники", "НоменклатураНаКомиссии", "РБПпоОтпускам".
5 Ботаник Гарден Меран
 
18.09.25
16:41
У 50.03 уже есть нужное субконто, и нужно писать:
БухгалтерскийУчет.УстановитьСубконто(Запись.СчетКт, Запись.СубконтоКт,    "РаботникиОрганизаций",
6 Гена
 
гуру
18.09.25
17:10
(5) Разве в типовой БП Корп есть второе субконто на 50.03 кроме первого "Денежные документы"?
7 Волшебник
 
18.09.25
17:52
(6) Наверное, имелось в виду вид субконто
8 Волшебник
 
18.09.25
17:53
Мне кажется, тут нужна корреспонденция со счётом 71
9 Гена
 
гуру
18.09.25
18:02
(8) Похоже у них не билеты, а что-то другое, что не в под отчёт, а в подарок раздаётся.
10 berkoot
 
18.09.25
18:06
(3) в процедуру, описанную выше, добавил код:

ДокОбъект = ДокСсылка.получитьОбъект();
Проводки = ДокОбъект.Движения.Хозрасчетный;
Проводки.Записывать = Истина;                
Проводки.Прочитать();
Для каждого Проводка Из Проводки Цикл
    БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,    ПВХСотрудник, ДокСсылка.Сотрудник);
КонецЦикла;
Проводки.Записать();

ситуация не изменилась.

(6) в типовой нет. конфа была нетиповой. я привел к типовой, а субконто осталось, хоть и с пометкой на удаление. а если бы его не было, то через ИР можно добавить. тип субконто, как и писал выше, нетиповой и добавлен через расширение. да, я знаю, что это не самый оптимальный способ учета, но этот случай, когда цель определяет заказчик, а методы исполнитель. заказчику проще будет заполнить аналитику внешней обработкой, чем жить без привычной за 10 лет аналитики. расширение одно, в нем и нетиповой тип субконто, и вышеупомянутая обработка, и модуль объекта документа тоже "расширен" через это же расширение.

(8) поясните пожалуйста, причем тут корреспонденция? если суть вопроса в том почему код работающий из обработки, не работает при вызове его же из модуля документа.
11 Волшебник
 
18.09.25
18:09
(10) Сначала нужно понять, нужно ли субконто на счёте 50.03
12 Гена
 
гуру
18.09.25
18:12
(11) Да можно, если очень надо. Например, условно, накупили лотерейных билетов и раздали работникам. Проводка 91-50.03 и не видно кому дали.
13 Гена
 
гуру
18.09.25
18:15
Помогите уж человеку... скорее всего минутное дело...
14 Волшебник
 
18.09.25
18:21
(10) счёт ДТ и субконто ДТ
Как гипотеза
15 shuhard
 
18.09.25
18:20
(13) уже два раза объяснили, что в ОбработкаПроведения этот код не работает и нужно использовать Движения.Хозрасчетный
16 Волшебник
 
18.09.25
18:22
(15) и это тоже
17 berkoot
 
18.09.25
19:35
(11) нужно.
(14) Дт 71.01. да, там физ лица, но на 51.03 нужен сотрудник. для этого и создан доп реквизит в документе. так исторически сложилось у клиента, много лет назад разраб предложил(или клиент настоял) писать сотрудника на 51.03, клиент привык и сейчас имеем то, что имеем. правильно это или нет это не важно сейчас. вопрос совсем не в этом.
ранее разраб все эти проводки правил просто в модифицированной конфе. сейчас поставлена задача сделать конфу типовой, а все прежние доработки сделать расширением.
(15) так в (10) я написал, что правка Движения.Хозрасчетный не дала результата. или Вы хотите сказать, что в "после" "обработкаПроведения" этот код в принципе работать не будет?
18 Волшебник
 
18.09.25
19:38
Значит несоответствие типов
19 berkoot
 
18.09.25
20:00
решено.
процедуру вызвал из расширения "после" "ПослеЗаписи"(из событий формы).
через НаборЗаписей сработало
благодарю всех за участие
20 Волшебник
 
18.09.25
20:04
(19) жуть
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.