Доброго всем времени суток=)
Появилась необходимость заполнения поля "Партия" Расходная накладной, созданной на основании Приходной накладной, но как установить нужную партию понятия не имею.
Буду благодарен за любую помощь в решении задачи.
P.S.
Конфигурация: "Бухгалтерский учёт" для Украины (7.70.282)
Если в РН будет та же партия, что и в ПН, то все просто. В тех строках, где присваивается ТМЦ , присвоить и партию. Ну а если нет, то алгоритмы расчета у бухов. Какой вариант парионного учета?
ЗЫ.
Конфа доработана? В стандартной нельзя создать РН на основании ПН!
282-го под рукой нет, но в 538-м партий как таковых не наблюдается совсем.
538 - это не российский случайно?
ВыбратьЭлементыПоРеквизиту(<?>,,,)
Синтаксис:
ВыбратьЭлементыПоРеквизиту(<ИмяРеквизита>,<Значение>,<РежимИерархии>,<РежимГрупп>)
Назначение:
Открыть выборку элементов справочника по значению реквизита.
Возвращает: 1 - если действие выполнено и в выборке есть хотя бы один элемент;
0 - если действие не выполнено или в выборке нет ни одного элемента.
Параметры:
<ИмяРеквизита> - строка с именем реквизита, по которому выполняется выборка;
<Значение> - значение реквизита для выборки;
<РежимИерархии> - как выбирать:
1 - выбирать элементы с учетом иерархии,
0 - выбирать элементы без учета иерархии (необязателен, по умолчанию - 1);
<РежимГрупп> - что выбирать:
1 - выбирать среди групп справочника,
0 - выбирать только среди элементов справочника.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Потом перебрать полученые записи и найти партию с текущим товаром.
Полученую партию вставить в реализацию.
И так по всем строкам.
Партия.ВыбратьЭлементПоРеквизиту("Документ",ДокОсн,1,0);
Партия.ВыбратьЭлементПоРеквизиту("Документ",ДокОсн,1,0);
ПартияВыбор.ВыбратьЭлементПоРеквизиту("Док",Док,1,0);
такое есть
ПартияВыбор = СоздатьОбъект("Справочник.ИмяСправочника");
?
Да, есть:
ПартияВыбор = СоздатьОбъект("Справочник.Партии");
Спасибо за совет=)
В Синтаксис-помощнике нашел ВыбратьЭлементыПоРеквизиту(<?>,,,)
Исправил ошибку(?) в итоге получился следующий код:
Пока Док.ПолучитьСтроку() = 1
Цикл
...
ПартияВыбор = СоздатьОбъект("Справочник.Партии");
ПартияВыбор.ИспользоватьВладельца(Док.ТМЦ);
Партия = ПартияВыбор.ВыбратьЭлементыПоРеквизиту("Док",Док,1,0);
КонецЦикла;
ПартияВыбор.ВыбратьЭлементыПоРеквизиту("Док",Док,1,0);
Пока ПартияВыбор.ПолучитьЭлемент() = 1 Цикл
.....
КонецЦикла;
Непонимаю зачем вообще это ВыбратьЭлементыПоРеквизиту(...). ПН является партеобразующим документом, тоесть для 1 ТМЦ по 1 ПН обычно только 1 элемент должен быть. Вот и используйте цепочку:
1. Нужно ограничить по конкретному ТМЦ: ПартияВыбор.ИспользоватьВладельца(ДокОсн.ТМЦ)
2. Ищем и присваиваем, если находим:
Если ПартияВыбор.НайтиПоРеквизиту("Документ",ДокОсн,0)=1
Партия = ПартияВыбор.ТекущийЭлемент();
"Ты на мене не обижяйся, но я тебе умный вещь скажу" х/ф "Мимино"
Хотите выполнить работу - начните с выбора инструмента. Бухгалтерии это нафиг не нужно - и там ловить нечего, независимо от релиза.
Посмотрите ПакетныйВводРасходныхРеализатора в ТиС.
Есть альтер вариант - ручной выбор партий.
Всем огромное Спасибо!
Так как фирма использует именно партийный учёт, написал следующим образом:
Если Док.Вид() = "ПриходнаяНакладная" Тогда
...
ПартияВыбор = СоздатьОбъект("Справочник.Партии");
ПартияВыбор.ИспользоватьВладельца(Док.ТМЦ);
Пока Док.ПолучитьСтроку() = 1 Цикл
...
Если ПартияВыбор.НайтиПоРеквизиту("Док",Док,0)=1 Тогда
Партия = ПартияВыбор.ТекущийЭлемент();
КонецЕсли;
КонецЦикла;
GoDammeD, жмите палец всем, кто помогал.
Если Док.Вид() = "ПриходнаяНакладная" Тогда
...
ПартияВыбор = СоздатьОбъект("Справочник.Партии");
Пока Док.ПолучитьСтроку() = 1 Цикл
ПартияВыбор.ИспользоватьВладельца(Док.ТМЦ);
...
Если ПартияВыбор.НайтиПоРеквизиту("Док",Док,0)=1 Тогда
Партия = ПартияВыбор.ТекущийЭлемент();
КонецЕсли;
КонецЦикла;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua