|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
Привет всем! в MSSQL когда требовалось изменить данные в таблице - в EnterpriseManager создавала запрос: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а как подобное сделать в 1С8? и как и где его запускать? Документ в 1С называется - ВоздЛин, поле - Сеч p.s. Советы насчет того чтобы заносить данные в справочник а потом менять 1 запись в справочнике очень правильные, но не в этом случае, потому что много нюансов которые долго объяснять и поэтому надо сделать именно такой запрос. Заранее благодарна! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 08:14 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
Доброе время суток! В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент(); НовыйДокумент.sech = '3х25+1х54,6'; НовыйДокумент.Записать(РежимЗаписиДокумента.Запись); Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 09:42 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
chatmДоброе время суток! В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент(); НовыйДокумент.sech = '3х25+1х54,6'; НовыйДокумент.Записать(РежимЗаписиДокумента.Запись); Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения. Спасибо большое что откликнулись! Значит делаем сначала запрос в котором отбираются нужные записи, а потом НовыйДокумент, а при команде Новый 1С-ка не создаст ли новый документ? она поймет что надо изменить в Существующем документе значение поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 10:00 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8 chatmДоброе время суток! В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент(); НовыйДокумент.sech = '3х25+1х54,6'; НовыйДокумент.Записать(РежимЗаписиДокумента.Запись); Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения. Спасибо большое что откликнулись! Значит делаем сначала запрос в котором отбираются нужные записи, а потом НовыйДокумент, а при команде Новый 1С-ка не создаст ли новый документ? она поймет что надо изменить в Существующем документе значение поля? Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 10:04 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
"Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый..." - да вот этого я и боюсь, надо чтобы в существующем просто сделал замену данных и все - как в MSSQL-е UPDATE, как надо сделать чтобы было изменение в существующем - просто замена значения в поле Сечение? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 10:15 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8"Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый..." - да вот этого я и боюсь, надо чтобы в существующем просто сделал замену данных и все - как в MSSQL-е UPDATE, как надо сделать чтобы было изменение в существующем - просто замена значения в поле Сечение? формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 10:21 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
Господин ПЖ формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 10:44 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8 Господин ПЖ формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :) // Установка значения реквизита в единичном документе док = Документы.ВоздЛин.НайтиПоНомеру("Номер искомого документа"); док.Сечение = "что-то"; док.Записать(); ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:06 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8 Господин ПЖ формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :) А если Вам нужно выбрать документы по каким-то значения реквизитов и потом обновить там реквизит, то тогда примерно так: Запрос = Новый Запрос("ВЫБРАТЬ | ВоздЛин.Ссылка |ИЗ | Документ.ВоздЛин КАК ВоздЛин |ГДЕ | ВоздЛин.Сечение = &Сечение | И ВоздЛин.Марка = &Марка"); Запрос.УстановитьПараметр("Сечение", "что-то"); Запрос.УстановитьПараметр("Марка", "что-то"); рез = Запрос.Выполнить().Выбрать(); Пока рез.Следующий() Цикл об = рез.ссылка.ПолучитьОбъект(); об.Сечение = "что-то"; об.Записать(); КонецЦикла; ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:12 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
сложность в том что таких документов может быть и 500, данные берутся извне, т.е. это не просто заменить 1 запись (так можно было бы заменить 1 запись в справочнике), просто набор документов и в 500 из них надо поменять значение в поле, при нормальной базе подобные значения брались бы из справочника в котором и поменяли бы это значение, но в моем случае это просто грубо говоря текст и значение одного надо поменять на значение другое ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:17 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8сложность в том что таких документов может быть и 500, данные берутся извне, т.е. это не просто заменить 1 запись (так можно было бы заменить 1 запись в справочнике), просто набор документов и в 500 из них надо поменять значение в поле, при нормальной базе подобные значения брались бы из справочника в котором и поменяли бы это значение, но в моем случае это просто грубо говоря текст и значение одного надо поменять на значение другое А второй вариант, который я предложил не подойдет, Вам эти 500 документов ведь по каким-то критерям отбора надо задавать, дак и напишите в блоке 'ГДЕ' эти критерии при выборе документов, а потом уж поменять реквизит не проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:20 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
Так... НачинаюСМелочей1С8 Господин ПЖ формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :) А если Вам нужно выбрать документы по каким-то значения реквизитов и потом обновить там реквизит, то тогда примерно так: Запрос = Новый Запрос("ВЫБРАТЬ | ВоздЛин.Ссылка |ИЗ | Документ.ВоздЛин КАК ВоздЛин |ГДЕ | ВоздЛин.Сечение = &Сечение | И ВоздЛин.Марка = &Марка"); Запрос.УстановитьПараметр("Сечение", "что-то"); Запрос.УстановитьПараметр("Марка", "что-то"); рез = Запрос.Выполнить().Выбрать(); Пока рез.Следующий() Цикл об = рез.ссылка.ПолучитьОбъект(); об.Сечение = "что-то"; об.Записать(); КонецЦикла; Запрос.УстановитьПараметр("Сечение", "что-то"); - в моем случае "что-то" это 25 Запрос.УстановитьПараметр("Марка", "что-то"); -- в моем случае "что-то" это СИП2А я Вас правильно поняла? Спасибо вам огромное!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:20 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
НачинаюСМелочей1С8 Так... НачинаюСМелочей1С8 Господин ПЖ формально нужно выполнить последовательность: 1. Найти интересующий документ (существующий). 2. Установить у нужного реквизита новое значение. 3. Записать документ. совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так: UPDATE VL SET SECH = '3х25+1х54,6' WHERE SECH='25' and MARKA='СИП2А' а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :) А если Вам нужно выбрать документы по каким-то значения реквизитов и потом обновить там реквизит, то тогда примерно так: Запрос = Новый Запрос("ВЫБРАТЬ | ВоздЛин.Ссылка |ИЗ | Документ.ВоздЛин КАК ВоздЛин |ГДЕ | ВоздЛин.Сечение = &Сечение | И ВоздЛин.Марка = &Марка"); Запрос.УстановитьПараметр("Сечение", "что-то"); Запрос.УстановитьПараметр("Марка", "что-то"); рез = Запрос.Выполнить().Выбрать(); Пока рез.Следующий() Цикл об = рез.ссылка.ПолучитьОбъект(); об.Сечение = "что-то"; об.Записать(); КонецЦикла; Запрос.УстановитьПараметр("Сечение", "что-то"); - в моем случае "что-то" это 25 Запрос.УстановитьПараметр("Марка", "что-то"); -- в моем случае "что-то" это СИП2А я Вас правильно поняла? Спасибо вам огромное!!! Именно так и есть, а там уж и выбирайте по каким критериям делать выборку... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:22 |
|
аналог запроса 1С8
|
|||
---|---|---|---|
#18+
запрос = новый запрос("выбрать ссылка из Документ.ВоздЛин где Сеч=&парам1 и Марка=Парам2"); запрос.УстановитьПараметр("парам1","25"); запрос.УстановитьПараметр("парам2","СИП2А"); выборка = запрос.выполнить().Выбрать(); пока выборка.Следующий() цикл док=выборка.ссылка.ПолучитьОбъект(); док.Сеч="3х25+1х54,6"; док.записать(РежимЗаписиДокумента.Запись); конецЦикла; Примерно так - это если Сеч есть строка. Читать объекты из базы в 1С можно как через объектную модель, так и через запросы. А модифицировать - только через объекты. синтаксис запросов двуязычный - можно написать "select ссылка from Документ.ВоздЛин where Сеч=&парам1 and Марка=Парам2" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2008, 11:23 |
|
|
start [/forum/topic.php?fid=28&fpage=171&tid=1524904]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 127ms |
0 / 0 |