Имя: Пароль:
1C
 
БП3, программное создание КомплектацияНоменклатуры
0 BigMax
 
15.08.25
13:30
Добрейшего дня!

Создаю программно КомплектацияНоменклатуры, заполняю все поля и после заполнения таблицы вызываю процедуру заполнения СчетаУчетаВДокументах.ЗаполнитьСтроки, но она в этом документе не работает.
В типовой конфигурации при изменении номенклатуры вызывается КомплектующиеНоменклатураПриИзменении на клиенте. Сломал мозг поисками ...

В создании ДокументРеализацияУслуги делал:

НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
...
...
НоваяСтрока = НовыйДокумент.Товары.Добавить();    
НоваяСтрока.Номенклатура = НоменклатураДок;
НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;    
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 70;          
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
НоваяСтрока.СуммаНДС = НоваяСтрока.Сумма * 20 / 120;

СтрокиДляДополнительнойОбработки = НовыйДокумент.Товары;
    СчетаУчетаВДокументах.ЗаполнитьСтроки(СтрокиДляДополнительнойОбработки, "Товары", НовыйДокумент.Ссылка, Документы.РеализацияТоваровУслуг, Истина);  

Эта же процедура работает и в ПоступлениеТоваровУслуг.

        
Пните меня пожалуйста в нужную сторону.
1 Волшебник
 
15.08.25
13:32
в чём проблема-то?
2 maxab72
 
15.08.25
13:40
(0) пиши напрямую: НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
3 BigMax
 
15.08.25
13:41
Нужно заполнять значения других полей таблицы: СчетУчета и пр.
Принудительно ручками - моветон ведь
4 Мультук
 
гуру
15.08.25
13:46
(0)

1) CTRL+F в форме документа КомплектацияНоменклатуры

СчетаУчетаВДокументах.ЗаполнитьСтроки(ДобавленныеСтроки, ИмяТаблицы, Объект, Документы.КомплектацияНоменклатуры);

2) Внимание, вопрос:
Что в НовыйДокумент.Ссылка в  этом коде ? Ибо НовыйДокумент.Записать() я не вижу.


НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
СтрокиДляДополнительнойОбработки = НовыйДокумент.Товары;
СчетаУчетаВДокументах.ЗаполнитьСтроки(СтрокиДляДополнительнойОбработки, "Товары", НовыйДокумент.Ссылка, Документы.РеализацияТоваровУслуг, Истина);   
5 maxab72
 
15.08.25
13:47
(3) тогда смотри функцию НачатьЗаполнениеСчетовУчета
6 Мультук
 
гуру
15.08.25
13:47
(2)

Волшебник.
Дай человеку бан за тупые советы.
7 Волшебник
 
15.08.25
13:48
(6) А почему нет-то? У автора есть же вот такая дичь:

НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 70;
8 Мультук
 
гуру
15.08.25
14:01
(7)

Потому что для 10 000 номенклатур будет 41.01
А для 10 номенклатур 41.02 (ну или какой-там)
И девочка-бухгалтер 42 лет, которая будет всё это проверять, скажет:
-- 1С-ники {}-сы!
9 maxab72
 
15.08.25
14:06
(6) завидовать не хорошо.
10 Fedor-1971
 
15.08.25
14:33
(0) Примерно так:
	ДанныеНоменклатура = Новый Структура(
		"СчетУчета, НовыйСчетУчета, ЕдиницаИзмерения, Коэффициент,
		|СтавкаНДСВРознице, ЦенаВРознице, СуммаВРознице, 
		|СтранаВвоза, СтранаПроисхождения, GTIN,
		|НадбавкаИмпортера"); //2.1.61.4 
	
	ДанныеОбъекта = Новый Структура("Дата, Организация, Склад", СтруктураПараметров.Дата, СтруктураПараметров.Организация, );
	
	ДанныеОбъекта.Склад	= СтруктураПараметров.СкладОтправитель;
	
	СведенияОНоменклатуре = БухгалтерскийУчетПереопределяемый.ПолучитьСведенияОНоменклатуре(
								НоваяСтрока .Номенклатура, ДанныеОбъекта);

НоваяСтрока .Счет = ДанныеНоменклатуры.СчетаУчета.СчетУчета;


Если хочешь только счета учёта, пройди по модулям в конфигураторе
11 maxab72
 
15.08.25
14:34
(10) а глупая девочка-бухгалтер 42 лет на одном складе хранит и 41.01 и 41.02...
Заполнять надо тот счет. с остатков которого брали товар для комплектации, а это у ТС в коде должно быть прописано.
12 Fedor-1971
 
15.08.25
14:45
(11) ТС реализует программное заполнение, а там подбора, таки, может и не быть (руками, счет подтягивается, но надо проверять какой - подобранный или стандартный)

В описанном раскладе, непонятненько с какого счёта взять остаток. По факту, мало информации, что именно делает ТС (полной задачи нам не озвучили)
13 BigMax
 
15.08.25
14:49
Ну что сразу камнями бросаться!
Конечно же у меня не такая дичь,
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 70;
а другие значения.

НовыйДокумент.Записать(); тоже есть, не писал, поскольку к сути вопроса не относится.
14 Волшебник
 
15.08.25
14:52
(13) Вы же сами просили Вас запинать
15 BigMax
 
15.08.25
15:19
Я же просил пнуть в определенном направлении)))
16 Fedor-1971
 
15.08.25
15:49
(13) чёй-то камнями, так, поплевались малость

так-то посмотри в конфигураторе что делает твоя:
СчетаУчетаВДокументах.ЗаполнитьСтроки(СтрокиДляДополнительнойОбработки, "Товары", НовыйДокумент.Ссылка, Документы.РеализацияТоваровУслуг, Истина);

в модуле менеджера комплектации есть замечтательная функция:
ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, ИмяТабличнойЧасти)

посмотри как она работает, для повышения общей образованности

Замечание (11) правильное - откуда взялась номенклатура? по остаткам или просто списком, во втором случае надо решить вопрос какой счёт взять, или просто забрать остаток с обоих счетов
17 Fedor-1971
 
15.08.25
15:33
(15) ну, так летящие камни направляют в сторону от их траектории, а куда побежишь, тут только твой выбор
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс