Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Проведение документа программно и "руками"

Всем привет.
У меня есть обработка, которая загружает данные в документ ПКО.
Так вот, наткнулась на странную особенность.
1. Если в момент создания документа создать к нему Контрагента, то документ не проведется программно. Но записать себя даст.
2. Руками проводится без каких-либо ошибок.
3. При повторной загрузки данного документа (контрагент уже в системе есть, он не создается), документ проводится без вопросов.

Блин, что я не так делаю?!
Сравнивала реквизиты документа ДО и ПОСЛЕ проведения - ничего не меняется.
Нашла что ошибка возникает при попытке сделать запись в РегистрНакопления.РасчетыСКлиентами (где именно в коде - пока не нашла, тьма окон открывается). Но опять же, тут же руками проводишь - все отлично.
Ответ: () Да вроде нет. Хотя, надо вот что посмотреть - при проведении документа - не появляется ли новая запись в РС Аналитика учета.
Вопрос: Не создается документ программно УПП

Привет всем, поздскажите wtf? Обычный код: оДокумент = Документы.ПрочиеЗатраты.СоздатьДокумент(); возвращает Неопределено!!!
Ответ:
Печально
Вопрос: Не создается документ "Прием на работу"

Добрый день! Никак не создается документ "Прием на работу" - ни созданием нового, ни копированием предыдущего. Помогите, пожалуйста!
Ответ:
Документ действительно не создавался. Он просто тупо не записывался в базе. Журнал регистрации пишет, что транзакция не завершена потому что объект не найден.
Очистка КЭШ и ТиИ решило проблему.
Вопрос: УТ11.0 не позволяет удалять документы программно

УТ11.0 не позволяет удалять документы программно.

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

Задача удалять помеченные на удаление документы за последний месяц фоновым заданием по ночам.

В отдельном общем модуле (режим привилегированный - включен)
С попыткой получения монопольного доступа (без монопольного доступа можно только без проверки ссылочной целостности удалять).

Добавил проверку методом НайтиПоСсылкам(...)
Вручную исключил из массива ссылки на которые найдены ссылки с последующим удалением без проверки.
Разные документы удаляются кроме одного вида документа.
Что не делаю ничего не помогает.
Причем, такая особенность: в отладчике смотрю массив ссылок после удаления = в массиве там где были ссылки указано "Объект не найден" и удаление проходит в попытке без ошибок!!!

Открываю базу а там все документы как были, так и остались.

Что я не пропустил? Подскажите плиз!!!
Ответ: Поставил ТТИ. Завтра посмотрим.
Вопрос: Создание документа программно на основе других

Есть несколько документов, Реализация к примеру. надо программно создать один, в котором сгруппированы все ТЧ из определенного списка документов. как запрос написать? могу получить ТЧ из нескольких документов, верно ли это будет?в документе есть табчасти ТОВАРЫ , УСЛУГИ и т.д. с остальными как бытЬ?запрос неправильно написал?
Ответ: Пятнично...
Лично я предлагаю строить запрос динамически на основании метаданных этого документа...
А еще лучше, просто на основании метаданных, и не важно какой это документ и документ ли вообще...
Вопрос: Открытие формы документа программно

Делаю так
1C
1
2
3
4
5
 Форма = ОткрытьФорму("Документ.ПриемНаряд.Форма.ФормаДокумента");
 НовыйОбъект = Форма.Объект;
 ЗаполнитьЗначенияСвойств(НовыйОбъект, Данные);
 НовыйОбъект.ВремяНачала = Данные.Время;
 НовыйОбъект.ВремяОкончания = НовыйОбъект.ВремяНачала + 30*60;
Но хочу сделать сначала создание документа и потом получение формы. Пробую так:
1C
1
2
3
4
5
6
7
 НовыйДокумент = Документы.ПриемНаряд.СоздатьДокумент();
 Форма =  НовыйДокумент.ПолучитьФорму("Документ.ПриемНаряд.Форма.ФормаДокумента");
 НовыйОбъект = Форма.Объект;
 ЗаполнитьЗначенияСвойств(НовыйОбъект, Данные);
 НовыйОбъект.ВремяНачала = Данные.Время;
 НовыйОбъект.ВремяОкончания = НовыйОбъект.ВремяНачала + 30*60;
 Форма.Открыть();
В таком случае ошибка:
Значение не является значением объектного типа (Объект) НовыйОбъект = Форма.Объект;

Подскажите, как исправить...
Ответ: Используй синтаксис 8.3 а не 8.1

