По теме из базы знаний
- Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки
- Автоматизация предприятий пищевой отрасли на базе 1С:ERP (прослеживаемость состава готовой продукции от сырья до реализации)
- Доработка политики учета серий "Учет себестоимости по сериям" в 1C:ERP
- Виды учета в 1С: ERP Управление холдингом
- Как я писал ТЗ на внедрение 1С:ERP
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)Это вообще как?
покажи тот же документ заполненный руками
, если не заметил тут идет речь о том что есть реквизит, который ожидает ссылку на серию, функция возвращает ссылку на серию, но в реквизит не попадает, это как Строка.Номенклатура = Номенклатура.Ссылка получить пустую ссылку
Попробуйте результат функции присвоить переменной. Смотрите в отладчике, присвоилось ли. А то мало ли что у вас в этой функции происходит - может, она через раз отрабатывает. Очень легко, например, перепутать и при создании вернуть СправочникОбъект. А в другой ветке, если элемент существует - СправочникСсылка.
(5)Этот как так? Функция вызывается с данными строки, то есть имеет значение построенное на данных в текущей строке, какой такой второй вызов? И по условию видно что если пустая тогда заход в эту функцию или я ошибаюсь? Я специально сделал скрин так чтоб было видно что это цикл.
(6) например, так:
Функция в отладке при первом вызове будет возвращать строку "Новый глюк!", а при втором (тогда, когда вы посмотрите в отладчике на то, что она возвращает) - ссылку на справочник.
Функция СоздатьГлюк(Код)
СсылкаНаГлюк = Справочники.Глюки.НайтиПоКоду(Код);
Если Не ЗначениеЗаполнено(СсылкаНаГлюк) Тогда
НовыйГлюк = Справочники.Глюки.СоздатьЭлемент();
НовыйГлюк.Код = Код;
НовыйГлюк.Записать();
возврат "Новый глюк!";
Иначе
возврат СсылкаНаГлюк;
КонецЕсли;
КонецФункции
ПоказатьФункция в отладке при первом вызове будет возвращать строку "Новый глюк!", а при втором (тогда, когда вы посмотрите в отладчике на то, что она возвращает) - ссылку на справочник.
Процедура ЛовимГлюк()
НашДокумент.ПолеГлюк = СоздатьГлюк(НовыйКод); //сюда возвратится строка "Новый глюк!".
//После преобразования к типу СправочникСсылка.Глюки, в НашДокумент.ПолеГлюк будет пустая ссылка.
ПосмотретьОтладчикомИУдивиться = Истина;//здесь ставим точку останова и смотрим отладчиком СоздатьГлюк(НовыйКод).
//Видим ссылку на справочник "Глюки", так как элемент справочника с таким кодом уже существует,
//и выполнение функции пойдет по второй ветке "возврат СсылкаНаГлюк"
КонецПроцедуры
Показать
(11) Тогда Уж так
В чем ошибка то? Похоже у меня сегодня вообще голова не варит, вижу что на что то мне намекаю, но в упор не вижу на что :-)
Функция СоздатьГлюк(Код)
СсылкаНаГлюк = Справочники.Глюки.НайтиПоКоду(Код);
Если СсылкаНаГлюк.Пустая() Тогда
НовыйГлюк = Справочники.Глюки.СоздатьЭлемент();
НовыйГлюк.Записать();
возврат НовыйГлюк.Ссылка;
Иначе
возврат СсылкаНаГлюк;
КонецЕсли;
КонецФункции
ПоказатьВ чем ошибка то? Похоже у меня сегодня вообще голова не варит, вижу что на что то мне намекаю, но в упор не вижу на что :-)
(13)
Кажется начинаю понимать намек, видимо проблема в возвращаемом значении строкой
&НаСервере
Функция СоздатьСерию(База,Серия,КодСерии,НомерСерии)
СерияВИсточнике = База.Справочники.СерииНоменклатуры.НайтиПоКоду(НомерСерии);
НайдемСерию = Справочники.СерииНоменклатуры.НайтиПоНаименованию(Серия);
Сообщить(НайдемСерию.Номер);
Если НайдемСерию.Пустая() Тогда
СоздадимСерию = Справочники.СерииНоменклатуры.СоздатьЭлемент();
СоздадимСерию.Номер = СерияВИсточнике.Наименование;
СоздадимСерию.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("С учетом по сериям");
СоздадимСерию.ДатаПроизводства = ВернутьДатуИзСерии(Серия);
СоздадимСерию.Записать();
Возврат СоздадимСерию;
Иначе
НашлиСерию = НайдемСерию.ПолучитьОбъект();
НашлиСерию.Номер = СерияВИсточнике.Наименование;
НашлиСерию.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("С учетом по сериям");
НашлиСерию.ДатаПроизводства = ТекущаяДата();
НашлиСерию.Записать();
Возврат НашлиСерию.Ссылка;
КонецЕсли;
//КонецЦикла;
КонецФункции
ПоказатьКажется начинаю понимать намек, видимо проблема в возвращаемом значении строкой
СерияВИсточнике = База.Справочники.СерииНоменклатуры.НайтиПоКоду(НомерСерии);
У меня такая же проблема. Но умный старший программист показал (но объяснить не смог).
Я делал заполнение на основании реализации документа ЗаявкаНаВозвратТоваровОтКлиента. Серии собирались нормально в запросе, но не заполнялись - хоть об стену убейся (если учёт по сериям - не заполняются сами).
Оказалось что этот замечательный 1С ERP в документе держит табличку ВозвращаемыеСерии которая не выводится и на первый взгляд не понятно зачем нужна и как работает.
Оказалось что нужно перенести
Серии заполнились.
СтатусУказанияСерий можно не заполнять - это никак не влияло на заполнение серий.
ПС Почему так я не понимаю. Если есть знающий человек - оставьте ссылочку куда смотреть чтобы понять почему так.
Я делал заполнение на основании реализации документа ЗаявкаНаВозвратТоваровОтКлиента. Серии собирались нормально в запросе, но не заполнялись - хоть об стену убейся (если учёт по сериям - не заполняются сами).
Оказалось что этот замечательный 1С ERP в документе держит табличку ВозвращаемыеСерии которая не выводится и на первый взгляд не понятно зачем нужна и как работает.
Оказалось что нужно перенести
Для каждого СтрокаТЗ Из ВозвращаемыеТовары Цикл
ЗаполнитьЗначенияСвойств(ВозвращаемыеСерии.Добавить(), СтрокаТЗ);
КонецЦикла;
Серии заполнились.
СтатусУказанияСерий можно не заполнять - это никак не влияло на заполнение серий.
ПС Почему так я не понимаю. Если есть знающий человек - оставьте ссылочку куда смотреть чтобы понять почему так.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот