8.х Установить дату Гарантии по первому документу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем litome, 26 окт 2012.

  1. TopicStarter Overlay
    litome
    Offline

    litome

    Регистрация:
    22 сен 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добрый день.
    Есть документы Реализация автомобилей в них табличное поле автомобили, задача состоит в том, что бы если один и тот же автомобиль продан несколько раз проверка по vin, в остальных документах установить дату гарантии от первой продажи.
    Подскажите как лучше это сделать,и почему приведенное ниже решение не работает.
    Код:
     Запрос=новый запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    |	РеализацияАвтомобилей.Дата КАК Дата,
    |   РеализацияАвтомобилейАвтомобили.Автомобиль.ДатаНачалаГарантии КАК ДатаНачалаГарантии,
    |   РеализацияАвтомобилейАвтомобили.Автомобиль.ДатаОкончанияГарантии,
    |   РеализацияАвтомобилейАвтомобили.Автомобиль.Ссылка КАК Ссылка,
    |   РеализацияАвтомобилейАвтомобили.Автомобиль.VIN КАК VIN
    |ИЗ
    |   Документ.РеализацияАвтомобилей КАК РеализацияАвтомобилей
    |	   ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияАвтомобилей.Автомобили КАК
    | РеализацияАвтомобилейАвтомобили
    |	   ПО РеализацияАвтомобилей.Ссылка = РеализацияАвтомобилейАвтомобили.Ссылка
    |ГДЕ
    |   РеализацияАвтомобилей.Проведен = ИСТИНА
    |   И РеализацияАвтомобилей.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |
    |УПОРЯДОЧИТЬ ПО
    |   Дата";
    Запрос.УстановитьПараметр("ДатаНач",НачалоПериода);
    Запрос.УстановитьПараметр("ДатаКон",КонецПериода);
    Выборка=Запрос.Выполнить().Выбрать();
    
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | РеализацияАвтомобилейАвтомобили.Автомобиль.VIN КАК VIN,
    | РеализацияАвтомобилейАвтомобили.Автомобиль.Ссылка КАК Ссылка,
    | РеализацияАвтомобилейАвтомобили.Автомобиль.ДатаНачалаГарантии КАК ДатаНачалаГарантии
    |ИЗ
    | Документ.РеализацияАвтомобилей КАК РеализацияАвтомобилей
    |	 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияАвтомобилей.Автомобили КАК РеализацияАвтомобилейАвтомобили
    |	 ПО РеализацияАвтомобилей.Ссылка = РеализацияАвтомобилейАвтомобили.Ссылка
    |ГДЕ
    | РеализацияАвтомобилей.Проведен = ИСТИНА
    | И РеализацияАвтомобилей.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |
    |УПОРЯДОЧИТЬ ПО
    | РеализацияАвтомобилей.Дата" ;
    Запрос.УстановитьПараметр("ДатаНач",НачалоПериода);
    Запрос.УстановитьПараметр("ДатаКон",КонецПериода);
    
    Выборка1=Запрос.Выполнить().Выбрать();
    Пока Выборка1.Следующий() цикл
    Выборка.Сбросить();
    х=1;
    Пока Выборка.Следующий() цикл
    попытка
    Если Выборка1.VIN=Выборка.VIN  и Выборка1.ДатаНачалаГарантии>'00010101'  тогда
    Если  Выборка.Контрагент=Справочники.Контрагенты.НайтиПоКоду("ЦБ005857") тогда
    ОкончаниеГарантии=2;
    иначе
    ОкончаниеГарантии=3;
    конецесли;
    Объект=Выборка.Ссылка.ПолучитьОбъект();
    Объект.ДатаНачалаГарантии=Выборка1.ДатаНачалаГарантии;
    Объект.ДатаОкончанияГарантии=ДобавитьМесяц(Выборка1.ДатаНачалаГарантии, 12 * ОкончаниеГарантии) ;
    Объект.Записать();
    Сообщить("Автомобиль "+Выборка.Ссылка+"  Установлена Дата начала гарантии  "+Выборка1.ДатаНачалаГарантии+" Конец гарантии  "+Объект.ДатаОкончанияГарантии);
    иначеЕсли Выборка1.ДатаНачалаГарантии>'00010101'и х=1 тогда
    Если  Выборка.Контрагент=Справочники.Контрагенты.НайтиПоКоду("ЦБ005857") тогда
    ОкончаниеГарантии=2;
    иначе
    ОкончаниеГарантии=3;
    конецесли;
    Объект=Выборка1.Ссылка.ПолучитьОбъект();
    Объект.ДатаОкончанияГарантии=ДобавитьМесяц(Выборка1.ДатаНачалаГарантии, 12 * ОкончаниеГарантии) ;
    Объект.Записать();
    х=0;
    Сообщить("Автомобиль "+Выборка.Ссылка+"  Установлена Дата начала гарантии  "+Выборка1.ДатаНачалаГарантии+" Конец гарантии  "+Объект.ДатаОкончанияГарантии);
    
    КонецЕсли;
    исключение
    Выборка.Следующий();
    конецпопытки;
    Конеццикла ;
    
    конеццикла;
    
    
  2. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Что значит один и тот же продан несколько раз?
  3. TopicStarter Overlay
    litome
    Offline

    litome

    Регистрация:
    22 сен 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Одна и та же номенклатура используется в нескольких документах.
  4. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Не знаю что у вас за конфигурация. А в "Альфа-Авто" ДатаНачалаГарантии - реквизит самого элемента справочника Автомобили. На мой взгляд так удобней и не надо такие огороды городить.
Похожие темы
  1. xandruxa
    Ответов:
    3
    Просмотров:
    767
  2. 1Cnica
    Ответов:
    3
    Просмотров:
    553
  3. gamser
    Ответов:
    6
    Просмотров:
    2.107
  4. mrleo1964
    Ответов:
    6
    Просмотров:
    1.725
  5. VIPOS
    Ответов:
    12
    Просмотров:
    738
Загрузка...

Поделиться этой страницей