Как оно должно быть в 8.3:
1C
1
2
3
    ПараметрыФормы = Новый Структура("ЗакрыватьПриЗакрытииВладельца", Истина);
    ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("ВремяНачала,ВремяОкончания", Данные.Время, НовыйОбъект.ВремяНачала + 30*60));
    ОткрытьФорму("Документ.ПриемНаряд.ФормаОбъекта", ПараметрыФормы, ЭтаФорма, КлючУникальности);
Вопрос: Как обратится к табличной части документа?

Сделал форму документа там два параметра и табличная часть с 3мя параметрами.
Создаю новый документ путем нажатия кнопки Создать в форме выбора документов.

Затем в этой форме документа (документ еще не создан, не проведен, только создается) заполняю программно реквизиты.
Код 1C
1
Объект.П1 = лялятополя;
А вот с табличной частью так не получается Объект.ТабличнаяЧасть.П3 = ввпапв;
Ругается говорит нету Параметра3.

Фиг с ним знаю, что если сохранить документ то можно получить доступ к табличной части.
Пишу
Код 1C
1
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Ругается Метод объекта не обнаружен (Записать).
Думаю ладно У тебя же есть ссылка сейчас тебя в нормальный объект сделаем.
Код 1C
1
Объект.Ссылка.ПолучитьОбъект();
Ругается Метод объекта не обнаружен.
Вопросы: 1. Как Мне программно сохранить и провести документ?
2. Как записать в табличную часть?

Добавлено через 58 минут
Ну с таблицей немного разобрался сделал так
Код 1C
1
2
3
4
5
6
7
8
ТабЧасть = Объект.ТабличнаяЧасть.Выгрузить();
    Для Каждого строка из ТабЧасть Цикл
        Если (строка.Изделие.Пустая() = Ложь) тогда
            строка.Проба = строка.Изделие.Металл.Проба;
                        Сообщить(строка.Проба);
            ТабЧасть.Добавить();
        КонецЕсли;  
    КонецЦикла;
Но почему-то в форме новое табличное значение не отображается.
Как сделать чтобы таблица обновилась на форме?
Ответ: Alp555,
Код 1C
1
2
3
4
5
6
ДокОбъект = Документы.ИмяДокумента.СоздатьДокумент(); //создать новый
ДокОбъект = Ссылка.ПолучитьОбъект(); //редактировать существующий
// оба варианта возвращают тип ДокументОбъект, работай с ним.
// заполняешь значения.
// потом:
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Вопрос: 1C УФ создать несколько документов программно, заполнить , не записывая, открыть каждый

&НаКлиенте
Процедура СоздатьПоступления(Команда)
    
    
    // формирование поступлений

    
    для каждого СтрДок из СписокДокументов цикл
        если  не СтрДок.Выбран тогда продолжить конецесли;
    
        
        Форма = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта");
        ДанныеФормы = Форма.Объект;
        ЗаполнитьПоступлениеНаСервере(ДанныеФормы,СтрДок.ЗаказПоставщику );
        КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
        Форма.Открыть();
    конеццикла;    
КонецПроцедуры

//---



&НаСервере
Процедура ЗаполнитьПоступлениеНаСервере(ДанныеФормы, ЗаказПоставщикуСсылка)
    //Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеТоваровУслуг"));

    Док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    Док.дата = текущаядата();
// тут заполнение документа


    ЗначениеВДанныеФормы(Док,ДанныеФормы);

конецпроцедуры



Так создается. Один документ. И заполняется данными из последнего переданного параметра ЗаказПоставщикуСсылка
по коду= проходит все три раза и три раза создается


но форма новая открыта одна ...
и он ее считает - типа - новой.

как сделать правильно - чтобы создалось столько документов(заполнилось, не записалось) - сколько было вызовов процедуры создания и заполнения документов

где этот униклаьный ид формы проставить?
Ответ: Обращайся!
Вопрос: программное изменение табличной части при записи документа

Добрый вечер! Подскажите пожалуйста как мне правильно реализовать?
Есть обработка мобильное приложение в котором менеджер формирует заказ с планшета и выгружает в 1с, после выгрузки  в 1с создается документ заказ и записывается. Мне нужно именно при записи документа перезаполнить цены табличной части по определенному условию в моем случаи по виду цен который указан в договоре. Я прикрутил код в процедуру ПередЗаписью() в модуле объекта, когда документ падает в 1с он не перезаполняется, такие же цены как заполнил менеджер, но если этот созданный документ я  еще раз запишу он перезаполняет. Может мне использовать другой обработчик событий? кто сталкивался с такой проблемой?
Ответ: Пример запроса по таблице значений (чтобы видеть до записи документа содержимое табличной части в запросе; изменение табличной части в цикле по результатам запроса):

