Erp 2 Программное заполнение серий

1. Doreng 28 28.06.18 12:47 Сейчас в теме
Добрый день. Создаю программно Документ ПриобретениеТоваровУслуг и о чудо! не заполняются серии номенклатуры в ТЧ Товары. Куда копать? См. скрин отладки
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
17. ipoloskov 164 28.06.18 15:47 Сейчас в теме
(16) Как я и предполагал - проблема в
Возврат СоздадимСерию;
Это СправочникОбъект. Нужно исправить эту строчку на
Возврат СоздадимСерию.Ссылка;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. shuhard 28.06.18 14:25 Сейчас в теме
(1)
и о чудо! не заполняются серии номенклатуры в ТЧ Товары

учетная политика серий не гарантирует ввод серии в табличную часть Товары, покажи тот же документ заполненный руками
9. Doreng 28 28.06.18 14:51 Сейчас в теме
(7)Это вообще как?
покажи тот же документ заполненный руками
, если не заметил тут идет речь о том что есть реквизит, который ожидает ссылку на серию, функция возвращает ссылку на серию, но в реквизит не попадает, это как Строка.Номенклатура = Номенклатура.Ссылка получить пустую ссылку
2. Doreng 28 28.06.18 13:13 Сейчас в теме
3. ipoloskov 164 28.06.18 13:38 Сейчас в теме
Попробуйте результат функции присвоить переменной. Смотрите в отладчике, присвоилось ли. А то мало ли что у вас в этой функции происходит - может, она через раз отрабатывает. Очень легко, например, перепутать и при создании вернуть СправочникОбъект. А в другой ветке, если элемент существует - СправочникСсылка.
4. Doreng 28 28.06.18 13:55 Сейчас в теме
(3)Спасибо за ответ, но в отладке четко видно, что функция вернула ссылку на серию, но в реквизит не попала. Первый раз такое.
5. ipoloskov 164 28.06.18 14:00 Сейчас в теме
(4) в отладке четко видно, что при ВТОРОМ ВЫЗОВЕ функция вернула ссылку на серию. Что функция вернула при первом вызове (когда произошло присваивание НоваяСтрочка.Серия), на данном скриншоте не видно.
6. Doreng 28 28.06.18 14:23 Сейчас в теме
(5)Этот как так? Функция вызывается с данными строки, то есть имеет значение построенное на данных в текущей строке, какой такой второй вызов? И по условию видно что если пустая тогда заход в эту функцию или я ошибаюсь? Я специально сделал скрин так чтоб было видно что это цикл.
11. ipoloskov 164 28.06.18 15:22 Сейчас в теме
(6) например, так:
Функция СоздатьГлюк(Код)
	
	СсылкаНаГлюк = Справочники.Глюки.НайтиПоКоду(Код);
	
	Если Не ЗначениеЗаполнено(СсылкаНаГлюк) Тогда
		НовыйГлюк = Справочники.Глюки.СоздатьЭлемент();
		НовыйГлюк.Код = Код;
         НовыйГлюк.Записать();
		возврат "Новый глюк!";
	Иначе
		возврат СсылкаНаГлюк;
	КонецЕсли;
		
КонецФункции
Показать

Функция в отладке при первом вызове будет возвращать строку "Новый глюк!", а при втором (тогда, когда вы посмотрите в отладчике на то, что она возвращает) - ссылку на справочник.
Процедура ЛовимГлюк()
	
	НашДокумент.ПолеГлюк = СоздатьГлюк(НовыйКод); //сюда возвратится строка "Новый глюк!". 
//После преобразования к типу СправочникСсылка.Глюки, в НашДокумент.ПолеГлюк будет пустая ссылка.
	
	ПосмотретьОтладчикомИУдивиться = Истина;//здесь ставим точку останова и смотрим отладчиком СоздатьГлюк(НовыйКод). 
//Видим ссылку на справочник "Глюки", так как элемент справочника с таким кодом уже существует, 
//и выполнение функции пойдет по второй ветке "возврат СсылкаНаГлюк"
	
КонецПроцедуры
Показать
12. Doreng 28 28.06.18 15:30 Сейчас в теме
(11) Тогда Уж так
Функция СоздатьГлюк(Код)
    
    СсылкаНаГлюк = Справочники.Глюки.НайтиПоКоду(Код);
    
    Если СсылкаНаГлюк.Пустая()  Тогда
        НовыйГлюк = Справочники.Глюки.СоздатьЭлемент();
        НовыйГлюк.Записать();
        возврат НовыйГлюк.Ссылка;
    Иначе
        возврат СсылкаНаГлюк;
    КонецЕсли;
        
