powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / аналог запроса 1С8
15 сообщений из 15, страница 1 из 1
аналог запроса 1С8
    #35208728
Привет всем! в MSSQL когда требовалось изменить данные в таблице - в EnterpriseManager создавала запрос:

UPDATE VL SET SECH = '3х25+1х54,6'
WHERE SECH='25' and MARKA='СИП2А'

а как подобное сделать в 1С8? и как и где его запускать? Документ в 1С называется - ВоздЛин, поле - Сеч

p.s. Советы насчет того чтобы заносить данные в справочник а потом менять 1 запись в справочнике очень правильные, но не в этом случае, потому что много нюансов которые долго объяснять и поэтому надо сделать именно такой запрос. Заранее благодарна!
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208817
chatm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например

НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();
НовыйДокумент.sech = '3х25+1х54,6';
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);

Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения.
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208863
chatmДоброе время суток!

В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например

НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();
НовыйДокумент.sech = '3х25+1х54,6';
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);

Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения.

Спасибо большое что откликнулись! Значит делаем сначала запрос в котором отбираются нужные записи, а потом НовыйДокумент, а при команде Новый 1С-ка не создаст ли новый документ? она поймет что надо изменить в Существующем документе значение поля?
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208870
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НачинаюСМелочей1С8 chatmДоброе время суток!

В 1С нельзя данные изменять через запрос. Для изменения данных существует объектные данные, вызываемые через соответствующий менеджер. Например

НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();
НовыйДокумент.sech = '3х25+1х54,6';
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);

Все это можно сделать в специально для таких целей предназначенных объектах - Обработках. Там же можно создать через конструктор запросов нужный запрос с отбором по требуемым реквизитам, организовать перебор выборки в цикле с установкой требуемого значения.

Спасибо большое что откликнулись! Значит делаем сначала запрос в котором отбираются нужные записи, а потом НовыйДокумент, а при команде Новый 1С-ка не создаст ли новый документ? она поймет что надо изменить в Существующем документе значение поля?

Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый...
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208904
"Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый..." - да вот этого я и боюсь, надо чтобы в существующем просто сделал замену данных и все - как в MSSQL-е UPDATE, как надо сделать чтобы было изменение в существующем - просто замена значения в поле Сечение?
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208920
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НачинаюСМелочей1С8"Как напишите, так и будет. Создадите новый документ (НовыйДокумент = Документы.ВоздЛин.СоздатьДокумент();), запишет в новый..." - да вот этого я и боюсь, надо чтобы в существующем просто сделал замену данных и все - как в MSSQL-е UPDATE, как надо сделать чтобы было изменение в существующем - просто замена значения в поле Сечение?

формально нужно выполнить последовательность:

1. Найти интересующий документ (существующий).
2. Установить у нужного реквизита новое значение.
3. Записать документ.
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35208981
Господин ПЖ

формально нужно выполнить последовательность:

1. Найти интересующий документ (существующий).
2. Установить у нужного реквизита новое значение.
3. Записать документ.

совершенно верно Вы меня поняли :) вот теперь интересно как это реализовать в 1С8? потому что в MSSQL-е это выглядело так:
UPDATE VL SET SECH = '3х25+1х54,6'
WHERE SECH='25' and MARKA='СИП2А'
а вот как этот алгоритм реализовать в 1С8 - вот в этом и есть вопрос :)
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209043
Так...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НачинаюСМелочей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 - вот в этом и есть вопрос :)

// Установка значения реквизита в единичном документе
док = Документы.ВоздЛин.НайтиПоНомеру("Номер искомого документа");
док.Сечение = "что-то";
док.Записать();
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209065
Так...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НачинаюСМелочей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 - вот в этом и есть вопрос :)

А если Вам нужно выбрать документы по каким-то значения реквизитов и потом обновить там реквизит, то тогда примерно так:

Запрос = Новый Запрос("ВЫБРАТЬ
| ВоздЛин.Ссылка
|ИЗ
| Документ.ВоздЛин КАК ВоздЛин
|ГДЕ
| ВоздЛин.Сечение = &Сечение
| И ВоздЛин.Марка = &Марка");

Запрос.УстановитьПараметр("Сечение", "что-то");
Запрос.УстановитьПараметр("Марка", "что-то");
рез = Запрос.Выполнить().Выбрать();

Пока рез.Следующий() Цикл
об = рез.ссылка.ПолучитьОбъект();
об.Сечение = "что-то";
об.Записать();
КонецЦикла;
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209087
сложность в том что таких документов может быть и 500, данные берутся извне, т.е. это не просто заменить 1 запись (так можно было бы заменить 1 запись в справочнике), просто набор документов и в 500 из них надо поменять значение в поле, при нормальной базе подобные значения брались бы из справочника в котором и поменяли бы это значение, но в моем случае это просто грубо говоря текст и значение одного надо поменять на значение другое
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209097
Так...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НачинаюСМелочей1С8сложность в том что таких документов может быть и 500, данные берутся извне, т.е. это не просто заменить 1 запись (так можно было бы заменить 1 запись в справочнике), просто набор документов и в 500 из них надо поменять значение в поле, при нормальной базе подобные значения брались бы из справочника в котором и поменяли бы это значение, но в моем случае это просто грубо говоря текст и значение одного надо поменять на значение другое

А второй вариант, который я предложил не подойдет, Вам эти 500 документов ведь по каким-то критерям отбора надо задавать, дак и напишите в блоке 'ГДЕ' эти критерии при выборе документов, а потом уж поменять реквизит не проблема
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209098
Так... НачинаюСМелочей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А
я Вас правильно поняла? Спасибо вам огромное!!!
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209108
Так...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НачинаюСМелочей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А
я Вас правильно поняла? Спасибо вам огромное!!!

Именно так и есть, а там уж и выбирайте по каким критериям делать выборку...
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209109
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос = новый запрос("выбрать ссылка из Документ.ВоздЛин где Сеч=&парам1 и Марка=Парам2");
запрос.УстановитьПараметр("парам1","25");
запрос.УстановитьПараметр("парам2","СИП2А");
выборка = запрос.выполнить().Выбрать();
пока выборка.Следующий() цикл
док=выборка.ссылка.ПолучитьОбъект();
док.Сеч="3х25+1х54,6";
док.записать(РежимЗаписиДокумента.Запись);
конецЦикла;

Примерно так - это если Сеч есть строка. Читать объекты из базы в 1С можно как через объектную модель, так и через запросы. А модифицировать - только через объекты.
синтаксис запросов двуязычный - можно написать
"select ссылка from Документ.ВоздЛин where Сеч=&парам1 and Марка=Парам2"
...
Рейтинг: 0 / 0
аналог запроса 1С8
    #35209120
Спасибо Вам Огромное!!! :) Заработало!!! :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / аналог запроса 1С8
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]