&НаСервере
Процедура ПересчитатьСуммыНаСервере(ИмяТч)

    // ДебиторскаяЗадолженность    

    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    тзДок.Сумма,
    |    тзДок.ДокументВзаиморасчетов,
    |    тзДок.НомерСтроки
    |ПОМЕСТИТЬ тзДок
    |ИЗ
    |    &тзДок КАК тзДок
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    тзДок.НомерСтроки,
    |    Акт.СуммаОплаты
    |ИЗ
    |    тзДок КАК тзДок
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК Акт
    |        ПО тзДок.ДокументВзаиморасчетов = Акт.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    |    тзДок.НомерСтроки";

    Запрос.УстановитьПараметр("тзДок", Объект[ИмяТЧ].Выгрузить());   
    сч=0;
    РезультатЗапроса = Запрос.Выполнить();
    вв = РезультатЗапроса.Выбрать();
    пОтбор=Новый Структура("НомерСтроки");
    Для Каждого стр из Объект[ИмяТЧ] Цикл
        пОтбор.НомерСтроки=стр.НомерСтроки;
        Если вв.НайтиСледующий(пОтбор) Тогда
            стр.СуммаОплаты = вв.Сумма;
            стр.СуммаВзаиморасчетов=стр.Сумма - стр.СуммаОплаты;
        Иначе
            ВызватьИсключение("Ошибка поиска суммы в строке "+ИмяТЧ+" "+стр.НомерСтроки+".");
        КонецЕсли;    
    КонецЦикла;    
КонецПроцедуры


Этот образец может использоваться для контроля правильности заполнения документа или для дозаполнения документа по результатам запроса, пока он еще не записан.
Вопрос: 1С Бухгалтерия предприятия. Ошибка при записи документа "Поступление товаров и услуг": не заполнен счет Дт.

Добрый день, подскажите пожалуйста какие поля нужно заполнять при создании документа "ПоступлениеТоваровУслуг" Я создаю данный документ программно и когда пытаюсь записать, мне выдаёт следующую ошибку:

{ВнешняяОбработка.СозданиеСводныхДокументов.Форма.Форма.Форма(140)}: Ошибка при вызове метода контекста (Записать)
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Запись не верна! Не заполнен счет дебета (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)

Причём выдаёт данную ошибку тогда, когда я пытаюсь создать документ на контрагента: "Конфетпром ООО". С контрагентом "Межрегионинтерснабсбыт ООО" таких проблем не возникает. Подозреваю что я не заполнил какое-то поле или поля.
Помогите плиз.


