7.7 Установка Фирмы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Peroman, 6 апр 2010.

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    В документах есть реквизит фирма, в связи со сменой фирмы надо поменять фирму:
    Делаю так:
    Код:
    //*******************************************
    Процедура Сформировать()
    СпрФ = СоздатьОбъект("Справочник.Фирмы");
    НовыйТр = СпрФ.НайтиПоКоду(0017);
    Док=СоздатьОбъект("Документ.ПакетПродаж");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку()=1 Цикл
    Если ПустоеЗначение(СокрЛП(Док.Фирма)) = 1 Тогда
    Док.Фирма = СпрФ.НайтиПоНаименованию("Триол новый",0,1);
    КонецЕсли;	
    КонецЦикла;
    Если Записать=1 Тогда
    Док.Записать();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
    Но после обработки значение Фирма пустое, что я делаю не так?
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Начнем с того, что реквизит фирма - реквизит шапки, поэтому не нужно перебирать строки.
    Второе - документ будет записан, только если переменная Записать будет равна единице. Я не заметил, где ей устанавливается такое значение.

    PS попробуй пройтись отладчиком, будешь видеть.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    и еще... ПустоеЗначение будет возвращать 1 если строка состоит только из пробелов... Так что СокрЛП не нужно
  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    К тому же если фирма пустое зачение, так понту ее присваивать?

    Думаю достаточно?

    ИМХО лучше с нуля переписать
  5. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Сначала я прошелся обработкой но немного с другим условием т.е.
    Код:
    Если СокрЛП(Док.Фирма) = НазваниеФирмы Тогда
    
    
    
    
    (по этому забыл убрать СокрЛП, но погоды я думаю это не делает);
    и у меня во всех доках которые вошли в условие поставилось, в реквизит Фирма
    пустое значение, по этому пришлось поменять условие на
    Код:
     Если ПустоеЗначение(Док.Фирма) = 1 Тогда 
    
    По поводу
    Код:
    Док.Записать()
    
    в форме обработки есть флаг(по моему элементарно)
    Синтаксис помощник:

    Записать();
    Синтаксис:
    Записать()
    Назначение:
    Записать документ в базу данных.
    Замечание:
    Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Записать''.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вместо
    Код:
    Док.Фирма = СпрФ.НайтиПоНаименованию("Триол новый",0,1);
    
    
    надо
    Код:
    Если СпрФ.НайтиПоНаименованию("Триол новый",0,1)=1 Тогда
    Док.Фирма = СпрФ.ТекущийЭлемент();
    КонецЕсли;
    
    
  7. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Кому как :)
    ставить в форму реквизит, который должен быть переменной и вычисляться по ходу кода - это, мягко говоря, не правильно.
  8. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Код:
     
    Если СпрФ.НайтиПоНаименованию("Триол новый",0,1)=1 Тогда
    Док.Фирма = СпрФ.ТекущийЭлемент();
    КонецЕсли;
    
    
    Логично.Спасибо
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Тебе об этом выше сказал WaRDeR)))))))

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