Заголовок



DECLARE @ProdID INT
DECLARE @CompID INT
DECLARE @Fetches INT

--=================================================================
--Условие выхода из цикла - @@FETCH_STATUS

DECLARE Cur CURSOR READ_ONLY FOR
        SELECT ProdID, CompID FROM Sales
OPEN Cur
FETCH NEXT FROM Cur INTO @ProdID, @CompID
WHILE (@@FETCH_STATUS <> -1) BEGIN

    PRINT @ProdID
    PRINT @CompID

    FETCH NEXT FROM Cur INTO @ProdID, @CompID
END
CLOSE Cur
DEALLOCATE Cur


--=================================================================
--Условие выхода из цикла - сравнение с @@CURSOR_ROWS

DECLARE Cur CURSOR READ_ONLY FOR
        SELECT ProdID, CompID FROM Sales
OPEN Cur
SET @Fetches = 0
FETCH NEXT FROM Cur INTO @ProdID, @CompID
    WHILE (@Fetches <> @@CURSOR_ROWS) BEGIN
    
        PRINT @ProdID
        PRINT @CompID

        SET @Fetches = @Fetches + 1
        FETCH NEXT FROM Cur INTO @ProdID, @CompID
    END
CLOSE Cur
DEALLOCATE Cur



//Корректировать строку табличной части документа
//"ОС" - наименование табличной части

Тч = Док.ОС;
Тч[0].НалоговаяГруппаОС = Справочники.НалоговыеГруппы.НайтиПоНаименованию("Четвертая (с 2004 г)");
Док.Записать(РежимЗаписиДокумента.Проведение);


//------------------------------------------------------------------
//Поиск в табличной части документа
//"Платежи" - наименование табличной части

Сообщить(Док.Платежи.Найти(ТоЧтоНужноНайти, "РеквизитВТабЧастиГдеИскатьЗначение")["РеквизитВТабЧастиОткудаВзятьЗначение"]);


//------------------------------------------------------------------
//Cделать текущей строку табличной части формы документа
//"Выписки" - наименование табличной части

ЗаписьВыписка = ДокБанковскаяВыписка.Выписки.Добавить();
ЗаписьВыписка.Реквизит1 = "Реквизит1";
ЗаписьВыписка.Реквизит2 = "Реквизит2";

ФормаВыписка = ДокБанковскаяВыписка.ПолучитьФорму("ФормаДокумента");
ФормаВыписка.ЭлементыФормы.Выписки.ТекущаяСтрока = ЗаписьВыписка;
ФормаВыписка.Открыть();


//------------------------------------------------------------------
//Удалить записи из табличной части документа с помощью структуры

Отбор = Новый Структура;
Отбор.Вставить("КодОбъекта", ЗначениеКодОбъекта);

Документ = Документы.ПриходнаяНакладная.НайтиПоНаименованию("Наименование").ПолучитьОбъект();

//Удаляем записи табличной части
ЗаписиТабЧасти = Документ["НазваниеТабЧасти"].НайтиСтроки(Отбор);
Для Каждого ЗаписьТабЧасти Из ЗаписиТабЧасти Цикл
    Документ["НазваниеТабЧасти"].Удалить(ЗаписьТабЧасти);
КонецЦикла;


//------------------------------------------------------------------
//Удалить строки (записи) из табличной части документа в цикле (при переборе)

Док = ДокБанковскаяВыписка.ПолучитьОбъект();
КоличествоЗаписей = Док.Выписки.Количество();
КоличествоОборотов = 0;
Для ъ = 0 По КоличествоЗаписей - 1 Цикл
    КоличествоОборотов = КоличествоОборотов + 1;
                                        
    Если Док.Выписки[ъ].ИмяПоля = Истина Тогда
        Док.Выписки.Удалить(Док.Выписки[ъ]);
        ъ = ъ - 1;
    КонецЕсли;
                                        
    Если КоличествоОборотов = КоличествоЗаписей Тогда
        Прервать;
    КонецЕсли;
КонецЦикла;
Док.Записать();



//Создать dbf-файл, добавить поле, добавить запись
DbfФайл1 = Новый XBase;
DbfФайл1.Поля.Добавить("Name", "S", 100);
    
DbfФайл1.Кодировка = КодировкаXBase.ANSI;
DbfФайл1.СоздатьФайл(Константы.ПутьКБазеДанных.Получить() + "Обработки\machine.dbf");
    
Сотрудники = Справочники.Сотрудники.Выбрать();
Пока Сотрудники.Следующий() Цикл
    DbfФайл1.Добавить();
    DbfФайл1.Name = Сотрудники.Наименование;
    DbfФайл1.Записать();
КонецЦикла;
DbfФайл1.ЗакрытьФайл();


