Для того, что бы вникнуть суть задачи объясню всю ситуацию.
Работаю в торговой компании в 1С 7.7. Ежедневно набивается около 500-600 заказов (счет-фактур). Работа муторная, особенно если учесть, что основной объем работы начинается где-то в 16-00. Как показал опыт проще и быстрее если сначала сохранить все счет-фактуры, а уж затем создавать к ним приходные ордера.
Сама проблема: пытаюсь создать обработку для автоматического создания ПО для выбранных С-Ф.
Написал следующий код, но создается ПО на последнюю из выбранных С-Ф и обработка заканчивается:
Перем Конт;
//*******************************************
Процедура Сформировать()
Док = СоздатьОбъект("Документ.СчетФактура");
ДокПО = СоздатьОбъект("Документ");
Доки.ВыбратьСтроки();
Пока Доки.ПолучитьСтроку() = 1 Цикл
Если Доки.Пиктограмма = 1 Тогда
Продолжить;
КонецЕсли;
Док.НайтиДокумент(Доки.ТекДок);
Док.ВыбратьСтроки();
ИтогоБезНДС = 0;
ИтогоНДС = 0;
ИтогоНРТ = 0;
ИтогоБезНДС = Док.СуммаБезНДС;
ИтогоНДС = Док.СуммаНДС;
ИтогоНРТ = ИтогоБезНДС*Док.СтавкаНРТ/100;
Итого = ИтогоБезНДС + ИтогоНДС + ИтогоНРТ;
ОткрытьФорму("Документ.ПриходныйОрдер",Конт);
Конт.Филиал = Филиал;
Конт.НомерПервДок = СокрЛП(Док.НомерДок);
Конт.ДатаПервДок = Док.ДатаДок;
Конт.ДатаДок = Док.ДатаДок;
Если Док.ВалютаДок = Константа.НацВалюта
Тогда
Конт.Касса = Филиал.ОснКасса;
Иначе
Конт.Касса = Филиал.ОснВалКасса;
КонецЕсли;
ОперПО = Константа.ОперацияОплатаОтПолучателя;
Сч = ОперПО.СчетК;
Конт.Опер = ОперПО;
Конт.Субконто1 = Док.Получатель;
Конт.Субконто2 = "";
Конт.Валюта = ВалютаПечати;
Конт.Сумма = Итого;
Конт.СуммаНДС = ИтогоНДС;
Конт.ВалютаУчета = ВалютаПечати;
Конт.КурсУчета = Док.КурсДок;
Конт.СуммаУчета = Итого;
Конт.Основание = "Счет-фактура № "+СокрЛП(Док.НомерДок)+" от "+Док.ДатаДок;
Конт.Приложение = "";
Конт.ДокументВладелец = Док.ТекущийДокумент();
Конт.Автор = Док.Автор;
Конт.Экспедитор = Док.Экспедитор;
Конт.Форма.Субконто1.Видимость(?(ПустаяСтрока(Конт.Субконто1.Вид())=0,1,0));
Конт.Форма.Субконто2.Видимость(?(ПустаяСтрока(Конт.Субконто2.Вид())=0,1,0));
Конт.Форма.СубконтоСтр.Видимость(?(ПустаяСтрока(Конт.Субконто2.Вид())=0,1,0));
Конт.Форма.КнопкаОчиститьСубконто2.Видимость(?(ПустаяСтрока(Конт.Субконто2.Вид())=0,1,0));
Конт.Форма.Обновить();
Конт.Форма.Закрыть();// Справочник
КонецЦикла;
КонецПроцедуры
//
//*****************************************************
//
Процедура ПриОткрытии()
Доки.НоваяКолонка("Ном",,,,,3);
Доки.НоваяКолонка("Дата",,,,,10);
Доки.НоваяКолонка("Фактура",,,, "№ Счет -Факуры",12);
Доки.НоваяКолонка("Клиент",,,,,24);
Доки.НоваяКолонка("Менеджер",,,,,30);
Доки.НоваяКолонка("Сумма",,,,,10);
Доки.НоваяКолонка("Пиктограмма",,,,,3);
Доки.НоваяКолонка("Автор",,,,, 10);
Доки.НоваяКолонка("Цена",,,,,10);
Доки.НоваяКолонка("ТекДок",,,,, 1);
Доки.ВыводитьПиктограммы("Пиктограмма", );
ДатаНачала = РабочаяДата();
ДатаКонца = РабочаяДата();
КонецПроцедуры // ПриОткрытии
//
//*****************************************************
//
Процедура Выбрать()
Доки.УдалитьСтроки();
Док = СоздатьОбъект("Документ.СчетФактура");
Док.ВыбратьДокументы(ДатаНачала, ДатаКонца);
Номер = 0;
Пока Док.ПолучитьДокумент() = 1 Цикл
Если (Док.ПометкаУдаления() = 0) И (Док.Проведен() = 1)
Тогда
Номер = Номер + 1;
Доки.НоваяСтрока();
Доки.Ном = Номер;
Доки.Дата = Док.ДатаДок;
Доки.Фактура = Док.НомерДок;
Доки.Клиент = Док.Получатель;
Доки.Менеджер = Док.Менеджер;
Доки.Сумма = Окр(Док.Итог("СуммаОтп") + Док.Итог("СуммаОтп")/120*Док.СтавкаНРТ,2);
Доки.Автор = Док.Автор;
Если Док.ВидЦены = 2
Тогда
Доки.Цена = "Розничная в сомах";
ИначеЕсли Док.ВидЦены = 1
Тогда
Доки.Цена = "Розничная в валбте";
Иначе
Доки.Цена = "Оптовая в валюте";
КонецЕсли;
Доки.ТекДок = Док.ТекущийДокумент();
Доки.Пиктограмма = ?(выдел = 1,2,1);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // Выбрать
//
//*****************************************************
//
Процедура УстановитьФлажек()
Если Доки.ПолучитьЗначение(Доки.НомерСтроки, "Пиктограмма") = 1 Тогда
Доки.УстановитьЗначение(Доки.НомерСтроки, "Пиктограмма", 2);
Иначе
Доки.УстановитьЗначение(Доки.НомерСтроки, "Пиктограмма", 1);
КонецЕсли;
КонецПроцедуры // УстановитьФлажек