Сам код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
&НаСервере
Процедура СозданиеДокумента()
    Счёт = 0;
    //Выбираю всех контрагентов
    ЗапросЭлементов = Новый Запрос;
    ЗапросЭлементов.Текст =
    "ВЫБРАТЬ
    |   Контрагенты.Ссылка
    |ИЗ
    |   Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    НЕ Контрагенты.ЭтоГруппа";         
    Выборка = ЗапросЭлементов.Выполнить().Выбрать();
    //Прохожу циклом по каждому контрагенту
    
    Пока Выборка.Следующий() Цикл
        //Получаю контрагента       
        СсылканаКонтрагента = Выборка.Ссылка;                           
        
        //Делаю запрос на получение не проведённых документов определённого контрагента
        ЗапросДокументов = Новый Запрос;
        ЗапросДокументов.УстановитьПараметр("Контрагент", СсылканаКонтрагента); 
        ЗапросДокументов.УстановитьПараметр("ЛОЖЬ", ЛОЖЬ);
        ЗапросДокументов.Текст = "ВЫБРАТЬ
        |   ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |   ПоступлениеТоваровУслуг.Контрагент = &Контрагент
        |   И ПоступлениеТоваровУслуг.Проведен = &ЛОЖЬ";            
        ВыборкаДок = ЗапросДокументов.Выполнить().Выбрать();
        //Получаю кол-во полученных документов
        Количество = ВыборкаДок.Количество();
        
        //Если  есть не проведённые документы то создаю новый документ 
        Если Количество > 0 Тогда 
            //Создаю новый документ на текущего контрагента 
            НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
            НовыйДокумент.Контрагент = СсылканаКонтрагента;
            НовыйДокумент.Дата = ТекущаяДата();
            НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
            
            Счёт = Счёт + Количество;               
            Пока ВыборкаДок.Следующий()Цикл
                Ссылканадок = ВыборкаДок;
                ТекущийДокумент = ВыборкаДок.Ссылка.ПолучитьОбъект();
                
                КоличествоСтрокТЧУслуг = ТекущийДокумент.Услуги.Количество();    
                Если КоличествоСтрокТЧУслуг > 0 Тогда 
                    //Записываю каждую строку из табличной части услуги в новый документ
                    Услуги = ТекущийДокумент.Услуги;                    
                    Для Каждого СтрокаТабЧасти Из Услуги Цикл
                        НоваяСтрокаТаблицы = НовыйДокумент.Услуги.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                                  
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.Содержание = СтрокаТабЧасти.Содержание;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.Субконто1 = СтрокаТабЧасти.Субконто1;
                        НоваяСтрокаТаблицы.Субконто2 = СтрокаТабЧасти.Субконто2;
                        НоваяСтрокаТаблицы.Субконто3 = СтрокаТабЧасти.Субконто3;
                        НоваяСтрокаТаблицы.СубконтоНУ1 =  СтрокаТабЧасти.СубконтоНУ1;
                        НоваяСтрокаТаблицы.СубконтоНУ2 =  СтрокаТабЧасти.СубконтоНУ2; 
                        НоваяСтрокаТаблицы.СубконтоНУ3 =  СтрокаТабЧасти.СубконтоНУ3;
                        НоваяСтрокаТаблицы.СчетЗатрат = СтрокаТабЧасти.СчетЗатрат;
                        НоваяСтрокаТаблицы.СчетЗатратНУ = СтрокаТабЧасти.СчетЗатратНУ;
                        НоваяСтрокаТаблицы.СчетУчетаНДС =СтрокаТабЧасти.СчетУчетаНДС;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                            
                    КонецЦикла;
                КонецЕсли;
                
                КоличествоСтрокТЧТоваров = ТекущийДокумент.Товары.Количество();
                Если КоличествоСтрокТЧТоваров > 0 Тогда
                    //Записываю каждый товар из табличной части услуги в новый документ
                    Товары = ТекущийДокумент.Товары;
                    Для Каждого СтрокаТабЧасти Из Товары Цикл
                        НоваяСтрокаТаблицы =  НовыйДокумент.Товары.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.ЕдиницаИзмерения = СтрокаТабЧасти.ЕдиницаИзмерения;  
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                      
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.СуммаНДС = СтрокаТабЧасти.СуммаНДС;
                        НоваяСтрокаТаблицы.Коэффициент = СтрокаТабЧасти.Коэффициент;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;  
                        НоваяСтрокаТаблицы.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                        
                    КонецЦикла;
                КонецЕсли;
                //Устанавливаю пометку на удаление текущий не проведённый документ
                ТекущийДокумент.УстановитьПометкуУдаления(Истина);   
            КонецЦикла;
            //Заполняю поля нового документа
            НовыйДокумент.СчетНаОплатуПоставщика = ТекущийДокумент.СчетНаОплатуПоставщика;
            НовыйДокумент.СпособЗачетаАвансов = ТекущийДокумент.СпособЗачетаАвансов;
            НовыйДокумент.СчетУчетаРасчетовПоАвансам = ТекущийДокумент.СчетУчетаРасчетовПоАвансам;
            НовыйДокумент.СчетУчетаРасчетовСКонтрагентом = ТекущийДокумент.СчетУчетаРасчетовСКонтрагентом;
            НовыйДокумент.ВалютаДокумента = ТекущийДокумент.ВалютаДокумента;
            НовыйДокумент.ДоговорКонтрагента = ТекущийДокумент.ДоговорКонтрагента;
            НовыйДокумент.НДСВключенВСтоимость= ТекущийДокумент.НДСВключенВСтоимость;
            НовыйДокумент.НДСНеВыделять = ТекущийДокумент.НДСНеВыделять;
            НовыйДокумент.Организация = ТекущийДокумент.Организация;
            НовыйДокумент.Ответственный = ТекущийДокумент.Ответственный;
            НовыйДокумент.Склад = ТекущийДокумент.Склад;
            НовыйДокумент.СуммаДокумента = ТекущийДокумент.СуммаДокумента;
            НовыйДокумент.КурсВзаиморасчетов = ТекущийДокумент.КурсВзаиморасчетов;
            НовыйДокумент.КратностьВзаиморасчетов =  ТекущийДокумент.КратностьВзаиморасчетов;
            НовыйДокумент.СпособЗачетаАвансов =  ТекущийДокумент.СпособЗачетаАвансов;
            
            //Свёртывание таблицы услуг
            КоличествоСтрокТЧУслуг = НовыйДокумент.Услуги.Количество();
            Если КоличествоСтрокТЧУслуг > 3 Тогда
                //Свёртывание табличной части услуг
                Свёртывание = НовыйДокумент.Услуги.Выгрузить();
                Свёртывание.Свернуть("Номенклатура","Цена, СтавкаНДС");
                НовыйДокумент.Услуги.Загрузить(Свёртывание);
            КонецЕсли;
            
            //Свёртывание таблицы товаров
            КоличествоСтрокТЧТоваров = НовыйДокумент.Товары.Количество();
            Если КоличествоСтрокТЧТоваров > 3 Тогда  
                //Свёртывание табличной части товаров
                Свёртывание = НовыйДокумент.Товары.Выгрузить();
                Свёртывание.Свернуть("Номенклатура", "Цена, СтавкаНДС");
                НовыйДокумент.Товары.Загрузить(Свёртывание);
            КонецЕсли;
            
            //Провожу созданный документ
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);    
        КонецЕсли;          
    КонецЦикла;  