//Чтение dbf-файла, обход, перебор
DbfФайл2 = Новый XBase;
DbfФайл2.ОткрытьФайл(Константы.ПутьКБазеДанных.Получить() + "Обработки\machine.dbf", , Истина);
DbfФайл2.Первая();
Пока НЕ DbfФайл2.ВКонце() Цикл
    Сообщить(DbfФайл2.Name);
    DbfФайл2.Следующая();
КонецЦикла;
DbfФайл2.ЗакрытьФайл();


//Изменение записей, Поиск записей в dbf-файле (прямой перебор)
DbfФайл3.Первая();
Пока НЕ СокрЛП(DbfФайл3.mashina) = "Жигуль" Цикл //Нужная запись становится текущей
    DbfФайл3.Следующая();
КонецЦикла;
DbfФайл3.УстановитьЗначениеПоля("max_skorost", 80);
DbfФайл3.УстановитьЗначениеПоля("kol_koles", 4);
DbfФайл3.Записать();
DbfФайл3.ЗакрытьФайл();



//"Пользователи1С", "Принтеры" - имена справочников
//В справочнике "Пользователи1С" есть поле "Принтер" с типом "Принтеры". Оно будет заполняться с помощью формы выбора
//"ИмяПользователя()" - возвращает имя текущего пользователя
СпрПользователи = Справочники.Пользователи1С;
Пользователь = СпрПользователи.НайтиПоНаименованию(ИмяПользователя());
ФормаПринтера = Справочники.Принтеры.ПолучитьФормуВыбора();


//Создание нового элемента справочника
//Установить значение поля (реквизита) справочника с помощью формы выбора другого справочника
Если Пользователь = СпрПользователи.ПустаяСсылка() Тогда
    НовыйЮзер = СпрПользователи.СоздатьЭлемент();
    НовыйЮзер.Наименование = ИмяПользователя();
    НовыйЮзер.Принтер = ФормаПринтера.ОткрытьМодально();
    НовыйЮзер.Записать();
КонецЕсли;
    
    
//Изменение записи (элемента) справочника
//Выборка элементов справочник с помощью структуры
//Обход выборки элементов справочника
Пользователь = СпрПользователи.НайтиПоНаименованию(ИмяПользователя());
ОтборПользователь = Новый Структура("Наименование");
ОтборПользователь.Наименование = ИмяПользователя();
ВыборкаПользователь = СпрПользователи.Выбрать(,,ОтборПользователь,);
Пока ВыборкаПользователь.Следующий() Цикл
    ОбъектПользователь = ВыборкаПользователь.ПолучитьОбъект();
    ОбъектПользователь.Принтер = ФормаПринтера.ОткрытьМодально();
    Если Не ОбъектПользователь.Принтер = Справочники.Принтеры.ПустаяСсылка() Тогда
        ОбъектПользователь.Записать();
    КонецЕсли;
КонецЦикла;



//ОбъектыКодирования – имя регистра сведений
//Хозяин – измерение регистра сведений
//.Выбрать(ОтборПоДокументу);  -  регистр сведений не подчинен регистратору, регистр сведений с независимым режимом записи
//.Выбрать(,,ОтборПоДокументу);  -  регистр подчинен регистратору

ОтборПоДокументу = Новый Структура("Хозяин");
ОтборПоДокументу.Хозяин = ЭтотОбъект.Ссылка;
ВыборкаДокументов = РегистрыСведений.ОбъектыКодирования.Выбрать(ОтборПоДокументу);

Пока ВыборкаДокументов.Следующий() Цикл
МенеджерЗаписи = ВыборкаДокументов.ПолучитьМенеджерЗаписи();
    МенеджерЗаписи.Удалить();
КонецЦикла;



//Производство – имя регистра сведений
//Машина, Сырье, ДатаПроизводства – измерения регистра сведений


//Отбор, фильтрация
НаборЗаписейРегистра = РегистрыСведений.Производство.СоздатьНаборЗаписей();
НаборЗаписейРегистра.Отбор.Машина.Значение = Машина;
НаборЗаписейРегистра.Отбор.Машина.Использование = Истина;
НаборЗаписейРегистра.Отбор.Сырье.Значение = Сырье;
НаборЗаписейРегистра.Отбор.Сырье.Использование = Истина;
НаборЗаписейРегистра.Прочитать();

//Добавить новую запись
ЗаписьРегистра = НаборЗаписейРегистра.Добавить();
ЗаписьРегистра.Машина = Машина;
НаборЗаписейРегистра.Записать(Ложь);         //Ложь – чтобы записи не затирались

//Откорректировать запись регистра сведений
НаборЗаписейРегистра [0].ДатаПроизводства = ТекущаяДата();
НаборЗаписейРегистра.Записать();

//Перебор (обход) в цикле и корректировка записей регистра сведений, попавших в отбор.
Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
    ЗаписьРегистра.ДатаПроизводства = ТекущаяДата();
КонецЦикла;
НаборЗаписейРегистра.Записать();