КонецФункции
Показать

В чем ошибка то? Похоже у меня сегодня вообще голова не варит, вижу что на что то мне намекаю, но в упор не вижу на что :-)
13. ipoloskov 164 28.06.18 15:35 Сейчас в теме
(12) тут ошибки нет. Но я же не вижу вашу функцию "СоздатьСерию"
16. Doreng 28 28.06.18 15:44 Сейчас в теме
(13)
&НаСервере
Функция СоздатьСерию(База,Серия,КодСерии,НомерСерии)
СерияВИсточнике = База.Справочники.СерииНоменклатуры.НайтиПоКоду(НомерСерии);
НайдемСерию = Справочники.СерииНоменклатуры.НайтиПоНаименованию(Серия);
Сообщить(НайдемСерию.Номер);
Если НайдемСерию.Пустая() Тогда
	СоздадимСерию = Справочники.СерииНоменклатуры.СоздатьЭлемент();
	СоздадимСерию.Номер =  СерияВИсточнике.Наименование;
	СоздадимСерию.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("С учетом по сериям");
	СоздадимСерию.ДатаПроизводства = ВернутьДатуИзСерии(Серия);	
	СоздадимСерию.Записать();
	Возврат СоздадимСерию;
Иначе
	 НашлиСерию = НайдемСерию.ПолучитьОбъект();
	 НашлиСерию.Номер = СерияВИсточнике.Наименование;
	 НашлиСерию.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("С учетом по сериям");
	 НашлиСерию.ДатаПроизводства = ТекущаяДата();
	 НашлиСерию.Записать();
	 Возврат НашлиСерию.Ссылка;
КонецЕсли;
//КонецЦикла;
КонецФункции
Показать

Кажется начинаю понимать намек, видимо проблема в возвращаемом значении строкой
СерияВИсточнике = База.Справочники.СерииНоменклатуры.НайтиПоКоду(НомерСерии);
17. ipoloskov 164 28.06.18 15:47 Сейчас в теме
(16) Как я и предполагал - проблема в
Возврат СоздадимСерию;
Это СправочникОбъект. Нужно исправить эту строчку на
Возврат СоздадимСерию.Ссылка;
18. Doreng 28 28.06.18 15:48 Сейчас в теме
14. shuhard 28.06.18 15:38 Сейчас в теме
(6)
Этот как так

серии на складе могут указываться справочно и хранятся при это совсем в другой табличной части
при этом на форме будет нарисован значок серии вместо серии
учетная политика серий определяется по складу и виду номенклатуры
8. shuhard 28.06.18 14:26 Сейчас в теме
(4)
Первый раз такое.

это лишнее, равно как вместо апа писать Совсем идей нет?
10. Doreng 28 28.06.18 14:55 Сейчас в теме
Проблема ушла таким же мистическим образом - добавил строчку перед созданием серий
НоваяСтрочка.СтатусУказанияСерий = 14;
и все ок, работает, но понимания это не добавило
15. shuhard 28.06.18 15:40 Сейчас в теме
(10)
и все ок, работает, но понимания это не добавило

в третий раз - позырь политику учета серий на складах, чё в мистику то впадать
19. Serg243 09.11.21 15:53 Сейчас в теме
У меня такая же проблема. Но умный старший программист показал (но объяснить не смог).
Я делал заполнение на основании реализации документа ЗаявкаНаВозвратТоваровОтКлиента. Серии собирались нормально в запросе, но не заполнялись - хоть об стену убейся (если учёт по сериям - не заполняются сами).
Оказалось что этот замечательный 1С ERP в документе держит табличку ВозвращаемыеСерии которая не выводится и на первый взгляд не понятно зачем нужна и как работает.
Оказалось что нужно перенести

	 Для каждого СтрокаТЗ Из ВозвращаемыеТовары Цикл 
		ЗаполнитьЗначенияСвойств(ВозвращаемыеСерии.Добавить(), СтрокаТЗ); 
	КонецЦикла; 
        


Серии заполнились.
СтатусУказанияСерий можно не заполнять - это никак не влияло на заполнение серий.

ПС Почему так я не понимаю. Если есть знающий человек - оставьте ссылочку куда смотреть чтобы понять почему так.
Оставьте свое сообщение

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