КонецПроцедуры
Ответ: Всё, я разобрался, всё дело было в свёртывании, я указал не все нужные поля в методе свёртывания и после выполнения метода данные терялись и вылезало сообщение о том что не все поля заполнены.

Вот рабочий код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
&НаСервере
Процедура СозданиеДокумента()
    Счёт = 0;
    //Выбираю всех контрагентов
    ЗапросЭлементов = Новый Запрос;
    ЗапросЭлементов.Текст =
    "ВЫБРАТЬ
    |   Контрагенты.Ссылка
    |ИЗ
    |   Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    НЕ Контрагенты.ЭтоГруппа";         
    Выборка = ЗапросЭлементов.Выполнить().Выбрать();
    //Прохожу циклом по каждому контрагенту
    
    Пока Выборка.Следующий() Цикл
        //Получаю контрагента       
        СсылканаКонтрагента = Выборка.Ссылка;                           
        
        //Делаю запрос на получение не проведённых документов определённого контрагента
        ЗапросДокументов = Новый Запрос;
        ЗапросДокументов.УстановитьПараметр("Контрагент", СсылканаКонтрагента); 
        ЗапросДокументов.УстановитьПараметр("ЛОЖЬ", ЛОЖЬ);
        ЗапросДокументов.Текст = "ВЫБРАТЬ
        |   ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |   ПоступлениеТоваровУслуг.Контрагент = &Контрагент
        |   И ПоступлениеТоваровУслуг.Проведен = &ЛОЖЬ";            
        ВыборкаДок = ЗапросДокументов.Выполнить().Выбрать();
        //Получаю кол-во полученных документов
        Количество = ВыборкаДок.Количество();
        
        //Если  есть не проведённые документы то создаю новый документ 
        Если Количество > 0 Тогда 
            //Создаю новый документ на текущего контрагента 
            НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
            НовыйДокумент.Контрагент = СсылканаКонтрагента;
            НовыйДокумент.Дата = ТекущаяДата();
            НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
            
            Счёт = Счёт + Количество;               
            Пока ВыборкаДок.Следующий()Цикл
                Ссылканадок = ВыборкаДок;
                ТекущийДокумент = ВыборкаДок.Ссылка.ПолучитьОбъект();
                
                КоличествоСтрокТЧУслуг = ТекущийДокумент.Услуги.Количество();    
                Если КоличествоСтрокТЧУслуг > 0 Тогда 
                    //Записываю каждую строку из табличной части услуги в новый документ
                    Услуги = ТекущийДокумент.Услуги;                    
                    Для Каждого СтрокаТабЧасти Из Услуги Цикл
                        НоваяСтрокаТаблицы = НовыйДокумент.Услуги.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                                  
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.Содержание = СтрокаТабЧасти.Содержание;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.Субконто1 = СтрокаТабЧасти.Субконто1;
                        НоваяСтрокаТаблицы.Субконто2 = СтрокаТабЧасти.Субконто2;
                        НоваяСтрокаТаблицы.Субконто3 = СтрокаТабЧасти.Субконто3;
                        НоваяСтрокаТаблицы.СубконтоНУ1 =  СтрокаТабЧасти.СубконтоНУ1;
                        НоваяСтрокаТаблицы.СубконтоНУ2 =  СтрокаТабЧасти.СубконтоНУ2; 
                        НоваяСтрокаТаблицы.СубконтоНУ3 =  СтрокаТабЧасти.СубконтоНУ3;
                        НоваяСтрокаТаблицы.СчетЗатрат = СтрокаТабЧасти.СчетЗатрат;
                        НоваяСтрокаТаблицы.СчетЗатратНУ = СтрокаТабЧасти.СчетЗатратНУ;
                        НоваяСтрокаТаблицы.СчетУчетаНДС =СтрокаТабЧасти.СчетУчетаНДС;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                            
                    КонецЦикла;
                КонецЕсли;
                
                КоличествоСтрокТЧТоваров = ТекущийДокумент.Товары.Количество();
                Если КоличествоСтрокТЧТоваров > 0 Тогда
                    //Записываю каждый товар из табличной части услуги в новый документ
                    Товары = ТекущийДокумент.Товары;
                    Для Каждого СтрокаТабЧасти Из Товары Цикл
                        НоваяСтрокаТаблицы =  НовыйДокумент.Товары.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.ЕдиницаИзмерения = СтрокаТабЧасти.ЕдиницаИзмерения;  
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                      
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.СуммаНДС = СтрокаТабЧасти.СуммаНДС;
                        НоваяСтрокаТаблицы.Коэффициент = СтрокаТабЧасти.Коэффициент;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;  
                        НоваяСтрокаТаблицы.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                        
                    КонецЦикла;
                КонецЕсли;
                //Устанавливаю пометку на удаление текущий не проведённый документ
                ТекущийДокумент.УстановитьПометкуУдаления(Истина);   
            КонецЦикла;
            //Заполняю поля нового документа
            НовыйДокумент.СчетНаОплатуПоставщика = ТекущийДокумент.СчетНаОплатуПоставщика;
            НовыйДокумент.СпособЗачетаАвансов = ТекущийДокумент.СпособЗачетаАвансов;
            НовыйДокумент.СчетУчетаРасчетовПоАвансам = ТекущийДокумент.СчетУчетаРасчетовПоАвансам;
            НовыйДокумент.СчетУчетаРасчетовСКонтрагентом = ТекущийДокумент.СчетУчетаРасчетовСКонтрагентом;
            НовыйДокумент.ВалютаДокумента = ТекущийДокумент.ВалютаДокумента;
            НовыйДокумент.ДоговорКонтрагента = ТекущийДокумент.ДоговорКонтрагента;
            НовыйДокумент.НДСВключенВСтоимость= ТекущийДокумент.НДСВключенВСтоимость;
            НовыйДокумент.НДСНеВыделять = ТекущийДокумент.НДСНеВыделять;
            НовыйДокумент.Организация = ТекущийДокумент.Организация;
            НовыйДокумент.Ответственный = ТекущийДокумент.Ответственный;
            НовыйДокумент.Склад = ТекущийДокумент.Склад;
            НовыйДокумент.СуммаДокумента = ТекущийДокумент.СуммаДокумента;
            НовыйДокумент.КурсВзаиморасчетов = ТекущийДокумент.КурсВзаиморасчетов;
            НовыйДокумент.КратностьВзаиморасчетов =  ТекущийДокумент.КратностьВзаиморасчетов;
            НовыйДокумент.СпособЗачетаАвансов =  ТекущийДокумент.СпособЗачетаАвансов;
            
            //Свёртывание таблицы услуг
            КоличествоСтрокТЧУслуг = НовыйДокумент.Услуги.Количество();
            Если КоличествоСтрокТЧУслуг > 1 Тогда
                НовыйДокумент.Услуги.Свернуть("Номенклатура, ОтражениеВУСН, СпособУчетаНДС, СтавкаНДС, СчетУчета, СчетУчетаНДС, Цена", "Количество, Сумма");   
            КонецЕсли;
            
            //Свёртывание таблицы товаров 
            КоличествоСтрокТЧТоваров = НовыйДокумент.Товары.Количество();
            Если КоличествоСтрокТЧТоваров > 1 Тогда                 
                НовыйДокумент.Товары.Свернуть("Номенклатура, ОтражениеВУСН, СпособУчетаНДС, СтавкаНДС, СчетУчета, СчетУчетаНДС, Цена", "Количество, Сумма");
            КонецЕсли;
            //Провожу созданный документ
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);    
        КонецЕсли;          
    КонецЦикла;  
КонецПроцедуры