День добрый.
Подскажите а почему данный код не записывает документ?
Я листинг 1С 7.7 совсем забыл, прошу не ругаться строго.
Спасибо.

```1c
    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(кк)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Без итогов;
    |СчетФактура = Документ.СчетФактура.ТекущийДокумент;
    |Аванс = Документ.СчетФактура.Аванс;
    |Группировка СчетФактура без групп;
    |"//}}ЗАПРОС
    ;

    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса

    // Заполнение полей "Заголовок"

    Пока Запрос.Группировка() = 1 Цикл
    // Заполнение полей Сформировать
    Док = СоздатьОбъект("Документ.СчетФактура");
    Док.НайтиДокумент(Запрос.СчетФактура);

    Сообщить("Обрабатывается документ: " + Запрос.СчетФактура);

    Если Док.ПометкаУдаления() = 0 Тогда
    Продолжить;
    КонецЕсли;

    Если Док.ВидОперации <> Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс Тогда
    Продолжить;
    КонецЕсли;

    Док.КодВидаОперации = "02";
    Док.Записать();
    Если Док.Проведен() = 1 Тогда
    Док.Провести(0,1);
    КонецЕсли;
    Сообщить("Обработан документ: " + Запрос.СчетФактура);
    КонецЦикла;
    Сообщить("Обработка завершена !");
    // Вывод заполненной формы

    КонецПроцедуры
```

Программа выполняется без ошибок, но реквизиты не перезаписывает у документов.
---
Разобрался. Вот правильный листинг:

```1c
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(кк)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Без итогов;
    |СчетФактура = Документ.СчетФактура.ТекущийДокумент;
    |Группировка СчетФактура без групп;
    |"//}}ЗАПРОС
    ;

    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса

    // Заполнение полей "Заголовок"

    Пока Запрос.Группировка() = 1 Цикл
    // Заполнение полей Сформировать
    Док = СоздатьОбъект("Документ.СчетФактура");

    Если Док.НайтиДокумент(Запрос.СчетФактура) = 1 Тогда

    Если Док.ПометкаУдаления() = 1 Тогда
    Продолжить;
    КонецЕсли;

    Если Док.ВидОперации <> Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс Тогда
    Продолжить;
    КонецЕсли;

    Сообщить("Обрабатывается документ: " + Запрос.СчетФактура);

    Если СокрЛП(Док.КодВидаОперации) = "02" Тогда
    Продолжить;
    КонецЕсли;

    Док.КодВидаОперации = "02";
    Док.Записать();
    Если Док.Проведен() = 1 Тогда
    Док.Провести(0,1);
    КонецЕсли;
    Сообщить("Обработан документ: " + Запрос.СчетФактура);

    КонецЕсли;

    КонецЦикла;
    Сообщить("Обработка завершена !");
    // Вывод заполненной формы

    КонецПроцедуры
```
---
Подскажите а почему данный код не записывает документ? Да мало ли... Например, после вот этого:

```1c
    Док.НайтиДокумент(Запрос.СчетФактура);
```

не проверяется - а нашелся ли документ?

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

Самое простое - посмотреть на выводимые сообщения после вот такой минимальной модификации:

```1c
    // Док.НайтиДокумент(Запрос.СчетФактура);
    Если Док.НайтиДокумент(Запрос.СчетФактура) = 0 Тогда
    Продолжить;
    КонецЕсли;
```
---
почему данный код не записывает документ? а какие сообщения выводит код?
---
В коде нашел ошибку, но все равно не записывает.
Вот новая версия кода, даже документы проводятся, а реквизит не заполняется.
Даже через отладчик непонятно с чем я работаю, со ссылкой или с объектом.

```1c
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(кк)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Без итогов;
    |СчетФактура = Документ.СчетФактура.ТекущийДокумент;
    |Группировка СчетФактура без групп;
    |"//}}ЗАПРОС
    ;

    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса

    // Заполнение полей "Заголовок"

    Пока Запрос.Группировка() = 1 Цикл
    // Заполнение полей Сформировать
    Док = СоздатьОбъект("Документ.СчетФактура");

    Если Док.НайтиДокумент(Запрос.СчетФактура) = 1 Тогда

    Если Док.ПометкаУдаления() = 1 Тогда
    Продолжить;
    КонецЕсли;

    Если Док.ВидОперации <> Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс Тогда
    Продолжить;
    КонецЕсли;

    Сообщить("Обрабатывается документ: " + Запрос.СчетФактура);

    Если СокрЛП(Док.КодВидаОперации) <> "02" Тогда
    Продолжить;
    КонецЕсли;

    Док.КодВидаОперации = "02";
    Док.Записать();
    Если Док.Проведен() = 1 Тогда
    Док.Провести(0,1);
    КонецЕсли;
    Сообщить("Обработан документ: " + Запрос.СчетФактура);

    КонецЕсли;

    КонецЦикла;
    Сообщить("Обработка завершена !");
    // Вывод заполненной формы

    КонецПроцедуры
```
---
Разобрался. Вот правильный листинг:

```1c
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(кк)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Без итогов;
    |СчетФактура = Документ.СчетФактура.ТекущийДокумент;
    |Группировка СчетФактура без групп;
    |"//}}ЗАПРОС
    ;

    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса

    // Заполнение полей "Заголовок"

    Пока Запрос.Группировка() = 1 Цикл
    // Заполнение полей Сформировать
    Док = СоздатьОбъект("Документ.СчетФактура");

    Если Док.НайтиДокумент(Запрос.СчетФактура) = 1 Тогда

    Если Док.ПометкаУдаления() = 1 Тогда
    Продолжить;
    КонецЕсли;

    Если Док.ВидОперации <> Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс Тогда
    Продолжить;
    КонецЕсли;

    Сообщить("Обрабатывается документ: " + Запрос.СчетФактура);

    Если СокрЛП(Док.КодВидаОперации) = "02" Тогда
    Продолжить;
    КонецЕсли;

    Док.КодВидаОперации = "02";
    Док.Записать();
    Если Док.Проведен() = 1 Тогда
    Док.Провести(0,1);
    КонецЕсли;
    Сообщить("Обработан документ: " + Запрос.СчетФактура);

    КонецЕсли;

    КонецЦикла;
    Сообщить("Обработка завершена !");
    // Вывод заполненной формы

    КонецПроцедуры
```
---
Вот правильный листинг: Те же гениталии, вид сбоку.

Еще осталось СоздатьОбъект() вынести за пределы цикла - а то это один их первых признаков так называемого "г...внокода".
---
Да это понятно, просто с 7.7 вообще не работал лет 10, даже эта несложная программа далась с трудом. Пришлось погуглить.