Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как перезаписать значения реквизитов, поменять местами два значения 3 страниц V   1 2 3 >          
wmatik Подменю пользователя
сообщение 06.10.11, 13:00
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Помогите в документе заполненном поменять значение реквизитов местами: МестоХранения и МестоХраненияВЭксплуатации. Начала писать обработку:
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ВводВЭксплуатацию") Тогда
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл  
                 Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда
                    Док.МестоХранения=Док.МестоХраненияВЭксплуатации;
          Док.МестоХраненияВЭксплуатации=Док.МестоХранения;                                                        
                 КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
            Док.Записать();
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку()=1 Цикл
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    Предупреждение("Обработка завершена!");  
КонецПроцедуры

В результате в МестоХранения записывается значение реквизита МестоХраненияВЭксплуатации, а значение МестоХраненияВЭксплуатации не меняется.


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Flexy Подменю пользователя
сообщение 06.10.11, 13:10
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Так вы же записываете одно и тоже значение в две переменных.
Введите доп переменную и в нее вносите МестоХраненияВЭксплуатации.
А потом уже из нее присваивайте значение нужному реквизиту

alex040269 Подменю пользователя
сообщение 06.10.11, 13:19
Сообщение #3

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(wmatik @ 06.10.11, 14:00) *
Процедура Выполнить()
                    Док.МестоХранения=Док.МестоХраненияВЭксплуатации;
          Док.МестоХраненияВЭксплуатации=Док.МестоХранения;                                                        
КонецПроцедуры

В результате в МестоХранения записывается значение реквизита МестоХраненияВЭксплуатации, а значение МестоХраненияВЭксплуатации не меняется.


МестоХранения=Док.МестоХраненияВЭксплуатации; 
Док.МестоХраненияВЭксплуатации = Док.МестоХранения;
Док.МестоХранения  =МестоХранения;


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

wmatik Подменю пользователя
сообщение 06.10.11, 14:49
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Создала дополнительную переменную МестоХр, но почему то не все переносится, не соображу почему некоторые не меняются:
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ВводВЭксплуатацию") Тогда
            Сообщить("Обрабатываю документ "+Док.ТекущийДокумент());
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл              
                Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда    
                    Док.МестоХр=Док.МестоХранения;
                    Док.Записать();
                    Док.МестоХранения=Док.МестоХраненияВЭксплуатации;
                    Док.МестоХраненияВЭксплуатации=Док.МестоХр;
                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
            Док.Записать();
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку()=1 Цикл
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    Предупреждение("Обработка завершена!");  
КонецПроцедуры


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Flexy Подменю пользователя
сообщение 06.10.11, 14:58
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(wmatik @ 06.10.11, 14:49) *
Создала дополнительную переменную МестоХр, но почему то не все переносится, не соображу почему некоторые не меняются:

Потому что не описан алгоритм в случае блока Иначе:
Процедура Выполнить()
              
            Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда    
                    
КонецПроцедуры


Сообщение отредактировал Flexy - 06.10.11, 14:58

wmatik Подменю пользователя
сообщение 06.10.11, 14:59
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

так оно не пустое, да и вообще нет пустых вообще, все заполнено.


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Flexy Подменю пользователя
сообщение 06.10.11, 15:10
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Вы меняете 1 реквизит дока, потом сам док записываете.А потом пытаетесь изменить 2-ой реквизит в уже записанном доке.
Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда    
                    Док.МестоХр=Док.МестоХранения;
                   // Док.Записать();
                    Док.МестоХранения=Док.МестоХраненияВЭксплуатации;
                    Док.МестоХраненияВЭксплуатации=Док.МестоХр;
                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;

wmatik Подменю пользователя
сообщение 06.10.11, 15:20
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

