у вас цена в запросе - это цена продажи в расходной. вы ей присваиваете себестоимость(путаете) . в запросе нужно сразу добавить поле Себестоимость и формулу(в запросе) СуммаОстаток поделить на Количество остаток.
когда обходите результат выполненного запроса. используете готовое значение Себестоимости. ваш расход равен Себестоимость умножить на Количество(поле из дока).
Но это не все. Есть ньюанс с копейками. Когда количество списываемого равно количеству на остатке, нужно списать просто весь остаток.
если все же без поля себестоимость в запросе
Если ВыборкаДетальныеЗаписи.Количество<ВыборкаДетальныеЗаписи.КоличествоОСтаток Тогда Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОСтаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество Иначе Движение.Сумма=ВыборкаДетальныеЗаписи.СуммаОстаток КонецЕсли;
только первый уровень нужен был? понятно. все верно - использовали цикл с рекурсией. сами разобрались. "спасибка"
ПустоеЗначение() и Выбран() чаще всего без разницы. Выбран() знает позицию элемента справочника. ПустоеЗначение() -нет. Если удалить элементы, но оставятся где-то на них ссылки в реквизитах формы, то ПустоеЗначение() там покажет 0, Выбран() скорее всего 1. надо проверить.
Добрый день! Подниму тему, вот сотрудник в январе пошел в отпуск, есть сформированный приказ на отпуск, при заполнения табеля рабочего времени проставляется 8ками те дни когда он в отпуске, я руками перебил на 0, т.е пустые значения, но при печати с табеля формы П-5(сбуквенным кодом) в табеле рабочего времени прочерки стоят в тех дня когда сотрудник был в отпуске, а должна быть буква "В" и количество часов, которое сотрудник был в отпуске.
По сотруднику должны быть видны суммы, кво дней, даты в журнале расчетов по видам расчетов : Оклад, Отпуск. по этому сотруднику. Если не рассчитаны, рассчитать эти виды расчетов. Честно, не знаю, изменится ли что-то в этом отчете, но начинать нужно с журнала расчетов, табель тут не командир.
Прямой метод учета - рисуете отрезок, делите на три части. первая часть подписываете Оклад, вторая часть - Отпуск, третья часть пишете Оклад. В базе такой же принцип. Вы сами в конце месяца видите и вносите, что было с рабочим.
Метод отклонений - рисуете отрезок. Пишете - на нем - Оклад!, делите на три части. Средний отрезок-- подписываете Отпуск. Отпуск имеет приоритет перед окладом(он "отклоняет "оклад). Если он появляется(вносится документом), то программа сама занимается делением на отрезки и подсчетами дней.
торговли и склад конфигурации у меня под рукой сейчас нет.
Там основная идея в том, что справочников по Единице измерения - две штуки. Дословно названия не помню. Один вы нашли, он подчинен справочнику Номенклатура, в нем реквизит Единица он имеет тип второго искомого справочника. От не помню названия.
Вы создаете объект типа искомый справочник. НайтиПоНАименованию() - находите элемент Упаковка (или как-то так). присваиваете переменной .... Упаковка.
При обходе по циклу, кот у вас в коде сравниваете реквизит ПечатьУп.Единица с переменной Упаковка. Если равно, значит нашли!! Берете В ПечатьУП.Коээфициент - значение коэффициента.
sava1,прервать при втором обходе нужно убрать. ВсеВошедшие в запрос нужно. Иначе будет выдавать в строках разное количество колонок.только те ячейки, по которым есть количество.
Еще, если не по ЗАпросу, а по коду обхода Запроса. То привести таблицу к виду, кот указал Ardi, можно где-то так
Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
СпрКатегорий.ИспользоватьВладельца(Запрос.Товар); СпрКатегорий.ВыбратьЭлементы(); Пока СпрКатегорий.ПолучитьЭлемент() = 1 Цикл Если СпрКатегорий.Категория.ПометкаУдаления() = 1 Тогда Продолжить; Иначе
5_копеек, Поздравляем с ДР. Запомнилось. Еще у Раисы Сметаниной такая же интресная дата. Желаю Вам таких же достижений и высот в поставленных Вами целях.
Вопрос знаками отмечено - там КоличествоОстаток наварное
нет. Количество в табличной части , тут обращение как к обычному полю. а нужно обращаться через таблицу значений. Либо в запросе определять полем.
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Документ1.ТабличнаяЧасть1.( | НомерСтроки, | Реквизит1, | Реквизит2, | Реквизит3 | ), | Документ1.Реквизит1 |ИЗ | Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 | ЛЕВОЕ СОЕДИНЕНИЕ Документ.Документ1 КАК Документ1 | ПО Документ1ТабличнаяЧасть1.Ссылка = Документ1.Ссылка";
Результат=Запрос.Выполнить().Выгрузить(); для Инд=0 По Результат.Количество()-1 Цикл СтрРезультат=Результат.Получить(Инд); ТоЧТОИщем=СтрРезультат.ТабличнаяЧасть1.Получить(Инд).Реквизит1; КонецЦикла;
ТОЧТОИщем - аж вот так к значению реквизита Количество можно добраться
дописывать только. в форме журнала документов. в форме - новую колонку-реквизит. тип- булево, потом анализировать с пом стандартных средств 1С и обрабатывать. Если это обработка, то загруж доки за интервал времени в таблицу значений, в табл.значений, колонка тип булево, и колонка тип- документ нужный. Далее - аналогично.
есть еще вариант... используется в стандартных обработках.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!