Вопрос по документу Здравствуйте , стоит 7.7 конфигурация альфа-авто: Автозапчасти+автосервис.Проблема такая. Есть Приходные накладные в которых есть товар , цена сумма и тд. Так вот мне надо добавить Разницу , это ЦенаПрихода/ЦенуЗаказа. Не знаю как вытащить из документа заказа поставщику цену соответсвующею товару в приходной накладной. Разницу надо добавить на печатную форму Приходной накладной.Пробовал Через движения регистра Заказы поставщикам. Заказ= СоздатьОбъект ("ТаблицаЗначений"); Заказ.НоваяКолонка("Код"); Заказ.НоваяКолонка("ЕТК"); Заказ.НоваяКолонка("Товар"); Заказ.НоваяКолонка("Цена"); Рег = СоздатьОбъект("Регистр.ЗаказыПоставщикам"); Если Проведен() = 1 Тогда Рег.ВыбратьДвиженияДокумента(Текущийдокумент()); Пока Рег.ПолучитьДвижение() = 1 Цикл ТекДок = рег.ЗаказПост; ТекДок.ВыбратьСтроки(); Пока ТекДок.ПолучитьСтроку() = 1 Цикл Заказ.НоваяСтрока(); Заказ.Товар=ТекДок.Товар; Заказ.Код=ТекДок.Товар.Код; Заказ.ЕТК=ТекДок.Товар.КаталНомер; Заказ.Цена=ТекДок.Цена; КонецЦикла; КонецЦикла; КонецЕсли; Потом искал совпадения Если Заказ.НайтиЗначение(СокрЛП(Строка(Товар.Код)),Ном,1) =1 тогда Если Ном>0 Тогда ЦенаЗак= Заказ.ПолучитьЗначение(Ном,4); Кофициент=ЦенаЗак; КонецЕсли; КонецЕсли; Нашел только пару позиций в приходных и все. Подскажите как лучше сделать или что я сделал не так . |
Заказ и приходник как связаны между собой? |
В приходных есть реквизит по заказу. В нем дата и номер заказа. И вроде больше нечего... |
В конфигураторе посмотри у документа Приходник есть документ основание. Если есть то в нем и надо искать номенклатуру. Если просто номер заказа, то искать документ Заказ по номеру и в нем номенклатуру. |
+ В таблице значений ищи по Номенклатуре (по коду не надо). Ном = 0; Приход.ВыбратьСтроки(); Пока Приход.ПолучитьСтроку() = 1 Цикл Если Заказ.НайтиЗначение(Приход.Товар,Ном,"Товар") =1 тогда Цена = Заказ.ПолучитьЗначение(Ном,"Цена"); КонецЕсли; |
Есть в приходнике ДокументОснование , тип значение Документ. ДокОсн=ДокументОснование; ДокОснВыбратьСтроки(); Пока ДокОсн.ПолучитьСтроку() = 1 Цикл Если Заказ.НайтиЗначение(Приход.Товар,Ном,"Товар") =1 тогда Цена = Заказ.ПолучитьЗначение(Ном,"Цена"); КонецЕсли; Я правильно понял? |
В приходнике основание = Заказ. Выбираем строки из приходника. Выгружаем табличную часть документа основания (заказ) в ТЗ. При выборке строк из приходника ищем номенклатуру в тз и получаем нужные значения. |
ДокОсн=ДокументОснование; ДокОсн.ВыбратьСтроки(); Пока ДокОсн.ПолучитьСтроку() = 1 Цикл Заказ.НоваяСтрока(); Заказ.НоваяСтрока(); Заказ.Товар=ДокОсн.Товар; Заказ.Код=ДокОсн.Товар.Код; Заказ.ЕТК=ДокОсн.Товар.КаталНомер; Заказ.Цена=ДокОсн.Цена; КонецЦикла; Если Заказ.НайтиЗначение(СокрЛП(Строка(Товар)),Ном,Товар) =1 тогда Если Ном>0 Тогда ЦенаЗак= Заказ.ПолучитьЗначение(Ном,4); КонецЕсли; Пишет Номер за пределами значения. |
тз = СоздатьОбъект("ТаблицаЗначений"); //сюда заказ выгружаем ДокОсн.ВыгрузитьТабличнуюЧасть(тз); ВыбратьСтроки(); //перебираем строки текущего документа (Приходник) Пока ПолучитьСтроку() = 1 Цикл Ном = 0; Если тз.НайтиЗначение(Товар,Ном,"Товар") = 1 Тогда ЦенаЗак = тз.ПолучитьЗначение(Ном,"Цена"); КонецЕсли; //Выводим строки в печатную форму КонецЦикла; |
Блин походу меня начинает уже клинить. Мне надо выводить это в процедуре печать в приходной накладной. Как мне это сделать? Процедура Печать() Таб=СоздатьОбъект("Таблица"); Таб.ПовторятьПриПечатиСтроки(10,10); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном=0; Пока ПолучитьСтроку()=1 Цикл Ном=Ном+1; Ну и там еще куча кода. ps Спасибо что помогаешь =)) |
и еще он пишет что Если тз.НайтиЗначение(Товар,Ном,"Товар") Товар неверный индификатор колонки , как будто её нет. |
Посмотри, какие идентификаторы колонок в документе Заказ. |
В документе Заказ поставщику есть реквизит табличной части товар.Но на форме нету. |
Еще покопался и нашел что там есть основание не только на документ заказ поставщику но еще на Расходная накладная и товарные чек |
Проверяй, если Заказ, тогда выгружаем. |
Сделал все норм выгрузилось ищет , но осталось вопрос как это все в процедуру Печать() запихнуть |
15-Ksardas11 > так же, как и на форум |
Блин опять появилась ошибка номер за пределами значеия... |
Текущее время: 12:46. Часовой пояс GMT +3. |