Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужно сравнить дынные с двух разных регистров накопления
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
burza
Есть 2 регистра в них записываются данные с 2х документов, Бюджет и заявка. Стоит задача сравнивать регистры,есть бюджет там есть статья и суммы и нужно при создании заявки чтобы она лезла в бюджет и смотрела можно ли провести сумму по статье. Иными словами проверка на расход.
Сделал так, но почему то сравнивается только одна статья а не по каждой, сейчас только админ работает.Что не так?


 Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
    |ФинЗаявкаОстатки.СуммаОстаток КАК СуммаФинЗаявка,
    |ФинЗаявкаОстатки.Статья КАК Статья,
    |БюджетРасходовИПриходовОстатки.СуммаОстаток КАК СуммаФинПлана
    |ИЗ
    |РегистрНакопления.ФинЗаявка.Остатки КАК ФинЗаявкаОстатки
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.БюджетРасходовИПриходов.Остатки КАК БюджетРасходовИПриходовОстатки
    |ПО ФинЗаявкаОстатки.Подразделение = БюджетРасходовИПриходовОстатки.Подразделение
    |И ФинЗаявкаОстатки.Статья = БюджетРасходовИПриходовОстатки.СтатьяРасхода
    |ГДЕ
    |ФинЗаявкаОстатки.Подразделение = &Подразделение";
    
    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделения);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();
Выборка.Следующий();

    Для Каждого Строка Из Объект.ФинЗаявка Цикл
        
    Если Выборка.СуммаФинПлана < Выборка.СуммаФинЗаявка Тогда
Отказ = Истина;
Сообщить("Сумма больше чем ФинПлан на " + (Выборка.СуммаФинЗаявка - Выборка.СуммаФинПлана)+ " по статье " + Выборка.Статья )
КонецЕсли;
            
КонецЦикла;
Petre
burza @ Today, 8:53 необходимо зарегистрироваться для просмотра ссылки ,
Во-первых, сгруппируйте запрос по статьям.
Во-вторых, переделайте обработку результата. Сейчас у вас в цикле происходит обход по ТЧ объекта, но внутри каждый раз обрабатываются данные первой записи результата запроса.
burza
Petre @ Сегодня, 10:20 необходимо зарегистрироваться для просмотра ссылки ,
Можно код?))
Petre
burza @ Today, 9:48 необходимо зарегистрироваться для просмотра ссылки ,
По первому, вот вам пример группировки:
ВЫБРАТЬ
    СчетНаОплату.Контрагент КАК Контрагент,
    СУММА(СчетНаОплату.СуммаДокумента) КАК СуммаДокумента
ИЗ
    Документ.СчетНаОплату КАК СчетНаОплату

СГРУППИРОВАТЬ ПО
    СчетНаОплату.Контрагент

По второму, на словах: либо выгружайте тч в запрос и там сразу обрабатывайте, либо обходите тч в цикле и ищите соответствующую запись результата запроса (по статье, как я полагаю).
logist
ВНУТРЕННЕЕ СОЕДИНЕНИЕ получает совпадения в двух таблицах, вам вероятно надо использовать ЛЕВОЕ, иначе расход будет разрешен по статьям которых нет в бюджете
Vidocq05
burza @ Сегодня, 9:53 необходимо зарегистрироваться для просмотра ссылки ,
Вам следует ознакомится с кодом контроля остатков номенклатуры при продажах. В интернете примеров данного кода хватает. И использовать его как основу в вашем коде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.