• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

V7: Один и тот же блок кода работает в модуле документа, но не работае

  • Автор темы Kosenshteyn
  • Дата начала
K

Kosenshteyn

Здравствуйте. Пожалуйста помогите, а то уперся и не могу найти решение.

Задача следующая: нужно присвоить переменным "КоличествоНаСкладе" и "СуммаНаСкладе" значение соответствующих остатков по субсчету в разрезе аналитики.

Блок кода в модуле документа выглядит следующим образом и прекрасно выполняет свою задачу:


[codebox]Если СчетУчета = Сч41_4 Тогда
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, ТаблицаДокумента.Товар, 2);
БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Отправитель, 2);
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"41.4",,,,,"СК");
КоличествоНаСкладе = БухИт.СКД("К");
СуммаНаСкладе = БухИт.СКД("С");
Сообщить ("Кол-во на складе = " + КоличествоНаСкладе);
Сообщить ("Сумма на складе = " + СуммаНаСкладе);
КонецЕсли;[/codebox]

Блок кода в модуле формы документа выглядит следующим образом и выдает нулевые остатки:

[codebox]БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);
БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Отправитель, 2);
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"41.4",,,,,"СК");
КоличествоНаСкладе = БухИт.СКД("К");
СуммаНаСкладе = БухИт.СКД("С");
Сообщить ("Кол-во на складе = " + КоличествоНаСкладе);
Сообщить ("Сумма на складе = " + СуммаНаСкладе);[/codebox]


Помогите разобраться. Как корректно в модуле формы получить количественные и суммовые остатки по конкретной номенклатуре, хранящейся на определенном складе. Заранее благодарен!
 
H

Hryv

Вероятнее всего в форме не срабатывает ограничение периода через ТекущийДокумент()
Так бывает, если документ еще не записан

Попробуйте что-то типа ДатаДок или ТекущаяДата()
Короче задайте конец периода явно и чтоб по смыслу подходило

ЗЫ можно еще принудительно заранее записать документ, но по опыту - это плохой путь, из-за этого может возникнуть масса проблем
 
K

Kosenshteyn

Hryv, спасибо тебе большое! Проблема, как раз и была в ограничении периода. ТекущийДокумент() поменял на ДатаДок и все заработало. Низкий поклон тебе:) Задавал это же вопрос на . Все предлагали решение на основе записи документа, но это нерационально, имхо.
 
H

Hryv

Незачто
Просто имею печальный опыт: каждый раз, когда вынужден сделать принудительную запись, рано или поздно возникают проблемы
Поэтому стал избегать этого пути и находить другие

Хотя есть небольшая разница
Если я не ошибаюсь, то при указании конкретной даты, время будет стоять на конце дня (т.е. будут учитываться проводки всех документов)
а если использовать ТекущийДокумент(), то будут учитываться проводки только тех документов, у которых время раньше

Иногда это бывает важно
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!