убрала Док.Записать();, но все та же песня...(


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Flexy Подменю пользователя
сообщение 06.10.11, 15:27
Сообщение #9

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(wmatik @ 06.10.11, 15:20) *
убрала Док.Записать();, но все та же песня...(

А что такое:
Док.МестоХр
?
Вам писал создать именно переменную.
МестоХр = Док.МестоХранения;


Сообщение отредактировал Flexy - 06.10.11, 15:28

Читатель Подменю пользователя
сообщение 06.10.11, 15:28
Сообщение #10

Говорящий
Иконка группы
Группа: Местный
Сообщений: 56
Из: Киевская обл.
Спасибо сказали: 20 раз
Рейтинг: 0

Вы пишете что создали переменную МестоХр, а по коду видно что это реквизит документа. Так что Вы создали?

wmatik Подменю пользователя
сообщение 06.10.11, 15:30
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

я создала реквизит


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Читатель Подменю пользователя
сообщение 06.10.11, 15:33
Сообщение #12

Говорящий
Иконка группы
Группа: Местный
Сообщений: 56
Из: Киевская обл.
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(wmatik @ 06.10.11, 16:30) *
я создала реквизит

А реквизит то зачем? Сделайте так, как Вам посоветовали - переменную.

Flexy Подменю пользователя
сообщение 06.10.11, 15:37
Сообщение #13

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(wmatik @ 06.10.11, 15:30) *
я создала реквизит

faceoff.gif
Вы разницу между переменной и реквизитом ощущаете?

Virgo Подменю пользователя
сообщение 06.10.11, 15:49
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 284
Из: Симферополь-Севастополь
Спасибо сказали: 56 раз
Рейтинг: 0

05081.gif

wmatik Подменю пользователя
сообщение 07.10.11, 7:19
Сообщение #15

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Создала переменную, все равно непонятно почему, некоторые документы не записывает.


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Batchir Подменю пользователя
сообщение 07.10.11, 7:38
Сообщение #16

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Ну что Вы все налетели и сразу под стол? Обратились за помощью, делает сама, но не получается.

Сначала нужно сохранить текущие значения в переменные
СтарМестоХранения =  Док.МестоХранения;
СтарМестоХраненияВЭксплуатации =  Док.МестоХраненияВЭксплуатации;

После чего нужно установить в документе значения из этих переменных
Док.МестоХранения=СтарМестоХраненияВЭксплуатации 
Док.МестоХраненияВЭксплуатации=СтарМестоХранения;

alex040269 Подменю пользователя
сообщение 07.10.11, 7:44
Сообщение #17

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(wmatik @ 07.10.11, 8:19) *
Создала переменную, все равно непонятно почему, некоторые документы не записывает.

Установите точку останова с условием на эти документов.
или в коде
Если Док.Номер = "????" Тогда
            Сообщить("что-то")
Конецесли


Установите точку останова на Сообщить в отладчике и посмотрите что происходит на самом деле....


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

wmatik Подменю пользователя
сообщение 07.10.11, 8:37
Сообщение #18

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Batchir, спасибо за понимания, сделала как вы написали, та же телега....

некоторые документы заполняюся правильно, шагаю дальше и выдает:Док.МестоХраненияВЭксплуатации = Ошибка в выражении!


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Читатель Подменю пользователя
сообщение 07.10.11, 8:47
Сообщение #19

Говорящий
Иконка группы
Группа: Местный
Сообщений: 56
Из: Киевская обл.
Спасибо сказали: 20 раз
Рейтинг: 0

Отладчиком смотрите. Если одни и те же документы не записываются, то как посоветовал alex040269. Если нет, то без условия Сообщить("что-то").
Кстати зачем Вы перебыраете строки документа после его записи? Вряд ли это решит проблему, но я бы убрал перебор строк.
Ну и на всякий случай. Может Вы запускаете свою обработку в то время, когда есть открытые документы кем-то? Тогда они не запишутся.

wmatik Подменю пользователя
сообщение 07.10.11, 9:19
Сообщение #20

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

убрала перебор строк, все то же. В общем в итоге код сейчас выглядит таким образом:
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ВводВЭксплуатацию") Тогда
            Сообщить("Обрабатываю документ "+Док.ТекущийДокумент());
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл              
                Если ПустоеЗначение(Док.МестоХраненияВЭксплуатации) = 0 Тогда    
                    СтарМестоХранения = Док.МестоХранения;
                    СтарМестоХраненияВЭксплуатации = Док.МестоХраненияВЭксплуатации;
                    Док.МестоХранения=СтарМестоХраненияВЭксплуатации;
                    Док.МестоХраненияВЭксплуатации=СтарМестоХранения;  

                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
            Док.Записать();
        КонецЕсли;
    КонецЦикла;
    Предупреждение("Обработка завершена!");  
КонецПроцедуры


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V   1 2 3 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.06.24, 11:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!